getInternalModifiers.ts
1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { DayPickerContextValue } from 'contexts/DayPicker';
import { SelectMultipleContextValue } from 'contexts/SelectMultiple';
import { SelectRangeContextValue } from 'contexts/SelectRange';
import { isDayPickerMultiple } from 'types/DayPickerMultiple';
import { isDayPickerRange } from 'types/DayPickerRange';
import { InternalModifier, InternalModifiers } from 'types/Modifiers';
import { matcherToArray } from './matcherToArray';
const {
Selected,
Disabled,
Hidden,
Today,
RangeEnd,
RangeMiddle,
RangeStart,
Outside
} = InternalModifier;
/** Return the {@link InternalModifiers} from the DayPicker and select contexts. */
export function getInternalModifiers(
dayPicker: DayPickerContextValue,
selectMultiple: SelectMultipleContextValue,
selectRange: SelectRangeContextValue
) {
const internalModifiers: InternalModifiers = {
[Selected]: matcherToArray(dayPicker.selected),
[Disabled]: matcherToArray(dayPicker.disabled),
[Hidden]: matcherToArray(dayPicker.hidden),
[Today]: [dayPicker.today],
[RangeEnd]: [],
[RangeMiddle]: [],
[RangeStart]: [],
[Outside]: []
};
if (dayPicker.fromDate) {
internalModifiers[Disabled].push({ before: dayPicker.fromDate });
}
if (dayPicker.toDate) {
internalModifiers[Disabled].push({ after: dayPicker.toDate });
}
if (isDayPickerMultiple(dayPicker)) {
internalModifiers[Disabled] = internalModifiers[Disabled].concat(
selectMultiple.modifiers[Disabled]
);
} else if (isDayPickerRange(dayPicker)) {
internalModifiers[Disabled] = internalModifiers[Disabled].concat(
selectRange.modifiers[Disabled]
);
internalModifiers[RangeStart] = selectRange.modifiers[RangeStart];
internalModifiers[RangeMiddle] = selectRange.modifiers[RangeMiddle];
internalModifiers[RangeEnd] = selectRange.modifiers[RangeEnd];
}
return internalModifiers;
}