react-day-picker
Version:
Customizable Date Picker for React
33 lines (30 loc) • 1.15 kB
text/typescript
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;
}