UNPKG

@kubit-ui-web/react-components

Version:

Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience

66 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyDate = exports.splitDate = void 0; const verifyFormat_1 = require("./verifyFormat"); const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; const checkLeapYear = (year) => { if (year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0)) { monthDays[1] = 29; } }; const splitDate = (date, format, today, isRange, dateSeparator) => { const formatRegex = /[^\p{L}]+/gu; const dateRegex = /[^\d]+/g; const formattedDate = (0, verifyFormat_1.formatValueDate)(date, today, format); // we want always this YYYY-MM-DD format const formatToOrderDate = 'YYYY-MM-DD'; const correctOrder = formatToOrderDate.split('-'); const formatSplit = format.split(formatRegex); let dateToCheck = ''; // Transform date into YYYY-MM-DD format const orderDate = date => { return correctOrder.map((element) => { if (element.includes('Y')) { return date[formatSplit.findIndex((x) => x.includes('Y'))]; } else if (element.includes('M')) { return date[formatSplit.findIndex((x) => x.includes('M'))]; } else if (element.includes('D')) { return date[formatSplit.findIndex((x) => x.includes('D'))]; } }); }; if (formattedDate.length === format.length) { const dateSplit = formattedDate.split(dateRegex); dateToCheck = orderDate(dateSplit).join('-'); } else if (isRange && date.length > format.length) { const dateRangeSplit = date.split(dateRegex); const firstDate = orderDate(dateRangeSplit.slice(0, 3)); const secondDate = orderDate(dateRangeSplit.slice(3, 7)); dateToCheck = `${firstDate.join('-')} ${dateSeparator} ${secondDate.join('-')}`; } return { dateToCheck, }; }; exports.splitDate = splitDate; const verifyDate = (format, date, minDate, maxDate, dateSeparator, isRange, today = '') => { const { dateToCheck } = (0, exports.splitDate)(date, format, today, isRange, dateSeparator); const { hasError } = (0, verifyFormat_1.verifyFormat)(format, dateToCheck, minDate, maxDate, today, dateSeparator, isRange); if (hasError) { return false; } const dateString = dateToCheck.replace(/\D/g, ''); const year = Number(dateString.substring(0, 4)); const month = Number(dateString.substring(4, 6)); const day = Number(dateString.substring(6, 8)); checkLeapYear(year); if (month < 1 || month > 12 || day < 1 || day > monthDays[month - 1]) { return false; } return true; }; exports.verifyDate = verifyDate; //# sourceMappingURL=verifyDate.js.map