Added compatibility for single digit hours in 24 hours format

This commit is contained in:
lindhork 2021-02-11 03:54:12 +01:00
parent 5d8f5beb2a
commit 650519683c
2 changed files with 16 additions and 10 deletions

View file

@ -1,3 +1,8 @@
// Helper function to replace HH with H for 24 hours format, because H allows also single-digit hours
function adjustedTimeFormat() {
return moment.localeData().longDateFormat('LT').replace(/HH/i, 'H');
}
// Edit received, start, due & end dates // Edit received, start, due & end dates
BlazeComponent.extendComponent({ BlazeComponent.extendComponent({
template() { template() {
@ -59,7 +64,7 @@ BlazeComponent.extendComponent({
}, },
'keyup .js-time-field'() { 'keyup .js-time-field'() {
// parse for localized time format in strict mode // parse for localized time format in strict mode
const dateMoment = moment(this.find('#time').value, 'LT', true); const dateMoment = moment(this.find('#time').value, adjustedTimeFormat(), true);
if (dateMoment.isValid()) { if (dateMoment.isValid()) {
this.error.set(''); this.error.set('');
} }
@ -71,15 +76,13 @@ BlazeComponent.extendComponent({
const time = const time =
evt.target.time.value || evt.target.time.value ||
moment(new Date().setHours(12, 0, 0)).format('LT'); moment(new Date().setHours(12, 0, 0)).format('LT');
const dateString = `${evt.target.date.value} ${time}`; const dateString = `${evt.target.date.value} ${time}`;
const newDate = moment(dateString, 'L LT', true); const newDate = moment(dateString, 'L ' + adjustedTimeFormat(), true);
if (newDate.isValid()) { if (newDate.isValid()) {
this._storeDate(newDate.toDate()); this._storeDate(newDate.toDate());
Popup.close(); Popup.close();
} else { } else {
this.error.set('invalid-date'); this.error.set('invalid');
evt.target.date.focus();
} }
}, },
'click .js-delete-date'(evt) { 'click .js-delete-date'(evt) {

View file

@ -1,3 +1,8 @@
// Helper function to replace HH with H for 24 hours format, because H allows also single-digit hours
function adjustedTimeFormat() {
return moment.localeData().longDateFormat('LT').replace(/HH/i, 'H');
}
DatePicker = BlazeComponent.extendComponent({ DatePicker = BlazeComponent.extendComponent({
template() { template() {
return 'datepicker'; return 'datepicker';
@ -77,7 +82,7 @@ DatePicker = BlazeComponent.extendComponent({
}, },
'keyup .js-time-field'() { 'keyup .js-time-field'() {
// parse for localized time format in strict mode // parse for localized time format in strict mode
const dateMoment = moment(this.find('#time').value, 'LT', true); const dateMoment = moment(this.find('#time').value, adjustedTimeFormat(), true);
if (dateMoment.isValid()) { if (dateMoment.isValid()) {
this.error.set(''); this.error.set('');
} }
@ -89,15 +94,13 @@ DatePicker = BlazeComponent.extendComponent({
const time = const time =
evt.target.time.value || evt.target.time.value ||
moment(new Date().setHours(12, 0, 0)).format('LT'); moment(new Date().setHours(12, 0, 0)).format('LT');
const dateString = `${evt.target.date.value} ${time}`; const dateString = `${evt.target.date.value} ${time}`;
const newDate = moment(dateString, 'L LT', true); const newDate = moment(dateString, 'L ' + adjustedTimeFormat(), true);
if (newDate.isValid()) { if (newDate.isValid()) {
this._storeDate(newDate.toDate()); this._storeDate(newDate.toDate());
Popup.close(); Popup.close();
} else { } else {
this.error.set('invalid-date'); this.error.set('invalid');
evt.target.date.focus();
} }
}, },
'click .js-delete-date'(evt) { 'click .js-delete-date'(evt) {