react-day-picker
Advanced tools
Comparing version
@@ -5,37 +5,45 @@ "use strict"; | ||
const UI_js_1 = require("../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[UI_js_1.DayFlag.disabled] && | ||
!modifiers[UI_js_1.DayFlag.hidden] && | ||
!modifiers[UI_js_1.DayFlag.outside]); | ||
} | ||
function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) { | ||
let focusTarget; | ||
let index = 0; | ||
let found = false; | ||
while (index < days.length && !found) { | ||
const day = days[index]; | ||
let foundFocusTargetPriority = -1; | ||
for (const day of days) { | ||
const modifiers = getModifiers(day); | ||
if (!modifiers[UI_js_1.DayFlag.disabled] && | ||
!modifiers[UI_js_1.DayFlag.hidden] && | ||
!modifiers[UI_js_1.DayFlag.outside]) { | ||
if (modifiers[UI_js_1.DayFlag.focused]) { | ||
if (isFocusableDay(modifiers)) { | ||
if (modifiers[UI_js_1.DayFlag.focused] && | ||
foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.FocusedModifier; | ||
} | ||
else if (lastFocused?.isEqualTo(day)) { | ||
else if (lastFocused?.isEqualTo(day) && | ||
foundFocusTargetPriority < FocusTargetPriority.LastFocused) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.LastFocused; | ||
} | ||
else if (isSelected(day.date)) { | ||
else if (isSelected(day.date) && | ||
foundFocusTargetPriority < FocusTargetPriority.Selected) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.Selected; | ||
} | ||
else if (modifiers[UI_js_1.DayFlag.today]) { | ||
else if (modifiers[UI_js_1.DayFlag.today] && | ||
foundFocusTargetPriority < FocusTargetPriority.Today) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.Today; | ||
} | ||
} | ||
index++; | ||
} | ||
if (!focusTarget) { | ||
// return the first day that is focusable | ||
focusTarget = days.find((day) => { | ||
const m = getModifiers(day); | ||
return !m[UI_js_1.DayFlag.disabled] && !m[UI_js_1.DayFlag.hidden] && !m[UI_js_1.DayFlag.outside]; | ||
}); | ||
focusTarget = days.find((day) => isFocusableDay(getModifiers(day))); | ||
} | ||
@@ -42,0 +50,0 @@ return focusTarget; |
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 index = 0; | ||
let found = false; | ||
while (index < days.length && !found) { | ||
const day = days[index]; | ||
let foundFocusTargetPriority = -1; | ||
for (const day of days) { | ||
const modifiers = getModifiers(day); | ||
if (!modifiers[DayFlag.disabled] && | ||
!modifiers[DayFlag.hidden] && | ||
!modifiers[DayFlag.outside]) { | ||
if (modifiers[DayFlag.focused]) { | ||
if (isFocusableDay(modifiers)) { | ||
if (modifiers[DayFlag.focused] && | ||
foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.FocusedModifier; | ||
} | ||
else if (lastFocused?.isEqualTo(day)) { | ||
else if (lastFocused?.isEqualTo(day) && | ||
foundFocusTargetPriority < FocusTargetPriority.LastFocused) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.LastFocused; | ||
} | ||
else if (isSelected(day.date)) { | ||
else if (isSelected(day.date) && | ||
foundFocusTargetPriority < FocusTargetPriority.Selected) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.Selected; | ||
} | ||
else if (modifiers[DayFlag.today]) { | ||
else if (modifiers[DayFlag.today] && | ||
foundFocusTargetPriority < FocusTargetPriority.Today) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.Today; | ||
} | ||
} | ||
index++; | ||
} | ||
if (!focusTarget) { | ||
// return the first day that is focusable | ||
focusTarget = days.find((day) => { | ||
const m = getModifiers(day); | ||
return !m[DayFlag.disabled] && !m[DayFlag.hidden] && !m[DayFlag.outside]; | ||
}); | ||
focusTarget = days.find((day) => isFocusableDay(getModifiers(day))); | ||
} | ||
@@ -38,0 +46,0 @@ return focusTarget; |
{ | ||
"name": "react-day-picker", | ||
"version": "9.6.5", | ||
"version": "9.6.6", | ||
"description": "Customizable Date Picker for React", | ||
@@ -5,0 +5,0 @@ "author": "Giampaolo Bellavite <io@gpbl.dev>", |
@@ -5,2 +5,17 @@ import { DayFlag } from "../UI.js"; | ||
enum FocusTargetPriority { | ||
Today = 0, | ||
Selected, | ||
LastFocused, | ||
FocusedModifier | ||
} | ||
function isFocusableDay(modifiers: Modifiers) { | ||
return ( | ||
!modifiers[DayFlag.disabled] && | ||
!modifiers[DayFlag.hidden] && | ||
!modifiers[DayFlag.outside] | ||
); | ||
} | ||
export function calculateFocusTarget( | ||
@@ -14,30 +29,33 @@ days: CalendarDay[], | ||
let index = 0; | ||
let found = false; | ||
while (index < days.length && !found) { | ||
const day = days[index]; | ||
let foundFocusTargetPriority: FocusTargetPriority | -1 = -1; | ||
for (const day of days) { | ||
const modifiers = getModifiers(day); | ||
if ( | ||
!modifiers[DayFlag.disabled] && | ||
!modifiers[DayFlag.hidden] && | ||
!modifiers[DayFlag.outside] | ||
) { | ||
if (modifiers[DayFlag.focused]) { | ||
if (isFocusableDay(modifiers)) { | ||
if ( | ||
modifiers[DayFlag.focused] && | ||
foundFocusTargetPriority < FocusTargetPriority.FocusedModifier | ||
) { | ||
focusTarget = day; | ||
found = true; | ||
} else if (lastFocused?.isEqualTo(day)) { | ||
foundFocusTargetPriority = FocusTargetPriority.FocusedModifier; | ||
} else if ( | ||
lastFocused?.isEqualTo(day) && | ||
foundFocusTargetPriority < FocusTargetPriority.LastFocused | ||
) { | ||
focusTarget = day; | ||
found = true; | ||
} else if (isSelected(day.date)) { | ||
foundFocusTargetPriority = FocusTargetPriority.LastFocused; | ||
} else if ( | ||
isSelected(day.date) && | ||
foundFocusTargetPriority < FocusTargetPriority.Selected | ||
) { | ||
focusTarget = day; | ||
found = true; | ||
} else if (modifiers[DayFlag.today]) { | ||
foundFocusTargetPriority = FocusTargetPriority.Selected; | ||
} else if ( | ||
modifiers[DayFlag.today] && | ||
foundFocusTargetPriority < FocusTargetPriority.Today | ||
) { | ||
focusTarget = day; | ||
found = true; | ||
foundFocusTargetPriority = FocusTargetPriority.Today; | ||
} | ||
} | ||
index++; | ||
} | ||
@@ -47,8 +65,5 @@ | ||
// return the first day that is focusable | ||
focusTarget = days.find((day) => { | ||
const m = getModifiers(day); | ||
return !m[DayFlag.disabled] && !m[DayFlag.hidden] && !m[DayFlag.outside]; | ||
}); | ||
focusTarget = days.find((day) => isFocusableDay(getModifiers(day))); | ||
} | ||
return focusTarget; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1067036
0.65%830
0.12%23448
0.73%