summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2018-01-10 14:19:45 +0100
committerNicolas Martinelli <nim-odoo@users.noreply.github.com>2018-01-11 15:19:52 +0100
commit411a9fa326fe159fd295c3d328d5fa2f57c10d6f (patch)
tree996df5e88ff8f74e7991e5628b94a660f5ec5a21 /addons/web/static/src
parent309b6b8e5ab476de6f432bbf64939a72af85be3b (diff)
[FIX] web: autofocus
Support autofocus on notebook pages: ``` <page autofocus="autofocus"> ``` This was supported before the web client refactoring. opw-801259
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/form/form_renderer.js11
1 files changed, 8 insertions, 3 deletions
diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js
index e18615c8caf..847c29b8830 100644
--- a/addons/web/static/src/js/views/form/form_renderer.js
+++ b/addons/web/static/src/js/views/form/form_renderer.js
@@ -693,6 +693,7 @@ var FormRenderer = BasicRenderer.extend({
var self = this;
var $headers = $('<ul class="nav nav-tabs">');
var $pages = $('<div class="tab-content nav nav-tabs">');
+ var autofocusTab = -1;
// renderedTabs is used to aggregate the generated $headers and $pages
// alongside their node, so that their modifiers can be registered once
// all tabs have been rendered, to ensure that the first visible tab
@@ -701,9 +702,8 @@ var FormRenderer = BasicRenderer.extend({
var pageID = _.uniqueId('notebook_page_');
var $header = self._renderTabHeader(child, pageID);
var $page = self._renderTabPage(child, pageID);
- if (index === 0) {
- $header.addClass('active');
- $page.addClass('active');
+ if (autofocusTab === -1 && child.attrs.autofocus === 'autofocus') {
+ autofocusTab = index;
}
self._handleAttributes($header, child);
$headers.append($header);
@@ -714,6 +714,11 @@ var FormRenderer = BasicRenderer.extend({
node: child,
};
});
+ if (renderedTabs.length) {
+ var tabToFocus = renderedTabs[Math.max(0, autofocusTab)];
+ tabToFocus.$header.addClass('active');
+ tabToFocus.$page.addClass('active');
+ }
// register the modifiers for each tab
_.each(renderedTabs, function (tab) {
self._registerModifiers(tab.node, self.state, tab.$header, {