UNPKG

1.89 kBJavaScriptView Raw
1import getPhrase from './getPhrase';
2import { BLOCKED_MODIFIER } from '../constants';
3
4function isSelected(modifiers) {
5 return modifiers.has('selected')
6 || modifiers.has('selected-span')
7 || modifiers.has('selected-start')
8 || modifiers.has('selected-end');
9}
10
11function shouldUseDefaultCursor(modifiers) {
12 return modifiers.has('blocked-minimum-nights')
13 || modifiers.has('blocked-calendar')
14 || modifiers.has('blocked-out-of-range');
15}
16
17function isHoveredSpan(modifiers) {
18 if (isSelected(modifiers)) return false;
19 return modifiers.has('hovered-span') || modifiers.has('after-hovered-start');
20}
21
22function getAriaLabel(phrases, modifiers, day, ariaLabelFormat) {
23 const {
24 chooseAvailableDate,
25 dateIsUnavailable,
26 dateIsSelected,
27 dateIsSelectedAsStartDate,
28 dateIsSelectedAsEndDate,
29 } = phrases;
30
31 const formattedDate = {
32 date: day.format(ariaLabelFormat),
33 };
34
35 if (modifiers.has('selected-start') && dateIsSelectedAsStartDate) {
36 return getPhrase(dateIsSelectedAsStartDate, formattedDate);
37 } if (modifiers.has('selected-end') && dateIsSelectedAsEndDate) {
38 return getPhrase(dateIsSelectedAsEndDate, formattedDate);
39 } if (isSelected(modifiers) && dateIsSelected) {
40 return getPhrase(dateIsSelected, formattedDate);
41 } if (modifiers.has(BLOCKED_MODIFIER)) {
42 return getPhrase(dateIsUnavailable, formattedDate);
43 }
44
45 return getPhrase(chooseAvailableDate, formattedDate);
46}
47
48export default function getCalendarDaySettings(day, ariaLabelFormat, daySize, modifiers, phrases) {
49 return {
50 ariaLabel: getAriaLabel(phrases, modifiers, day, ariaLabelFormat),
51 hoveredSpan: isHoveredSpan(modifiers),
52 isOutsideRange: modifiers.has('blocked-out-of-range'),
53 selected: isSelected(modifiers),
54 useDefaultCursor: shouldUseDefaultCursor(modifiers),
55
56 daySizeStyles: {
57 width: daySize,
58 height: daySize - 1,
59 },
60 };
61}