igniteui-webcomponents
Version:
Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.
61 lines • 2.56 kB
JavaScript
import { ValidationResourceStringsEN } from 'igniteui-i18n-core';
import { calendarRange, isDateExceedingMax, isDateInRanges, isDateLessThanMin, } from '../calendar/helpers.js';
import { formatString, isEmpty } from '../common/util.js';
export const minDateRangeValidator = {
key: 'rangeUnderflow',
message: (host) => formatString(ValidationResourceStringsEN.min_validation_error, host.min),
isValid: (host) => {
if (!host.min) {
return true;
}
const isStartInvalid = host.value?.start &&
isDateLessThanMin(host.value.start, host.min, host.hasTimeParts(), host.hasDateParts());
const isEndInvalid = host.value?.end &&
isDateLessThanMin(host.value.end, host.min, host.hasTimeParts(), host.hasDateParts());
return !(isStartInvalid || isEndInvalid);
},
};
export const maxDateRangeValidator = {
key: 'rangeOverflow',
message: (host) => formatString(ValidationResourceStringsEN.max_validation_error, host.max),
isValid: (host) => {
if (!host.max) {
return true;
}
const isStartInvalid = host.value?.start &&
isDateExceedingMax(host.value.start, host.max, host.hasTimeParts(), host.hasDateParts());
const isEndInvalid = host.value?.end &&
isDateExceedingMax(host.value.end, host.max, host.hasTimeParts(), host.hasDateParts());
return !(isStartInvalid || isEndInvalid);
},
};
export const requiredDateRangeValidator = {
key: 'valueMissing',
message: ValidationResourceStringsEN.required_validation_error,
isValid: (host) => {
return host.required ? isCompleteDateRange(host.value) : true;
},
};
export const badInputDateRangeValidator = {
key: 'badInput',
message: (host) => formatString(ValidationResourceStringsEN.disabled_date_validation_error, host.value),
isValid: (host) => {
const { value, disabledDates } = host;
if (!isCompleteDateRange(value) ||
!disabledDates ||
isEmpty(disabledDates)) {
return true;
}
return Array.from(calendarRange({ start: value.start, end: value.end, inclusive: true })).every((date) => !isDateInRanges(date, disabledDates));
},
};
export const dateRangeValidators = [
requiredDateRangeValidator,
minDateRangeValidator,
maxDateRangeValidator,
badInputDateRangeValidator,
];
export function isCompleteDateRange(value) {
return value != null && value.start != null && value.end != null;
}
//# sourceMappingURL=validators.js.map