UNPKG

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
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