feat(datepicker): do not replace value if input is no valid date
This commit is contained in:
parent
8bdcc9254e
commit
ecab0ac93c
@ -26,21 +26,25 @@ const FORM_DATE_FORMAT_MOMENT = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a string representation of a date and a format string and parses the given date to a Date object.
|
* Takes a string representation of a date and a format string and parses the given date to a Date object.
|
||||||
|
* If the date string is not valid (i.e. cannot be parsed with the given format string), returns undefined.
|
||||||
* @param {*} dateStr string representation of a date
|
* @param {*} dateStr string representation of a date
|
||||||
* @param {*} dateFormat format string of the date
|
* @param {*} dateFormat format string of the date
|
||||||
*/
|
*/
|
||||||
function parseDateWithFormat(dateStr, dateFormat) {
|
function parseDateWithFormat(dateStr, dateFormat) {
|
||||||
return moment(dateStr, dateFormat).toDate();
|
const parsedMomentDate = moment(dateStr, dateFormat);
|
||||||
|
if (parsedMomentDate.isValid()) return parsedMomentDate.toDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a string representation of a date, an input ('previous') format and a desired output format and returns a reformatted date string.
|
* Takes a string representation of a date, an input ('previous') format and a desired output format and returns a reformatted date string.
|
||||||
|
* If the date string is not valid (i.e. cannot be parsed with the given input format string), returns the original date string;
|
||||||
* @param {*} dateStr string representation of a date (needs to be in format formatIn)
|
* @param {*} dateStr string representation of a date (needs to be in format formatIn)
|
||||||
* @param {*} formatIn input format string
|
* @param {*} formatIn input format string
|
||||||
* @param {*} formatOut format string of the desired output date string
|
* @param {*} formatOut format string of the desired output date string
|
||||||
*/
|
*/
|
||||||
function reformatDateString(dateStr, formatIn, formatOut) {
|
function reformatDateString(dateStr, formatIn, formatOut) {
|
||||||
return moment(dateStr, formatIn).format(formatOut);
|
const parsedMomentDate = moment(dateStr, formatIn);
|
||||||
|
return parsedMomentDate.isValid() ? parsedMomentDate.format(formatOut) : dateStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const DATEPICKER_UTIL_SELECTOR = 'input[type="date"], input[type="time"], input[type="datetime-local"]';
|
const DATEPICKER_UTIL_SELECTOR = 'input[type="date"], input[type="time"], input[type="datetime-local"]';
|
||||||
@ -200,7 +204,8 @@ export class Datepicker {
|
|||||||
const dp = this.datepickerInstance;
|
const dp = this.datepickerInstance;
|
||||||
if (this._element.value) {
|
if (this._element.value) {
|
||||||
if (toFancy) {
|
if (toFancy) {
|
||||||
dp.selectDate(parseDateWithFormat(this._element.value, FORM_DATE_FORMAT[this.elementType]));
|
const parsedDate = parseDateWithFormat(this._element.value, FORM_DATE_FORMAT[this.elementType]);
|
||||||
|
if (parsedDate) dp.selectDate();
|
||||||
} else {
|
} else {
|
||||||
this._element.value = this.unformat();
|
this._element.value = this.unformat();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user