@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
TypeScript
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