[IMP] web, web_tour: no dropdown for only one CTA

**PURPOSE:**
When there's only one CTA, the Action button is not necessary and add one extra clicks.

**SPECIFICATION:**
When there's only one CTA, do no group in an Action button.

**LINKS:**
Task ID: 2225270

closes odoo/odoo#51265

Related: odoo/enterprise#10602
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
This commit is contained in:
Odoo's Mergebot
2020-07-22 15:57:27 +02:00
committed by GitHub
2 changed files with 22 additions and 7 deletions
@@ -546,16 +546,16 @@ var FormRenderer = BasicRenderer.extend(WidgetAdapterMixin, {
*/
_renderHeaderButtons: function (node) {
var self = this;
var $buttons = $('<div>', {class: 'o_statusbar_buttons'});
var buttons = [];
_.each(node.children, function (child) {
if (child.tag === 'button') {
$buttons.append(self._renderHeaderButton(child));
buttons.push(self._renderHeaderButton(child));
}
if (child.tag === 'widget') {
$buttons.append(self._renderTagWidget(child));
buttons.push(self._renderTagWidget(child));
}
});
return $buttons;
return this._renderStatusbarButtons(buttons);
},
/**
* @private
@@ -743,6 +743,16 @@ var FormRenderer = BasicRenderer.extend(WidgetAdapterMixin, {
this._registerModifiers(node, this.state, $button);
return $button;
},
/**
* @private
* @param {Array} buttons
* @return {jQueryElement}
*/
_renderStatusbarButtons: function (buttons) {
var $statusbarButtons = $('<div>', {class: 'o_statusbar_buttons'});
buttons.forEach(button => $statusbarButtons.append(button));
return $statusbarButtons;
},
/**
* @private
* @param {Object} page
@@ -102,10 +102,15 @@ return core.Class.extend({
return [
{
mobile: true,
trigger: '.o_statusbar_buttons .btn.dropdown-toggle:contains(Action)',
auto: true,
trigger: '.o_statusbar_buttons',
extra_trigger: extraTrigger,
content: _t('Open Action Dropdown Menu.'),
position: 'bottom',
run: actions => {
const $action = $('.o_statusbar_buttons .btn.dropdown-toggle:contains(Action)');
if ($action.length) {
actions.click($action);
}
},
}, {
trigger: `.o_statusbar_buttons button:enabled:contains('${innerTextButton}')`,
content: description,