UNPKG

react-day-picker

Version:

Customizable Date Picker for React

48 lines 2.12 kB
import { DayFlag } from "../UI.js"; var FocusTargetPriority; (function (FocusTargetPriority) { FocusTargetPriority[FocusTargetPriority["Today"] = 0] = "Today"; FocusTargetPriority[FocusTargetPriority["Selected"] = 1] = "Selected"; FocusTargetPriority[FocusTargetPriority["LastFocused"] = 2] = "LastFocused"; FocusTargetPriority[FocusTargetPriority["FocusedModifier"] = 3] = "FocusedModifier"; })(FocusTargetPriority || (FocusTargetPriority = {})); function isFocusableDay(modifiers) { return (!modifiers[DayFlag.disabled] && !modifiers[DayFlag.hidden] && !modifiers[DayFlag.outside]); } export function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) { let focusTarget; let foundFocusTargetPriority = -1; for (const day of days) { const modifiers = getModifiers(day); if (isFocusableDay(modifiers)) { if (modifiers[DayFlag.focused] && foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) { focusTarget = day; foundFocusTargetPriority = FocusTargetPriority.FocusedModifier; } else if (lastFocused?.isEqualTo(day) && foundFocusTargetPriority < FocusTargetPriority.LastFocused) { focusTarget = day; foundFocusTargetPriority = FocusTargetPriority.LastFocused; } else if (isSelected(day.date) && foundFocusTargetPriority < FocusTargetPriority.Selected) { focusTarget = day; foundFocusTargetPriority = FocusTargetPriority.Selected; } else if (modifiers[DayFlag.today] && foundFocusTargetPriority < FocusTargetPriority.Today) { focusTarget = day; foundFocusTargetPriority = FocusTargetPriority.Today; } } } if (!focusTarget) { // return the first day that is focusable focusTarget = days.find((day) => isFocusableDay(getModifiers(day))); } return focusTarget; } //# sourceMappingURL=calculateFocusTarget.js.map