@salt-ds/lab 1.0.0-alpha.55 → 1.0.0-alpha.57

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.
Files changed (188) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/css/salt-lab.css +44 -7
  3. package/dist-cjs/calendar/Calendar.js +12 -12
  4. package/dist-cjs/calendar/Calendar.js.map +1 -1
  5. package/dist-cjs/calendar/CalendarGrid.css.js +6 -0
  6. package/dist-cjs/calendar/CalendarGrid.css.js.map +1 -0
  7. package/dist-cjs/calendar/CalendarGrid.js +107 -0
  8. package/dist-cjs/calendar/CalendarGrid.js.map +1 -0
  9. package/dist-cjs/calendar/CalendarNavigation.js +219 -201
  10. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  11. package/dist-cjs/calendar/CalendarWeekHeader.js +10 -4
  12. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
  13. package/dist-cjs/calendar/internal/CalendarContext.js +6 -2
  14. package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
  15. package/dist-cjs/calendar/internal/CalendarDay.js +6 -9
  16. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  17. package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
  18. package/dist-cjs/calendar/internal/CalendarMonth.js +47 -54
  19. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  20. package/dist-cjs/calendar/internal/useFocusManagement.js +18 -18
  21. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  22. package/dist-cjs/calendar/internal/utils.js +33 -48
  23. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  24. package/dist-cjs/calendar/useCalendar.js +46 -38
  25. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  26. package/dist-cjs/calendar/useCalendarDay.js +15 -21
  27. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  28. package/dist-cjs/calendar/useCalendarSelection.js +44 -35
  29. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  30. package/dist-cjs/date-input/DateInput.css.js +1 -1
  31. package/dist-cjs/date-input/DateInputRange.js +102 -107
  32. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  33. package/dist-cjs/date-input/DateInputSingle.js +39 -51
  34. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  35. package/dist-cjs/date-picker/DatePicker.js +15 -13
  36. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  37. package/dist-cjs/date-picker/DatePickerActions.js +3 -8
  38. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  39. package/dist-cjs/date-picker/DatePickerContext.js +6 -2
  40. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  41. package/dist-cjs/date-picker/DatePickerOverlay.js +1 -0
  42. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
  43. package/dist-cjs/date-picker/DatePickerOverlayProvider.js +21 -8
  44. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
  45. package/dist-cjs/date-picker/DatePickerRangeInput.js +77 -28
  46. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  47. package/dist-cjs/date-picker/DatePickerRangePanel.js +45 -40
  48. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  49. package/dist-cjs/date-picker/DatePickerSingleInput.js +123 -84
  50. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  51. package/dist-cjs/date-picker/DatePickerSinglePanel.js +17 -20
  52. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
  53. package/dist-cjs/date-picker/DatePickerTrigger.js +32 -0
  54. package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -0
  55. package/dist-cjs/date-picker/useDatePicker.js +60 -110
  56. package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
  57. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  58. package/dist-cjs/index.js +19 -20
  59. package/dist-cjs/index.js.map +1 -1
  60. package/dist-cjs/localization-provider/LocalizationProvider.js +48 -0
  61. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -0
  62. package/dist-cjs/overlay/OverlayHeader.css.js +6 -0
  63. package/dist-cjs/overlay/OverlayHeader.css.js.map +1 -0
  64. package/dist-cjs/overlay/OverlayHeader.js +35 -0
  65. package/dist-cjs/overlay/OverlayHeader.js.map +1 -0
  66. package/dist-cjs/system-status/SystemStatus.css.js +1 -1
  67. package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
  68. package/dist-cjs/tabs-next/TabListNext.js +4 -0
  69. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  70. package/dist-es/calendar/Calendar.js +12 -12
  71. package/dist-es/calendar/Calendar.js.map +1 -1
  72. package/dist-es/calendar/CalendarGrid.css.js +4 -0
  73. package/dist-es/calendar/CalendarGrid.css.js.map +1 -0
  74. package/dist-es/calendar/CalendarGrid.js +105 -0
  75. package/dist-es/calendar/CalendarGrid.js.map +1 -0
  76. package/dist-es/calendar/CalendarNavigation.js +220 -202
  77. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  78. package/dist-es/calendar/CalendarWeekHeader.js +11 -5
  79. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  80. package/dist-es/calendar/internal/CalendarContext.js +6 -2
  81. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  82. package/dist-es/calendar/internal/CalendarDay.js +6 -9
  83. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  84. package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
  85. package/dist-es/calendar/internal/CalendarMonth.js +48 -55
  86. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  87. package/dist-es/calendar/internal/useFocusManagement.js +15 -15
  88. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  89. package/dist-es/calendar/internal/utils.js +32 -45
  90. package/dist-es/calendar/internal/utils.js.map +1 -1
  91. package/dist-es/calendar/useCalendar.js +40 -32
  92. package/dist-es/calendar/useCalendar.js.map +1 -1
  93. package/dist-es/calendar/useCalendarDay.js +11 -17
  94. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  95. package/dist-es/calendar/useCalendarSelection.js +40 -29
  96. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  97. package/dist-es/date-input/DateInput.css.js +1 -1
  98. package/dist-es/date-input/DateInputRange.js +101 -107
  99. package/dist-es/date-input/DateInputRange.js.map +1 -1
  100. package/dist-es/date-input/DateInputSingle.js +39 -51
  101. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  102. package/dist-es/date-picker/DatePicker.js +15 -13
  103. package/dist-es/date-picker/DatePicker.js.map +1 -1
  104. package/dist-es/date-picker/DatePickerActions.js +3 -8
  105. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  106. package/dist-es/date-picker/DatePickerContext.js +6 -2
  107. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  108. package/dist-es/date-picker/DatePickerOverlay.js +1 -0
  109. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  110. package/dist-es/date-picker/DatePickerOverlayProvider.js +21 -8
  111. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  112. package/dist-es/date-picker/DatePickerRangeInput.js +78 -30
  113. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  114. package/dist-es/date-picker/DatePickerRangePanel.js +44 -39
  115. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  116. package/dist-es/date-picker/DatePickerSingleInput.js +124 -85
  117. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  118. package/dist-es/date-picker/DatePickerSinglePanel.js +17 -20
  119. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  120. package/dist-es/date-picker/DatePickerTrigger.js +30 -0
  121. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -0
  122. package/dist-es/date-picker/useDatePicker.js +61 -111
  123. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  124. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  125. package/dist-es/index.js +8 -7
  126. package/dist-es/index.js.map +1 -1
  127. package/dist-es/localization-provider/LocalizationProvider.js +44 -0
  128. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -0
  129. package/dist-es/overlay/OverlayHeader.css.js +4 -0
  130. package/dist-es/overlay/OverlayHeader.css.js.map +1 -0
  131. package/dist-es/overlay/OverlayHeader.js +33 -0
  132. package/dist-es/overlay/OverlayHeader.js.map +1 -0
  133. package/dist-es/system-status/SystemStatus.css.js +1 -1
  134. package/dist-es/tabs-next/TabListNext.css.js +1 -1
  135. package/dist-es/tabs-next/TabListNext.js +5 -1
  136. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  137. package/dist-types/calendar/Calendar.d.ts +11 -6
  138. package/dist-types/calendar/CalendarGrid.d.ts +13 -0
  139. package/dist-types/calendar/CalendarNavigation.d.ts +9 -11
  140. package/dist-types/calendar/CalendarWeekHeader.d.ts +4 -3
  141. package/dist-types/calendar/index.d.ts +1 -2
  142. package/dist-types/calendar/internal/CalendarContext.d.ts +5 -6
  143. package/dist-types/calendar/internal/CalendarDay.d.ts +6 -8
  144. package/dist-types/calendar/internal/CalendarMonth.d.ts +5 -6
  145. package/dist-types/calendar/internal/useFocusManagement.d.ts +3 -4
  146. package/dist-types/calendar/internal/utils.d.ts +7 -11
  147. package/dist-types/calendar/useCalendar.d.ts +207 -55
  148. package/dist-types/calendar/useCalendarDay.d.ts +5 -7
  149. package/dist-types/calendar/useCalendarSelection.d.ts +92 -58
  150. package/dist-types/date-input/DateInputRange.d.ts +38 -56
  151. package/dist-types/date-input/DateInputSingle.d.ts +32 -49
  152. package/dist-types/date-input/index.d.ts +0 -1
  153. package/dist-types/date-picker/DatePicker.d.ts +23 -5
  154. package/dist-types/date-picker/DatePickerActions.d.ts +13 -12
  155. package/dist-types/date-picker/DatePickerContext.d.ts +42 -59
  156. package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +10 -0
  157. package/dist-types/date-picker/DatePickerRangeInput.d.ts +13 -3
  158. package/dist-types/date-picker/DatePickerRangePanel.d.ts +17 -17
  159. package/dist-types/date-picker/DatePickerSingleInput.d.ts +12 -3
  160. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +11 -11
  161. package/dist-types/date-picker/DatePickerTrigger.d.ts +9 -0
  162. package/dist-types/date-picker/index.d.ts +3 -2
  163. package/dist-types/date-picker/useDatePicker.d.ts +52 -59
  164. package/dist-types/index.d.ts +2 -0
  165. package/dist-types/localization-provider/LocalizationProvider.d.ts +62 -0
  166. package/dist-types/localization-provider/index.d.ts +1 -0
  167. package/dist-types/overlay/OverlayHeader.d.ts +20 -0
  168. package/dist-types/overlay/index.d.ts +1 -0
  169. package/package.json +11 -3
  170. package/dist-cjs/calendar/CalendarDateGrid.css.js +0 -6
  171. package/dist-cjs/calendar/CalendarDateGrid.css.js.map +0 -1
  172. package/dist-cjs/calendar/CalendarDateGrid.js +0 -105
  173. package/dist-cjs/calendar/CalendarDateGrid.js.map +0 -1
  174. package/dist-cjs/calendar/formatDate.js +0 -51
  175. package/dist-cjs/calendar/formatDate.js.map +0 -1
  176. package/dist-cjs/date-input/utils.js +0 -63
  177. package/dist-cjs/date-input/utils.js.map +0 -1
  178. package/dist-es/calendar/CalendarDateGrid.css.js +0 -4
  179. package/dist-es/calendar/CalendarDateGrid.css.js.map +0 -1
  180. package/dist-es/calendar/CalendarDateGrid.js +0 -103
  181. package/dist-es/calendar/CalendarDateGrid.js.map +0 -1
  182. package/dist-es/calendar/formatDate.js +0 -48
  183. package/dist-es/calendar/formatDate.js.map +0 -1
  184. package/dist-es/date-input/utils.js +0 -57
  185. package/dist-es/date-input/utils.js.map +0 -1
  186. package/dist-types/calendar/CalendarDateGrid.d.ts +0 -10
  187. package/dist-types/calendar/formatDate.d.ts +0 -14
  188. package/dist-types/date-input/utils.d.ts +0 -43
@@ -1,164 +1,198 @@
1
- import { CalendarDate, CalendarDateTime, type DateValue, ZonedDateTime } from "@internationalized/date";
1
+ import type { DateFrameworkType } from "@salt-ds/date-adapters";
2
2
  import type { KeyboardEventHandler, MouseEventHandler, SyntheticEvent } from "react";
3
3
  /**
4
4
  * Type representing a single date selection.
5
5
  */
6
- export declare type SingleDateSelection = DateValue;
6
+ export declare type SingleDateSelection<TDate extends DateFrameworkType> = TDate;
7
7
  /**
8
8
  * Type representing multiple date selections.
9
9
  */
10
- export declare type MultipleDateSelection = DateValue[];
10
+ export declare type MultipleDateSelection<TDate extends DateFrameworkType> = TDate[];
11
11
  /**
12
12
  * Type representing a date range selection.
13
13
  */
14
- export declare type DateRangeSelection = {
14
+ export declare type DateRangeSelection<TDate extends DateFrameworkType> = {
15
15
  /**
16
16
  * The start date of the range.
17
17
  */
18
- startDate?: DateValue | null;
18
+ startDate?: TDate | null;
19
19
  /**
20
20
  * The end date of the range.
21
21
  */
22
- endDate?: DateValue | null;
22
+ endDate?: TDate | null;
23
23
  };
24
24
  /**
25
25
  * Type representing all possible selection value types.
26
26
  */
27
- export declare type AllSelectionValueType = SingleDateSelection | MultipleDateSelection | DateRangeSelection | null;
28
- /**
29
- * The default minimum year used by the calendar.
30
- */
31
- export declare const CALENDAR_MIN_YEAR = 1900;
32
- /**
33
- * The default maximum year used by the calendar.
34
- */
35
- export declare const CALENDAR_MAX_YEAR = 2100;
27
+ export declare type AllSelectionValueType<TDate extends DateFrameworkType> = SingleDateSelection<TDate> | MultipleDateSelection<TDate> | DateRangeSelection<TDate> | null;
36
28
  /**
37
29
  * Checks if a value is a single date selection.
38
30
  * @param value - The value to check.
39
31
  * @returns `true` if the value is a single date selection, otherwise `false`.
40
32
  */
41
- export declare function isSingleSelectionValueType(value: any): value is DateValue;
33
+ export declare function isSingleSelectionValueType<TDate extends DateFrameworkType>(value: any): value is TDate;
42
34
  /**
43
35
  * Checks if a value is a date range selection.
44
36
  * @param value - The value to check.
45
37
  * @returns `true` if the value is a date range selection, otherwise `false`.
46
38
  */
47
- export declare function isDateRangeSelection(value: any): value is DateRangeSelection;
39
+ export declare function isDateRangeSelection<TDate extends DateFrameworkType>(value: any): value is DateRangeSelection<TDate>;
48
40
  /**
49
41
  * Checks if a value is a multiple date selection.
50
42
  * @param value - The value to check.
51
43
  * @returns `true` if the value is a multiple date selection, otherwise `false`.
52
44
  */
53
- export declare function isMultipleDateSelection(value: any): value is MultipleDateSelection;
45
+ export declare function isMultipleDateSelection<TDate extends DateFrameworkType>(value: any): value is MultipleDateSelection<TDate>;
54
46
  /**
55
47
  * Base properties for calendar UseCalendarSelection hook.
56
48
  * @template SelectionVariantType - The type of the selection variant.
57
49
  */
58
- interface UseCalendarSelectionBaseProps<SelectionVariantType> {
50
+ interface UseCalendarSelectionBaseProps<TDate extends DateFrameworkType> {
59
51
  /**
60
52
  * The currently hovered date.
61
53
  */
62
- hoveredDate?: DateValue | null;
63
- /**
64
- * The currently selected date.
65
- */
66
- selectedDate?: SelectionVariantType | null;
67
- /**
68
- * The default selected date.
69
- */
70
- defaultSelectedDate?: SelectionVariantType;
71
- /**
72
- * Callback fired when the selected date changes.
73
- * @param event - The synthetic event.
74
- * @param selectedDate - The new selected date.
75
- */
76
- onSelectedDateChange?: (event: SyntheticEvent, selectedDate: SelectionVariantType | null) => void;
54
+ hoveredDate?: TDate | null;
77
55
  /**
78
56
  * Function to determine if a day is selectable.
79
57
  * @param date - The date to check.
80
58
  * @returns `true` if the day is selectable, otherwise `false`.
81
59
  */
82
- isDaySelectable?: (date: DateValue) => boolean;
60
+ isDaySelectable?: (date: TDate) => boolean;
83
61
  /**
84
62
  * Callback fired when the hovered date changes.
85
63
  * @param event - The synthetic event.
86
64
  * @param hoveredDate - The new hovered date.
87
65
  */
88
- onHoveredDateChange?: (event: SyntheticEvent, hoveredDate: DateValue | null) => void;
66
+ onHoveredDateChange?: (event: SyntheticEvent, hoveredDate: TDate | null) => void;
89
67
  }
90
68
  /**
91
69
  * UseCalendar hook props to return a calendar day's status
92
70
  */
93
- export interface UseCalendarSelectionOffsetProps extends Omit<UseCalendarSelectionBaseProps<DateRangeSelection>, "startDateOffset" | "endDateOffset"> {
71
+ export interface UseCalendarSelectionOffsetProps<TDate extends DateFrameworkType> extends Omit<UseCalendarSelectionBaseProps<TDate>, "startDateOffset" | "endDateOffset"> {
94
72
  /**
95
73
  * The selection variant, set to "offset".
96
74
  */
97
75
  selectionVariant: "offset";
76
+ /**
77
+ * The currently selected date.
78
+ */
79
+ selectedDate?: DateRangeSelection<TDate>;
80
+ /**
81
+ * The default selected date.
82
+ */
83
+ defaultSelectedDate?: DateRangeSelection<TDate>;
84
+ /**
85
+ * Callback fired when the selected date changes.
86
+ * @param event - The synthetic event.
87
+ * @param selectedDate - The new selected date.
88
+ */
89
+ onSelectionChange?: (event: SyntheticEvent, selectedDate: DateRangeSelection<TDate>) => void;
98
90
  /**
99
91
  * Function to calculate the start date offset.
100
92
  * @param date - The date to offset.
101
93
  * @returns The offset start date.
102
94
  */
103
- startDateOffset?: (date: DateValue) => DateValue;
95
+ startDateOffset?: (date: TDate) => TDate;
104
96
  /**
105
97
  * Function to calculate the end date offset.
106
98
  * @param date - The date to offset.
107
99
  * @returns The offset end date.
108
100
  */
109
- endDateOffset?: (date: DateValue) => DateValue;
101
+ endDateOffset?: (date: TDate) => TDate;
110
102
  }
111
103
  /**
112
104
  * Properties for the range date selection hook.
113
105
  */
114
- export interface UseCalendarSelectionRangeProps extends UseCalendarSelectionBaseProps<DateRangeSelection> {
106
+ export interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType> extends UseCalendarSelectionBaseProps<TDate> {
115
107
  /**
116
108
  * The selection variant, set to "range".
117
109
  */
118
110
  selectionVariant: "range";
111
+ /**
112
+ * The currently selected date.
113
+ */
114
+ selectedDate?: DateRangeSelection<TDate>;
115
+ /**
116
+ * The default selected date.
117
+ */
118
+ defaultSelectedDate?: DateRangeSelection<TDate>;
119
+ /**
120
+ * Callback fired when the selected date changes.
121
+ * @param event - The synthetic event.
122
+ * @param selectedDate - The new selected date.
123
+ */
124
+ onSelectionChange?: (event: SyntheticEvent, selectedDate: DateRangeSelection<TDate>) => void;
119
125
  }
120
126
  /**
121
127
  * Properties for the multi-select date selection hook.
122
128
  */
123
- export interface UseCalendarSelectionMultiSelectProps extends UseCalendarSelectionBaseProps<MultipleDateSelection> {
129
+ export interface UseCalendarSelectionMultiSelectProps<TDate extends DateFrameworkType> extends UseCalendarSelectionBaseProps<TDate> {
124
130
  /**
125
131
  * The selection variant, set to "multiselect".
126
132
  */
127
133
  selectionVariant: "multiselect";
134
+ /**
135
+ * The currently selected date.
136
+ */
137
+ selectedDate?: MultipleDateSelection<TDate>;
138
+ /**
139
+ * The default selected date.
140
+ */
141
+ defaultSelectedDate?: MultipleDateSelection<TDate>;
142
+ /**
143
+ * Callback fired when the selected date changes.
144
+ * @param event - The synthetic event.
145
+ * @param selectedDate - The new selected date.
146
+ */
147
+ onSelectionChange?: (event: SyntheticEvent, selectedDate: MultipleDateSelection<TDate>) => void;
128
148
  }
129
149
  /**
130
150
  * Properties for the single date selection hook.
131
151
  */
132
- export interface UseCalendarSelectionSingleProps extends UseCalendarSelectionBaseProps<SingleDateSelection> {
152
+ export interface UseCalendarSelectionSingleProps<TDate extends DateFrameworkType> extends UseCalendarSelectionBaseProps<TDate> {
133
153
  /**
134
154
  * The selection variant, set to "single".
135
155
  */
136
156
  selectionVariant: "single";
157
+ /**
158
+ * The currently selected date.
159
+ */
160
+ selectedDate?: SingleDateSelection<TDate> | null;
161
+ /**
162
+ * The default selected date.
163
+ */
164
+ defaultSelectedDate?: SingleDateSelection<TDate> | null;
165
+ /**
166
+ * Callback fired when the selected date changes.
167
+ * @param event - The synthetic event.
168
+ * @param selectedDate - The new selected date.
169
+ */
170
+ onSelectionChange?: (event: SyntheticEvent, selectedDate: SingleDateSelection<TDate> | null) => void;
137
171
  }
138
172
  /**
139
173
  * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection
140
174
  */
141
- export declare type UseCalendarSelectionProps = UseCalendarSelectionSingleProps | UseCalendarSelectionMultiSelectProps | UseCalendarSelectionRangeProps | UseCalendarSelectionOffsetProps;
142
- export declare function useCalendarSelection(props: UseCalendarSelectionProps): {
175
+ export declare type UseCalendarSelectionProps<TDate extends DateFrameworkType> = UseCalendarSelectionSingleProps<TDate> | UseCalendarSelectionMultiSelectProps<TDate> | UseCalendarSelectionRangeProps<TDate> | UseCalendarSelectionOffsetProps<TDate>;
176
+ export declare function useCalendarSelection<TDate extends DateFrameworkType>(props: UseCalendarSelectionProps<TDate>): {
143
177
  state: {
144
- selectedDate: CalendarDate | CalendarDateTime | ZonedDateTime | DateRangeSelection | MultipleDateSelection | null | undefined;
145
- hoveredDate: CalendarDate | CalendarDateTime | ZonedDateTime | null | undefined;
178
+ selectedDate: TDate | MultipleDateSelection<TDate> | DateRangeSelection<TDate> | null | undefined;
179
+ hoveredDate: TDate | null | undefined;
146
180
  };
147
181
  helpers: {
148
- setSelectedDate: (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: DateValue) => void;
149
- isSelected: (date: DateValue) => boolean;
150
- setHoveredDate: (event: SyntheticEvent, date: DateValue | null) => void;
151
- isHovered: (date: DateValue) => boolean;
152
- isSelectedSpan: (date: DateValue) => boolean;
153
- isHoveredSpan: (date: DateValue) => boolean;
154
- isSelectedStart: (date: DateValue) => boolean;
155
- isSelectedEnd: (date: DateValue) => boolean;
156
- isHoveredOffset: (date: DateValue) => boolean;
157
- isDaySelectable: ((date: DateValue) => boolean) | undefined;
182
+ setSelectedDate: (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => void;
183
+ isSelected: (date: TDate) => boolean;
184
+ setHoveredDate: (event: SyntheticEvent, date: TDate | null) => void;
185
+ isHovered: (date: TDate) => boolean;
186
+ isSelectedSpan: (date: TDate) => boolean;
187
+ isHoveredSpan: (date: TDate) => boolean;
188
+ isSelectedStart: (date: TDate) => boolean;
189
+ isSelectedEnd: (date: TDate) => boolean;
190
+ isHoveredOffset: (date: TDate) => boolean;
191
+ isDaySelectable: ((date: TDate) => boolean) | undefined;
158
192
  };
159
193
  };
160
- export declare function useCalendarSelectionDay({ date }: {
161
- date: DateValue;
194
+ export declare function useCalendarSelectionDay<TDate extends DateFrameworkType>({ date, }: {
195
+ date: TDate;
162
196
  }): {
163
197
  handleClick: MouseEventHandler<HTMLButtonElement>;
164
198
  handleKeyDown: KeyboardEventHandler<HTMLButtonElement>;
@@ -1,12 +1,7 @@
1
- import { type DateValue } from "@internationalized/date";
2
1
  import { type InputProps } from "@salt-ds/core";
2
+ import type { DateDetail, DateFrameworkType, ParserResult } from "@salt-ds/date-adapters";
3
3
  import { type ChangeEvent, type ComponentPropsWithoutRef, type InputHTMLAttributes, type ReactNode, type Ref, type SyntheticEvent } from "react";
4
- import { type DateRangeSelection } from "../calendar";
5
- import type { DateInputSingleParserError } from "./DateInputSingle";
6
- /**
7
- * Date error produced by DateInputRange parser.
8
- */
9
- export declare type DateInputRangeParserError = string | false;
4
+ import type { DateRangeSelection } from "../calendar";
10
5
  /**
11
6
  * DateInputRange raw value or null if no date is defined.
12
7
  */
@@ -15,37 +10,26 @@ export declare type DateInputRangeValue = {
15
10
  endDate?: string | null;
16
11
  };
17
12
  /**
18
- * Return value of DateInputRange parser.
19
- * @template T
13
+ * Details of parsing the date range
20
14
  */
21
- export interface DateInputRangeParserResult<T = DateValue | null> {
22
- /**
23
- * The parsed date value.
24
- */
25
- date: T;
26
- /**
27
- * The error encountered during parsing, if any.
28
- */
29
- error: DateInputRangeParserError;
30
- }
15
+ export declare type DateInputRangeDetails = {
16
+ /** Details of parsing the start date and applying any validation */
17
+ startDate?: DateDetail;
18
+ /** Details of parsing the end date and applying any validation */
19
+ endDate?: DateDetail;
20
+ };
31
21
  /**
32
- * Date Range error returned with selected date to indicate invalid dates.
22
+ * Enum to identify the field being parsed
33
23
  */
34
- export declare type DateInputRangeError = {
35
- /**
36
- * The error for the start date.
37
- */
38
- startDate: DateInputSingleParserError;
39
- /**
40
- * The error for the end date.
41
- */
42
- endDate: DateInputSingleParserError;
43
- };
24
+ export declare enum DateParserField {
25
+ START = "start",
26
+ END = "end"
27
+ }
44
28
  /**
45
29
  * Props for the DateInputRange component.
46
30
  * @template T
47
31
  */
48
- export interface DateInputRangeProps<T = DateRangeSelection> extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "onChange">, Omit<InputProps, "defaultValue" | "inputRef" | "value" | "onChange"> {
32
+ export interface DateInputRangeProps<TDate extends DateFrameworkType> extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "onChange">, Omit<InputProps, "defaultValue" | "inputRef" | "value" | "onChange"> {
49
33
  /**
50
34
  * The aria-label for accessibility.
51
35
  */
@@ -86,9 +70,9 @@ export interface DateInputRangeProps<T = DateRangeSelection> extends Omit<Compon
86
70
  */
87
71
  variant?: "primary" | "secondary";
88
72
  /**
89
- * Function to format the input value.
73
+ * Format string for date.
90
74
  */
91
- format?: (date: DateValue | null) => string;
75
+ format?: string;
92
76
  /**
93
77
  * Optional ref for the start input component.
94
78
  */
@@ -97,6 +81,18 @@ export interface DateInputRangeProps<T = DateRangeSelection> extends Omit<Compon
97
81
  * Optional ref for the end input component.
98
82
  */
99
83
  endInputRef?: Ref<HTMLInputElement>;
84
+ /**
85
+ * Locale for date formatting and parsing
86
+ */
87
+ locale?: any;
88
+ /**
89
+ * Parser callback, if not using the adapter's parser
90
+ * @param value - date string to parse
91
+ * @param field: DateParserField to identify value,
92
+ * @param format - format required
93
+ * @param locale - locale required
94
+ */
95
+ parse?: (value: string, field: DateParserField, format: string, locale?: any) => ParserResult<TDate>;
100
96
  /**
101
97
  * Input value. Use when the input value is controlled.
102
98
  */
@@ -108,43 +104,29 @@ export interface DateInputRangeProps<T = DateRangeSelection> extends Omit<Compon
108
104
  /**
109
105
  * The date value. Use when the component is controlled.
110
106
  */
111
- date?: T | null;
107
+ date?: DateRangeSelection<TDate> | null;
112
108
  /**
113
109
  * The initial selected date value. Use when the component is uncontrolled.
114
110
  */
115
- defaultDate?: T | null;
111
+ defaultDate?: DateRangeSelection<TDate> | null;
116
112
  /**
117
113
  * Callback fired when the input value changes.
118
114
  * @param event - The change event.
119
115
  * @param date - The new date input range value.
120
116
  */
121
- onChange?: (event: ChangeEvent<HTMLInputElement>, date: DateInputRangeValue) => void;
117
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
122
118
  /**
123
119
  * Callback fired when the selected date changes.
124
120
  * @param event - The synthetic event.
125
- * @param date - The new date value.
126
- * @param error - The date input range error.
121
+ * @param date - the selected date, invalid date if not a valid date or undefined (uncontrolled) or null (controlled) if not defined
122
+ * @param details - The details of date selection, either a valid date or error
127
123
  */
128
- onDateChange?: (event: SyntheticEvent, date: T | null, error: DateInputRangeError) => void;
124
+ onDateChange?: (event: SyntheticEvent, date: DateRangeSelection<TDate> | null, details: DateInputRangeDetails) => void;
129
125
  /**
130
126
  * Called when input values change, either due to user interaction or programmatic formatting of valid dates.
127
+ * @param event - The synthetic event or null if a programmatic change.
131
128
  * @param newValue - The new date input range value.
132
- * @param isFormatted - Whether the value is formatted.
133
- */
134
- onDateValueChange?: (newValue: DateInputRangeValue, isFormatted: boolean) => void;
135
- /**
136
- * Function to parse date string to valid `DateValue` or null, if invalid.
137
- * @param inputDate - The input date string.
138
- * @returns The result of the date input range parser.
139
- */
140
- parse?: (inputDate: string) => DateInputRangeParserResult;
141
- /**
142
- * Locale of the entered date.
143
- */
144
- locale?: string;
145
- /**
146
- * Timezone of the entered date.
147
129
  */
148
- timeZone?: string;
130
+ onDateValueChange?: (event: SyntheticEvent | null, newValue: DateInputRangeValue) => void;
149
131
  }
150
- export declare const DateInputRange: import("react").ForwardRefExoticComponent<DateInputRangeProps<DateRangeSelection> & import("react").RefAttributes<HTMLDivElement>>;
132
+ export declare const DateInputRange: import("react").ForwardRefExoticComponent<DateInputRangeProps<any> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,33 +1,15 @@
1
- import { type DateValue } from "@internationalized/date";
2
- import { type ComponentPropsWithoutRef, type InputHTMLAttributes, type ReactNode, type RefObject, type SyntheticEvent } from "react";
3
- import { type SingleDateSelection } from "../calendar";
1
+ import type { DateDetail, DateFrameworkType, ParserResult } from "@salt-ds/date-adapters";
2
+ import { type ComponentPropsWithoutRef, type InputHTMLAttributes, type ReactNode, type Ref, type SyntheticEvent } from "react";
3
+ import type { SingleDateSelection } from "../calendar";
4
4
  /**
5
- * Date error produced by DateInputSingle parser.
5
+ * Details of parsing the date
6
6
  */
7
- export declare type DateInputSingleParserError = string | false;
8
- /**
9
- * Date error produced by DateInputSingle parser.
10
- */
11
- export declare type DateInputSingleError = DateInputSingleParserError;
12
- /**
13
- * Return value of DateInputSingle parser.
14
- * @template T
15
- */
16
- export interface DateInputSingleParserResult<T = DateValue | null> {
17
- /**
18
- * The parsed date value.
19
- */
20
- date: T;
21
- /**
22
- * The error encountered during parsing, if any.
23
- */
24
- error: DateInputSingleParserError;
25
- }
7
+ export declare type DateInputSingleDetails = DateDetail;
26
8
  /**
27
9
  * Props for the DateInputSingle component.
28
10
  * @template T
29
11
  */
30
- export interface DateInputSingleProps<T = SingleDateSelection> extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue">, Pick<ComponentPropsWithoutRef<"input">, "disabled" | "value" | "defaultValue" | "placeholder"> {
12
+ export interface DateInputSingleProps<TDate extends DateFrameworkType> extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue">, Pick<ComponentPropsWithoutRef<"input">, "disabled" | "value" | "defaultValue" | "placeholder"> {
31
13
  /**
32
14
  * The aria-label for accessibility.
33
15
  */
@@ -54,6 +36,10 @@ export interface DateInputSingleProps<T = SingleDateSelection> extends Omit<Comp
54
36
  * If `true`, the component is read-only.
55
37
  */
56
38
  readOnly?: boolean;
39
+ /**
40
+ * Start adornment component
41
+ */
42
+ startAdornment?: ReactNode;
57
43
  /**
58
44
  * Validation status.
59
45
  */
@@ -63,13 +49,24 @@ export interface DateInputSingleProps<T = SingleDateSelection> extends Omit<Comp
63
49
  */
64
50
  variant?: "primary" | "secondary";
65
51
  /**
66
- * Function to format the input value.
52
+ * Format string for date.
67
53
  */
68
- format?: (date: DateValue | null) => string;
54
+ format?: string;
69
55
  /**
70
56
  * Reference for the input.
71
57
  */
72
- inputRef?: RefObject<HTMLInputElement>;
58
+ inputRef?: Ref<HTMLInputElement>;
59
+ /**
60
+ * Locale for date formatting and parsing
61
+ */
62
+ locale?: any;
63
+ /**
64
+ * Parser callback, if not using the adapter's parser
65
+ * @param value - date string to parse
66
+ * @param format - format required
67
+ * @param locale - locale required
68
+ */
69
+ parse?: (value: string, format: string, locale?: any) => ParserResult<TDate>;
73
70
  /**
74
71
  * Input value. Use when the input value is controlled.
75
72
  */
@@ -81,37 +78,23 @@ export interface DateInputSingleProps<T = SingleDateSelection> extends Omit<Comp
81
78
  /**
82
79
  * The date value. Use when the component is controlled.
83
80
  */
84
- date?: T | null;
81
+ date?: TDate | null;
85
82
  /**
86
83
  * The initial selected date value. Use when the component is uncontrolled.
87
84
  */
88
- defaultDate?: T | null;
85
+ defaultDate?: TDate | null;
89
86
  /**
90
87
  * Callback fired when the selected date changes.
91
88
  * @param event - The synthetic event.
92
- * @param date - The new date value.
93
- * @param error - The date input single error.
89
+ * @param date - the selected date, invalid date if not a valid date or undefined (uncontrolled) or null (controlled) if not defined
90
+ * @param details - The details of date selection, either a valid date or error
94
91
  */
95
- onDateChange?: (event: SyntheticEvent, date: T | null, error: DateInputSingleError) => void;
96
- /**
97
- * Function to parse date string to valid `DateValue` or null, if invalid or empty.
98
- * @param inputDate - The input date string.
99
- * @returns The result of the date input single parser.
100
- */
101
- parse?: (inputDate: string) => DateInputSingleParserResult;
92
+ onDateChange?: (event: SyntheticEvent, date: SingleDateSelection<TDate> | null | undefined, details: DateInputSingleDetails) => void;
102
93
  /**
103
94
  * Called when input value changes, either due to user interaction or programmatic formatting of valid dates.
95
+ * @param event - The synthetic event or null if a programmatic change.
104
96
  * @param newValue - The new date input value.
105
- * @param isFormatted - Whether the value is formatted.
106
- */
107
- onDateValueChange?: (newValue: string, isFormatted: boolean) => void;
108
- /**
109
- * Locale of the entered date.
110
- */
111
- locale?: string;
112
- /**
113
- * Timezone of the entered date.
114
97
  */
115
- timeZone?: string;
98
+ onDateValueChange?: (event: SyntheticEvent | null, newValue: string) => void;
116
99
  }
117
- export declare const DateInputSingle: import("react").ForwardRefExoticComponent<DateInputSingleProps<DateValue> & import("react").RefAttributes<HTMLDivElement>>;
100
+ export declare const DateInputSingle: import("react").ForwardRefExoticComponent<DateInputSingleProps<any> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,2 @@
1
1
  export * from "./DateInputSingle";
2
2
  export * from "./DateInputRange";
3
- export * from "./utils";
@@ -1,3 +1,4 @@
1
+ import type { DateFrameworkType } from "@salt-ds/date-adapters";
1
2
  import { type ReactNode } from "react";
2
3
  import { type UseDatePickerRangeProps, type UseDatePickerSingleProps } from "./useDatePicker";
3
4
  /**
@@ -8,17 +9,34 @@ export interface DatePickerBaseProps {
8
9
  children?: ReactNode;
9
10
  /** the open/close state of the overlay. The open/close state will be controlled when this prop is provided. */
10
11
  open?: boolean;
12
+ /**
13
+ * Handler for when open state changes
14
+ * @param newOpen - true when opened
15
+ */
16
+ onOpen?: (newOpen: boolean) => void;
11
17
  /**
12
18
  * the initial open/close state of the overlay, when the open/close state is un-controlled.
13
19
  */
14
20
  defaultOpen?: DatePickerBaseProps["open"];
15
21
  }
16
- export interface DatePickerSingleProps extends DatePickerBaseProps, UseDatePickerSingleProps {
22
+ /**
23
+ * Props for the DatePicker component, when `selectionVariant` is `single`.
24
+ * @template T
25
+ */
26
+ export interface DatePickerSingleProps<TDate extends DateFrameworkType> extends DatePickerBaseProps, UseDatePickerSingleProps<TDate> {
17
27
  selectionVariant: "single";
18
28
  }
19
- export interface DatePickerRangeProps extends DatePickerBaseProps, UseDatePickerRangeProps {
29
+ /**
30
+ * Props for the DatePicker component, when `selectionVariant` is `range`.
31
+ * @template T
32
+ */
33
+ export interface DatePickerRangeProps<TDate extends DateFrameworkType> extends DatePickerBaseProps, UseDatePickerRangeProps<TDate> {
20
34
  selectionVariant: "range";
21
35
  }
22
- export declare type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;
23
- export declare const DatePickerMain: import("react").ForwardRefExoticComponent<DatePickerProps & import("react").RefAttributes<HTMLDivElement>>;
24
- export declare const DatePicker: import("react").ForwardRefExoticComponent<DatePickerProps & import("react").RefAttributes<HTMLDivElement>>;
36
+ /**
37
+ * Props for the DatePicker component.
38
+ * @template T
39
+ */
40
+ export declare type DatePickerProps<TDate extends DateFrameworkType> = DatePickerSingleProps<TDate> | DatePickerRangeProps<TDate>;
41
+ export declare const DatePickerMain: import("react").ForwardRefExoticComponent<DatePickerProps<any> & import("react").RefAttributes<HTMLDivElement>>;
42
+ export declare const DatePicker: import("react").ForwardRefExoticComponent<DatePickerProps<Date | import("dayjs").Dayjs | import("luxon").DateTime<boolean> | import("moment").Moment> & import("react").RefAttributes<HTMLDivElement>>;
@@ -2,8 +2,9 @@ import { type ButtonProps } from "@salt-ds/core";
2
2
  import { type ComponentPropsWithoutRef, type Ref, type SyntheticEvent } from "react";
3
3
  import type { DateRangeSelection, SingleDateSelection } from "../calendar";
4
4
  import "./DatePickerActions.css";
5
+ import type { DateFrameworkType } from "@salt-ds/date-adapters";
5
6
  /**
6
- * Base props for DatePicker actions.
7
+ * Base props for DatePicker actions component.
7
8
  */
8
9
  export interface DatePickerActionsBaseProps extends ComponentPropsWithoutRef<"div"> {
9
10
  /**
@@ -32,7 +33,7 @@ export interface DatePickerActionsBaseProps extends ComponentPropsWithoutRef<"di
32
33
  * Props for the DatePicker actions component.
33
34
  * @template SelectionVariant - The selection variant, either "single" or "range".
34
35
  */
35
- export declare type DatePickerActionsProps<SelectionVariant extends "single" | "range"> = SelectionVariant extends "single" ? DatePickerActionsBaseProps & {
36
+ export declare type DatePickerActionsProps<TDate extends DateFrameworkType, SelectionVariant extends "single" | "range"> = SelectionVariant extends "single" ? DatePickerActionsBaseProps & {
36
37
  /**
37
38
  * The selection variant, set to "single".
38
39
  */
@@ -42,7 +43,7 @@ export declare type DatePickerActionsProps<SelectionVariant extends "single" | "
42
43
  * @param _event - The synthetic event.
43
44
  * @param date - The selected single date or null.
44
45
  */
45
- onApply?: (_event: SyntheticEvent, date: SingleDateSelection | null) => void;
46
+ onApply?: (_event: SyntheticEvent, date: SingleDateSelection<TDate> | null) => void;
46
47
  } : DatePickerActionsBaseProps & {
47
48
  /**
48
49
  * The selection variant, set to "range".
@@ -53,28 +54,28 @@ export declare type DatePickerActionsProps<SelectionVariant extends "single" | "
53
54
  * @param _event - The synthetic event.
54
55
  * @param date - The selected date range or null.
55
56
  */
56
- onApply?: (_event: SyntheticEvent, date: DateRangeSelection | null) => void;
57
+ onApply?: (_event: SyntheticEvent, date: DateRangeSelection<TDate> | null) => void;
57
58
  };
58
59
  export declare const DatePickerActions: import("react").ForwardRefExoticComponent<((DatePickerActionsBaseProps & {
59
60
  /**
60
- * The selection variant, set to "single".
61
+ * The selection variant, set to "range".
61
62
  */
62
- selectionVariant: "single";
63
+ selectionVariant: "range";
63
64
  /**
64
65
  * Callback fired when the apply action is triggered.
65
66
  * @param _event - The synthetic event.
66
- * @param date - The selected single date or null.
67
+ * @param date - The selected date range or null.
67
68
  */
68
- onApply?: ((_event: SyntheticEvent, date: SingleDateSelection | null) => void) | undefined;
69
+ onApply?: ((_event: SyntheticEvent, date: DateRangeSelection<Date | import("dayjs").Dayjs | import("luxon").DateTime<boolean> | import("moment").Moment> | null) => void) | undefined;
69
70
  }) | (DatePickerActionsBaseProps & {
70
71
  /**
71
- * The selection variant, set to "range".
72
+ * The selection variant, set to "single".
72
73
  */
73
- selectionVariant: "range";
74
+ selectionVariant: "single";
74
75
  /**
75
76
  * Callback fired when the apply action is triggered.
76
77
  * @param _event - The synthetic event.
77
- * @param date - The selected date range or null.
78
+ * @param date - The selected single date or null.
78
79
  */
79
- onApply?: ((_event: SyntheticEvent, date: DateRangeSelection | null) => void) | undefined;
80
+ onApply?: ((_event: SyntheticEvent, date: Date | import("dayjs").Dayjs | import("luxon").DateTime<boolean> | import("moment").Moment | null) => void) | undefined;
80
81
  })) & import("react").RefAttributes<HTMLDivElement>>;