diff options
| author | Géry Debongnie <ged@odoo.com> | 2016-05-25 10:41:35 +0200 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2016-05-27 16:08:50 +0200 |
| commit | 4828a00f9e5b4e65991bde43fd423c42da74a91b (patch) | |
| tree | 7026cb3dee7b2641f544565d11c15b4cd0c907a0 /addons/web/static/src/js/framework | |
| parent | b107b14e6be9f9a7cf9c69e8315455ed752a7454 (diff) | |
[REF] web: move dom_utils to its own file
Diffstat (limited to 'addons/web/static/src/js/framework')
| -rw-r--r-- | addons/web/static/src/js/framework/dom_utils.js | 67 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/utils.js | 69 |
2 files changed, 67 insertions, 69 deletions
diff --git a/addons/web/static/src/js/framework/dom_utils.js b/addons/web/static/src/js/framework/dom_utils.js new file mode 100644 index 00000000000..63a5c25a3d2 --- /dev/null +++ b/addons/web/static/src/js/framework/dom_utils.js @@ -0,0 +1,67 @@ +odoo.define('web.dom_utils', function (require) { +"use strict"; + +var core = require('web.core'); + +/** + * Autoresize a $textarea node, by recomputing its height when necessary + * @param {number} [options.min_height] by default, 50. + * @param {Widget} [options.parent] if set, autoresize will listen to some extra + * events to decide when to resize itself. This is useful for widgets that are + * not in the dom when the autoresize is declared. + */ +function autoresize ($textarea, options) { + options = options || {}; + + var $fixed_text_area; + var min_height = (options && options.min_height) || 50; + if (!$fixed_text_area) { + $fixed_text_area = $('<textarea disabled>').css({ + position: 'absolute', + opacity: 0, + height: 10, + top: -10000, + left: -10000, + }); + $fixed_text_area.addClass($textarea[0].className); + $fixed_text_area.insertAfter($textarea); + } + + var style = window.getComputedStyle($textarea[0], null); + if (style.resize === 'vertical') { + $textarea[0].style.resize = 'none'; + } else if (style.resize === 'both') { + $textarea[0].style.resize = 'horizontal'; + } + resize(); + if ($textarea.__auto_resized) { + return; + } + $textarea.__auto_resized = true; + + $textarea.on('input focus', resize); + if (options.parent) { + core.bus.on('DOM_updated', options.parent, resize); + core.bus.on('view_shown', options.parent, resize); + } + + function resize () { + var heightOffset; + var style = window.getComputedStyle($textarea[0], null); + if (style.boxSizing === 'content-box') { + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + $fixed_text_area.width($textarea.width()); + $fixed_text_area.val($textarea.val()); + var height = $fixed_text_area[0].scrollHeight; + $textarea.css({height: Math.max(height + heightOffset, min_height)}); + } +} + +return { + autoresize: autoresize, +}; + +}); diff --git a/addons/web/static/src/js/framework/utils.js b/addons/web/static/src/js/framework/utils.js index c19733989b5..40774e9095d 100644 --- a/addons/web/static/src/js/framework/utils.js +++ b/addons/web/static/src/js/framework/utils.js @@ -494,72 +494,3 @@ return { }; }); - -odoo.define('web.dom_utils', function (require) { -"use strict"; - -var core = require('web.core'); - -// TO DO: move this into new file dom_utils.js -/** - * Autoresize a $textarea node, by recomputing its height when necessary - * @param {number} [options.min_height] by default, 50. - * @param {Widget} [options.parent] if set, autoresize will listen to some extra - * events to decide when to resize itself. This is useful for widgets that are - * not in the dom when the autoresize is declared. - */ -function autoresize ($textarea, options) { - options = options || {}; - - var $fixed_text_area; - var min_height = (options && options.min_height) || 50; - if (!$fixed_text_area) { - $fixed_text_area = $('<textarea disabled>').css({ - position: 'absolute', - opacity: 0, - height: 10, - top: -10000, - left: -10000, - }); - $fixed_text_area.addClass($textarea[0].className); - $fixed_text_area.insertAfter($textarea); - } - - var style = window.getComputedStyle($textarea[0], null); - if (style.resize === 'vertical') { - $textarea[0].style.resize = 'none'; - } else if (style.resize === 'both') { - $textarea[0].style.resize = 'horizontal'; - } - resize(); - if ($textarea.__auto_resized) { - return; - } - $textarea.__auto_resized = true; - - $textarea.on('input focus', resize); - if (options.parent) { - core.bus.on('DOM_updated', options.parent, resize); - core.bus.on('view_shown', options.parent, resize); - } - - function resize () { - var heightOffset; - var style = window.getComputedStyle($textarea[0], null); - if (style.boxSizing === 'content-box') { - heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); - } else { - heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); - } - $fixed_text_area.width($textarea.width()); - $fixed_text_area.val($textarea.val()); - var height = $fixed_text_area[0].scrollHeight; - $textarea.css({height: Math.max(height + heightOffset, min_height)}); - } -} - -return { - autoresize: autoresize, -}; - -}); |
