[fix] Button duplication on page trigger: refresh (#5564)
* [fix] custom button duplication on page trigger: refresh * added data-label to buttons to filter them more easily * added encodeURIComponent to data-label * Update page.js
This commit is contained in:
parent
e76b3eef4e
commit
c86de780fc
2 changed files with 17 additions and 14 deletions
|
|
@ -322,9 +322,9 @@ frappe.ui.Page = Class.extend({
|
|||
},
|
||||
|
||||
get_or_add_inner_group_button: function(label) {
|
||||
var $group = this.inner_toolbar.find('.btn-group[data-label="'+label+'"]');
|
||||
var $group = this.inner_toolbar.find('.btn-group[data-label="'+encodeURIComponent(label)+'"]');
|
||||
if(!$group.length) {
|
||||
$group = $('<div class="btn-group" data-label="'+label+'" style="margin-left: 10px;">\
|
||||
$group = $('<div class="btn-group" data-label="'+encodeURIComponent(label)+'" style="margin-left: 10px;">\
|
||||
<button type="button" class="btn btn-default dropdown-toggle btn-xs" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\
|
||||
'+label+' <span class="caret"></span></button>\
|
||||
<ul class="dropdown-menu" style="margin-top: -8px;"></ul></div>').appendTo(this.inner_toolbar);
|
||||
|
|
@ -333,7 +333,7 @@ frappe.ui.Page = Class.extend({
|
|||
},
|
||||
|
||||
get_inner_group_button: function(label) {
|
||||
return this.inner_toolbar.find('.btn-group[data-label="'+label+'"]');
|
||||
return this.inner_toolbar.find('.btn-group[data-label="'+encodeURIComponent(label)+'"]');
|
||||
},
|
||||
|
||||
set_inner_btn_group_as_primary: function(label) {
|
||||
|
|
@ -375,15 +375,20 @@ frappe.ui.Page = Class.extend({
|
|||
$(this.inner_toolbar).removeClass("hide");
|
||||
|
||||
if (!this.is_in_group_button_dropdown($group.find(".dropdown-menu"), 'li', label)) {
|
||||
return $('<li><a>'+label+'</a></li>')
|
||||
return $('<li><a data-label="'+encodeURIComponent(label)+'">'+label+'</a></li>')
|
||||
.on('click', _action)
|
||||
.appendTo($group.find(".dropdown-menu"));
|
||||
}
|
||||
|
||||
} else {
|
||||
return $('<button class="btn btn-default btn-xs" style="margin-left: 10px;">'+__(label)+'</btn>')
|
||||
.on("click", _action)
|
||||
.appendTo(this.inner_toolbar.removeClass("hide"));
|
||||
var button = this.inner_toolbar.find('button[data-label="'+encodeURIComponent(label)+'"]');
|
||||
if( button.length == 0 ) {
|
||||
return $('<button data-label="'+encodeURIComponent(label)+'" class="btn btn-default btn-xs" style="margin-left: 10px;">'+__(label)+'</btn>')
|
||||
.on("click", _action)
|
||||
.appendTo(this.inner_toolbar.removeClass("hide"));
|
||||
} else {
|
||||
return button;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -397,16 +402,12 @@ frappe.ui.Page = Class.extend({
|
|||
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();
|
||||
$group.find('.dropdown-menu li a[data-label="'+encodeURIComponent(label)+'"]').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();
|
||||
this.inner_toolbar.find('button[data-label="'+encodeURIComponent(label)+'"]').remove();
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -934,7 +934,9 @@ _f.Frm.prototype.add_custom_button = function(label, fn, group) {
|
|||
// temp! old parameter used to be icon
|
||||
if(group && group.indexOf("fa fa-")!==-1) group = null;
|
||||
var btn = this.page.add_inner_button(label, fn, group);
|
||||
this.custom_buttons[label] = btn;
|
||||
if(btn) {
|
||||
this.custom_buttons[label] = btn;
|
||||
}
|
||||
return btn;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue