From 9995bee63ce80b25f1c18965cba490f3738c7591 Mon Sep 17 00:00:00 2001 From: Sumit Jain Date: Fri, 10 Apr 2026 12:16:21 +0530 Subject: [PATCH] feat: Enhance Data Exporter and MultiCheck UI with warning titles and tooltips --- .../js/frappe/data_import/data_exporter.js | 13 +++++++--- .../js/frappe/form/controls/multicheck.js | 26 ++++++++++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/frappe/public/js/frappe/data_import/data_exporter.js b/frappe/public/js/frappe/data_import/data_exporter.js index 72ac191c30..c905039612 100644 --- a/frappe/public/js/frappe/data_import/data_exporter.js +++ b/frappe/public/js/frappe/data_import/data_exporter.js @@ -309,11 +309,17 @@ frappe.data_import.DataExporter = class DataExporter { if (autoname_field && df.fieldname == autoname_field.fieldname) { return true; } - if (df.fieldname === "name") { - return true; - } return false; }; + let get_info_title = (df) => { + if (df.depends_on) { + return __("Depends on: {0}", [df.depends_on]); + } + if (autoname_field && df.fieldname == autoname_field.fieldname) { + return __("Autoname: {0}", [autoname_field.label]); + } + return ""; + }; return fields .filter((df) => { @@ -332,6 +338,7 @@ frappe.data_import.DataExporter = class DataExporter { value: df.fieldname, danger: is_field_mandatory(df), warning: is_field_depends_on(df), + warning_title: get_info_title(df), include_in_import_template: !!df.include_in_import_template, checked: false, description: `${df.fieldname} ${df.reqd ? __("(Mandatory)") : ""}`, diff --git a/frappe/public/js/frappe/form/controls/multicheck.js b/frappe/public/js/frappe/form/controls/multicheck.js index 9b59dc5b3c..52a79be20c 100644 --- a/frappe/public/js/frappe/form/controls/multicheck.js +++ b/frappe/public/js/frappe/form/controls/multicheck.js @@ -82,12 +82,10 @@ frappe.ui.form.ControlMultiCheck = class ControlMultiCheck extends frappe.ui.for } this.options.forEach((option) => { let checkbox = this.get_checkbox_element(option).appendTo(this.$checkbox_area); - if (option.danger) { - checkbox.find(".label-area").addClass("text-danger"); - } - if (option.warning) { - checkbox.find(".label-area").addClass("text-warning"); - } + checkbox.find('[data-toggle="tooltip"]').tooltip({ + delay: { show: 600, hide: 100 }, + trigger: "hover", + }); option.$checkbox = checkbox; }); @@ -165,11 +163,25 @@ frappe.ui.form.ControlMultiCheck = class ControlMultiCheck extends frappe.ui.for } get_checkbox_element(option) { + const mandatory_marker = option.danger + ? `*` + : ""; + const warning_title = frappe.utils.escape_html( + option.warning_title || __("Condition based field") + ); + const warning_icon = option.warning + ? `${frappe.utils.icon( + "info", + "xs" + )}` + : ""; return $(`
`);