From f92226880e42f11986fa690ba709defe2adf5d16 Mon Sep 17 00:00:00 2001 From: sokumon Date: Thu, 27 Nov 2025 20:43:02 +0530 Subject: [PATCH] refactor: menu component --- frappe/desk/page/desktop/desktop.js | 54 ++++---- frappe/public/js/frappe/ui/menu.js | 43 +++--- .../js/frappe/ui/sidebar/sidebar_item.js | 130 +++++++++--------- frappe/public/scss/desk/index.scss | 1 + frappe/public/scss/desk/menu.scss | 41 ++++++ frappe/public/scss/desk/sidebar_header.scss | 44 ------ 6 files changed, 156 insertions(+), 157 deletions(-) create mode 100644 frappe/public/scss/desk/menu.scss diff --git a/frappe/desk/page/desktop/desktop.js b/frappe/desk/page/desktop/desktop.js index 643c9081ae..bd3c6ca6a6 100644 --- a/frappe/desk/page/desktop/desktop.js +++ b/frappe/desk/page/desktop/desktop.js @@ -162,34 +162,36 @@ class DesktopPage { } setup_avatar() { $(".desktop-avatar").html(frappe.avatar(frappe.session.user, "avatar-medium")); - $(".desktop-avatar").data("menu", "user-menu"); - let menu_items = [ - { - icon: "edit", - label: "Edit Profile", - url: `/update-profile/${frappe.session.user}`, - }, - { - icon: "lock", - label: "Reset Password", - url: "/update-password", - }, - { - icon: "rotate-ccw", - label: "Reset to Default", - onClick: function () { - reset_to_default(); - window.location.reload(); + let menu_items = { + name: "user-menu", + items: [ + { + icon: "edit", + label: "Edit Profile", + url: `/update-profile/${frappe.session.user}`, }, - }, - { - icon: "log-out", - label: "Logout", - onClick: function () { - frappe.app.logout(); + { + icon: "lock", + label: "Reset Password", + url: "/update-password", }, - }, - ]; + { + icon: "rotate-ccw", + label: "Reset to Default", + onClick: function () { + reset_to_default(); + window.location.reload(); + }, + }, + { + icon: "log-out", + label: "Logout", + onClick: function () { + frappe.app.logout(); + }, + }, + ], + }; frappe.ui.create_menu($(".desktop-avatar"), menu_items, null, true); } setup_navbar() { diff --git a/frappe/public/js/frappe/ui/menu.js b/frappe/public/js/frappe/ui/menu.js index 0c3bb1e951..fdb00298a8 100644 --- a/frappe/public/js/frappe/ui/menu.js +++ b/frappe/public/js/frappe/ui/menu.js @@ -2,9 +2,10 @@ import "../dom"; frappe.provide("frappe.ui"); frappe.ui.menu = class ContextMenu { - constructor(menu_items, left) { - this.template = $(``); - this.menu_items = menu_items; + constructor(opts, left) { + this.template = $(``); + this.menu_items = opts.items; + this.name = opts.name; this.open_on_left = left; } @@ -23,7 +24,7 @@ frappe.ui.menu = class ContextMenu { const me = this; let item_wrapper = $(`