From c5c7a0ecfe84a82e6cfd930dad843de9bf6ecc03 Mon Sep 17 00:00:00 2001 From: Rutwik Hiwalkar Date: Sat, 20 Apr 2024 12:02:42 +0530 Subject: [PATCH] refactor: move copy to clipboard btn to code.js (#26061) - ref: https://github.com/frappe/frappe/pull/26049 --- .../js/frappe/form/controls/base_input.js | 19 ----------- frappe/public/js/frappe/form/controls/code.js | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/base_input.js b/frappe/public/js/frappe/form/controls/base_input.js index 3d4342c1c9..22958701be 100644 --- a/frappe/public/js/frappe/form/controls/base_input.js +++ b/frappe/public/js/frappe/form/controls/base_input.js @@ -153,25 +153,6 @@ frappe.ui.form.ControlInput = class ControlInput extends frappe.ui.form.Control let display_value = frappe.format(value, this.df, { no_icon: true, inline: true }, doc); // This is used to display formatted output AND showing values in read only fields this.disp_area && $(this.disp_area).html(display_value); - - if (this.df.fieldtype === "Code") { - this.button = $( - `` - ); - this.button.appendTo($(this.disp_area)); - this.button.on("click", () => { - frappe.utils.copy_to_clipboard(value); - }); - } } set_label(label) { if (label) this.df.label = label; diff --git a/frappe/public/js/frappe/form/controls/code.js b/frappe/public/js/frappe/form/controls/code.js index d57b6728b7..f547c4c7e3 100644 --- a/frappe/public/js/frappe/form/controls/code.js +++ b/frappe/public/js/frappe/form/controls/code.js @@ -4,6 +4,39 @@ frappe.ui.form.ControlCode = class ControlCode extends frappe.ui.form.ControlTex this.load_lib().then(() => this.make_ace_editor()); } + make_wrapper() { + super.make_wrapper(); + this.set_copy_button(); + } + + set_copy_button() { + if (!this.frm?.doc) { + return; + } + + const codeField = this.df.fieldtype === "Code"; + if ((codeField && this.df.read_only === 1) || (codeField && this.frm.doc.docstatus > 0)) { + this.button = $( + `` + ); + this.button.on("click", () => { + frappe.utils.copy_to_clipboard( + frappe.model.get_value(this.doctype, this.docname, this.df.fieldname) + ); + }); + this.button.appendTo(this.$wrapper); + } + } + make_ace_editor() { if (this.editor) return; this.ace_editor_target = $('
').appendTo(