diff options
| author | qsm-odoo <qsm@odoo.com> | 2017-08-04 12:18:49 +0200 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2017-08-04 12:27:27 +0200 |
| commit | 0cdb5ca5c9570e31d2347bed720ea3e5fb1e129d (patch) | |
| tree | b9815b7e21aa8bf2e943cb23034c451760a82f51 /addons/web/static/src/js/core/dom.js | |
| parent | ad9e39020f648aeb2ef2621cf57f078d27607dab (diff) | |
[REF] web: add utility function to render checkboxes
Odoo checkboxes have a special style which requires a special DOM
structure. Instead of having to build this structure each time we need
a checkbox to be rendered, it is better to have a function that does
that. It is also better to have a JS function for this instead of a qweb
template so that this has not to be lazy loaded by the frontend for
something as simple as a checkbox.
Diffstat (limited to 'addons/web/static/src/js/core/dom.js')
| -rw-r--r-- | addons/web/static/src/js/core/dom.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/addons/web/static/src/js/core/dom.js b/addons/web/static/src/js/core/dom.js index e1592c53f73..0ce30e2ac4e 100644 --- a/addons/web/static/src/js/core/dom.js +++ b/addons/web/static/src/js/core/dom.js @@ -201,6 +201,35 @@ return { } return $button; }, + /** + * Renders a checkbox with standard odoo template. This does not use any xml + * template to avoid forcing the frontend part to lazy load a xml file for + * each widget which might want to create a simple checkbox. + * + * @param {Object} [options] + * @param {Object} [options.prop] + * Allows to set the input properties (disabled and checked states). + * @param {string} [options.text] + * The checkbox's associated text. If none is given then a simple + * checkbox without label structure is rendered. + * @returns {jQuery} + */ + renderCheckbox: function (options) { + var $container = $('<div class="o_checkbox"><input type="checkbox"/><span/></div>'); + if (options && options.prop) { + $container.children('input').prop(options.prop); + } + if (options && options.text) { + $container = $('<label/>').append( + $container, + $('<span/>', { + class: 'ml8', + text: options.text, + }) + ); + } + return $container; + }, }; }); |
