From 10faee0a04aeb0caf9f67dee764461215df2b5ce Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 10:31:58 +0530 Subject: [PATCH] feat: custom __link_options (#17699) (#17838) * feat: custom __link_optins * chore: linter fixes * test: add ui test for custom link option (cherry picked from commit 1aa3f75d4c75221fea5815b297b7cd3803289925) Co-authored-by: Himanshu --- cypress/integration/control_link.js | 26 +++++++++++++++++++ frappe/public/js/frappe/form/controls/link.js | 11 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/cypress/integration/control_link.js b/cypress/integration/control_link.js index 44b78e731b..240515be45 100644 --- a/cypress/integration/control_link.js +++ b/cypress/integration/control_link.js @@ -310,4 +310,30 @@ context("Control Link", () => { expect(label).to.eq("Non-Conforming"); }); }); + + it("show custom link option", () => { + cy.window() + .its("frappe") + .then((frappe) => { + frappe.ui.form.ControlLink.link_options = (link) => { + return [ + { + html: + "" + + " " + + "Custom Link Option" + + "", + label: "Custom Link Option", + value: "custom__link_option", + action: () => {}, + }, + ]; + }; + + get_dialog_with_link().as("dialog"); + cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); + cy.get("@input").type("custom", { delay: 100 }); + cy.get(".custom-link-option").should("be.visible"); + }); + }); }); diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index 5b1bb4faeb..e34fd01008 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -288,8 +288,17 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat action: me.new_doc, }); } - // advanced search + //custom link actions + let custom__link_options = + frappe.ui.form.ControlLink.link_options && + frappe.ui.form.ControlLink.link_options(me); + + if (custom__link_options) { + r.results = r.results.concat(custom__link_options); + } + + // advanced search if (locals && locals["DocType"]) { // not applicable in web forms r.results.push({