diff --git a/frappe/public/js/frappe/list/list_view_select.js b/frappe/public/js/frappe/list/list_view_select.js
index 2010ffabf6..c21d15315d 100644
--- a/frappe/public/js/frappe/list/list_view_select.js
+++ b/frappe/public/js/frappe/list/list_view_select.js
@@ -113,16 +113,9 @@ frappe.views.ListViewSelect = class ListViewSelect
condition: true,
action: () => this.setup_kanban_boards(),
current_view_handler: () => {
- frappe.views.KanbanView.get_kanbans(this.doctype).then((kanbans) => {
- this.setup_dropdown_in_sidebar(
- 'Kanban',
- kanbans,
- {
- label: __('New Kanban Board'),
- action: () => frappe.views.KanbanView.show_kanban_dialog(this.doctype)
- }
- );
- });
+ frappe.views.KanbanView.get_kanbans(this.doctype).then((kanbans) =>
+ this.setup_kanban_switcher(kanbans)
+ );
}
},
}
@@ -154,7 +147,7 @@ frappe.views.ListViewSelect = class ListViewSelect
`;
} else {
items.map(item => {
- if (item.name == frappe.utils.to_title_case(frappe.get_route().slice(-1)[0] || '')) {
+ if (item.name == this.get_page_name()) {
placeholder = item.name;
}
html += `
${item.name}`;
@@ -173,6 +166,33 @@ frappe.views.ListViewSelect = class ListViewSelect
views_wrapper.removeClass('hide');
}
+ setup_kanban_switcher(kanbans) {
+ const kanban_switcher =
+ this.page.add_custom_button_group(
+ __('Select Kanban'), null, this.list_view.$filter_section
+ );
+
+ kanbans.map(k => {
+ this.page.add_custom_menu_item(
+ kanban_switcher,
+ k.name,
+ () => this.set_route('kanban', k.name),
+ false
+ );
+ });
+
+ this.page.add_custom_menu_item(
+ kanban_switcher,
+ __('Create New Kanban Board'),
+ () => frappe.views.KanbanView.show_kanban_dialog(this.doctype),
+ true
+ );
+ }
+
+ get_page_name() {
+ return frappe.utils.to_title_case(frappe.get_route().slice(-1)[0] || '')
+ }
+
get_reports() {
// add reports linked to this doctype to the dropdown
let added = [];
diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js
index 2b13423af5..89f477fd6c 100644
--- a/frappe/public/js/frappe/ui/page.js
+++ b/frappe/public/js/frappe/ui/page.js
@@ -436,9 +436,9 @@ frappe.ui.Page = Class.extend({
if (standard) {
$li.appendTo(parent);
} else {
- this.divider = parent.find(".divider");
+ this.divider = parent.find(".dropdown-divider");
if(!this.divider.length) {
- this.divider = $('').prependTo(parent);
+ this.divider = $('').prependTo(parent);
}
$li.addClass("user-action").insertBefore(this.divider);
}
@@ -506,7 +506,7 @@ frappe.ui.Page = Class.extend({
},
add_divider: function() {
- return $('').appendTo(this.menu);
+ return $('').appendTo(this.menu);
},
get_or_add_inner_group_button: function(label) {
@@ -693,7 +693,7 @@ frappe.ui.Page = Class.extend({
add_custom_button_group: function(label, icon, parent) {
let dropdown_label = `
${__(label)}
-
+ ${frappe.utils.icon('select', 'xs')}
`;
if (icon) {
@@ -708,7 +708,7 @@ frappe.ui.Page = Class.extend({
}
let custom_btn_group = $(`
-
+
@@ -717,7 +717,7 @@ frappe.ui.Page = Class.extend({
`);
if (!parent) parent = this.custom_actions;
- this.custom_actions.removeClass('hide').append(custom_btn_group);
+ parent.removeClass('hide').append(custom_btn_group);
return custom_btn_group.find('.dropdown-menu');
},
diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js
index 665cf096e4..58b8314a49 100644
--- a/frappe/public/js/frappe/views/kanban/kanban_view.js
+++ b/frappe/public/js/frappe/views/kanban/kanban_view.js
@@ -205,7 +205,7 @@ frappe.views.KanbanView.get_kanbans = function (doctype) {
.then((kanban_boards) => {
if (kanban_boards) {
kanban_boards.forEach(board => {
- let route = `/app/${frappe.router.slug(board.reference_doctype)}/kanban/${board.name}`;
+ let route = `/app/${frappe.router.slug(board.reference_doctype)}/view/kanban/${board.name}`;
kanbans.push({ name: board.name, route: route });
});
}