From 976fc2ffeac048818a54474be5f08f531d2c2d11 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 20 Feb 2019 10:55:19 +0530 Subject: [PATCH] fix: Render Signature and Geolocation after dialog is shown Dialogs are hidden the first time they are created, some fields need to calculate the dimensions of their container which is not possible when they are hidden, we fix it by rendering them after the dialog is shown. --- frappe/public/js/frappe/form/controls/geolocation.js | 2 +- frappe/public/js/frappe/form/controls/signature.js | 9 ++++++++- frappe/public/js/frappe/form/quick_entry.js | 3 --- frappe/public/js/frappe/ui/dialog.js | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/geolocation.js b/frappe/public/js/frappe/form/controls/geolocation.js index 7ba1b0b822..d68f6254b9 100644 --- a/frappe/public/js/frappe/form/controls/geolocation.js +++ b/frappe/public/js/frappe/form/controls/geolocation.js @@ -16,7 +16,7 @@ frappe.ui.form.ControlGeolocation = frappe.ui.form.ControlCode.extend({ if ($input_wrapper.is(':visible')) { this.make_map(); } else { - $(document).on('quick-entry-dialog-open', () => { + $(document).on('frappe.ui.Dialog:shown', () => { this.make_map(); }); } diff --git a/frappe/public/js/frappe/form/controls/signature.js b/frappe/public/js/frappe/form/controls/signature.js index 315a8ccfe8..82dcb8f341 100644 --- a/frappe/public/js/frappe/form/controls/signature.js +++ b/frappe/public/js/frappe/form/controls/signature.js @@ -7,7 +7,14 @@ frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({ // make jSignature field this.body = $('
').appendTo(me.wrapper); - this.make_pad(); + + if (this.body.is(':visible')) { + this.make_pad(); + } else { + $(document).on('frappe.ui.Dialog:shown', () => { + this.make_pad(); + }); + } this.img_wrapper = $(`
diff --git a/frappe/public/js/frappe/form/quick_entry.js b/frappe/public/js/frappe/form/quick_entry.js index a0cd22163e..257b6cd3ea 100644 --- a/frappe/public/js/frappe/form/quick_entry.js +++ b/frappe/public/js/frappe/form/quick_entry.js @@ -116,9 +116,6 @@ frappe.ui.form.QuickEntryForm = Class.extend({ this.dialog.onhide = () => frappe.quick_entry = null; this.dialog.show(); - this.dialog.$wrapper.on('shown.bs.modal', function() { - $(document).trigger('quick-entry-dialog-open'); - }); this.dialog.refresh_dependency(); this.set_defaults(); diff --git a/frappe/public/js/frappe/ui/dialog.js b/frappe/public/js/frappe/ui/dialog.js index cfbd765497..40bd865bef 100644 --- a/frappe/public/js/frappe/ui/dialog.js +++ b/frappe/public/js/frappe/ui/dialog.js @@ -83,7 +83,8 @@ frappe.ui.Dialog = class Dialog extends frappe.ui.FieldGroup { window.cur_dialog = me; frappe.ui.open_dialogs.push(me); me.focus_on_first_input(); - me.on_page_show && me.on_page_show(); + me.on_page_show && me.on_page_show(); + $(document).trigger('frappe.ui.Dialog:shown'); }) .on('scroll', function() { var $input = $('input:focus');