From 667e89e0a12084052271773ca85752b7ff5f9fad Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Mon, 4 Sep 2017 14:04:32 +0530 Subject: [PATCH] [Datepicker] Fix today button, disable keyboardNav --- frappe/public/js/frappe/form/controls/date.js | 14 +++++++++++++- frappe/public/js/frappe/form/controls/datetime.js | 6 ++++-- frappe/public/js/frappe/form/controls/time.js | 8 +++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/date.js b/frappe/public/js/frappe/form/controls/date.js index fcb417d7f7b..c5ea3c28cec 100644 --- a/frappe/public/js/frappe/form/controls/date.js +++ b/frappe/public/js/frappe/form/controls/date.js @@ -38,9 +38,10 @@ frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({ this.datepicker_options = { language: lang, autoClose: true, - todayButton: frappe.datetime.now_date(true), + todayButton: true, dateFormat: (frappe.boot.sysdefaults.date_format || 'yyyy-mm-dd'), startDate: frappe.datetime.now_date(true), + keyboardNav: false, onSelect: () => { this.$input.trigger('change'); }, @@ -69,6 +70,17 @@ frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({ set_datepicker: function() { this.$input.datepicker(this.datepicker_options); this.datepicker = this.$input.data('datepicker'); + + // today button didn't work as expected, + // so explicitly bind the event + this.datepicker.$datepicker + .find('[data-action="today"]') + .click(() => { + this.datepicker.selectDate(this.get_now_date()); + }); + }, + get_now_date: function() { + return frappe.datetime.now_date(true); }, set_t_for_today: function() { var me = this; diff --git a/frappe/public/js/frappe/form/controls/datetime.js b/frappe/public/js/frappe/form/controls/datetime.js index cffbe42f9d1..93fa3c8ea8b 100644 --- a/frappe/public/js/frappe/form/controls/datetime.js +++ b/frappe/public/js/frappe/form/controls/datetime.js @@ -4,10 +4,12 @@ frappe.ui.form.ControlDatetime = frappe.ui.form.ControlDate.extend({ this.today_text = __("Now"); $.extend(this.datepicker_options, { timepicker: true, - timeFormat: "hh:ii:ss", - todayButton: frappe.datetime.now_datetime(true) + timeFormat: "hh:ii:ss" }); }, + get_now_date: function() { + return frappe.datetime.now_datetime(true); + }, set_description: function() { const { description } = this.df; const { time_zone } = frappe.sys_defaults; diff --git a/frappe/public/js/frappe/form/controls/time.js b/frappe/public/js/frappe/form/controls/time.js index be96cc9a8dc..75c9fe738da 100644 --- a/frappe/public/js/frappe/form/controls/time.js +++ b/frappe/public/js/frappe/form/controls/time.js @@ -14,9 +14,15 @@ frappe.ui.form.ControlTime = frappe.ui.form.ControlData.extend({ onShow: function() { $('.datepicker--button:visible').text(__('Now')); }, - todayButton: frappe.datetime.now_time(true) + keyboardNav: false, + todayButton: true }); this.datepicker = this.$input.data('datepicker'); + this.datepicker.$datepicker + .find('[data-action="today"]') + .click(() => { + this.datepicker.selectDate(frappe.datetime.now_time(true)); + }); this.refresh(); }, set_input: function(value) {