UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

358 lines (357 loc) • 18 kB
import { AnyString, Dict } from "../../utils/index.js"; import { HTMLProps, PropGetter, RequiredPropGetter } from "../../core/components/index.types.js"; import "../../core/index.js"; import { Descendant } from "../../hooks/use-descendants/index.js"; import { Locale } from "../../providers/i18n-provider/i18n-provider.js"; import * as react28 from "react"; //#region src/components/calendar/use-calendar.d.ts declare const DEFAULT_HOLIDAYS: Date[]; declare const DEFAULT_WEEKEND_DAYS: number[]; declare const DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek; declare const DEFAULT_MAX_DATE: Date; declare const DEFAULT_MIN_DATE: Date; type MaybeDate = Date | Date[] | undefined | { end?: Date; start?: Date; }; type MaybeDateValue<Multiple extends boolean = false, Range extends boolean = false> = Range extends true ? { end?: Date; start?: Date; } : Multiple extends true ? Date[] : Date | undefined; type StartDayOfWeek = "monday" | "sunday"; interface CalendarFormat { day?: Intl.DateTimeFormatOptions["day"] | null; month?: Intl.DateTimeFormatOptions["month"] | null; weekday?: Intl.DateTimeFormatOptions["weekday"] | null; year?: Intl.DateTimeFormatOptions["year"] | null; } declare const getStartOfWeek: (date: Date, startDayOfWeek: StartDayOfWeek) => Date; declare const getEndOfWeek: (date: Date, startDayOfWeek: StartDayOfWeek) => Date; declare const getWeekdays: (startDayOfWeek: StartDayOfWeek, format: (value: Date) => string) => { label: string; value: number; }[]; declare const getMonthDays: (date: Date, startDayOfWeek: StartDayOfWeek, format: (value: Date) => string) => { label: string; value: Date; }[][]; declare const isSameYear: (date: Date | undefined, comparison: Date | undefined) => boolean; declare const isSameMonth: (date: Date | undefined, comparison: Date | undefined) => boolean; declare const isSameDate: (date: Date | undefined, comparison: Date | undefined) => boolean; declare const isAfterDate: (value: Date, date: Date | undefined) => boolean; declare const isBeforeDate: (value: Date, date: Date | undefined) => boolean; declare const isSameAfterDate: (value: Date, date: Date | undefined) => boolean; declare const isSameBeforeDate: (value: Date, date: Date | undefined) => boolean; declare const isAfterMonth: (value: Date, date: Date | undefined) => boolean; declare const isBeforeMonth: (value: Date, date: Date | undefined) => boolean; declare const isSameAfterMonth: (value: Date, date: Date | undefined) => boolean; declare const isSameBeforeMonth: (value: Date, date: Date | undefined) => boolean; declare const isAfterYear: (value: Date, date: Date | undefined) => boolean; declare const isBeforeYear: (value: Date, date: Date | undefined) => boolean; declare const isSameAfterYear: (value: Date, date: Date | undefined) => boolean; declare const isSameBeforeYear: (value: Date, date: Date | undefined) => boolean; declare const isIncludeDates: (comparison: Date, dates: Date[]) => boolean; declare const isInRange: (date: Date, minDate?: Date, maxDate?: Date) => boolean; declare const sortDates: (dates: Date[], type?: "asc" | "desc") => Date[]; declare const updateMaybeDateValue: (value: Date, max?: number) => (prev: MaybeDate) => MaybeDate; declare const getAdjustedMonth: (value: MaybeDate, month: Date) => Date; declare const CalendarDescendantsContext: react28.Context<{ active: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledIndexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledNextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledPrevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValue: (index: number) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValues: () => Descendant<HTMLTableCellElement, {}>[]; firstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; indexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; lastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; nextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; prevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; register: (props?: { disabled?: boolean | ((node: HTMLTableCellElement) => boolean) | undefined; } | undefined) => react28.RefCallback<HTMLTableCellElement>; unregister: (node?: HTMLTableCellElement | null | undefined) => void; value: (indexOrNode: number | HTMLTableCellElement | null) => Descendant<HTMLTableCellElement, {}> | undefined; values: () => Descendant<HTMLTableCellElement, {}>[]; }>, useCalendarDescendant: (props?: { disabled?: boolean | ((node: HTMLTableCellElement) => boolean) | undefined; } | undefined) => { descendants: { active: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledIndexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledNextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledPrevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValue: (index: number) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValues: () => Descendant<HTMLTableCellElement, {}>[]; firstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; indexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; lastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; nextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; prevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; register: (props?: { disabled?: boolean | ((node: HTMLTableCellElement) => boolean) | undefined; } | undefined) => react28.RefCallback<HTMLTableCellElement>; unregister: (node?: HTMLTableCellElement | null | undefined) => void; value: (indexOrNode: number | HTMLTableCellElement | null) => Descendant<HTMLTableCellElement, {}> | undefined; values: () => Descendant<HTMLTableCellElement, {}>[]; }; register: react28.RefCallback<HTMLTableCellElement>; }, useCalendarDescendants: () => { active: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledIndexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledNextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledPrevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValue: (index: number) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValues: () => Descendant<HTMLTableCellElement, {}>[]; firstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; indexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; lastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; nextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; prevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; register: (props?: { disabled?: boolean | ((node: HTMLTableCellElement) => boolean) | undefined; } | undefined) => react28.RefCallback<HTMLTableCellElement>; unregister: (node?: HTMLTableCellElement | null | undefined) => void; value: (indexOrNode: number | HTMLTableCellElement | null) => Descendant<HTMLTableCellElement, {}> | undefined; values: () => Descendant<HTMLTableCellElement, {}>[]; }; interface CalendarContext extends Omit<UseCalendarReturn, "descendants" | "getMonthProps" | "getMonthSelectProps" | "getNavigationProps" | "getNextButtonProps" | "getPrevButtonProps" | "getRootProps" | "getStatusProps" | "getWeekdayProps" | "getYearSelectProps" | "monthDays" | "monthItems" | "weekdays" | "yearItems"> {} declare const CalendarContext: react28.Context<CalendarContext>, useCalendarContext: () => CalendarContext; interface UseCalendarProps<Multiple extends boolean = false, Range extends boolean = false> extends Omit<HTMLProps, "defaultValue" | "onChange"> { /** * The initial month of the calendar. * * @default new Date() */ defaultMonth?: Date; /** * The initial value of the calendar. */ defaultValue?: MaybeDateValue<Multiple, Range>; /** * If `true`, disables the calendar. * * @default false */ disabled?: boolean; /** * Callback function to determine whether the day should be disabled. */ excludeDate?: (date: Date) => boolean; /** * The format used for conversion. * Check the docs to see the format of possible modifiers you can pass. * * @see https://day.js.org/docs/en/display/format#list-of-localized-formats */ format?: CalendarFormat; /** * Define holidays. */ holidays?: Date[]; /** * The locale of the calendar. * * @default 'en-US' */ locale?: AnyString | Locale; /** * The maximum selectable value. */ max?: number; /** * The maximum possible date. * * @default new Date(2099, 11, 31) */ maxDate?: Date; /** * The minimum possible date. * * @default new Date(1900, 0, 1) */ minDate?: Date; /** * The month of the calendar. */ month?: Date; /** * If `true`, the calendar will be multiple. * * @default false */ multiple?: Multiple; /** * If `true`, enables date range selection. * * @default false */ range?: Range; /** * Define the start day of the week. * * @default 'monday' */ startDayOfWeek?: StartDayOfWeek; /** * If `true`, highlight today. * * @default true */ today?: boolean; /** * The value of the calendar. */ value?: MaybeDateValue<Multiple, Range>; /** * Define weekend days. * * @default [0, 6] */ weekendDays?: number[]; /** * The callback invoked when value state changes. */ onChange?: (value: MaybeDateValue<Multiple, Range>) => void; /** * The callback invoked when month state changes. */ onChangeMonth?: (value: Date) => void; } declare const useCalendar: <Multiple extends boolean = false, Range extends boolean = false>({ defaultMonth, multiple, range, defaultValue, disabled, excludeDate, format: format, holidays, locale: localeProp, max, maxDate, minDate, month: monthProp, startDayOfWeek, today, value: valueProp, weekendDays, onChange: onChangeProp, onChangeMonth: onChangeMonthProp, ...rest }?: UseCalendarProps<Multiple, Range>) => { descendants: { active: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledIndexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; enabledNextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledPrevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValue: (index: number) => Descendant<HTMLTableCellElement, {}> | undefined; enabledValues: () => Descendant<HTMLTableCellElement, {}>[]; firstValue: () => Descendant<HTMLTableCellElement, {}> | undefined; indexOf: (target?: HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null | undefined) => number; lastValue: () => Descendant<HTMLTableCellElement, {}> | undefined; nextValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; prevValue: (indexOrNode: number | HTMLTableCellElement | Descendant<HTMLTableCellElement, {}> | null, loop?: boolean) => Descendant<HTMLTableCellElement, {}> | undefined; register: (props?: { disabled?: boolean | ((node: HTMLTableCellElement) => boolean) | undefined; } | undefined) => react28.RefCallback<HTMLTableCellElement>; unregister: (node?: HTMLTableCellElement | null | undefined) => void; value: (indexOrNode: number | HTMLTableCellElement | null) => Descendant<HTMLTableCellElement, {}> | undefined; values: () => Descendant<HTMLTableCellElement, {}>[]; }; disabled: boolean; endOfMonth: Date; excludeDate: ((date: Date) => boolean) | undefined; holidays: Date[]; locale: string; max: number | undefined; maxDate: Date; minDate: Date; month: Date; monthDays: { label: string; value: Date; }[][]; monthItems: { label: string; value: string; }[]; multiple: Multiple; range: Range; startDayOfWeek: StartDayOfWeek; startOfMonth: Date; today: boolean; value: MaybeDateValue<Multiple, Range>; weekdays: { label: string; value: number; }[]; weekendDays: number[]; yearItems: { label: string; value: string; }[]; getMonthProps: PropGetter<"table", undefined, undefined>; getMonthSelectProps: PropGetter<"div", { value?: string; onChange?: (value: string) => void; }, { value?: string; onChange?: (value: string) => void; }>; getNavigationProps: PropGetter<"nav", undefined, undefined>; getNextButtonProps: PropGetter<"button", undefined, undefined>; getPrevButtonProps: PropGetter<"button", undefined, undefined>; getRootProps: PropGetter<"div", undefined, undefined>; getStatusProps: PropGetter<"div", undefined, undefined>; getWeekdayProps: RequiredPropGetter<"th", { value: number; }, undefined>; getYearSelectProps: PropGetter<"div", { value?: string; onChange?: (value: string) => void; }, { value?: string; onChange?: (value: string) => void; }>; onChange: (value: Date) => void; onMonthChange: (month: Date) => void; onNextMonth: () => void; onPrevMonth: () => void; }; type UseCalendarReturn = ReturnType<typeof useCalendar>; interface UseCalendarDayProps extends Omit<HTMLProps<"td">, "value"> { value: Date; } declare const useCalendarDay: ({ value, ...rest }: UseCalendarDayProps) => { outside: boolean; getDayProps: PropGetter<"td", undefined, undefined>; }; type UseCalendarDayReturn = ReturnType<typeof useCalendarDay>; declare const useCalendarProps: <Y extends boolean = false, M extends boolean = false, D extends Dict = Dict, H extends keyof UseCalendarProps<Y, M> = keyof UseCalendarProps<Y, M>>(props: D, omitKeys?: H[]) => [keyof UseCalendarProps<Y, M> extends H ? UseCalendarProps<Y, M> : Omit<UseCalendarProps<Y, M>, H>, Omit<M, keyof UseCalendarProps<Y, M> extends H ? keyof UseCalendarProps<Y, M> : Exclude<keyof UseCalendarProps<Y, M>, H>>]; //#endregion export { CalendarContext, CalendarDescendantsContext, CalendarFormat, DEFAULT_FIRST_DAY_OF_WEEK, DEFAULT_HOLIDAYS, DEFAULT_MAX_DATE, DEFAULT_MIN_DATE, DEFAULT_WEEKEND_DAYS, MaybeDate, MaybeDateValue, StartDayOfWeek, UseCalendarDayProps, UseCalendarDayReturn, UseCalendarProps, UseCalendarReturn, getAdjustedMonth, getEndOfWeek, getMonthDays, getStartOfWeek, getWeekdays, isAfterDate, isAfterMonth, isAfterYear, isBeforeDate, isBeforeMonth, isBeforeYear, isInRange, isIncludeDates, isSameAfterDate, isSameAfterMonth, isSameAfterYear, isSameBeforeDate, isSameBeforeMonth, isSameBeforeYear, isSameDate, isSameMonth, isSameYear, sortDates, updateMaybeDateValue, useCalendar, useCalendarContext, useCalendarDay, useCalendarDescendant, useCalendarDescendants, useCalendarProps }; //# sourceMappingURL=use-calendar.d.ts.map