framework7-without-localstorage
Version:
Full featured mobile HTML framework for building iOS & Android apps
54 lines (53 loc) • 2.03 kB
JavaScript
/*===============================================================================
************ Resizable textarea ************
===============================================================================*/
app.resizeTextarea = function (textarea) {
textarea = $(textarea);
if (!textarea.hasClass('resizable')) {
return;
}
textarea.css({'height': ''});
var height = textarea[0].offsetHeight;
var diff = height - textarea[0].clientHeight;
var scrollHeight = textarea[0].scrollHeight;
if (scrollHeight + diff > height) {
var newAreaHeight = scrollHeight + diff;
textarea.css('height', newAreaHeight + 'px');
}
};
app.resizableTextarea = function (textarea) {
textarea = $(textarea);
if (textarea.length === 0) return;
var textareaTimeout;
function handleTextarea() {
clearTimeout(textareaTimeout);
textareaTimeout = setTimeout(function () {
app.resizeTextarea(textarea);
}, 0);
}
textarea[0].f7DestroyResizableTextarea = function () {
textarea.off('change keydown keypress keyup paste cut', handleTextarea);
};
return textarea.on('change keydown keypress keyup paste cut', handleTextarea);
};
app.destroyResizableTextarea = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length > 0 && pageContainer.is('textarea') && pageContainer[0].f7DestroyResizableTextarea) {
pageContainer[0].f7DestroyResizableTextarea();
}
else if (pageContainer.length > 0) {
pageContainer.find('textarea.resiable').each(function () {
var textarea = this;
if (textarea.f7DestroyResizableTextarea) {
textarea.f7DestroyResizableTextarea ();
}
});
}
};
app.initPageResizableTextarea = function (pageContainer) {
pageContainer = $(pageContainer);
var textareas = pageContainer.find('textarea.resizable');
textareas.each(function () {
app.resizableTextarea(this);
});
};