From 079008d99be05aebfa31ca238ca588d8f40c9113 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Wed, 27 Jan 2021 18:04:28 +0100 Subject: [PATCH] introduce "Now" button Throught the plugin: https://github.com/jcsmorais/shortcut-buttons-flatpickr import js library via yarn --- app/assets/javascripts/admin/util.js.erb | 36 ++++++++++++++++++- .../utils/directives/date_picker.js.coffee | 15 ++++---- yarn.lock | 5 +++ 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/admin/util.js.erb b/app/assets/javascripts/admin/util.js.erb index 61ca9a3087..42671fe6d9 100644 --- a/app/assets/javascripts/admin/util.js.erb +++ b/app/assets/javascripts/admin/util.js.erb @@ -1,7 +1,24 @@ $(document).ready(function(){ window.FLATPICKR_DATE_DEFAULT = { dateFormat: Spree.translations.flatpickr_date_format, - locale: I18n.locale + locale: I18n.locale, + plugins: [ + ShortcutButtonsPlugin({ + button: [{ + label: "Today" + }], + label: "or", + onClick: (index, fp) => { + let date; + switch (index) { + case 0: + date = new Date(); + break; + } + fp.setDate(date); + } + }) + ] } window.FLATPICKR_DATETIME_DEFAULT = Object.assign( {}, @@ -9,6 +26,23 @@ $(document).ready(function(){ { enableTime: true, time_24hr: true, + plugins: [ + ShortcutButtonsPlugin({ + button: [{ + label: "Now" + }], + label: "or", + onClick: (index, fp) => { + let date; + switch (index) { + case 0: + date = new Date(); + break; + } + fp.setDate(date); + } + }) + ] } ); flatpickr(".datetimepicker", window.FLATPICKR_DATETIME_DEFAULT); diff --git a/app/assets/javascripts/admin/utils/directives/date_picker.js.coffee b/app/assets/javascripts/admin/utils/directives/date_picker.js.coffee index 662665e1ea..455215f99e 100644 --- a/app/assets/javascripts/admin/utils/directives/date_picker.js.coffee +++ b/app/assets/javascripts/admin/utils/directives/date_picker.js.coffee @@ -1,8 +1,11 @@ -angular.module("admin.utils").directive "datepicker", -> +angular.module("admin.utils").directive "datepicker", ($window, $timeout) -> require: "ngModel" link: (scope, element, attrs, ngModel) -> - flatpickr(element, Object.assign({}, - window.FLATPICKR_DATE_DEFAULT, { - onOpen: (selectedDates, dateStr, instance) -> - instance.setDate(ngModel.$modelValue) - })); + $timeout -> + flatpickr(element, Object.assign( + {}, + $window.FLATPICKR_DATE_DEFAULT, { + onOpen: (selectedDates, dateStr, instance) -> + instance.setDate(ngModel.$modelValue) + } + )); diff --git a/yarn.lock b/yarn.lock index 409d35b699..89026669fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1519,6 +1519,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +shortcut-buttons-flatpickr@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/shortcut-buttons-flatpickr/-/shortcut-buttons-flatpickr-0.3.1.tgz#25ec705db8e7c80f0f81f5e160783102775ef529" + integrity sha512-zZRLJXF7WSeQJ0ZES+PdD1FI+yjBOufqOQ4AU5przR71Rhyekiw/6/JLA33zOqVkgR7QQ1NbVcuuSqNHHGneEg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"