diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js index 5fde62d898..bf969f1566 100644 --- a/frappe/public/js/frappe/ui/page.js +++ b/frappe/public/js/frappe/ui/page.js @@ -275,7 +275,7 @@ frappe.ui.Page = Class.extend({ return $('
  • ').appendTo(this.menu); }, - get_inner_group_button: function(label) { + get_or_add_inner_group_button: function(label) { var $group = this.inner_toolbar.find('.btn-group[data-label="'+label+'"]'); if(!$group.length) { $group = $('
    \ @@ -286,8 +286,12 @@ frappe.ui.Page = Class.extend({ return $group; }, + get_inner_group_button: function(label) { + return this.inner_toolbar.find('.btn-group[data-label="'+label+'"]'); + }, + set_inner_btn_group_as_primary: function(label) { - this.get_inner_group_button(label).find("button").removeClass("btn-default").addClass("btn-primary"); + this.get_or_add_inner_group_button(label).find("button").removeClass("btn-default").addClass("btn-primary"); }, btn_disable_enable: function(btn, response) { @@ -312,7 +316,7 @@ frappe.ui.Page = Class.extend({ me.btn_disable_enable(btn, response); }; if(group) { - var $group = this.get_inner_group_button(group); + var $group = this.get_or_add_inner_group_button(group); $(this.inner_toolbar).removeClass("hide"); return $('
  • '+label+'
  • ') .on('click', _action) @@ -324,6 +328,29 @@ frappe.ui.Page = Class.extend({ } }, + remove_inner_button: function(label, group) { + if (typeof label === 'string') { + label = [label]; + } + // translate + label = label.map(l => __(l)); + + if (group) { + var $group = this.get_inner_group_button(__(group)); + if($group.length) { + $group.find('.dropdown-menu li a') + .filter((i, btn) => label.includes($(btn).text())) + .remove(); + } + if ($group.find('.dropdown-menu li a').length === 0) $group.remove(); + } else { + + this.inner_toolbar.find('button') + .filter((i, btn) => label.includes($(btn).text())) + .remove(); + } + }, + clear_inner_toolbar: function() { this.inner_toolbar.empty().addClass("hide"); }, @@ -495,4 +522,4 @@ frappe.ui.Page = Class.extend({ this.wrapper.trigger('view-change'); }, -}); \ No newline at end of file +}); diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js index 5c64d62c0a..081bb8fec6 100644 --- a/frappe/public/js/legacy/form.js +++ b/frappe/public/js/legacy/form.js @@ -4,7 +4,7 @@ /* Form page structure + this.parent (either FormContainer or Dialog) - + this.wrapper + + this.wrapper + this.toolbar + this.form_wrapper + this.head @@ -921,12 +921,18 @@ _f.Frm.prototype.add_custom_button = function(label, fn, group) { return btn; }; +//Remove all custom buttons _f.Frm.prototype.clear_custom_buttons = function() { this.page.clear_inner_toolbar(); this.page.clear_user_actions(); this.custom_buttons = {}; }; +//Remove specific custom button by button Label +_f.Frm.prototype.remove_custom_button = function(label, group) { + this.page.remove_inner_button(label, group); +}; + _f.Frm.prototype.add_fetch = function(link_field, src_field, tar_field) { if(!this.fetch_dict[link_field]) { this.fetch_dict[link_field] = {'columns':[], 'fields':[]};