diff --git a/cypress/integration/form.js b/cypress/integration/form.js index 6319e8ae80..d83c304c71 100644 --- a/cypress/integration/form.js +++ b/cypress/integration/form.js @@ -6,7 +6,8 @@ const jump_to_field = (field_label) => { .wait(500) .type("{enter}") .wait(200) - .type("{enter}") + .findByRole("button", { name: "Go" }) + .click() .wait(1000); }; @@ -99,9 +100,7 @@ context("Form", () => { cy.new_form("User"); jump_to_field("Location"); // this is in collapsed section - cy.wait(500); type_value("Bermuda"); - cy.wait(500); cy.get_field("location").should("have.value", "Bermuda"); }); diff --git a/cypress/integration/list_view_settings.js b/cypress/integration/list_view_settings.js index 57c7f3023d..97b6cac8e3 100644 --- a/cypress/integration/list_view_settings.js +++ b/cypress/integration/list_view_settings.js @@ -2,18 +2,24 @@ context("List View Settings", () => { beforeEach(() => { cy.login(); cy.visit("/desk/website"); + cy.visit("/desk/List/DocType/List"); + cy.wait(300); + cy.clear_filters(); + cy.wait(300); + cy.get(".menu-btn-group button").click({ force: true }); + cy.get(".dropdown-menu li").filter(":visible").contains("List Settings").click(); + cy.get(".modal-dialog").should("contain", "DocType List View Settings"); + cy.findByLabelText("Disable Count").uncheck({ force: true }); + cy.findByLabelText("Disable Comment Count").uncheck({ force: true }); + cy.findByLabelText("Disable Sidebar Stats").uncheck({ force: true }); + cy.findByRole("button", { name: "Save" }).click(); + cy.reload({ force: true }); }); it("Default settings", () => { - cy.visit("/desk/List/DocType/List"); - cy.clear_filters(); cy.get(".list-count").should("contain", "20 of"); cy.get(".list-stats").should("contain", "Tags"); }); it("disable count and sidebar stats then verify", () => { - cy.wait(300); - cy.visit("/desk/List/DocType/List"); - cy.clear_filters(); - cy.wait(300); cy.get(".list-count").should("contain", "20 of"); cy.get(".frappe-list svg.es-icon.es-line").should("be.visible"); cy.get(".menu-btn-group button").click(); @@ -29,7 +35,7 @@ context("List View Settings", () => { cy.get(".list-count").should("be.empty"); cy.get(".list-sidebar .list-tags").should("not.exist"); - cy.get("[href='#es-line-chat-alt']").should("not.be.visible"); + cy.get("[href='#es-line-chat-alt']").should("not.exist"); cy.get(".menu-btn-group button").click({ force: true }); cy.get(".dropdown-menu li").filter(":visible").contains("List Settings").click(); diff --git a/frappe/public/js/frappe/ui/menu.js b/frappe/public/js/frappe/ui/menu.js index 330095832f..2eb0eaa2d2 100644 --- a/frappe/public/js/frappe/ui/menu.js +++ b/frappe/public/js/frappe/ui/menu.js @@ -31,37 +31,46 @@ frappe.ui.menu = class ContextMenu { } add_menu_item(item) { const me = this; - let item_wrapper = $(`
`); - if (!item.url) { - item_wrapper.on("click", function () { - item.onClick && item.onClick(); - if (!(item.items && item.items.length)) { - me.opts.onItemClick && me.opts.onItemClick(me.opts.parent); - me.hide(); - } - }); - } else if (item.items) { - $(); + let item_wrapper = $( + `` + ); + if (item?.is_divider) { + item_wrapper = $( + `` + ); } else { - $(item_wrapper).find("a").attr("href", item.url); + item_wrapper = $(``); + if (!item.url) { + item_wrapper.on("click", function () { + item.onClick && item.onClick(); + if (!(item.items && item.items.length)) { + me.opts.onItemClick && me.opts.onItemClick(me.opts.parent); + me.hide(); + } + }); + } else if (item.items) { + $(); + } else { + $(item_wrapper).find("a").attr("href", item.url); + } } item_wrapper.appendTo(this.template); if (item.items) { diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar_header.js b/frappe/public/js/frappe/ui/sidebar/sidebar_header.js index 997211c63a..371bfafd5c 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar_header.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar_header.js @@ -42,6 +42,14 @@ frappe.ui.SidebarHeader = class SidebarHeader { }, }, ]; + if (frappe.boot.desk_settings.notifications) { + this.dropdown_items.push({ + name: "help", + label: "Help", + icon: "info", + items: this.get_help_siblings(), + }); + } this.make(); this.setup_app_switcher(); this.populate_dropdown_menu(); @@ -67,6 +75,51 @@ frappe.ui.SidebarHeader = class SidebarHeader { return sibling_workspaces; } } + + get_help_siblings() { + const navbar_settings = frappe.boot.navbar_settings; + let help_dropdown_items = []; + + let custom_help_links = this.get_custom_help_links(); + + help_dropdown_items = custom_help_links.concat(help_dropdown_items); + + navbar_settings.help_dropdown.forEach((element) => { + let dropdown_children = { + name: element.name, + label: element.item_label, + }; + if (element.item_type === "Route") { + dropdown_children.url = element.route; + } + if (element.item_type === "Action") { + dropdown_children.onClick = function () { + frappe.utils.eval(element.action); + }; + } + help_dropdown_items.push(dropdown_children); + }); + + return help_dropdown_items; + } + + get_custom_help_links() { + let route = frappe.get_route_str(); + let breadcrumbs = route.split("/"); + + let links = []; + for (let i = 0; i < breadcrumbs.length; i++) { + let r = route.split("/", i + 1); + let key = r.join("/"); + let help_links = frappe.help.help_links[key] || []; + links = $.merge(links, help_links); + } + if (links.length) { + links.push({ is_divider: true }); + } + return links; + } + make() { $(".sidebar-header").remove(); $(".sidebar-header-menu").remove(); diff --git a/frappe/public/js/frappe/ui/toolbar/navbar.html b/frappe/public/js/frappe/ui/toolbar/navbar.html index 057dae067f..9879e4d17d 100644 --- a/frappe/public/js/frappe/ui/toolbar/navbar.html +++ b/frappe/public/js/frappe/ui/toolbar/navbar.html @@ -24,51 +24,6 @@ {% endif %}