summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/framework
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2016-05-25 10:41:35 +0200
committerGéry Debongnie <ged@odoo.com>2016-05-27 16:08:50 +0200
commit4828a00f9e5b4e65991bde43fd423c42da74a91b (patch)
tree7026cb3dee7b2641f544565d11c15b4cd0c907a0 /addons/web/static/src/js/framework
parentb107b14e6be9f9a7cf9c69e8315455ed752a7454 (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.js67
-rw-r--r--addons/web/static/src/js/framework/utils.js69
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,
-};
-
-});