@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
110 lines • 4.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleKeyPageDownMove = exports.handleKeyPageUpMove = exports.handleKeyTabMove = exports.handleKeyRightMove = exports.handleKeyLeftMove = exports.handleKeyDownMove = exports.handleKeyUpMove = exports.getDaysAndEmptyDaysUntilMaxDate = exports.getFirstEmptyAndDisabledDays = void 0;
const ONE_DAY = 1;
const DAYS_PER_WEEK = 7;
const isSameMonthAndYear = (date1, date2) => {
return date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear();
};
const getFirstEmptyAndDisabledDays = (emptyDaysList, minDate, currentDate) => isSameMonthAndYear(minDate, currentDate)
? emptyDaysList.length + minDate.getDate() - 1
: emptyDaysList.length;
exports.getFirstEmptyAndDisabledDays = getFirstEmptyAndDisabledDays;
const getDaysAndEmptyDaysUntilMaxDate = (emptyDaysList, maxDate, currentDate) => isSameMonthAndYear(maxDate, currentDate)
? emptyDaysList.length + maxDate.getDate() - 1
: emptyDaysList.length;
exports.getDaysAndEmptyDaysUntilMaxDate = getDaysAndEmptyDaysUntilMaxDate;
const handleKeyUpMove = ({ dayList, maxDate, minDate, firstEmptyAndDisabledDays, daysAndEmptyDaysUntilMaxDate, currentDate, }) => {
return previous => {
if (isSameMonthAndYear(minDate, currentDate)) {
if (previous === firstEmptyAndDisabledDays) {
return dayList.length - 1;
}
}
if (previous === firstEmptyAndDisabledDays) {
return isSameMonthAndYear(maxDate, currentDate)
? daysAndEmptyDaysUntilMaxDate
: dayList.length - 1;
}
if (previous <= firstEmptyAndDisabledDays + 7) {
return firstEmptyAndDisabledDays;
}
return previous - DAYS_PER_WEEK;
};
};
exports.handleKeyUpMove = handleKeyUpMove;
const handleKeyDownMove = ({ dayList, maxDate, minDate, firstEmptyAndDisabledDays, daysAndEmptyDaysUntilMaxDate, currentDate, }) => {
return previous => {
if (isSameMonthAndYear(minDate, currentDate) && previous === dayList.length - 1) {
return firstEmptyAndDisabledDays;
}
if (isSameMonthAndYear(maxDate, currentDate)) {
if (previous === daysAndEmptyDaysUntilMaxDate) {
return firstEmptyAndDisabledDays;
}
// to go to max date if next day below is disabled unless it is the max date
if (previous + firstEmptyAndDisabledDays + 1 >=
maxDate.getDate() + firstEmptyAndDisabledDays - 7 &&
previous !== daysAndEmptyDaysUntilMaxDate) {
return maxDate.getDate() + firstEmptyAndDisabledDays - 1;
}
}
if (previous === dayList.length - 1) {
return firstEmptyAndDisabledDays;
}
if (previous >= dayList.length - 7) {
return dayList.length - 1;
}
return previous + DAYS_PER_WEEK;
};
};
exports.handleKeyDownMove = handleKeyDownMove;
const handleKeyLeftMove = ({ dayList, maxDate, minDate, firstEmptyAndDisabledDays, daysAndEmptyDaysUntilMaxDate, currentDate, }) => {
return previous => {
if (previous === firstEmptyAndDisabledDays) {
if (isSameMonthAndYear(minDate, currentDate)) {
return dayList.length - 1;
}
else if (isSameMonthAndYear(maxDate, currentDate)) {
return daysAndEmptyDaysUntilMaxDate;
}
return dayList.length - 1;
}
return previous - ONE_DAY;
};
};
exports.handleKeyLeftMove = handleKeyLeftMove;
const handleKeyRightMove = ({ dayList, maxDate, minDate, firstEmptyAndDisabledDays, daysAndEmptyDaysUntilMaxDate, currentDate, }) => {
return previous => {
if (isSameMonthAndYear(minDate, currentDate) && previous === dayList.length - 1) {
return firstEmptyAndDisabledDays;
}
if (isSameMonthAndYear(maxDate, currentDate)) {
if (previous === daysAndEmptyDaysUntilMaxDate) {
return firstEmptyAndDisabledDays;
}
}
if (previous === dayList.length - 1) {
return firstEmptyAndDisabledDays;
}
return previous + ONE_DAY;
};
};
exports.handleKeyRightMove = handleKeyRightMove;
const handleKeyTabMove = (previous) => previous;
exports.handleKeyTabMove = handleKeyTabMove;
const handleKeyPageUpMove = ({ firstEmptyAndDisabledDays, }) => {
return () => {
return firstEmptyAndDisabledDays;
};
};
exports.handleKeyPageUpMove = handleKeyPageUpMove;
const handleKeyPageDownMove = ({ dayList, maxDate, currentDate, daysAndEmptyDaysUntilMaxDate, }) => {
return () => {
return isSameMonthAndYear(maxDate, currentDate)
? daysAndEmptyDaysUntilMaxDate
: dayList.length - 1;
};
};
exports.handleKeyPageDownMove = handleKeyPageDownMove;
//# sourceMappingURL=handleKeysmoves.js.map