@salt-ds/date-components 0.0.0-snapshot-20260330155807
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +109 -0
- package/README.md +63 -0
- package/css/salt-date-components.css +633 -0
- package/dist-cjs/calendar/Calendar.css.js +6 -0
- package/dist-cjs/calendar/Calendar.css.js.map +1 -0
- package/dist-cjs/calendar/Calendar.js +154 -0
- package/dist-cjs/calendar/Calendar.js.map +1 -0
- package/dist-cjs/calendar/CalendarGrid.js +85 -0
- package/dist-cjs/calendar/CalendarGrid.js.map +1 -0
- package/dist-cjs/calendar/CalendarMonthHeader.css.js +6 -0
- package/dist-cjs/calendar/CalendarMonthHeader.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarMonthHeader.js +41 -0
- package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
- package/dist-cjs/calendar/CalendarNavigation.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.js +334 -0
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
- package/dist-cjs/calendar/CalendarWeekHeader.css.js +6 -0
- package/dist-cjs/calendar/CalendarWeekHeader.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarWeekHeader.js +46 -0
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarContext.js +23 -0
- package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js +6 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.js +98 -0
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +6 -0
- package/dist-cjs/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarMonth.js +81 -0
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -0
- package/dist-cjs/calendar/internal/createAnnouncement.js +90 -0
- package/dist-cjs/calendar/internal/createAnnouncement.js.map +1 -0
- package/dist-cjs/calendar/internal/useFocusManagement.js +66 -0
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -0
- package/dist-cjs/calendar/internal/utils.js +50 -0
- package/dist-cjs/calendar/internal/utils.js.map +1 -0
- package/dist-cjs/calendar/useCalendar.js +464 -0
- package/dist-cjs/calendar/useCalendar.js.map +1 -0
- package/dist-cjs/calendar/useCalendarDay.js +84 -0
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -0
- package/dist-cjs/calendar/useCalendarSelection.js +353 -0
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
- package/dist-cjs/calendar/useDateSelectionAnnouncer.js +52 -0
- package/dist-cjs/calendar/useDateSelectionAnnouncer.js.map +1 -0
- package/dist-cjs/date-input/DateInput.css.js +6 -0
- package/dist-cjs/date-input/DateInput.css.js.map +1 -0
- package/dist-cjs/date-input/DateInputRange.js +353 -0
- package/dist-cjs/date-input/DateInputRange.js.map +1 -0
- package/dist-cjs/date-input/DateInputSingle.js +237 -0
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
- package/dist-cjs/date-picker/DatePicker.js +83 -0
- package/dist-cjs/date-picker/DatePicker.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.js +119 -0
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerContext.js +36 -0
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerHelperText.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerHelperText.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerHelperText.js +36 -0
- package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js +49 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +164 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +250 -0
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js +206 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js +365 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +262 -0
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js +150 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +20 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerTrigger.js +32 -0
- package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-cjs/date-picker/useDatePicker.js +222 -0
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
- package/dist-cjs/date-picker/useFocusOut.js +43 -0
- package/dist-cjs/date-picker/useFocusOut.js.map +1 -0
- package/dist-cjs/date-picker/useKeyboard.js +22 -0
- package/dist-cjs/date-picker/useKeyboard.js.map +1 -0
- package/dist-cjs/index.js +64 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/localization-provider/LocalizationProvider.js +51 -0
- package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-es/calendar/Calendar.css.js +4 -0
- package/dist-es/calendar/Calendar.css.js.map +1 -0
- package/dist-es/calendar/Calendar.js +152 -0
- package/dist-es/calendar/Calendar.js.map +1 -0
- package/dist-es/calendar/CalendarGrid.js +83 -0
- package/dist-es/calendar/CalendarGrid.js.map +1 -0
- package/dist-es/calendar/CalendarMonthHeader.css.js +4 -0
- package/dist-es/calendar/CalendarMonthHeader.css.js.map +1 -0
- package/dist-es/calendar/CalendarMonthHeader.js +39 -0
- package/dist-es/calendar/CalendarMonthHeader.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.css.js +4 -0
- package/dist-es/calendar/CalendarNavigation.css.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.js +332 -0
- package/dist-es/calendar/CalendarNavigation.js.map +1 -0
- package/dist-es/calendar/CalendarWeekHeader.css.js +4 -0
- package/dist-es/calendar/CalendarWeekHeader.css.js.map +1 -0
- package/dist-es/calendar/CalendarWeekHeader.js +44 -0
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-es/calendar/internal/CalendarContext.js +20 -0
- package/dist-es/calendar/internal/CalendarContext.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.css.js +4 -0
- package/dist-es/calendar/internal/CalendarDay.css.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.js +96 -0
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -0
- package/dist-es/calendar/internal/CalendarMonth.css.js +4 -0
- package/dist-es/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/dist-es/calendar/internal/CalendarMonth.js +79 -0
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -0
- package/dist-es/calendar/internal/createAnnouncement.js +87 -0
- package/dist-es/calendar/internal/createAnnouncement.js.map +1 -0
- package/dist-es/calendar/internal/useFocusManagement.js +64 -0
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -0
- package/dist-es/calendar/internal/utils.js +44 -0
- package/dist-es/calendar/internal/utils.js.map +1 -0
- package/dist-es/calendar/useCalendar.js +462 -0
- package/dist-es/calendar/useCalendar.js.map +1 -0
- package/dist-es/calendar/useCalendarDay.js +82 -0
- package/dist-es/calendar/useCalendarDay.js.map +1 -0
- package/dist-es/calendar/useCalendarSelection.js +349 -0
- package/dist-es/calendar/useCalendarSelection.js.map +1 -0
- package/dist-es/calendar/useDateSelectionAnnouncer.js +50 -0
- package/dist-es/calendar/useDateSelectionAnnouncer.js.map +1 -0
- package/dist-es/date-input/DateInput.css.js +4 -0
- package/dist-es/date-input/DateInput.css.js.map +1 -0
- package/dist-es/date-input/DateInputRange.js +350 -0
- package/dist-es/date-input/DateInputRange.js.map +1 -0
- package/dist-es/date-input/DateInputSingle.js +235 -0
- package/dist-es/date-input/DateInputSingle.js.map +1 -0
- package/dist-es/date-picker/DatePicker.js +80 -0
- package/dist-es/date-picker/DatePicker.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.css.js +4 -0
- package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.js +117 -0
- package/dist-es/date-picker/DatePickerActions.js.map +1 -0
- package/dist-es/date-picker/DatePickerContext.js +32 -0
- package/dist-es/date-picker/DatePickerContext.js.map +1 -0
- package/dist-es/date-picker/DatePickerHelperText.css.js +4 -0
- package/dist-es/date-picker/DatePickerHelperText.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerHelperText.js +34 -0
- package/dist-es/date-picker/DatePickerHelperText.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.js +47 -0
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js +161 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-es/date-picker/DatePickerPanel.css.js +4 -0
- package/dist-es/date-picker/DatePickerPanel.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangeGridPanel.js +248 -0
- package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangeInput.js +203 -0
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangePanel.js +363 -0
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleGridPanel.js +260 -0
- package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleInput.js +148 -0
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js +18 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerTrigger.js +30 -0
- package/dist-es/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-es/date-picker/useDatePicker.js +220 -0
- package/dist-es/date-picker/useDatePicker.js.map +1 -0
- package/dist-es/date-picker/useFocusOut.js +41 -0
- package/dist-es/date-picker/useFocusOut.js.map +1 -0
- package/dist-es/date-picker/useKeyboard.js +20 -0
- package/dist-es/date-picker/useKeyboard.js.map +1 -0
- package/dist-es/index.js +25 -0
- package/dist-es/index.js.map +1 -0
- package/dist-es/localization-provider/LocalizationProvider.js +47 -0
- package/dist-es/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-types/calendar/Calendar.d.ts +105 -0
- package/dist-types/calendar/CalendarGrid.d.ts +27 -0
- package/dist-types/calendar/CalendarMonthHeader.d.ts +17 -0
- package/dist-types/calendar/CalendarNavigation.d.ts +43 -0
- package/dist-types/calendar/CalendarWeekHeader.d.ts +6 -0
- package/dist-types/calendar/index.d.ts +9 -0
- package/dist-types/calendar/internal/CalendarContext.d.ts +6 -0
- package/dist-types/calendar/internal/CalendarDay.d.ts +33 -0
- package/dist-types/calendar/internal/CalendarMonth.d.ts +14 -0
- package/dist-types/calendar/internal/createAnnouncement.d.ts +24 -0
- package/dist-types/calendar/internal/useFocusManagement.d.ts +9 -0
- package/dist-types/calendar/internal/utils.d.ts +6 -0
- package/dist-types/calendar/useCalendar.d.ts +335 -0
- package/dist-types/calendar/useCalendarDay.d.ts +67 -0
- package/dist-types/calendar/useCalendarSelection.d.ts +145 -0
- package/dist-types/calendar/useDateSelectionAnnouncer.d.ts +6 -0
- package/dist-types/date-input/DateInputRange.d.ts +131 -0
- package/dist-types/date-input/DateInputSingle.d.ts +99 -0
- package/dist-types/date-input/index.d.ts +2 -0
- package/dist-types/date-picker/DatePicker.d.ts +52 -0
- package/dist-types/date-picker/DatePickerActions.d.ts +79 -0
- package/dist-types/date-picker/DatePickerContext.d.ts +172 -0
- package/dist-types/date-picker/DatePickerHelperText.d.ts +4 -0
- package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +106 -0
- package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +14 -0
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +17 -0
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +83 -0
- package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +63 -0
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +15 -0
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +8 -0
- package/dist-types/date-picker/DatePickerTrigger.d.ts +9 -0
- package/dist-types/date-picker/index.d.ts +13 -0
- package/dist-types/date-picker/useDatePicker.d.ts +121 -0
- package/dist-types/date-picker/useFocusOut.d.ts +9 -0
- package/dist-types/date-picker/useKeyboard.d.ts +20 -0
- package/dist-types/index.d.ts +4 -0
- package/dist-types/localization-provider/LocalizationProvider.d.ts +62 -0
- package/dist-types/localization-provider/index.d.ts +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type DateFrameworkType, type SaltDateAdapter } from "@salt-ds/date-adapters";
|
|
2
|
+
import type { DateRangeSelection } from "../calendar";
|
|
3
|
+
import { type DateInputRangeDetails, type DateInputRangeProps } from "../date-input";
|
|
4
|
+
/**
|
|
5
|
+
* Props for the DatePickerRangeInput component.
|
|
6
|
+
*/
|
|
7
|
+
export interface DatePickerRangeInputProps extends DateInputRangeProps {
|
|
8
|
+
/**
|
|
9
|
+
* Function to validate the entered date
|
|
10
|
+
* @param date - The selected date
|
|
11
|
+
* @param details - The details of date selection, either a valid date or error
|
|
12
|
+
* @returns updated DateInputRangeDetails details
|
|
13
|
+
*/
|
|
14
|
+
validate?: (date: DateRangeSelection | null, details: DateInputRangeDetails) => DateInputRangeDetails;
|
|
15
|
+
}
|
|
16
|
+
export declare function defaultRangeValidator(dateAdapter: SaltDateAdapter, date: DateRangeSelection | null, details: DateInputRangeDetails, minDate?: DateFrameworkType, maxDate?: DateFrameworkType): DateInputRangeDetails;
|
|
17
|
+
export declare const DatePickerRangeInput: import("react").ForwardRefExoticComponent<DatePickerRangeInputProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { DateFrameworkType } from "@salt-ds/date-adapters";
|
|
2
|
+
import { type ComponentPropsWithoutRef, type SyntheticEvent } from "react";
|
|
3
|
+
import { type CalendarGridProps, type CalendarNavigationProps, type CalendarOffsetProps, type CalendarRangeProps, type DateRangeSelection } from "../calendar";
|
|
4
|
+
/**
|
|
5
|
+
* Props for the DatePickerRangePanel component.
|
|
6
|
+
*/
|
|
7
|
+
export interface DatePickerRangePanelProps extends ComponentPropsWithoutRef<"div"> {
|
|
8
|
+
/**
|
|
9
|
+
* Callback fired when a date range is selected.
|
|
10
|
+
* @param event - The synthetic event.
|
|
11
|
+
* @param selectedDate - The selected date range or null.
|
|
12
|
+
*/
|
|
13
|
+
onSelectionChange?: (event: SyntheticEvent, selectedDate?: DateRangeSelection | null) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Helper text to be displayed below the date picker.
|
|
16
|
+
*/
|
|
17
|
+
helperText?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The currently visible month for the start date.
|
|
20
|
+
*/
|
|
21
|
+
startVisibleMonth?: DateFrameworkType;
|
|
22
|
+
/**
|
|
23
|
+
* The default visible month for the start date.
|
|
24
|
+
*/
|
|
25
|
+
defaultStartVisibleMonth?: DateFrameworkType;
|
|
26
|
+
/**
|
|
27
|
+
* Callback fired when the visible month for the start date changes.
|
|
28
|
+
* @param event - The synthetic event, or null if called by effect.
|
|
29
|
+
* @param visibleMonth - The new visible month for the start date.
|
|
30
|
+
*/
|
|
31
|
+
onStartVisibleMonthChange?: (event: SyntheticEvent | null, visibleMonth: DateFrameworkType) => void;
|
|
32
|
+
/**
|
|
33
|
+
* The currently visible month for the end date.
|
|
34
|
+
*/
|
|
35
|
+
endVisibleMonth?: DateFrameworkType;
|
|
36
|
+
/**
|
|
37
|
+
* The default visible month for the end date.
|
|
38
|
+
*/
|
|
39
|
+
defaultEndVisibleMonth?: DateFrameworkType;
|
|
40
|
+
/**
|
|
41
|
+
* Callback fired when the visible month for the end date changes.
|
|
42
|
+
* @param event - The synthetic event or null if triggered by code.
|
|
43
|
+
* @param visibleMonth - The new visible month for the end date.
|
|
44
|
+
*/
|
|
45
|
+
onEndVisibleMonthChange?: (event: SyntheticEvent | null, visibleMonth: DateFrameworkType) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Callback fired when the focused date changes.
|
|
48
|
+
* @param event - The synthetic event or null if triggered by code.
|
|
49
|
+
* @param focusedDate - The new focused date.
|
|
50
|
+
*/
|
|
51
|
+
onFocusedDateChange?: (event: SyntheticEvent | null, focusedDate?: DateFrameworkType | null) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Callback fired when the hovered date changes.
|
|
54
|
+
* @param event - The synthetic event.
|
|
55
|
+
* @param hoveredDate - The new hovered date.
|
|
56
|
+
*/
|
|
57
|
+
onHoveredDateChange?: (event: SyntheticEvent, hoveredDate?: DateFrameworkType | null) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Props to be passed to the start date CalendarNavigation component.
|
|
60
|
+
*/
|
|
61
|
+
StartCalendarNavigationProps?: CalendarNavigationProps;
|
|
62
|
+
/**
|
|
63
|
+
* Props to be passed to the start date calendar component.
|
|
64
|
+
*/
|
|
65
|
+
StartCalendarProps?: Partial<Omit<CalendarRangeProps | CalendarOffsetProps, "selectedDate" | "defaultSelectedDate" | "multiselect" | "onFocusedDateChange" | "onHoveredDateChange" | "onSelectionChange" | "onVisibleMonthChange">>;
|
|
66
|
+
/**
|
|
67
|
+
* Props to be passed to the start date CalendarGrid component.
|
|
68
|
+
*/
|
|
69
|
+
StartCalendarGridProps?: CalendarGridProps;
|
|
70
|
+
/**
|
|
71
|
+
* Props to be passed to the end date CalendarNavigation component.
|
|
72
|
+
*/
|
|
73
|
+
EndCalendarProps?: Partial<Omit<CalendarRangeProps, "selectedDate" | "defaultSelectedDate" | "multiselect" | "onFocusedDateChange" | "onHoveredDateChange" | "onSelectionChange" | "onVisibleMonthChange">>;
|
|
74
|
+
/**
|
|
75
|
+
* Props to be passed to the end date CalendarNavigation component.
|
|
76
|
+
*/
|
|
77
|
+
EndCalendarNavigationProps?: CalendarNavigationProps;
|
|
78
|
+
/**
|
|
79
|
+
* Props to be passed to the end date CalendarGrid component.
|
|
80
|
+
*/
|
|
81
|
+
EndCalendarGridProps?: CalendarGridProps;
|
|
82
|
+
}
|
|
83
|
+
export declare const DatePickerRangePanel: import("react").ForwardRefExoticComponent<DatePickerRangePanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type ResponsiveProp } from "@salt-ds/core";
|
|
2
|
+
import type { DateFrameworkType } from "@salt-ds/date-adapters";
|
|
3
|
+
import { type ComponentPropsWithoutRef, type SyntheticEvent } from "react";
|
|
4
|
+
import { type CalendarGridProps, type CalendarNavigationProps as CalendarNavigationPropsType, type CalendarSingleProps } from "../calendar";
|
|
5
|
+
/**
|
|
6
|
+
* Base props for the DatePickerPanel grid components.
|
|
7
|
+
*/
|
|
8
|
+
export interface DatePickerPanelBaseProps extends ComponentPropsWithoutRef<"div"> {
|
|
9
|
+
/**
|
|
10
|
+
* Helper text to be displayed below the date picker.
|
|
11
|
+
*/
|
|
12
|
+
helperText?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The visible month for the first visible calendar
|
|
15
|
+
*/
|
|
16
|
+
visibleMonth?: DateFrameworkType;
|
|
17
|
+
/**
|
|
18
|
+
* Number of columns.
|
|
19
|
+
*/
|
|
20
|
+
columns?: ResponsiveProp<number | string>;
|
|
21
|
+
/**
|
|
22
|
+
* Number of visible months, maximum 12, defaults to 1
|
|
23
|
+
*/
|
|
24
|
+
numberOfVisibleMonths?: ResponsiveProp<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12>;
|
|
25
|
+
/**
|
|
26
|
+
* The default visible month.
|
|
27
|
+
*/
|
|
28
|
+
defaultVisibleMonth?: DateFrameworkType;
|
|
29
|
+
/**
|
|
30
|
+
* Callback fired when the visible month changes.
|
|
31
|
+
* @param event - The synthetic event or null if triggered by code.
|
|
32
|
+
* @param visibleMonth - The new visible month.
|
|
33
|
+
*/
|
|
34
|
+
onVisibleMonthChange?: (event: SyntheticEvent | null, visibleMonth: DateFrameworkType) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Callback fired when the focused date changes.
|
|
37
|
+
* @param event - The synthetic event or null if triggered by code.
|
|
38
|
+
* @param focusedDate - The new hovered date.
|
|
39
|
+
*/
|
|
40
|
+
onFocusedDateChange?: (event: SyntheticEvent | null, focusedDate?: DateFrameworkType | null) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Callback fired when the hovered date changes.
|
|
43
|
+
* @param event - The synthetic event.
|
|
44
|
+
* @param hoveredDate - The new hovered date.
|
|
45
|
+
*/
|
|
46
|
+
onHoveredDateChange?: (event: SyntheticEvent, hoveredDate?: DateFrameworkType | null) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Props to be passed to the CalendarNavigation component.
|
|
49
|
+
*/
|
|
50
|
+
CalendarNavigationProps?: Partial<CalendarNavigationPropsType>;
|
|
51
|
+
/**
|
|
52
|
+
* Props to be passed to the CalendarGrid component.
|
|
53
|
+
*/
|
|
54
|
+
CalendarGridProps?: Partial<CalendarGridProps>;
|
|
55
|
+
}
|
|
56
|
+
export type DatePickerSingleGridPanelProps = DatePickerPanelBaseProps & {
|
|
57
|
+
onSelectionChange?: (event: SyntheticEvent, selectedDate?: DateFrameworkType | null) => void;
|
|
58
|
+
CalendarProps?: Partial<Omit<CalendarSingleProps, "selectionVariant" | "selectedDate" | "defaultSelectedDate" | "onSelectionChange" | "onVisibleMonthChange">>;
|
|
59
|
+
};
|
|
60
|
+
export declare const DatePickerSingleGridPanel: import("react").ForwardRefExoticComponent<DatePickerPanelBaseProps & {
|
|
61
|
+
onSelectionChange?: (event: SyntheticEvent, selectedDate?: DateFrameworkType | null) => void;
|
|
62
|
+
CalendarProps?: Partial<Omit<CalendarSingleProps, "selectionVariant" | "selectedDate" | "defaultSelectedDate" | "onSelectionChange" | "onVisibleMonthChange">>;
|
|
63
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SingleDateSelection } from "../calendar";
|
|
2
|
+
import { type DateInputSingleDetails, type DateInputSingleProps } from "../date-input";
|
|
3
|
+
/**
|
|
4
|
+
* Props for the DatePickerSingleInput component.
|
|
5
|
+
*/
|
|
6
|
+
export interface DatePickerSingleInputProps extends DateInputSingleProps {
|
|
7
|
+
/**
|
|
8
|
+
* Function to validate the entered date
|
|
9
|
+
* @param date - The selected date
|
|
10
|
+
* @param details - The details of date selection, either a valid date or error
|
|
11
|
+
* @returns updated DateInputSingleDetails details
|
|
12
|
+
*/
|
|
13
|
+
validate?: (date: SingleDateSelection | null | undefined, details: DateInputSingleDetails) => DateInputSingleDetails;
|
|
14
|
+
}
|
|
15
|
+
export declare const DatePickerSingleInput: import("react").ForwardRefExoticComponent<DatePickerSingleInputProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated DatePickerSinglePanel is deprecated. Use DatePickerSingleGridPanel instead.
|
|
3
|
+
* This component will be deleted when we move DatePickerSingleGridPanel from labs to core.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DatePickerSinglePanel: import("react").ForwardRefExoticComponent<import("./DatePickerSingleGridPanel").DatePickerPanelBaseProps & {
|
|
6
|
+
onSelectionChange?: (event: import("react").SyntheticEvent, selectedDate?: import("@salt-ds/date-adapters").DateFrameworkType | null) => void;
|
|
7
|
+
CalendarProps?: Partial<Omit<import("..").CalendarSingleProps, "selectionVariant" | "selectedDate" | "defaultSelectedDate" | "onSelectionChange" | "onVisibleMonthChange">>;
|
|
8
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for the DatePickerTrigger component.
|
|
4
|
+
*/
|
|
5
|
+
export interface DatePickerTriggerProps {
|
|
6
|
+
className?: string;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare const DatePickerTrigger: import("react").ForwardRefExoticComponent<DatePickerTriggerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./DatePicker";
|
|
2
|
+
export * from "./DatePickerActions";
|
|
3
|
+
export * from "./DatePickerContext";
|
|
4
|
+
export * from "./DatePickerHelperText";
|
|
5
|
+
export * from "./DatePickerOverlay";
|
|
6
|
+
export * from "./DatePickerOverlayProvider";
|
|
7
|
+
export * from "./DatePickerRangeGridPanel";
|
|
8
|
+
export * from "./DatePickerRangeInput";
|
|
9
|
+
export * from "./DatePickerRangePanel";
|
|
10
|
+
export * from "./DatePickerSingleGridPanel";
|
|
11
|
+
export * from "./DatePickerSingleInput";
|
|
12
|
+
export * from "./DatePickerSinglePanel";
|
|
13
|
+
export * from "./DatePickerTrigger";
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { DateFrameworkType, Timezone } from "@salt-ds/date-adapters";
|
|
2
|
+
import { type SyntheticEvent } from "react";
|
|
3
|
+
import type { DateRangeSelection, SingleDateSelection } from "../calendar";
|
|
4
|
+
import { type CreateAnnouncement } from "../calendar";
|
|
5
|
+
import type { DateInputRangeDetails, DateInputSingleDetails } from "../date-input";
|
|
6
|
+
import type { RangeDatePickerState, SingleDatePickerState } from "./DatePickerContext";
|
|
7
|
+
interface UseDatePickerBaseProps {
|
|
8
|
+
/**
|
|
9
|
+
* Factory method for date selection live announcements or null to silence announcements
|
|
10
|
+
*/
|
|
11
|
+
createAnnouncement?: CreateAnnouncement | null;
|
|
12
|
+
/**
|
|
13
|
+
* If `true`, the component is disabled.
|
|
14
|
+
*/
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Function to determine if a day is highlighted.
|
|
18
|
+
* @param date - The date to check.
|
|
19
|
+
* @returns A string reason if the day is highlighted, otherwise `false` or `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
isDayHighlighted?: (date: DateFrameworkType) => string | false | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Function to determine if a day is unselectable.
|
|
24
|
+
* @param date - The date to check.
|
|
25
|
+
* @returns A string reason if the day is unselectable, otherwise `false` or `undefined`.
|
|
26
|
+
*/
|
|
27
|
+
isDayUnselectable?: (date: DateFrameworkType) => string | false | undefined;
|
|
28
|
+
/** If `true`, the component is read-only. */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The minimum date for the range, default is 1900.
|
|
32
|
+
*/
|
|
33
|
+
minDate?: DateFrameworkType;
|
|
34
|
+
/**
|
|
35
|
+
* The maximum date for the range, default is 2100.
|
|
36
|
+
*/
|
|
37
|
+
maxDate?: DateFrameworkType;
|
|
38
|
+
/**
|
|
39
|
+
* Handler for when the date selection is cancelled.
|
|
40
|
+
*/
|
|
41
|
+
onCancel?: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Timezone, if un-defined will take the timezone from passed date (or defaultSelectedDate/selectedDate)
|
|
44
|
+
* Can also be set to "default" to use the default timezone of the date library
|
|
45
|
+
* Can also be set to "system" to take the timezone of the local system.
|
|
46
|
+
*/
|
|
47
|
+
timezone?: Timezone;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Props for single date selection.
|
|
51
|
+
*/
|
|
52
|
+
export interface UseDatePickerSingleProps extends UseDatePickerBaseProps {
|
|
53
|
+
/**
|
|
54
|
+
* Single date selection.
|
|
55
|
+
*/
|
|
56
|
+
selectionVariant: "single";
|
|
57
|
+
/**
|
|
58
|
+
* The selected date. The selected date will be controlled when this prop is provided.
|
|
59
|
+
*/
|
|
60
|
+
selectedDate?: SingleDateSelection | null;
|
|
61
|
+
/**
|
|
62
|
+
* The initial selected date, when the selected date is uncontrolled.
|
|
63
|
+
*/
|
|
64
|
+
defaultSelectedDate?: SingleDateSelection | null;
|
|
65
|
+
/**
|
|
66
|
+
* Handler called when the selected date changes.
|
|
67
|
+
* @param event - The synthetic event.
|
|
68
|
+
* @param date - The selected date or null.
|
|
69
|
+
* @param details - The selected date details.
|
|
70
|
+
*/
|
|
71
|
+
onSelectionChange?: (event: SyntheticEvent, date: SingleDateSelection | null, details?: DateInputSingleDetails) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Handler called when the selected date is confirmed/applied.
|
|
74
|
+
* @param event - The synthetic event.
|
|
75
|
+
* @param date - The selected date or null.
|
|
76
|
+
*/
|
|
77
|
+
onApply?: (event: SyntheticEvent, date: SingleDateSelection | null) => void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Props for date range selection.
|
|
81
|
+
*/
|
|
82
|
+
export interface UseDatePickerRangeProps extends UseDatePickerBaseProps {
|
|
83
|
+
/**
|
|
84
|
+
* Date range selection.
|
|
85
|
+
*/
|
|
86
|
+
selectionVariant: "range";
|
|
87
|
+
/**
|
|
88
|
+
* The selected date range. The selected date will be controlled when this prop is provided.
|
|
89
|
+
*/
|
|
90
|
+
selectedDate?: DateRangeSelection | null;
|
|
91
|
+
/**
|
|
92
|
+
* The initial selected date range, when the selected date is uncontrolled.
|
|
93
|
+
*/
|
|
94
|
+
defaultSelectedDate?: DateRangeSelection | null;
|
|
95
|
+
/**
|
|
96
|
+
* Handler called when the selected date range changes.
|
|
97
|
+
* @param event - The synthetic event.
|
|
98
|
+
* @param date - The selected date range or null.
|
|
99
|
+
* @param details - The selected date range details.
|
|
100
|
+
*/
|
|
101
|
+
onSelectionChange?: (event: SyntheticEvent, date: DateRangeSelection | null, details?: DateInputRangeDetails) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Handler called when the selected date range is confirmed/applied.
|
|
104
|
+
* @param event - The synthetic event.
|
|
105
|
+
* @param date - The selected date range.
|
|
106
|
+
*/
|
|
107
|
+
onApply?: (event: SyntheticEvent, date: DateRangeSelection | null) => void;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Props for the useDatePicker hook.
|
|
111
|
+
*/
|
|
112
|
+
export type UseDatePickerProps = UseDatePickerSingleProps | UseDatePickerRangeProps;
|
|
113
|
+
/**
|
|
114
|
+
* Custom hook for managing date picker state.
|
|
115
|
+
* @template SelectionVariant - The selection variant, either "single" or "range".
|
|
116
|
+
* @param props - The props for the date picker.
|
|
117
|
+
* @param ref - The ref for the date picker container.
|
|
118
|
+
* @returns The date picker state and helpers.
|
|
119
|
+
*/
|
|
120
|
+
export declare function useDatePicker(props: UseDatePickerProps, ref: React.ForwardedRef<HTMLDivElement>): SingleDatePickerState | RangeDatePickerState;
|
|
121
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ElementProps, FloatingContext } from "@floating-ui/react";
|
|
2
|
+
export interface UseFocusOutProps {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the hook is enabled
|
|
5
|
+
* @default true
|
|
6
|
+
*/
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function useFocusOut(context: FloatingContext, props: UseFocusOutProps): ElementProps;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ElementProps, FloatingContext } from "@floating-ui/react";
|
|
2
|
+
import { type KeyboardEvent } from "react";
|
|
3
|
+
export interface UseKeyboardProps {
|
|
4
|
+
/**
|
|
5
|
+
* Whether the hook is enabled
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Handler for when the arrow key down is pressed
|
|
11
|
+
* @param event
|
|
12
|
+
*/
|
|
13
|
+
onArrowDown?: (event: KeyboardEvent) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Floating UI Interactions hook, that will open DatePicker on keydown
|
|
17
|
+
* @param context
|
|
18
|
+
* @param props
|
|
19
|
+
*/
|
|
20
|
+
export declare function useKeyboard(_context: FloatingContext, props: UseKeyboardProps): ElementProps;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { DateFrameworkType, SaltDateAdapter } from "@salt-ds/date-adapters";
|
|
2
|
+
export interface LocalizationProviderValue<TDate extends DateFrameworkType = DateFrameworkType> {
|
|
3
|
+
defaultDates: {
|
|
4
|
+
minDate: TDate;
|
|
5
|
+
maxDate: TDate;
|
|
6
|
+
};
|
|
7
|
+
dateAdapter: SaltDateAdapter<TDate>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Props for the LocalizationProvider component.
|
|
11
|
+
*
|
|
12
|
+
* @template TDate - The type of the date object used in the provider.
|
|
13
|
+
* @template TLocale - The type of the locale, defaulting to string.
|
|
14
|
+
*/
|
|
15
|
+
export interface LocalizationProviderProps<TDate extends DateFrameworkType = DateFrameworkType, TLocale = string> {
|
|
16
|
+
/**
|
|
17
|
+
* The child components to be rendered within the provider.
|
|
18
|
+
*/
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* The instance of the date library being used.
|
|
22
|
+
*/
|
|
23
|
+
instance?: any;
|
|
24
|
+
/**
|
|
25
|
+
* The date adapter class, which provides methods for date manipulation and formatting.
|
|
26
|
+
* This should be a constructor for a class implementing the SaltDateAdapter interface.
|
|
27
|
+
*/
|
|
28
|
+
DateAdapter: new (...args: any) => SaltDateAdapter<TDate, TLocale>;
|
|
29
|
+
/**
|
|
30
|
+
* The locale to be used for date formatting and manipulation.
|
|
31
|
+
*/
|
|
32
|
+
locale?: TLocale;
|
|
33
|
+
/**
|
|
34
|
+
* The minimum date allowed for all date selections.
|
|
35
|
+
* Defaults to January 1, 1900.
|
|
36
|
+
*/
|
|
37
|
+
minDate?: TDate;
|
|
38
|
+
/**
|
|
39
|
+
* The maximum date allowed for all date selections.
|
|
40
|
+
* Defaults to December 31, 2099.
|
|
41
|
+
*/
|
|
42
|
+
maxDate?: TDate;
|
|
43
|
+
}
|
|
44
|
+
export type LocalizationProviderContext<TDate extends DateFrameworkType = DateFrameworkType> = {
|
|
45
|
+
[K in keyof LocalizationProviderValue<TDate>]: LocalizationProviderValue<TDate>[K] | null;
|
|
46
|
+
};
|
|
47
|
+
export declare const LocalizationProviderContext: import("react").Context<LocalizationProviderValue<any> | null>;
|
|
48
|
+
export declare const LocalizationProvider: <TDate extends DateFrameworkType = DateFrameworkType, TLocale = undefined>(props: LocalizationProviderProps<TDate, TLocale>) => import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
/**
|
|
50
|
+
* Custom hook to access the localization context.
|
|
51
|
+
*
|
|
52
|
+
* This hook provides access to the localization settings and utilities
|
|
53
|
+
* within the `LocalizationProviderContext`. It should be used within a
|
|
54
|
+
* component that is a descendant of `LocalizationProviderContext.Provider`.
|
|
55
|
+
*
|
|
56
|
+
* @template TDate - The type of the date object used in the localization context.
|
|
57
|
+
*
|
|
58
|
+
* @returns The localization provider value, which includes date manipulation and formatting utilities.
|
|
59
|
+
*
|
|
60
|
+
* @throws Will throw an error if the hook is used outside of a `LocalizationProviderContext.Provider`.
|
|
61
|
+
*/
|
|
62
|
+
export declare const useLocalization: <TDate extends DateFrameworkType = DateFrameworkType>() => LocalizationProviderValue<TDate>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./LocalizationProvider";
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@salt-ds/date-components",
|
|
3
|
+
"version": "0.0.0-snapshot-20260330155807",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/jpmorganchase/salt-ds.git",
|
|
8
|
+
"directory": "packages/date-components"
|
|
9
|
+
},
|
|
10
|
+
"bugs": "https://github.com/jpmorganchase/salt-ds/issues",
|
|
11
|
+
"main": "dist-cjs/index.js",
|
|
12
|
+
"files": [
|
|
13
|
+
"css",
|
|
14
|
+
"dist-cjs",
|
|
15
|
+
"dist-es",
|
|
16
|
+
"dist-types",
|
|
17
|
+
"CHANGELOG.md"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": [
|
|
20
|
+
"*.css"
|
|
21
|
+
],
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@floating-ui/react": "^0.26.28",
|
|
24
|
+
"@salt-ds/core": "^0.0.0-snapshot-20260330155807",
|
|
25
|
+
"@salt-ds/date-adapters": "^0.0.0-snapshot-20260330155807",
|
|
26
|
+
"@salt-ds/icons": "^0.0.0-snapshot-20260330155807",
|
|
27
|
+
"@salt-ds/styles": "0.3.0",
|
|
28
|
+
"@salt-ds/window": "0.1.1",
|
|
29
|
+
"clsx": "^2.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@date-fns/tz": "^1.4.1",
|
|
33
|
+
"@types/luxon": "^3.7.1",
|
|
34
|
+
"date-fns": "^4.1.0",
|
|
35
|
+
"dayjs": "^1.11.20",
|
|
36
|
+
"luxon": "^3.7.2",
|
|
37
|
+
"moment": "^2.30.1",
|
|
38
|
+
"moment-timezone": "^0.6.1"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@types/react": ">=16.14.0",
|
|
42
|
+
"react": ">=16.14.0",
|
|
43
|
+
"react-dom": ">=16.14.0"
|
|
44
|
+
},
|
|
45
|
+
"peerDependenciesMeta": {
|
|
46
|
+
"@types/react": {
|
|
47
|
+
"optional": true
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"directory": "../../dist/salt-ds-date-components",
|
|
52
|
+
"provenance": true
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "yarn node ../../scripts/build.mjs",
|
|
56
|
+
"bundle:css": "yarn node ./scripts/bundleCSS.mjs"
|
|
57
|
+
},
|
|
58
|
+
"module": "dist-es/index.js",
|
|
59
|
+
"typings": "dist-types/index.d.ts"
|
|
60
|
+
}
|