@zenithui/day-picker
Version:
A ZenithUi Time Picker is React component enables users to select a date or date range from calendar.
55 lines (54 loc) • 2.37 kB
JavaScript
import * as __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__ from "date-fns";
function getInitialDate(selected) {
return selected instanceof Date ? selected : Array.isArray(selected) ? selected[0] : selected.from;
}
function getInitialRange(selected) {
return selected instanceof Date ? {
from: new Date(),
to: new Date()
} : Array.isArray(selected) ? {
from: selected[0],
to: selected[1]
} : selected;
}
function isBetweenRange(day, range, focus) {
if (!range.from || !focus) return false;
if ((0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isAfter)(focus, range.from)) return (0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isWithinInterval)(day, {
start: range.from,
end: focus
});
if ((0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isBefore)(focus, range.from)) return (0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isWithinInterval)(day, {
start: focus,
end: range.from
});
return false;
}
function parseDate(date) {
return "string" == typeof date ? new Date(date) : date;
}
function getDisabled(current, disable) {
if (!disable) return false;
if (disable.before && (0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isBefore)(current, parseDate(disable.before))) return true;
if (disable.after && (0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isAfter)(current, parseDate(disable.after))) return true;
if (disable.date && (0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isSameDay)(current, parseDate(disable.date))) return true;
if (disable.dates && disable.dates.some((date)=>(0, __WEBPACK_EXTERNAL_MODULE_date_fns_925206bc__.isSameDay)(current, parseDate(date)))) return true;
if (disable.days) {
const currentDay = current.getDay();
const dayNames = [
"sunday",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday"
];
if (disable.days.some((day)=>{
if ("number" == typeof day) return currentDay === day;
return dayNames.indexOf(day.toLowerCase()) === currentDay;
})) return true;
}
if (disable.modifier && disable.modifier(current)) return true;
return false;
}
export { getDisabled, getInitialDate, getInitialRange, isBetweenRange, parseDate };