Blame view

天文台pc/tianwentai-ui/node_modules/react-day-picker/src/hooks/useDayRender/utils/getDayClassNames.ts 1.12 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
  import { DayPickerContextValue } from 'contexts/DayPicker';
  import { ActiveModifiers, InternalModifier } from 'types/Modifiers';
  
  function isInternalModifier(modifier: string): modifier is InternalModifier {
    return Object.values(InternalModifier).includes(modifier as InternalModifier);
  }
  
  /**
   * Return the class names for the Day element, according to the given active
   * modifiers.
   *
   * Custom class names are set via `modifiersClassNames` or `classNames`,
   * where the first have the precedence.
   */
  export function getDayClassNames(
    dayPicker: Pick<DayPickerContextValue, 'modifiersClassNames' | 'classNames'>,
    activeModifiers: ActiveModifiers
  ) {
    const classNames: string[] = [dayPicker.classNames.day];
    Object.keys(activeModifiers).forEach((modifier) => {
      const customClassName = dayPicker.modifiersClassNames[modifier];
      if (customClassName) {
        classNames.push(customClassName);
      } else if (isInternalModifier(modifier)) {
        const internalClassName = dayPicker.classNames[`day_${modifier}`];
        if (internalClassName) {
          classNames.push(internalClassName);
        }
      }
    });
    return classNames;
  }