Blame view

天文台pc/tianwentai-ui/node_modules/react-day-picker/src/contexts/Modifiers/utils/getInternalModifiers.ts 1.85 KB
bc518174   王天杨   提交两个项目文件
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;
  }