2020-10-14 21:43:52 +00:00
|
|
|
function textareaAutosizeIinit($) {
|
|
|
|
|
|
|
|
var pluginName = "textareaAutoSize";
|
|
|
|
var pluginDataName = "plugin_" + pluginName;
|
|
|
|
|
|
|
|
var containsText = function (value) {
|
|
|
|
return (value.replace(/\s/g, '').length > 0);
|
|
|
|
};
|
|
|
|
|
|
|
|
function Plugin(element, options) {
|
|
|
|
this.element = element;
|
|
|
|
this.$element = $(element);
|
|
|
|
this.init();
|
|
|
|
}
|
|
|
|
|
|
|
|
Plugin.prototype = {
|
|
|
|
init: function () {
|
|
|
|
var diff = parseInt(this.$element.css('paddingBottom')) +
|
|
|
|
parseInt(this.$element.css('paddingTop')) +
|
|
|
|
parseInt(this.$element.css('borderTopWidth')) +
|
|
|
|
parseInt(this.$element.css('borderBottomWidth')) || 0;
|
|
|
|
|
|
|
|
if (containsText(this.element.value)) {
|
2020-10-31 12:35:59 +00:00
|
|
|
let height = this.element.scrollHeight - diff;
|
|
|
|
height = 24 * Math.round(height / 24)
|
|
|
|
this.$element.height(height);
|
2020-10-14 21:43:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// keyup is required for IE to properly reset height when deleting text
|
|
|
|
this.$element.on('input keyup', function (event) {
|
|
|
|
var $window = $(window);
|
|
|
|
var currentScrollPosition = $window.scrollTop();
|
|
|
|
|
2020-10-31 12:35:59 +00:00
|
|
|
let height = this.scrollHeight - diff;
|
|
|
|
height = 24 * Math.round(height / 24)
|
2020-10-14 21:43:52 +00:00
|
|
|
$(this)
|
|
|
|
.height(0)
|
2020-10-31 12:35:59 +00:00
|
|
|
.height(height);
|
2020-10-14 21:43:52 +00:00
|
|
|
|
|
|
|
$window.scrollTop(currentScrollPosition);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$.fn[pluginName] = function (options) {
|
|
|
|
this.each(function () {
|
|
|
|
if (!$.data(this, pluginDataName)) {
|
|
|
|
$.data(this, pluginDataName, new Plugin(this, options));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return this;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export default textareaAutosizeIinit;
|