From 5d0ad77d62c682ed77ebc4e9f2e954cb058d6626 Mon Sep 17 00:00:00 2001 From: marination Date: Fri, 23 Dec 2022 00:44:53 +0530 Subject: [PATCH] fix: Hide Menu if empty & render columns without state change - 'Refresh' btn is always present in dropdown menu. Show menu if any other action is also present. - Without `update_order` state is not changed, and thus columns are not rendered on `init()` - If we are not updating order in the db, render columns with whatever information we have currently --- .../js/frappe/views/kanban/kanban_board.bundle.js | 6 ++++-- frappe/public/js/frappe/views/kanban/kanban_view.js | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js b/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js index fc93f2a910..703f49f205 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js +++ b/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js @@ -328,9 +328,11 @@ frappe.provide("frappe.views"); }, show_empty_state); if (frappe.model.can_write(store.state.doctype)) { - // Check for reference doctype access before initiating - // non-deliberate action + // Check for reference doctype access before trying to modify it's value store.dispatch("update_order"); + } else { + // Render columns without state change + make_columns(); } } diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js index 7ba15d7270..fb15131394 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_view.js +++ b/frappe/public/js/frappe/views/kanban/kanban_view.js @@ -45,6 +45,16 @@ frappe.views.KanbanView = class KanbanView extends frappe.views.ListView { }); } + init() { + return super.init().then(() => { + let menu_length = this.page.menu.find(".dropdown-item").length; + if (menu_length === 1) { + // Only 'Refresh' (hidden) is present (always), dropdown is visibly empty + this.page.hide_menu(); + } + }); + } + setup_defaults() { return super.setup_defaults().then(() => { let get_board_name = () => {