@fremtind/jkl-datepicker-react
Version:
Jøkul react datepicker component
57 lines (56 loc) • 1.98 kB
JavaScript
const dayMonthYearRegex = /^(\d\d?)[\W](\d\d?)[\W](\d{4}|\d{2})$/;
const yearMonthDayRegex = /^(\d{4}|\d{2})[\W](\d\d?)[\W](\d\d?)$/;
function formatInput(date) {
const day = "".concat(date.getDate()).padStart(2, "0");
const month = "".concat(date.getMonth() + 1).padStart(2, "0");
return "".concat(day, ".").concat(month, ".").concat(date.getFullYear());
}
const getDateSegmentsFromString = (input) => {
const dayMonthYear = dayMonthYearRegex.exec(input);
if (dayMonthYear) {
return dayMonthYear.slice(1, 4);
}
const yearMonthDay = yearMonthDayRegex.exec(input);
if (!yearMonthDay) {
return void 0;
}
const slicedDateSegments = yearMonthDay.slice(1, 4);
slicedDateSegments.reverse();
return slicedDateSegments;
};
function parseDateString(dateString) {
if (!dateString) {
return void 0;
}
const inputDateSegments = getDateSegmentsFromString(dateString);
if (!inputDateSegments) {
return void 0;
}
const currentTwoDigitYear = parseInt(
(/* @__PURE__ */ new Date()).toLocaleString("no-NB", { year: "2-digit" })
);
const parseTwoDigitYear = (year2) => year2 > currentTwoDigitYear ? year2 + 1900 : year2 + 2e3;
const day = parseInt(inputDateSegments[0], 10);
const month = parseInt(inputDateSegments[1], 10) - 1;
const yearIn = parseInt(inputDateSegments[2], 10);
const year = yearIn > 99 ? yearIn : parseTwoDigitYear(yearIn);
const generatedDate = new Date(year, month, day, 0, 0, 0);
return generatedDate.getMonth() === month && generatedDate.getFullYear() === year ? generatedDate : void 0;
}
function isBlurTargetOutside(e) {
if (!e.relatedTarget) {
return true;
}
const targetRoot = e.target.closest(".jkl-datepicker__input-wrapper");
const relatedTargetRoot = e.relatedTarget.closest(
".jkl-datepicker__input-wrapper"
);
return relatedTargetRoot !== targetRoot;
}
export {
dayMonthYearRegex,
formatInput,
isBlurTargetOutside,
parseDateString
};
//# sourceMappingURL=utils.js.map