UNPKG

react-js-cron-mui

Version:

A React cron editor with Material UI a forked repo from Xavier Rutayisire (https://github.com/xrutayisire/react-js-cron)

186 lines (185 loc) 6.08 kB
import { Dispatch, SetStateAction } from 'react'; import { ButtonProps, SelectProps } from '@material-ui/core'; export interface CronProps { value: string; setValue: SetValue; className?: string; humanizeLabels?: boolean; humanizeValue?: boolean; useCronIntervals?: boolean; leadingZero?: LeadingZero; defaultPeriod?: PeriodType; periodsToDisplay?: PeriodType[]; allowMultipleSelectFor?: Omit<CronType, 'period'>[]; disabled?: boolean; readOnly?: boolean; allowEmpty?: AllowEmpty; shortcuts?: Shortcuts; clockFormat?: ClockFormat; clearButton?: boolean; clearButtonProps?: ClearButtonProps; clearButtonAction?: ClearButtonAction; displayError?: boolean; onError?: OnError; locale?: Locale; } export interface Locale { everyText?: string; emptyMonths?: string; emptyMonthDays?: string; emptyMonthDaysShort?: string; emptyWeekDays?: string; emptyWeekDaysShort?: string; emptyHours?: string; emptyMinutes?: string; emptyMinutesForHourPeriod?: string; yearOption?: string; monthOption?: string; weekOption?: string; dayOption?: string; hourOption?: string; minuteOption?: string; rebootOption?: string; prefixPeriod?: string; prefixMonths?: string; prefixMonthDays?: string; prefixWeekDays?: string; prefixWeekDaysForMonthAndYearPeriod?: string; prefixHours?: string; prefixMinutes?: string; prefixMinutesForHourPeriod?: string; suffixMinutesForHourPeriod?: string; errorInvalidCron?: string; clearButtonText?: string; weekDays?: string[]; months?: string[]; altWeekDays?: string[]; altMonths?: string[]; } export type SetValueFunction = (value: string) => void; export type SetValue = SetValueFunction | Dispatch<SetStateAction<string>>; export type CronError = { type: 'invalid_cron'; description: string; } | undefined; export type OnErrorFunction = (error: CronError) => void; export type OnError = OnErrorFunction | Dispatch<SetStateAction<CronError>> | undefined; export interface ClearButtonProps extends Omit<ButtonProps, 'onClick'> { } export type ClearButtonAction = 'empty' | 'fill-with-every' | string; export type PeriodType = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'reboot' | string; export type AllowEmpty = 'always' | 'never' | 'for-default-value' | string; export type CronType = 'period' | 'months' | 'month-days' | 'week-days' | 'hours' | 'minutes' | string; export type LeadingZeroType = 'month-days' | 'hours' | 'minutes' | string; export type LeadingZero = boolean | LeadingZeroType[]; export type ClockFormat = '24-hour-clock' | '12-hour-clock' | string; export type ShortcutsType = '@yearly' | '@annually' | '@monthly' | '@weekly' | '@daily' | '@midnight' | '@hourly' | '@reboot'; export type Shortcuts = boolean | ShortcutsType[]; export interface FieldProps { value?: number[]; setValue: SetValueNumbersOrUndefined; locale: Locale; className?: string; disabled: boolean; readOnly: boolean; useCronIntervals: boolean; period: PeriodType; multiple: boolean; } export interface PeriodProps extends Omit<FieldProps, 'value' | 'setValue' | 'period' | 'useCronIntervals' | 'multiple'> { value: PeriodType; setValue: SetValuePeriod; shortcuts: Shortcuts; periodsToDisplay?: PeriodType[]; } export interface MonthsProps extends FieldProps { humanizeLabels: boolean; } export interface MonthDaysProps extends FieldProps { weekDays?: number[]; leadingZero: LeadingZero; } export interface WeekDaysProps extends FieldProps { humanizeLabels: boolean; monthDays?: number[]; } export interface HoursProps extends FieldProps { leadingZero: LeadingZero; clockFormat?: ClockFormat; } export interface MinutesProps extends FieldProps { leadingZero: LeadingZero; clockFormat?: ClockFormat; } export interface CustomSelectProps extends Omit<SelectProps, 'mode' | 'tokenSeparators' | 'allowClear' | 'virtual' | 'onClick' | 'onBlur' | 'tagRender' | 'dropdownRender' | 'showSearch' | 'showArrow' | 'onChange' | 'dropdownMatchSelectWidth' | 'options' | 'onSelect' | 'onDeselect'> { grid?: boolean; setValue: SetValueNumbersOrUndefined; optionsList?: string[]; locale: Locale; value?: number[]; humanizeLabels?: boolean; useCronIntervals?: boolean; disabled: boolean; readOnly: boolean; leadingZero?: LeadingZero; clockFormat?: ClockFormat; period: PeriodType; unit: Unit; } export type SetValueNumbersOrUndefined = Dispatch<SetStateAction<number[] | undefined>>; export type SetValuePeriod = Dispatch<SetStateAction<PeriodType>>; export type SetInternalError = Dispatch<SetStateAction<boolean>>; export interface DefaultLocale { everyText: string; emptyMonths: string; emptyMonthDays: string; emptyMonthDaysShort: string; emptyWeekDays: string; emptyWeekDaysShort: string; emptyHours: string; emptyMinutes: string; emptyMinutesForHourPeriod: string; yearOption: string; monthOption: string; weekOption: string; dayOption: string; hourOption: string; minuteOption: string; rebootOption: string; prefixPeriod: string; prefixMonths: string; prefixMonthDays: string; prefixWeekDays: string; prefixWeekDaysForMonthAndYearPeriod: string; prefixHours: string; prefixMinutes: string; prefixMinutesForHourPeriod: string; suffixMinutesForHourPeriod: string; errorInvalidCron: string; clearButtonText: string; weekDays: string[]; months: string[]; altWeekDays: string[]; altMonths: string[]; } export type CronValues = { [key in CronType]: number[] | string | undefined; }; export interface Classes { [key: string]: boolean; } export interface ShortcutsValues { name: ShortcutsType; value: string; } export interface Unit { type: CronType; min: number; max: number; total: number; alt?: string[]; } export interface Clicks { time: number; value: number; }