diff --git a/frappe/desk/doctype/desktop_icon/desktop_icon.json b/frappe/desk/doctype/desktop_icon/desktop_icon.json index 9b04345ccf..fe7bfb7585 100644 --- a/frappe/desk/doctype/desktop_icon/desktop_icon.json +++ b/frappe/desk/doctype/desktop_icon/desktop_icon.json @@ -144,7 +144,7 @@ } ], "links": [], - "modified": "2026-01-23 14:33:55.594120", + "modified": "2026-01-25 15:29:33.884930", "modified_by": "Administrator", "module": "Desk", "name": "Desktop Icon", @@ -162,6 +162,18 @@ "role": "System Manager", "share": 1, "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Desk User", + "share": 1, + "write": 1 } ], "quick_entry": 1, diff --git a/frappe/desk/doctype/desktop_layout/desktop_layout.json b/frappe/desk/doctype/desktop_layout/desktop_layout.json index 0cdbf5921a..91e516df86 100644 --- a/frappe/desk/doctype/desktop_layout/desktop_layout.json +++ b/frappe/desk/doctype/desktop_layout/desktop_layout.json @@ -27,7 +27,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2026-01-18 02:45:37.287424", + "modified": "2026-01-25 15:30:12.805037", "modified_by": "Administrator", "module": "Desk", "name": "Desktop Layout", @@ -45,6 +45,18 @@ "role": "System Manager", "share": 1, "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Desk User", + "share": 1, + "write": 1 } ], "row_format": "Dynamic", diff --git a/frappe/desk/page/desktop/desktop.css b/frappe/desk/page/desktop/desktop.css index d0d8514028..bc075e1842 100644 --- a/frappe/desk/page/desktop/desktop.css +++ b/frappe/desk/page/desktop/desktop.css @@ -183,6 +183,7 @@ & .modal-content { top: 120px; border-radius: var(--desktop-modal-radius); + align-items: center; } } } @@ -196,10 +197,13 @@ width: var(--desktop-modal-width); height: var(--desktop-modal-height); padding: 24px 23px !important; - width: fit-content; & .icons{ gap: 0px 0px; } + & .icons:has(.desktop-edit-mode){ + margin-top: 4px; + gap: 6px 6px; + } .icon-container{ min-height: var(--desktop-icon-dimension); } diff --git a/frappe/desk/page/desktop/desktop.js b/frappe/desk/page/desktop/desktop.js index 8b0ef1c1dc..46de62de8b 100644 --- a/frappe/desk/page/desktop/desktop.js +++ b/frappe/desk/page/desktop/desktop.js @@ -129,8 +129,9 @@ function save_desktop(icons) { } function reset_to_default() { - frappe.model.user_settings.save("Desktop Icon", "icons_to_create", null); - frappe.model.user_settings.save("Desktop Icon", "desktop_layout", null); + frappe.db.delete_doc("Desktop Layout", frappe.session.user).then(() => { + frappe.ui.toolbar.clear_cache(); + }); } function toggle_icons(icons) { @@ -1061,6 +1062,10 @@ class DesktopModal { setup(icon_title, child_icons_data, grid_row_size) { const me = this; this.make_modal(icon_title); + + // Check if we're in edit mode + const is_edit_mode = frappe.pages["desktop"].desktop_page.edit_mode; + this.child_icon_grid = new DesktopIconGrid({ wrapper: this.$child_icons_wrapper, icons_data: child_icons_data, @@ -1068,8 +1073,16 @@ class DesktopModal { in_folder: false, in_modal: true, parent_icon: this.parent_icon_obj, + edit_mode: is_edit_mode, // Pass edit mode state }); + // If in edit mode, setup reordering for the modal icons + if (is_edit_mode) { + this.child_icon_grid.grids.forEach((grid) => { + this.child_icon_grid.setup_reordering(grid); + }); + } + this.modal.on("hidden.bs.modal", function () { me.modal.remove(); frappe.desktop_utils.modal = null; @@ -1187,8 +1200,10 @@ class InlineEditor { bindEvents() { this.container.on("click", () => { - this.label.css("visibility", "hidden"); - this.input.focus().select(); + if (frappe.pages["desktop"].desktop_page.edit_mode) { + this.label.css("visibility", "hidden"); + this.input.focus().select(); + } }); this.input.on("keydown", (event) => {