@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
40 lines • 2.11 kB
JavaScript
import { isValidDate } from '../../../utils/date/validateDate';
import { verifyYear } from './verifyYear';
export const formatValueDate = (value, today, format, dateSeparator = '') => {
let formattedValue = value.replace(dateSeparator, '').replace(today, '');
if (value.length > format?.length) {
formattedValue = formattedValue.replace(/\s/g, '');
}
return formattedValue;
};
const matchFormatValueDate = (value, today, format, dateSeparator = '') => {
return formatValueDate(value, today, format, dateSeparator).match(new RegExp('.{1,' + format.length + '}', 'g'));
};
const verifyFormatDate = (value, minDate, maxDate, today, dateSeparator, format) => {
const valueFormatted = formatValueDate(value, today, format, dateSeparator);
const date = new Date(valueFormatted);
const hasError = !isValidDate(date) ||
valueFormatted.length !== format.length ||
!verifyYear(valueFormatted, minDate, maxDate);
return { valueFormatted, hasError };
};
const verifyFormatRangeDate = (value, minDate, maxDate, today, dateSeparator, format) => {
const valueFormatted = matchFormatValueDate(value, today, format, dateSeparator);
if ((valueFormatted?.[0] && !isValidDate(new Date(valueFormatted[0]))) ||
(valueFormatted?.[1] && !isValidDate(new Date(valueFormatted[1])))) {
return { valueFormatted, hasError: true };
}
const condition1 = valueFormatted?.[0]?.length === format.length && valueFormatted?.[1]?.length === format.length;
const condition2 = valueFormatted &&
verifyYear(valueFormatted[0], minDate, maxDate) &&
verifyYear(valueFormatted[1], minDate, maxDate);
const hasError = !condition1 || !condition2;
return { valueFormatted, hasError };
};
export const verifyFormat = (format, value, minDate, maxDate, today = '', dateSeparator = '', isRange) => {
if (isRange) {
return verifyFormatRangeDate(value, minDate, maxDate, today, dateSeparator, format);
}
return verifyFormatDate(value, minDate, maxDate, today, dateSeparator, format);
};
//# sourceMappingURL=verifyFormat.js.map