From 2b9f00245d3edfb0cc8d22d58b2ff17e92398cef Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Fri, 17 Oct 2025 11:03:59 +0200 Subject: [PATCH 1/4] IBX-10653: flatpickr doesn't save seconds (unless minutes or other elements are changed afterwards) --- .../public/js/scripts/core/date.time.picker.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js index 0bdcaa2f9d..74d5f3d2bc 100644 --- a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js +++ b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js @@ -104,7 +104,7 @@ class DateTimePicker { } } - onKeyUp(isMinute, event) { + onKeyUp(isHour, isMinute, isSecond, event) { const inputValue = event.target.value; if (inputValue.length === 0) { @@ -120,10 +120,12 @@ class DateTimePicker { return; } - if (isMinute) { - flatpickrDate.setMinutes(value); - } else { + if (isHour) { flatpickrDate.setHours(value); + } else if (isMinute) { + flatpickrDate.setMinutes(value); + } else if (isSecond) { + flatpickrDate.setSeconds(value); } if (this.flatpickrInstance.config.minDate?.getTime() > flatpickrDate.getTime()) { @@ -150,8 +152,9 @@ class DateTimePicker { ); if (this.flatpickrInstance.config.enableTime) { - this.flatpickrInstance.minuteElement.addEventListener('keyup', this.onKeyUp.bind(this, true), false); - this.flatpickrInstance.hourElement.addEventListener('keyup', this.onKeyUp.bind(this, false), false); + this.flatpickrInstance.hourElement.addEventListener('keyup', this.onKeyUp.bind(this, true, false, false), false); + this.flatpickrInstance.minuteElement.addEventListener('keyup', this.onKeyUp.bind(this, false, true, false), false); + this.flatpickrInstance.secondElement.addEventListener('keyup', this.onKeyUp.bind(this, false, false, true), false); } } } From 2dc1153c958daf7ed4640caf4ea473c77e8552e6 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Wed, 5 Nov 2025 14:29:25 +0100 Subject: [PATCH 2/4] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: MichaƂ Grabowski --- .../js/scripts/core/date.time.picker.js | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js index 74d5f3d2bc..bb2f206912 100644 --- a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js +++ b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js @@ -104,7 +104,7 @@ class DateTimePicker { } } - onKeyUp(isHour, isMinute, isSecond, event) { + onKeyUp(type, event) { const inputValue = event.target.value; if (inputValue.length === 0) { @@ -120,12 +120,17 @@ class DateTimePicker { return; } - if (isHour) { - flatpickrDate.setHours(value); - } else if (isMinute) { - flatpickrDate.setMinutes(value); - } else if (isSecond) { - flatpickrDate.setSeconds(value); + switch (type) { + case 'hours': + flatpickrDate.setHours(value); + break; + case 'minutes': + flatpickrDate.setMinutes(value); + break; + case 'seconds': + flatpickrDate.setSeconds(value); + break; + } } if (this.flatpickrInstance.config.minDate?.getTime() > flatpickrDate.getTime()) { @@ -152,9 +157,9 @@ class DateTimePicker { ); if (this.flatpickrInstance.config.enableTime) { - this.flatpickrInstance.hourElement.addEventListener('keyup', this.onKeyUp.bind(this, true, false, false), false); - this.flatpickrInstance.minuteElement.addEventListener('keyup', this.onKeyUp.bind(this, false, true, false), false); - this.flatpickrInstance.secondElement.addEventListener('keyup', this.onKeyUp.bind(this, false, false, true), false); + this.flatpickrInstance.hourElement.addEventListener('keyup', this.onKeyUp.bind(this, 'hours'), false); + this.flatpickrInstance.minuteElement.addEventListener('keyup', this.onKeyUp.bind(this, 'minutes'), false); + this.flatpickrInstance.secondElement.addEventListener('keyup', this.onKeyUp.bind(this, 'seconds'), false); } } } From 4b276eae6a3d3acfcdc8385f05965bdbdd498782 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Wed, 5 Nov 2025 14:58:08 +0100 Subject: [PATCH 3/4] fixup! Apply suggestions from code review --- src/bundle/Resources/public/js/scripts/core/date.time.picker.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js index bb2f206912..a1be854155 100644 --- a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js +++ b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js @@ -131,7 +131,6 @@ class DateTimePicker { flatpickrDate.setSeconds(value); break; } - } if (this.flatpickrInstance.config.minDate?.getTime() > flatpickrDate.getTime()) { return; From f818f66a754014801499dcc16c09cdd2055463d7 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Thu, 6 Nov 2025 10:06:07 +0100 Subject: [PATCH 4/4] fixup! IBX-10653: flatpickr doesn't save seconds (unless minutes or other elements are changed afterwards) --- .../Resources/public/js/scripts/core/date.time.picker.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js index a1be854155..69e7921576 100644 --- a/src/bundle/Resources/public/js/scripts/core/date.time.picker.js +++ b/src/bundle/Resources/public/js/scripts/core/date.time.picker.js @@ -158,7 +158,9 @@ class DateTimePicker { if (this.flatpickrInstance.config.enableTime) { this.flatpickrInstance.hourElement.addEventListener('keyup', this.onKeyUp.bind(this, 'hours'), false); this.flatpickrInstance.minuteElement.addEventListener('keyup', this.onKeyUp.bind(this, 'minutes'), false); - this.flatpickrInstance.secondElement.addEventListener('keyup', this.onKeyUp.bind(this, 'seconds'), false); + if (this.flatpickrInstance.secondElement !== undefined) { + this.flatpickrInstance.secondElement.addEventListener('keyup', this.onKeyUp.bind(this, 'seconds'), false); + } } } }