diff --git a/frappe/public/js/frappe/form/controls/base_control.js b/frappe/public/js/frappe/form/controls/base_control.js index 9d9c919e97..37cb977fdc 100644 --- a/frappe/public/js/frappe/form/controls/base_control.js +++ b/frappe/public/js/frappe/form/controls/base_control.js @@ -2,12 +2,6 @@ frappe.ui.form.Control = class BaseControl { constructor(opts) { $.extend(this, opts); this.make(); - - // if developer_mode=1, show fieldname as tooltip - if (frappe.boot.user && frappe.boot.developer_mode === 1 && this.$wrapper) { - this.$wrapper.attr("title", __(this.df.fieldname)); - } - if (this.render_input) { this.refresh(); } @@ -19,6 +13,7 @@ frappe.ui.form.Control = class BaseControl { .attr("data-fieldname", this.df.fieldname); this.wrapper = this.$wrapper.get(0); this.wrapper.fieldobj = this; // reference for event handlers + this.$wrapper.append(`${__(this.df.fieldname)}`); } make_wrapper() { diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index e070e1db0b..b425bfd475 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -35,6 +35,7 @@ frappe.ui.form.Layout = class Layout { } this.setup_tab_events(); + this.setup_tooltip_events(); this.render(); } @@ -529,6 +530,19 @@ frappe.ui.form.Layout = class Layout { }); } + setup_tooltip_events() { + $(document).on("keydown", (e) => { + if (e.metaKey || e.ctrlKey) { + this.wrapper.addClass("show-tooltip"); + } + }); + $(document).on("keyup", (e) => { + if (!e.metaKey || !e.ctrlKey) { + this.wrapper.removeClass("show-tooltip"); + } + }); + } + handle_tab(doctype, fieldname, shift) { let grid_row = null, prev = null, diff --git a/frappe/public/scss/desk/form.scss b/frappe/public/scss/desk/form.scss index 183c4b9033..b2cb19baf7 100644 --- a/frappe/public/scss/desk/form.scss +++ b/frappe/public/scss/desk/form.scss @@ -1,6 +1,29 @@ @import "../common/form.scss"; @import '~cropperjs/dist/cropper.min'; +.tooltip-content { + position: absolute; + bottom: 104%; + left: 0; + z-index: 9999; + padding: 2px 6px; + border-radius: var(--border-radius-sm); + background: var(--gray-dark); + color: var(--text-dark); + font-size: var(--text-xs); + opacity: 0; + cursor: default; + transition: opacity 0.3s, transform 3s; + pointer-events: none; +} + +.show-tooltip .frappe-control:hover .tooltip-content { + opacity: 1; + transform: translate3d(0,0,0); + pointer-events: auto; +} + + .std-form-layout > .form-layout > .form-page { border-radius: var(--border-radius-md); box-shadow: var(--card-shadow);