devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
56 lines (55 loc) • 1.97 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/utils/skipped_days.js)
* Version: 26.1.3
* Build date: Wed Jun 10 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isValidWeekday = exports.isDateSkipped = exports.getVisibleDaysOfWeek = exports.getSkippedDaysCount = exports.getFirstVisibleDate = void 0;
const isValidWeekday = value => "number" === typeof value && Number.isInteger(value) && value >= 0 && value <= 6;
exports.isValidWeekday = isValidWeekday;
const isDateSkipped = (date, skippedDays) => skippedDays.includes(date.getDay());
exports.isDateSkipped = isDateSkipped;
const getVisibleDaysOfWeek = (firstDayOfWeek, skippedDays) => {
const result = [];
for (let count = 0; count < 7; count += 1) {
const raw = firstDayOfWeek + count;
const dayOfWeek = (raw % 7 + 7) % 7;
if (!skippedDays.includes(dayOfWeek)) {
result.push(dayOfWeek)
}
}
return result
};
exports.getVisibleDaysOfWeek = getVisibleDaysOfWeek;
const getFirstVisibleDate = (start, skippedDays, nextDate) => {
if (skippedDays.length >= 7) {
return new Date(start)
}
let date = new Date(start);
while (isDateSkipped(date, skippedDays)) {
date = nextDate(date)
}
return date
};
exports.getFirstVisibleDate = getFirstVisibleDate;
const getSkippedDaysCount = (start, dayCount, skippedDays) => {
if (dayCount <= 0 || !skippedDays || 0 === skippedDays.length) {
return 0
}
const date = new Date(start);
let skippedCount = 0;
for (let i = 0; i < dayCount; i += 1) {
if (isDateSkipped(date, skippedDays)) {
skippedCount += 1
}
date.setDate(date.getDate() + 1)
}
return skippedCount
};
exports.getSkippedDaysCount = getSkippedDaysCount;