@salt-ds/lab 1.0.0-alpha.52 → 1.0.0-alpha.54

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 (223) hide show
  1. package/css/salt-lab.css +280 -38
  2. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
  3. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  4. package/dist-cjs/calendar/Calendar.js +55 -26
  5. package/dist-cjs/calendar/Calendar.js.map +1 -1
  6. package/dist-cjs/calendar/CalendarDateGrid.css.js +6 -0
  7. package/dist-cjs/calendar/CalendarDateGrid.css.js.map +1 -0
  8. package/dist-cjs/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +37 -14
  9. package/dist-cjs/calendar/CalendarDateGrid.js.map +1 -0
  10. package/dist-cjs/calendar/CalendarNavigation.js +7 -5
  11. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  12. package/dist-cjs/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +4 -3
  13. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
  14. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  15. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  16. package/dist-cjs/calendar/useCalendar.js +2 -4
  17. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  18. package/dist-cjs/calendar/useCalendarSelection.js +16 -43
  19. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  20. package/dist-cjs/carousel/Carousel.js +5 -5
  21. package/dist-cjs/carousel/Carousel.js.map +1 -1
  22. package/dist-cjs/cascading-menu/CascadingMenuItem.js +2 -2
  23. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  24. package/dist-cjs/contact-details/ContactMetadata.js +2 -2
  25. package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
  26. package/dist-cjs/date-input/DateInputRange.js +2 -0
  27. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  28. package/dist-cjs/date-input/DateInputSingle.js +2 -0
  29. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  30. package/dist-cjs/date-picker/DatePicker.js +40 -5
  31. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  32. package/dist-cjs/date-picker/DatePickerActions.js +7 -3
  33. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  34. package/dist-cjs/date-picker/DatePickerRangeInput.js +5 -4
  35. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  36. package/dist-cjs/date-picker/DatePickerRangePanel.js +33 -9
  37. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  38. package/dist-cjs/date-picker/DatePickerSingleInput.js +5 -4
  39. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  40. package/dist-cjs/date-picker/DatePickerSinglePanel.js +19 -5
  41. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
  42. package/dist-cjs/date-picker/useDatePicker.js +91 -63
  43. package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
  44. package/dist-cjs/dropdown/DropdownButton.js +4 -2
  45. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  46. package/dist-cjs/index.js +10 -0
  47. package/dist-cjs/index.js.map +1 -1
  48. package/dist-cjs/menu-button/MenuButtonTrigger.js +2 -2
  49. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  50. package/dist-cjs/query-input/internal/CategoryListItem.js +2 -2
  51. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  52. package/dist-cjs/query-input/internal/ValueList.js +2 -2
  53. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  54. package/dist-cjs/search-input/SearchInput.js +2 -1
  55. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  56. package/dist-cjs/static-list/StaticList.css.js +6 -0
  57. package/dist-cjs/static-list/StaticList.css.js.map +1 -0
  58. package/dist-cjs/static-list/StaticList.js +32 -0
  59. package/dist-cjs/static-list/StaticList.js.map +1 -0
  60. package/dist-cjs/static-list/StaticListItem.css.js +6 -0
  61. package/dist-cjs/static-list/StaticListItem.css.js.map +1 -0
  62. package/dist-cjs/static-list/StaticListItem.js +33 -0
  63. package/dist-cjs/static-list/StaticListItem.js.map +1 -0
  64. package/dist-cjs/static-list/StaticListItemContent.css.js +6 -0
  65. package/dist-cjs/static-list/StaticListItemContent.css.js.map +1 -0
  66. package/dist-cjs/static-list/StaticListItemContent.js +30 -0
  67. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -0
  68. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +8 -8
  69. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  70. package/dist-cjs/stepper-input/StepperInput.css.js +1 -1
  71. package/dist-cjs/stepper-input/StepperInput.js +214 -29
  72. package/dist-cjs/stepper-input/StepperInput.js.map +1 -1
  73. package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js +54 -0
  74. package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
  75. package/dist-cjs/stepper-input/internal/utils.js +43 -0
  76. package/dist-cjs/stepper-input/internal/utils.js.map +1 -0
  77. package/dist-cjs/stepper-input/useStepperInput.js +88 -172
  78. package/dist-cjs/stepper-input/useStepperInput.js.map +1 -1
  79. package/dist-cjs/tabs/Tab.js +14 -12
  80. package/dist-cjs/tabs/Tab.js.map +1 -1
  81. package/dist-cjs/tabs/Tabstrip.js +2 -1
  82. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  83. package/dist-cjs/tabs-next/OverflowMenu.js +2 -2
  84. package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -1
  85. package/dist-cjs/tokenized-input/TokenizedInputBase.js +3 -3
  86. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  87. package/dist-cjs/tokenized-input/internal/InputPill.js +2 -2
  88. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  89. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +3 -3
  90. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  91. package/dist-cjs/tokenized-input-next/internal/InputPill.js +2 -2
  92. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  93. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +2 -2
  94. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  95. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
  96. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  97. package/dist-es/calendar/Calendar.js +57 -28
  98. package/dist-es/calendar/Calendar.js.map +1 -1
  99. package/dist-es/calendar/CalendarDateGrid.css.js +4 -0
  100. package/dist-es/calendar/CalendarDateGrid.css.js.map +1 -0
  101. package/dist-es/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +37 -14
  102. package/dist-es/calendar/CalendarDateGrid.js.map +1 -0
  103. package/dist-es/calendar/CalendarNavigation.js +8 -6
  104. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  105. package/dist-es/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +4 -3
  106. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
  107. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  108. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  109. package/dist-es/calendar/useCalendar.js +2 -4
  110. package/dist-es/calendar/useCalendar.js.map +1 -1
  111. package/dist-es/calendar/useCalendarSelection.js +16 -43
  112. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  113. package/dist-es/carousel/Carousel.js +6 -6
  114. package/dist-es/carousel/Carousel.js.map +1 -1
  115. package/dist-es/cascading-menu/CascadingMenuItem.js +3 -3
  116. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  117. package/dist-es/contact-details/ContactMetadata.js +3 -3
  118. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  119. package/dist-es/date-input/DateInputRange.js +2 -0
  120. package/dist-es/date-input/DateInputRange.js.map +1 -1
  121. package/dist-es/date-input/DateInputSingle.js +2 -0
  122. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  123. package/dist-es/date-picker/DatePicker.js +40 -5
  124. package/dist-es/date-picker/DatePicker.js.map +1 -1
  125. package/dist-es/date-picker/DatePickerActions.js +7 -3
  126. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  127. package/dist-es/date-picker/DatePickerRangeInput.js +5 -4
  128. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  129. package/dist-es/date-picker/DatePickerRangePanel.js +33 -9
  130. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  131. package/dist-es/date-picker/DatePickerSingleInput.js +5 -4
  132. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  133. package/dist-es/date-picker/DatePickerSinglePanel.js +19 -5
  134. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  135. package/dist-es/date-picker/useDatePicker.js +92 -64
  136. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  137. package/dist-es/dropdown/DropdownButton.js +6 -4
  138. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  139. package/dist-es/index.js +5 -0
  140. package/dist-es/index.js.map +1 -1
  141. package/dist-es/menu-button/MenuButtonTrigger.js +3 -3
  142. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  143. package/dist-es/query-input/internal/CategoryListItem.js +3 -3
  144. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  145. package/dist-es/query-input/internal/ValueList.js +3 -3
  146. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  147. package/dist-es/search-input/SearchInput.js +3 -2
  148. package/dist-es/search-input/SearchInput.js.map +1 -1
  149. package/dist-es/static-list/StaticList.css.js +4 -0
  150. package/dist-es/static-list/StaticList.css.js.map +1 -0
  151. package/dist-es/static-list/StaticList.js +28 -0
  152. package/dist-es/static-list/StaticList.js.map +1 -0
  153. package/dist-es/static-list/StaticListItem.css.js +4 -0
  154. package/dist-es/static-list/StaticListItem.css.js.map +1 -0
  155. package/dist-es/static-list/StaticListItem.js +29 -0
  156. package/dist-es/static-list/StaticListItem.js.map +1 -0
  157. package/dist-es/static-list/StaticListItemContent.css.js +4 -0
  158. package/dist-es/static-list/StaticListItemContent.css.js.map +1 -0
  159. package/dist-es/static-list/StaticListItemContent.js +26 -0
  160. package/dist-es/static-list/StaticListItemContent.js.map +1 -0
  161. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +9 -9
  162. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  163. package/dist-es/stepper-input/StepperInput.css.js +1 -1
  164. package/dist-es/stepper-input/StepperInput.js +216 -31
  165. package/dist-es/stepper-input/StepperInput.js.map +1 -1
  166. package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js +50 -0
  167. package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
  168. package/dist-es/stepper-input/internal/utils.js +32 -0
  169. package/dist-es/stepper-input/internal/utils.js.map +1 -0
  170. package/dist-es/stepper-input/useStepperInput.js +88 -172
  171. package/dist-es/stepper-input/useStepperInput.js.map +1 -1
  172. package/dist-es/tabs/Tab.js +15 -13
  173. package/dist-es/tabs/Tab.js.map +1 -1
  174. package/dist-es/tabs/Tabstrip.js +4 -3
  175. package/dist-es/tabs/Tabstrip.js.map +1 -1
  176. package/dist-es/tabs-next/OverflowMenu.js +3 -3
  177. package/dist-es/tabs-next/OverflowMenu.js.map +1 -1
  178. package/dist-es/tokenized-input/TokenizedInputBase.js +3 -3
  179. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  180. package/dist-es/tokenized-input/internal/InputPill.js +2 -2
  181. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  182. package/dist-es/tokenized-input-next/TokenizedInputNext.js +3 -3
  183. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  184. package/dist-es/tokenized-input-next/internal/InputPill.js +2 -2
  185. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  186. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +3 -3
  187. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  188. package/dist-types/calendar/Calendar.d.ts +2 -15
  189. package/dist-types/calendar/CalendarDateGrid.d.ts +10 -0
  190. package/dist-types/calendar/{internal/CalendarWeekHeader.d.ts → CalendarWeekHeader.d.ts} +1 -1
  191. package/dist-types/calendar/index.d.ts +2 -0
  192. package/dist-types/calendar/internal/CalendarMonth.d.ts +9 -1
  193. package/dist-types/calendar/useCalendarSelection.d.ts +0 -7
  194. package/dist-types/date-picker/DatePickerRangePanel.d.ts +17 -1
  195. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +9 -1
  196. package/dist-types/index.d.ts +1 -0
  197. package/dist-types/static-list/StaticList.d.ts +8 -0
  198. package/dist-types/static-list/StaticListItem.d.ts +4 -0
  199. package/dist-types/static-list/StaticListItemContent.d.ts +8 -0
  200. package/dist-types/static-list/index.d.ts +3 -0
  201. package/dist-types/stepper-input/StepperInput.d.ts +66 -19
  202. package/dist-types/stepper-input/internal/useActivateWhileMouseDown.d.ts +5 -0
  203. package/dist-types/stepper-input/internal/utils.d.ts +8 -0
  204. package/dist-types/stepper-input/useStepperInput.d.ts +21 -8
  205. package/package.json +2 -2
  206. package/dist-cjs/calendar/internal/CalendarCarousel.css.js +0 -6
  207. package/dist-cjs/calendar/internal/CalendarCarousel.css.js.map +0 -1
  208. package/dist-cjs/calendar/internal/CalendarCarousel.js.map +0 -1
  209. package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +0 -1
  210. package/dist-cjs/stepper-input/internal/useSpinner.js +0 -33
  211. package/dist-cjs/stepper-input/internal/useSpinner.js.map +0 -1
  212. package/dist-es/calendar/internal/CalendarCarousel.css.js +0 -4
  213. package/dist-es/calendar/internal/CalendarCarousel.css.js.map +0 -1
  214. package/dist-es/calendar/internal/CalendarCarousel.js.map +0 -1
  215. package/dist-es/calendar/internal/CalendarWeekHeader.js.map +0 -1
  216. package/dist-es/stepper-input/internal/useSpinner.js +0 -29
  217. package/dist-es/stepper-input/internal/useSpinner.js.map +0 -1
  218. package/dist-types/calendar/internal/CalendarCarousel.d.ts +0 -3
  219. package/dist-types/stepper-input/internal/useSpinner.d.ts +0 -5
  220. /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
  221. /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
  222. /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
  223. /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
@@ -11,6 +11,8 @@ var clsx = require('clsx');
11
11
  var react = require('react');
12
12
  var Calendar = require('../calendar/Calendar.js');
13
13
  var CalendarNavigation = require('../calendar/CalendarNavigation.js');
14
+ var CalendarWeekHeader = require('../calendar/CalendarWeekHeader.js');
15
+ var CalendarDateGrid = require('../calendar/CalendarDateGrid.js');
14
16
  require('../calendar/internal/CalendarContext.js');
15
17
  var formatDate = require('../calendar/formatDate.js');
16
18
  require('../calendar/useCalendarSelection.js');
@@ -31,13 +33,16 @@ const withBaseName = core.makePrefixer("saltDatePickerPanel");
31
33
  const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(props, ref) {
32
34
  const {
33
35
  CalendarProps,
36
+ CalendarWeekHeaderProps,
34
37
  CalendarNavigationProps,
38
+ CalendarDataGridProps,
35
39
  className,
36
40
  defaultVisibleMonth,
37
41
  visibleMonth: visibleMonthProp,
38
42
  onVisibleMonthChange,
39
43
  helperText,
40
- onSelect
44
+ onSelect,
45
+ ...rest
41
46
  } = props;
42
47
  const targetWindow = window.useWindow();
43
48
  styles.useComponentCssInjection({
@@ -110,6 +115,7 @@ const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(p
110
115
  gap: 0,
111
116
  className: clsx__default["default"](className, withBaseName("container")),
112
117
  ref,
118
+ ...rest,
113
119
  children: [
114
120
  helperText && /* @__PURE__ */ jsxRuntime.jsx(core.FlexItem, {
115
121
  className: withBaseName("header"),
@@ -121,12 +127,20 @@ const DatePickerSinglePanel = react.forwardRef(function DatePickerSinglePanel2(p
121
127
  gap: 0,
122
128
  children: /* @__PURE__ */ jsxRuntime.jsx(core.FormFieldContext.Provider, {
123
129
  value: {},
124
- children: /* @__PURE__ */ jsxRuntime.jsx(Calendar.Calendar, {
130
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Calendar.Calendar, {
125
131
  selectionVariant: "single",
126
132
  ...baseCalendarProps,
127
- children: /* @__PURE__ */ jsxRuntime.jsx(CalendarNavigation.CalendarNavigation, {
128
- ...CalendarNavigationProps
129
- })
133
+ children: [
134
+ /* @__PURE__ */ jsxRuntime.jsx(CalendarNavigation.CalendarNavigation, {
135
+ ...CalendarNavigationProps
136
+ }),
137
+ /* @__PURE__ */ jsxRuntime.jsx(CalendarWeekHeader.CalendarWeekHeader, {
138
+ ...CalendarWeekHeaderProps
139
+ }),
140
+ /* @__PURE__ */ jsxRuntime.jsx(CalendarDateGrid.CalendarDateGrid, {
141
+ ...CalendarDataGridProps
142
+ })
143
+ ]
130
144
  })
131
145
  })
132
146
  })
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerSinglePanel.js","sources":["../src/date-picker/DatePickerSinglePanel.tsx"],"sourcesContent":["import {\n type DateValue,\n getLocalTimeZone,\n startOfMonth,\n today,\n} from \"@internationalized/date\";\nimport {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n StackLayout,\n makePrefixer,\n useControlled,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useState,\n} from \"react\";\nimport {\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarSingleProps,\n getCurrentLocale,\n} from \"../calendar\";\nimport { Calendar, type SingleDateSelection } from \"../calendar\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport { useDatePickerContext } from \"./index\";\n\n/**\n * Props for the DatePickerSinglePanel component.\n * @template T - The type of the selected date.\n */\nexport interface DatePickerSinglePanelProps<T>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date or null.\n */\n onSelect?: (event: SyntheticEvent, selectedDate?: T | null) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month.\n */\n visibleMonth?: DateValue;\n\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: DateValue;\n\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n\n /**\n * Props to be passed to the Calendar component.\n */\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectedDateChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n\n /**\n * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: CalendarNavigationProps;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerSinglePanel = forwardRef<\n HTMLDivElement,\n DatePickerSinglePanelProps<SingleDateSelection>\n>(function DatePickerSinglePanel(props, ref) {\n const {\n CalendarProps,\n CalendarNavigationProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onVisibleMonthChange,\n helperText,\n onSelect,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const {\n state: {\n selectedDate,\n timeZone = getLocalTimeZone(),\n minDate = startOfMonth(today(timeZone)),\n maxDate = minDate.add({ months: 1 }),\n locale = getCurrentLocale(),\n },\n helpers: { setSelectedDate },\n } = useDatePickerContext({ selectionVariant: \"single\" });\n\n const [hoveredDate, setHoveredDate] = useState<DateValue | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(\n () => defaultVisibleMonth || startOfMonth(selectedDate || today(timeZone)),\n );\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSinglePanel\",\n state: \"visibleMonth\",\n });\n\n const handleSelectedDateChange = useCallback(\n (event: SyntheticEvent, newDate: SingleDateSelection | null) => {\n setSelectedDate(newDate, false);\n onSelect?.(event, newDate);\n },\n [setSelectedDate, onSelect],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: SingleDateSelection | null) => {\n setHoveredDate(newHoveredDate);\n if (newHoveredDate && CalendarProps?.onHoveredDateChange) {\n CalendarProps.onHoveredDateChange(event, newHoveredDate);\n }\n },\n [CalendarProps?.onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonth(newVisibleMonth);\n if (onVisibleMonthChange) {\n onVisibleMonthChange(event, newVisibleMonth);\n }\n },\n [onVisibleMonthChange],\n );\n\n const baseCalendarProps: Partial<CalendarSingleProps> = {\n selectionVariant: \"single\",\n visibleMonth,\n hoveredDate,\n onHoveredDateChange: handleHoveredDateChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n onSelectedDateChange: handleSelectedDateChange,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant=\"single\" {...baseCalendarProps}>\n <CalendarNavigation {...CalendarNavigationProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerSinglePanel","useWindow","useComponentCssInjection","datePickerPanelCss","getLocalTimeZone","startOfMonth","today","getCurrentLocale","useDatePickerContext","useState","useControlled","useCallback","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerSinglePanel.js","sources":["../src/date-picker/DatePickerSinglePanel.tsx"],"sourcesContent":["import {\n type DateValue,\n getLocalTimeZone,\n startOfMonth,\n today,\n} from \"@internationalized/date\";\nimport {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n StackLayout,\n makePrefixer,\n useControlled,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useState,\n} from \"react\";\nimport {\n CalendarDateGrid,\n type CalendarDateGridProps,\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarSingleProps,\n CalendarWeekHeader,\n type CalendarWeekHeaderProps,\n getCurrentLocale,\n} from \"../calendar\";\nimport { Calendar, type SingleDateSelection } from \"../calendar\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport { useDatePickerContext } from \"./index\";\n\n/**\n * Props for the DatePickerSinglePanel component.\n * @template T - The type of the selected date.\n */\nexport interface DatePickerSinglePanelProps<T>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date or null.\n */\n onSelect?: (event: SyntheticEvent, selectedDate?: T | null) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month.\n */\n visibleMonth?: DateValue;\n\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: DateValue;\n\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue,\n ) => void;\n\n /**\n * Props to be passed to the Calendar component.\n */\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectedDateChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n /**\n * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: CalendarNavigationProps;\n /**\n * Props to be passed to the CalendarWeekHeader component.\n */\n CalendarWeekHeaderProps?: CalendarWeekHeaderProps;\n /**\n * Props to be passed to the CalendarDataGrid component.\n */\n CalendarDataGridProps?: CalendarDateGridProps;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerSinglePanel = forwardRef<\n HTMLDivElement,\n DatePickerSinglePanelProps<SingleDateSelection>\n>(function DatePickerSinglePanel(props, ref) {\n const {\n CalendarProps,\n CalendarWeekHeaderProps,\n CalendarNavigationProps,\n CalendarDataGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onVisibleMonthChange,\n helperText,\n onSelect,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const {\n state: {\n selectedDate,\n timeZone = getLocalTimeZone(),\n minDate = startOfMonth(today(timeZone)),\n maxDate = minDate.add({ months: 1 }),\n locale = getCurrentLocale(),\n },\n helpers: { setSelectedDate },\n } = useDatePickerContext({ selectionVariant: \"single\" });\n\n const [hoveredDate, setHoveredDate] = useState<DateValue | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(\n () => defaultVisibleMonth || startOfMonth(selectedDate || today(timeZone)),\n );\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSinglePanel\",\n state: \"visibleMonth\",\n });\n\n const handleSelectedDateChange = useCallback(\n (event: SyntheticEvent, newDate: SingleDateSelection | null) => {\n setSelectedDate(newDate, false);\n onSelect?.(event, newDate);\n },\n [setSelectedDate, onSelect],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: SingleDateSelection | null) => {\n setHoveredDate(newHoveredDate);\n if (newHoveredDate && CalendarProps?.onHoveredDateChange) {\n CalendarProps.onHoveredDateChange(event, newHoveredDate);\n }\n },\n [CalendarProps?.onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonth(newVisibleMonth);\n if (onVisibleMonthChange) {\n onVisibleMonthChange(event, newVisibleMonth);\n }\n },\n [onVisibleMonthChange],\n );\n\n const baseCalendarProps: Partial<CalendarSingleProps> = {\n selectionVariant: \"single\",\n visibleMonth,\n hoveredDate,\n onHoveredDateChange: handleHoveredDateChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n onSelectedDateChange: handleSelectedDateChange,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant=\"single\" {...baseCalendarProps}>\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarWeekHeader {...CalendarWeekHeaderProps} />\n <CalendarDateGrid {...CalendarDataGridProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerSinglePanel","useWindow","useComponentCssInjection","datePickerPanelCss","getLocalTimeZone","startOfMonth","today","getCurrentLocale","useDatePickerContext","useState","useControlled","useCallback","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarWeekHeader","CalendarDateGrid"],"mappings":"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"}
@@ -7,6 +7,8 @@ var core = require('@salt-ds/core');
7
7
  var react = require('react');
8
8
  require('../calendar/Calendar.js');
9
9
  require('../calendar/CalendarNavigation.js');
10
+ require('../calendar/CalendarWeekHeader.js');
11
+ require('../calendar/CalendarDateGrid.js');
10
12
  require('../calendar/internal/CalendarContext.js');
11
13
  var formatDate = require('../calendar/formatDate.js');
12
14
  var useCalendarSelection = require('../calendar/useCalendarSelection.js');
@@ -25,11 +27,16 @@ function useDatePicker(props, ref) {
25
27
  maxDate: maxDateProp,
26
28
  timeZone = date.getLocalTimeZone(),
27
29
  locale = formatDate.getCurrentLocale(),
28
- onCancel,
29
- ...rest
30
+ onCancel
30
31
  } = props;
31
- const minDate = minDateProp != null ? minDateProp : date.startOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MIN_YEAR, 1, 1));
32
- const maxDate = maxDateProp != null ? maxDateProp : date.endOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MAX_YEAR, 1, 1));
32
+ const minDate = react.useMemo(
33
+ () => minDateProp != null ? minDateProp : date.startOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MIN_YEAR, 1, 1)),
34
+ [minDateProp]
35
+ );
36
+ const maxDate = react.useMemo(
37
+ () => maxDateProp != null ? maxDateProp : date.endOfMonth(new date.CalendarDate(useCalendarSelection.CALENDAR_MAX_YEAR, 1, 1)),
38
+ [maxDateProp]
39
+ );
33
40
  const datePickerRef = react.useRef(null);
34
41
  const containerRef = core.useForkRef(ref, datePickerRef);
35
42
  const {
@@ -59,29 +66,40 @@ function useDatePicker(props, ref) {
59
66
  onApply == null ? void 0 : onApply(appliedDate, error);
60
67
  }
61
68
  };
62
- const setSelectedSingleDate = (selection, error) => {
63
- let nextDate;
64
- if (error || !selection) {
65
- nextDate = selection;
66
- } else {
67
- let dateAfterMinDate = true;
68
- let dateBeforeMaxDate = true;
69
- if (minDate && selection) {
70
- dateAfterMinDate = selection.compare(minDate) >= 0;
69
+ const setSelectedSingleDate = react.useCallback(
70
+ (selection, error) => {
71
+ let nextDate;
72
+ if (error || !selection) {
73
+ nextDate = selection;
74
+ } else {
75
+ let dateAfterMinDate = true;
76
+ let dateBeforeMaxDate = true;
77
+ if (minDate && selection) {
78
+ dateAfterMinDate = selection.compare(minDate) >= 0;
79
+ }
80
+ if (maxDate && selection) {
81
+ dateBeforeMaxDate = selection.compare(maxDate) <= 0;
82
+ }
83
+ nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;
71
84
  }
72
- if (maxDate && selection) {
73
- dateBeforeMaxDate = selection.compare(maxDate) <= 0;
85
+ setSelectedDate(nextDate);
86
+ if (selectionVariant === "single") {
87
+ onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, error);
74
88
  }
75
- nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;
76
- }
77
- setSelectedDate(nextDate);
78
- if (selectionVariant === "single") {
79
- onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, error);
80
- }
81
- if (!enableApply) {
82
- setOpen(false);
83
- }
84
- };
89
+ if (!enableApply) {
90
+ setOpen(false);
91
+ }
92
+ },
93
+ [
94
+ enableApply,
95
+ minDate,
96
+ maxDate,
97
+ onSelectedDateChange,
98
+ selectionVariant,
99
+ setSelectedDate,
100
+ setOpen
101
+ ]
102
+ );
85
103
  const applyRange = (appliedDate, error) => {
86
104
  setCancelled(false);
87
105
  if ((appliedDate == null ? void 0 : appliedDate.startDate) && (appliedDate == null ? void 0 : appliedDate.endDate)) {
@@ -91,45 +109,56 @@ function useDatePicker(props, ref) {
91
109
  onApply == null ? void 0 : onApply(appliedDate, error);
92
110
  }
93
111
  };
94
- const setSelectedRangeDate = (selection, error) => {
95
- let nextDate;
96
- let nextError = { ...error };
97
- let startDateInRange = true;
98
- let endDateInRange = true;
99
- if ((error == null ? void 0 : error.startDate) || (error == null ? void 0 : error.endDate) || !selection) {
100
- nextDate = selection;
101
- } else {
102
- if (maxDate && (selection == null ? void 0 : selection.startDate)) {
103
- startDateInRange = selection.startDate.compare(minDate) >= 0;
112
+ const setSelectedRangeDate = react.useCallback(
113
+ (selection, error) => {
114
+ let nextDate;
115
+ let nextError = { ...error };
116
+ let startDateInRange = true;
117
+ let endDateInRange = true;
118
+ if ((error == null ? void 0 : error.startDate) || (error == null ? void 0 : error.endDate) || !selection) {
119
+ nextDate = selection;
120
+ } else {
121
+ if (maxDate && (selection == null ? void 0 : selection.startDate)) {
122
+ startDateInRange = selection.startDate.compare(minDate) >= 0;
123
+ }
124
+ if (maxDate && (selection == null ? void 0 : selection.endDate)) {
125
+ endDateInRange = (selection == null ? void 0 : selection.endDate) && selection.endDate.compare(maxDate) <= 0;
126
+ }
127
+ if (!startDateInRange && !endDateInRange) {
128
+ nextDate = null;
129
+ nextError = {
130
+ startDate: "is before min date",
131
+ endDate: "is after max date"
132
+ };
133
+ } else {
134
+ nextDate = {
135
+ startDate: selection.startDate || null,
136
+ endDate: selection.endDate || null
137
+ };
138
+ nextError = {
139
+ startDate: !startDateInRange ? "is before min date" : nextError.startDate,
140
+ endDate: !endDateInRange ? "is after max date" : nextError.endDate
141
+ };
142
+ }
104
143
  }
105
- if (maxDate && (selection == null ? void 0 : selection.endDate)) {
106
- endDateInRange = (selection == null ? void 0 : selection.endDate) && selection.endDate.compare(maxDate) <= 0;
144
+ setSelectedDate(nextDate);
145
+ if (selectionVariant === "range") {
146
+ onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, nextError);
107
147
  }
108
- if (!startDateInRange && !endDateInRange) {
109
- nextDate = null;
110
- nextError = {
111
- startDate: "is before min date",
112
- endDate: "is after max date"
113
- };
114
- } else {
115
- nextDate = {
116
- startDate: selection.startDate || null,
117
- endDate: selection.endDate || null
118
- };
119
- nextError = {
120
- startDate: !startDateInRange ? "is before min date" : nextError.startDate,
121
- endDate: !endDateInRange ? "is after max date" : nextError.endDate
122
- };
148
+ if (!enableApply && (nextDate == null ? void 0 : nextDate.startDate) && (nextDate == null ? void 0 : nextDate.endDate)) {
149
+ setOpen(false);
123
150
  }
124
- }
125
- setSelectedDate(nextDate);
126
- if (selectionVariant === "range") {
127
- onSelectedDateChange == null ? void 0 : onSelectedDateChange(nextDate, nextError);
128
- }
129
- if (!enableApply && (nextDate == null ? void 0 : nextDate.startDate) && (nextDate == null ? void 0 : nextDate.endDate)) {
130
- setOpen(false);
131
- }
132
- };
151
+ },
152
+ [
153
+ enableApply,
154
+ minDate,
155
+ maxDate,
156
+ onSelectedDateChange,
157
+ selectionVariant,
158
+ setSelectedDate,
159
+ setOpen
160
+ ]
161
+ );
133
162
  const cancel = () => {
134
163
  setCancelled(true);
135
164
  setOpen(false);
@@ -147,8 +176,7 @@ function useDatePicker(props, ref) {
147
176
  minDate,
148
177
  maxDate,
149
178
  locale,
150
- timeZone,
151
- ...rest
179
+ timeZone
152
180
  },
153
181
  helpers: {
154
182
  cancel,
@@ -1 +1 @@
1
- {"version":3,"file":"useDatePicker.js","sources":["../src/date-picker/useDatePicker.ts"],"sourcesContent":["import {\n CalendarDate,\n type DateValue,\n endOfMonth,\n getLocalTimeZone,\n startOfMonth,\n} from \"@internationalized/date\";\nimport { useControlled, useForkRef, useFormFieldProps } from \"@salt-ds/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CALENDAR_MAX_YEAR,\n CALENDAR_MIN_YEAR,\n type DateRangeSelection,\n type SingleDateSelection,\n getCurrentLocale,\n} from \"../calendar\";\nimport type {\n RangeDatePickerError,\n RangeDatePickerState,\n SingleDatePickerError,\n SingleDatePickerState,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\ninterface UseDatePickerBaseProps<T> {\n /** If `true`, the component is disabled. */\n disabled?: boolean;\n /** If `true`, the component is read-only. */\n readOnly?: boolean;\n /**\n * The selected date. The selected date will be controlled when this prop is provided.\n */\n selectedDate?: T | null;\n /**\n * The initial selected date, when the selected date is uncontrolled.\n */\n defaultSelectedDate?: UseDatePickerBaseProps<T>[\"selectedDate\"];\n /**\n * The minimum date for the range, default is 1900.\n */\n minDate?: DateValue;\n /**\n * The maximum date for the range, default is 2100.\n */\n maxDate?: DateValue;\n /**\n * Handler for when the date selection is cancelled.\n */\n onCancel?: () => void;\n /**\n * Time zone of the date selection, defaults to the current time zone of the user.\n */\n timeZone?: string;\n /**\n * Locale of the date selection, defaults to the current locale of the user.\n */\n locale?: string;\n}\n\n/**\n * Props for single date selection.\n *\n * @typedef {UseDatePickerBaseProps<SingleDateSelection>} UseDatePickerSingleProps\n * @property {\"single\"} selectionVariant - Single date selection.\n * @property {(selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerSingleProps\n extends UseDatePickerBaseProps<SingleDateSelection> {\n /**\n * Single date selection.\n */\n selectionVariant: \"single\";\n /**\n * Handler called when the selected date changes.\n * @param {SingleDateSelection | null} selectedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {SingleDateSelection | null} appliedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n}\n\n/**\n * Props for date range selection.\n *\n * @typedef {UseDatePickerBaseProps<DateRangeSelection>} UseDatePickerRangeProps\n * @property {\"range\"} selectionVariant - Date range selection.\n * @property {(selectedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerRangeProps\n extends UseDatePickerBaseProps<DateRangeSelection> {\n /**\n * Date range selection.\n */\n selectionVariant: \"range\";\n /**\n * Handler called when the selected date changes.\n * @param {DateRangeSelection | null} selectedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {DateRangeSelection | null} appliedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n}\n\n/**\n * Props for the useDatePicker hook.\n *\n * @template SelectionVariant\n * @typedef {SelectionVariant extends \"single\" ? UseDatePickerSingleProps : SelectionVariant extends \"range\" ? UseDatePickerRangeProps : never} UseDatePickerProps\n */\nexport type UseDatePickerProps<SelectionVariant> =\n SelectionVariant extends \"single\"\n ? UseDatePickerSingleProps\n : SelectionVariant extends \"range\"\n ? UseDatePickerRangeProps\n : never;\n\n/**\n * Custom hook for managing date picker state.\n *\n * @template SelectionVariant\n * @param {UseDatePickerProps<SelectionVariant>} props - The props for the date picker.\n * @param {React.ForwardedRef<HTMLDivElement>} ref - The ref for the date picker container.\n * @returns {DatePickerState<SelectionVariant extends \"single\" ? SingleDateSelection : DateRangeSelection>} The date picker state and helpers.\n */\nexport function useDatePicker<SelectionVariant extends \"single\" | \"range\">(\n props: UseDatePickerProps<SelectionVariant>,\n ref: React.ForwardedRef<HTMLDivElement>,\n): SingleDatePickerState | RangeDatePickerState {\n const {\n readOnly = false,\n disabled,\n selectionVariant,\n defaultSelectedDate = null,\n selectedDate: selectedDateProp,\n onSelectedDateChange,\n onApply,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone = getLocalTimeZone(),\n locale = getCurrentLocale(),\n onCancel,\n ...rest\n } = props;\n\n const minDate: DateValue =\n minDateProp ?? startOfMonth(new CalendarDate(CALENDAR_MIN_YEAR, 1, 1));\n const maxDate: DateValue =\n maxDateProp ?? endOfMonth(new CalendarDate(CALENDAR_MAX_YEAR, 1, 1));\n\n const datePickerRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, datePickerRef);\n\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const [selectedDate, setSelectedDate] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"DatePicker\",\n state: \"selectedDate\",\n });\n\n const [enableApply, setEnableApply] = useState<boolean>(false);\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n useEffect(() => {\n if (open) {\n setCancelled(false);\n }\n }, [open]);\n\n const { disabled: formFieldDisabled, readOnly: formFieldReadOnly } =\n useFormFieldProps();\n const isReadOnly = readOnly || formFieldReadOnly || false;\n const isDisabled = disabled || formFieldDisabled || false;\n\n const applySingle = (\n appliedDate: SingleDateSelection | null,\n error: SingleDatePickerError,\n ): void => {\n setCancelled(false);\n setOpen(false);\n if (selectionVariant === \"single\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedSingleDate = (\n selection: SingleDateSelection | null,\n error: SingleDatePickerError,\n ) => {\n let nextDate: typeof selection;\n let nextError = error;\n if (error || !selection) {\n nextDate = selection;\n } else {\n let dateAfterMinDate = true;\n let dateBeforeMaxDate = true;\n if (minDate && selection) {\n dateAfterMinDate = selection.compare(minDate) >= 0;\n }\n if (maxDate && selection) {\n dateBeforeMaxDate = selection.compare(maxDate) <= 0;\n }\n nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;\n nextError = !dateAfterMinDate ? \"is before min date\" : nextError;\n nextError = !dateBeforeMaxDate ? \"is after max date\" : nextError;\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"single\") {\n onSelectedDateChange?.(nextDate, error);\n }\n\n if (!enableApply) {\n setOpen(false);\n }\n };\n\n const applyRange = (\n appliedDate: DateRangeSelection | null,\n error: RangeDatePickerError,\n ): void => {\n setCancelled(false);\n if (appliedDate?.startDate && appliedDate?.endDate) {\n setOpen(false);\n }\n if (selectionVariant === \"range\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedRangeDate = (\n selection: DateRangeSelection | null,\n error: RangeDatePickerError,\n ) => {\n let nextDate: typeof selection;\n let nextError = { ...error };\n let startDateInRange = true;\n let endDateInRange = true;\n if (error?.startDate || error?.endDate || !selection) {\n nextDate = selection;\n } else {\n if (maxDate && selection?.startDate) {\n startDateInRange = selection.startDate.compare(minDate) >= 0;\n }\n if (maxDate && selection?.endDate) {\n endDateInRange =\n selection?.endDate && selection.endDate.compare(maxDate) <= 0;\n }\n if (!startDateInRange && !endDateInRange) {\n nextDate = null;\n nextError = {\n startDate: \"is before min date\",\n endDate: \"is after max date\",\n };\n } else {\n nextDate = {\n startDate: selection.startDate || null,\n endDate: selection.endDate || null,\n };\n nextError = {\n startDate: !startDateInRange\n ? \"is before min date\"\n : nextError.startDate,\n endDate: !endDateInRange ? \"is after max date\" : nextError.endDate,\n };\n }\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"range\") {\n onSelectedDateChange?.(nextDate, nextError);\n }\n if (!enableApply && nextDate?.startDate && nextDate?.endDate) {\n setOpen(false);\n }\n };\n\n const cancel = () => {\n setCancelled(true);\n setOpen(false);\n onCancel?.();\n };\n\n const returnValue = {\n state: {\n selectionVariant,\n selectedDate,\n cancelled,\n enableApply,\n disabled: isDisabled,\n readOnly: isReadOnly,\n containerRef,\n minDate,\n maxDate,\n locale,\n timeZone,\n ...rest,\n },\n helpers: {\n cancel,\n setEnableApply,\n },\n };\n if (props.selectionVariant === \"range\") {\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applyRange,\n setSelectedDate: setSelectedRangeDate,\n },\n } as RangeDatePickerState;\n }\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applySingle,\n setSelectedDate: setSelectedSingleDate,\n },\n } as SingleDatePickerState;\n}\n"],"names":["getLocalTimeZone","getCurrentLocale","startOfMonth","CalendarDate","CALENDAR_MIN_YEAR","endOfMonth","CALENDAR_MAX_YEAR","useRef","useForkRef","useDatePickerOverlay","useControlled","useState","useEffect","useFormFieldProps"],"mappings":"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"}
1
+ {"version":3,"file":"useDatePicker.js","sources":["../src/date-picker/useDatePicker.ts"],"sourcesContent":["import {\n CalendarDate,\n type DateValue,\n endOfMonth,\n getLocalTimeZone,\n startOfMonth,\n} from \"@internationalized/date\";\nimport { useControlled, useForkRef, useFormFieldProps } from \"@salt-ds/core\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n CALENDAR_MAX_YEAR,\n CALENDAR_MIN_YEAR,\n type DateRangeSelection,\n type SingleDateSelection,\n getCurrentLocale,\n} from \"../calendar\";\nimport type {\n RangeDatePickerError,\n RangeDatePickerState,\n SingleDatePickerError,\n SingleDatePickerState,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\ninterface UseDatePickerBaseProps<T> {\n /** If `true`, the component is disabled. */\n disabled?: boolean;\n /** If `true`, the component is read-only. */\n readOnly?: boolean;\n /**\n * The selected date. The selected date will be controlled when this prop is provided.\n */\n selectedDate?: T | null;\n /**\n * The initial selected date, when the selected date is uncontrolled.\n */\n defaultSelectedDate?: UseDatePickerBaseProps<T>[\"selectedDate\"];\n /**\n * The minimum date for the range, default is 1900.\n */\n minDate?: DateValue;\n /**\n * The maximum date for the range, default is 2100.\n */\n maxDate?: DateValue;\n /**\n * Handler for when the date selection is cancelled.\n */\n onCancel?: () => void;\n /**\n * Time zone of the date selection, defaults to the current time zone of the user.\n */\n timeZone?: string;\n /**\n * Locale of the date selection, defaults to the current locale of the user.\n */\n locale?: string;\n}\n\n/**\n * Props for single date selection.\n *\n * @typedef {UseDatePickerBaseProps<SingleDateSelection>} UseDatePickerSingleProps\n * @property {\"single\"} selectionVariant - Single date selection.\n * @property {(selectedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedSingleDate: SingleDateSelection | null, singleError: string | false) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerSingleProps\n extends UseDatePickerBaseProps<SingleDateSelection> {\n /**\n * Single date selection.\n */\n selectionVariant: \"single\";\n /**\n * Handler called when the selected date changes.\n * @param {SingleDateSelection | null} selectedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {SingleDateSelection | null} appliedSingleDate - The selected date.\n * @param {string | false} singleError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedSingleDate: SingleDateSelection | null,\n singleError: string | false,\n ) => void;\n}\n\n/**\n * Props for date range selection.\n *\n * @typedef {UseDatePickerBaseProps<DateRangeSelection>} UseDatePickerRangeProps\n * @property {\"range\"} selectionVariant - Date range selection.\n * @property {(selectedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onSelectedDateChange] - Handler called when the selected date changes.\n * @property {(appliedRangeDate: DateRangeSelection | null, rangeError: { startDate: string | false; endDate: string | false }) => void} [onApply] - Handler called when the selected date is confirmed/applied.\n */\nexport interface UseDatePickerRangeProps\n extends UseDatePickerBaseProps<DateRangeSelection> {\n /**\n * Date range selection.\n */\n selectionVariant: \"range\";\n /**\n * Handler called when the selected date changes.\n * @param {DateRangeSelection | null} selectedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onSelectedDateChange?: (\n selectedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n /**\n * Handler called when the selected date is confirmed/applied.\n * @param {DateRangeSelection | null} appliedRangeDate - The selected date.\n * @param {{ startDate: string | false; endDate: string | false }} rangeError - Error returned by the parser or `false`.\n */\n onApply?: (\n appliedRangeDate: DateRangeSelection | null,\n rangeError: { startDate: string | false; endDate: string | false },\n ) => void;\n}\n\n/**\n * Props for the useDatePicker hook.\n *\n * @template SelectionVariant\n * @typedef {SelectionVariant extends \"single\" ? UseDatePickerSingleProps : SelectionVariant extends \"range\" ? UseDatePickerRangeProps : never} UseDatePickerProps\n */\nexport type UseDatePickerProps<SelectionVariant> =\n SelectionVariant extends \"single\"\n ? UseDatePickerSingleProps\n : SelectionVariant extends \"range\"\n ? UseDatePickerRangeProps\n : never;\n\n/**\n * Custom hook for managing date picker state.\n *\n * @template SelectionVariant\n * @param {UseDatePickerProps<SelectionVariant>} props - The props for the date picker.\n * @param {React.ForwardedRef<HTMLDivElement>} ref - The ref for the date picker container.\n * @returns {DatePickerState<SelectionVariant extends \"single\" ? SingleDateSelection : DateRangeSelection>} The date picker state and helpers.\n */\nexport function useDatePicker<SelectionVariant extends \"single\" | \"range\">(\n props: UseDatePickerProps<SelectionVariant>,\n ref: React.ForwardedRef<HTMLDivElement>,\n): SingleDatePickerState | RangeDatePickerState {\n const {\n readOnly = false,\n disabled,\n selectionVariant,\n defaultSelectedDate = null,\n selectedDate: selectedDateProp,\n onSelectedDateChange,\n onApply,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone = getLocalTimeZone(),\n locale = getCurrentLocale(),\n onCancel,\n } = props;\n\n const minDate: DateValue = useMemo(\n () =>\n minDateProp ?? startOfMonth(new CalendarDate(CALENDAR_MIN_YEAR, 1, 1)),\n [minDateProp],\n );\n const maxDate: DateValue = useMemo(\n () => maxDateProp ?? endOfMonth(new CalendarDate(CALENDAR_MAX_YEAR, 1, 1)),\n [maxDateProp],\n );\n\n const datePickerRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, datePickerRef);\n\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const [selectedDate, setSelectedDate] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"DatePicker\",\n state: \"selectedDate\",\n });\n\n const [enableApply, setEnableApply] = useState<boolean>(false);\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n useEffect(() => {\n if (open) {\n setCancelled(false);\n }\n }, [open]);\n\n const { disabled: formFieldDisabled, readOnly: formFieldReadOnly } =\n useFormFieldProps();\n const isReadOnly = readOnly || formFieldReadOnly || false;\n const isDisabled = disabled || formFieldDisabled || false;\n\n const applySingle = (\n appliedDate: SingleDateSelection | null,\n error: SingleDatePickerError,\n ): void => {\n setCancelled(false);\n setOpen(false);\n if (selectionVariant === \"single\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedSingleDate = useCallback(\n (selection: SingleDateSelection | null, error: SingleDatePickerError) => {\n let nextDate: typeof selection;\n let nextError = error;\n if (error || !selection) {\n nextDate = selection;\n } else {\n let dateAfterMinDate = true;\n let dateBeforeMaxDate = true;\n if (minDate && selection) {\n dateAfterMinDate = selection.compare(minDate) >= 0;\n }\n if (maxDate && selection) {\n dateBeforeMaxDate = selection.compare(maxDate) <= 0;\n }\n nextDate = dateAfterMinDate && dateBeforeMaxDate ? selection : null;\n nextError = !dateAfterMinDate ? \"is before min date\" : nextError;\n nextError = !dateBeforeMaxDate ? \"is after max date\" : nextError;\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"single\") {\n onSelectedDateChange?.(nextDate, error);\n }\n\n if (!enableApply) {\n setOpen(false);\n }\n },\n [\n enableApply,\n minDate,\n maxDate,\n onSelectedDateChange,\n selectionVariant,\n setSelectedDate,\n setOpen,\n ],\n );\n\n const applyRange = (\n appliedDate: DateRangeSelection | null,\n error: RangeDatePickerError,\n ): void => {\n setCancelled(false);\n if (appliedDate?.startDate && appliedDate?.endDate) {\n setOpen(false);\n }\n if (selectionVariant === \"range\") {\n onApply?.(appliedDate, error);\n }\n };\n\n const setSelectedRangeDate = useCallback(\n (selection: DateRangeSelection | null, error: RangeDatePickerError) => {\n let nextDate: typeof selection;\n let nextError = { ...error };\n let startDateInRange = true;\n let endDateInRange = true;\n if (error?.startDate || error?.endDate || !selection) {\n nextDate = selection;\n } else {\n if (maxDate && selection?.startDate) {\n startDateInRange = selection.startDate.compare(minDate) >= 0;\n }\n if (maxDate && selection?.endDate) {\n endDateInRange =\n selection?.endDate && selection.endDate.compare(maxDate) <= 0;\n }\n if (!startDateInRange && !endDateInRange) {\n nextDate = null;\n nextError = {\n startDate: \"is before min date\",\n endDate: \"is after max date\",\n };\n } else {\n nextDate = {\n startDate: selection.startDate || null,\n endDate: selection.endDate || null,\n };\n nextError = {\n startDate: !startDateInRange\n ? \"is before min date\"\n : nextError.startDate,\n endDate: !endDateInRange ? \"is after max date\" : nextError.endDate,\n };\n }\n }\n setSelectedDate(nextDate);\n if (selectionVariant === \"range\") {\n onSelectedDateChange?.(nextDate, nextError);\n }\n if (!enableApply && nextDate?.startDate && nextDate?.endDate) {\n setOpen(false);\n }\n },\n [\n enableApply,\n minDate,\n maxDate,\n onSelectedDateChange,\n selectionVariant,\n setSelectedDate,\n setOpen,\n ],\n );\n\n const cancel = () => {\n setCancelled(true);\n setOpen(false);\n onCancel?.();\n };\n\n const returnValue = {\n state: {\n selectionVariant,\n selectedDate,\n cancelled,\n enableApply,\n disabled: isDisabled,\n readOnly: isReadOnly,\n containerRef,\n minDate,\n maxDate,\n locale,\n timeZone,\n },\n helpers: {\n cancel,\n setEnableApply,\n },\n };\n if (props.selectionVariant === \"range\") {\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applyRange,\n setSelectedDate: setSelectedRangeDate,\n },\n } as RangeDatePickerState;\n }\n return {\n ...returnValue,\n helpers: {\n ...returnValue.helpers,\n apply: applySingle,\n setSelectedDate: setSelectedSingleDate,\n },\n } as SingleDatePickerState;\n}\n"],"names":["getLocalTimeZone","getCurrentLocale","useMemo","startOfMonth","CalendarDate","CALENDAR_MIN_YEAR","endOfMonth","CALENDAR_MAX_YEAR","useRef","useForkRef","useDatePickerOverlay","useControlled","useState","useEffect","useFormFieldProps","useCallback"],"mappings":"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"}
@@ -15,7 +15,7 @@ var DropdownButton$1 = require('./DropdownButton.css.js');
15
15
 
16
16
  const withBaseName = core.makePrefixer("saltDropdownButton");
17
17
  const DropdownButton = react.forwardRef(function DropdownButton2({
18
- IconComponent = icons.ChevronDownIcon,
18
+ IconComponent,
19
19
  ariaHideOptionRole,
20
20
  className,
21
21
  disabled,
@@ -35,6 +35,8 @@ const DropdownButton = react.forwardRef(function DropdownButton2({
35
35
  css: DropdownButton$1,
36
36
  window: targetWindow
37
37
  });
38
+ const { ExpandIcon } = core.useIcon();
39
+ const Icon = IconComponent === void 0 ? ExpandIcon : IconComponent;
38
40
  const { inFormField } = useFormFieldLegacyProps.useFormFieldLegacyProps();
39
41
  return /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
40
42
  className: clsx.clsx(
@@ -61,7 +63,7 @@ const DropdownButton = react.forwardRef(function DropdownButton2({
61
63
  role: "option",
62
64
  children: label
63
65
  }),
64
- /* @__PURE__ */ jsxRuntime.jsx(IconComponent, {
66
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, {
65
67
  className: withBaseName("icon"),
66
68
  size: iconSize,
67
69
  "aria-label": null,
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport {\n ChevronDownIcon,\n DEFAULT_ICON_SIZE,\n type IconProps,\n} from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type AriaAttributes,\n type ComponentType,\n type ForwardedRef,\n forwardRef,\n} from \"react\";\nimport { useFormFieldLegacyProps } from \"../form-field-context-legacy\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport dropdownButtonCss from \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n IconComponent?: ComponentType<any>;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Sets the size of the down arrow icon. If this is not specified, a default size based on density is used.\n */\n iconSize?: IconProps[\"size\"];\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst withBaseName = makePrefixer(\"saltDropdownButton\");\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n IconComponent = ChevronDownIcon,\n ariaHideOptionRole,\n className,\n disabled,\n iconSize = DEFAULT_ICON_SIZE,\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dropdown-button\",\n css: dropdownButtonCss,\n window: targetWindow,\n });\n\n const { inFormField } = useFormFieldLegacyProps();\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fullwidth\")]: fullWidth,\n [withBaseName(\"formField\")]: inFormField,\n },\n className,\n )}\n data-testid=\"dropdown-button\"\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"content\")}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={withBaseName(\"buttonLabel\")}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <IconComponent\n className={withBaseName(\"icon\")}\n size={iconSize}\n aria-label={null}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","DropdownButton","ChevronDownIcon","DEFAULT_ICON_SIZE","useWindow","useComponentCssInjection","dropdownButtonCss","useFormFieldLegacyProps","jsx","Button","clsx","jsxs"],"mappings":";;;;;;;;;;;;;;;AAkEA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAEzC,MAAA,cAAA,GAAiBC,gBAAW,CAAA,SAASC,eAChD,CAAA;AAAA,EACE,aAAgB,GAAAC,qBAAA;AAAA,EAChB,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAAC,uBAAA;AAAA,EACX,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,gBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,+CAAwB,EAAA,CAAA;AAIhD,EAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,QAC7B,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,WAAA;AAAA,OAC/B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,iBAAA;AAAA,IACZ,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAA,EAAA;AAAA,wBAACH,cAAA,CAAA,MAAA,EAAA;AAAA,UAEC,aAAA,EAAa,qBAAqB,MAAS,GAAA,KAAA,CAAA;AAAA,UAC1C,GAAG,mBAAA;AAAA,UACJ,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,EAAI,EAAA,OAAA;AAAA,UAEJ,IAAK,EAAA,QAAA;AAAA,UAEJ,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,wBACCA,cAAA,CAAA,aAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,IAAM,EAAA,QAAA;AAAA,UACN,YAAY,EAAA,IAAA;AAAA,UACZ,aAAY,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { DEFAULT_ICON_SIZE, type IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type AriaAttributes,\n type ComponentType,\n type ForwardedRef,\n forwardRef,\n} from \"react\";\nimport { useFormFieldLegacyProps } from \"../form-field-context-legacy\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport dropdownButtonCss from \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n IconComponent?: ComponentType<any>;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Sets the size of the down arrow icon. If this is not specified, a default size based on density is used.\n */\n iconSize?: IconProps[\"size\"];\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst withBaseName = makePrefixer(\"saltDropdownButton\");\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n IconComponent,\n ariaHideOptionRole,\n className,\n disabled,\n iconSize = DEFAULT_ICON_SIZE,\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dropdown-button\",\n css: dropdownButtonCss,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n const Icon = IconComponent === undefined ? ExpandIcon : IconComponent;\n const { inFormField } = useFormFieldLegacyProps();\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fullwidth\")]: fullWidth,\n [withBaseName(\"formField\")]: inFormField,\n },\n className,\n )}\n data-testid=\"dropdown-button\"\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"content\")}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={withBaseName(\"buttonLabel\")}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <Icon\n className={withBaseName(\"icon\")}\n size={iconSize}\n aria-label={null}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","DropdownButton","DEFAULT_ICON_SIZE","useWindow","useComponentCssInjection","dropdownButtonCss","useIcon","useFormFieldLegacyProps","jsx","Button","clsx","jsxs"],"mappings":";;;;;;;;;;;;;;;AA8DA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAEzC,MAAA,cAAA,GAAiBC,gBAAW,CAAA,SAASC,eAChD,CAAA;AAAA,EACE,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAAC,uBAAA;AAAA,EACX,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,gBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,YAAQ,EAAA,CAAA;AAC/B,EAAM,MAAA,IAAA,GAAO,aAAkB,KAAA,KAAA,CAAA,GAAY,UAAa,GAAA,aAAA,CAAA;AACxD,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,+CAAwB,EAAA,CAAA;AAIhD,EAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,QAC7B,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,WAAA;AAAA,OAC/B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,iBAAA;AAAA,IACZ,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAA,EAAA;AAAA,wBAACH,cAAA,CAAA,MAAA,EAAA;AAAA,UAEC,aAAA,EAAa,qBAAqB,MAAS,GAAA,KAAA,CAAA;AAAA,UAC1C,GAAG,mBAAA;AAAA,UACJ,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,EAAI,EAAA,OAAA;AAAA,UAEJ,IAAK,EAAA,QAAA;AAAA,UAEJ,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,wBACCA,cAAA,CAAA,IAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,IAAM,EAAA,QAAA;AAAA,UACN,YAAY,EAAA,IAAA;AAAA,UACZ,aAAY,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
package/dist-cjs/index.js CHANGED
@@ -30,6 +30,8 @@ var ButtonBar = require('./button-bar/ButtonBar.js');
30
30
  var OrderedButton = require('./button-bar/OrderedButton.js');
31
31
  var Calendar = require('./calendar/Calendar.js');
32
32
  var CalendarNavigation = require('./calendar/CalendarNavigation.js');
33
+ var CalendarWeekHeader = require('./calendar/CalendarWeekHeader.js');
34
+ var CalendarDateGrid = require('./calendar/CalendarDateGrid.js');
33
35
  var useCalendarDay = require('./calendar/useCalendarDay.js');
34
36
  var useCalendar = require('./calendar/useCalendar.js');
35
37
  var useCalendarSelection = require('./calendar/useCalendarSelection.js');
@@ -120,6 +122,9 @@ var SearchInput = require('./search-input/SearchInput.js');
120
122
  var SkipLink = require('./skip-link/SkipLink.js');
121
123
  var SkipLinks = require('./skip-link/SkipLinks.js');
122
124
  var Slider = require('./slider/Slider.js');
125
+ var StaticList = require('./static-list/StaticList.js');
126
+ var StaticListItem = require('./static-list/StaticListItem.js');
127
+ var StaticListItemContent = require('./static-list/StaticListItemContent.js');
123
128
  var SteppedTracker = require('./stepped-tracker/SteppedTracker.js');
124
129
  var TrackerStep = require('./stepped-tracker/TrackerStep/TrackerStep.js');
125
130
  var StepLabel = require('./stepped-tracker/StepLabel/StepLabel.js');
@@ -173,6 +178,8 @@ exports.DefaultButtonsOrderByVariant = ButtonBar.DefaultButtonsOrderByVariant;
173
178
  exports.OrderedButton = OrderedButton.OrderedButton;
174
179
  exports.Calendar = Calendar.Calendar;
175
180
  exports.CalendarNavigation = CalendarNavigation.CalendarNavigation;
181
+ exports.CalendarWeekHeader = CalendarWeekHeader.CalendarWeekHeader;
182
+ exports.CalendarDateGrid = CalendarDateGrid.CalendarDateGrid;
176
183
  exports.useCalendarDay = useCalendarDay.useCalendarDay;
177
184
  exports.useCalendar = useCalendar.useCalendar;
178
185
  exports.CALENDAR_MAX_YEAR = useCalendarSelection.CALENDAR_MAX_YEAR;
@@ -311,6 +318,9 @@ exports.SearchInput = SearchInput.SearchInput;
311
318
  exports.SkipLink = SkipLink.SkipLink;
312
319
  exports.SkipLinks = SkipLinks.SkipLinks;
313
320
  exports.Slider = Slider.Slider;
321
+ exports.StaticList = StaticList.StaticList;
322
+ exports.StaticListItem = StaticListItem.StaticListItem;
323
+ exports.StaticListItemContent = StaticListItemContent.StaticListItemContent;
314
324
  exports.SteppedTracker = SteppedTracker.SteppedTracker;
315
325
  exports.TrackerStep = TrackerStep.TrackerStep;
316
326
  exports.StepLabel = StepLabel.StepLabel;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@salt-ds/core');
7
- var icons = require('@salt-ds/icons');
8
7
  var clsx = require('clsx');
9
8
  var react = require('react');
10
9
  var styles = require('@salt-ds/styles');
@@ -19,6 +18,7 @@ const MenuButtonTrigger = react.forwardRef(function MenuButtonTrigger2({ classNa
19
18
  css: MenuButtonTrigger$1,
20
19
  window: targetWindow
21
20
  });
21
+ const { ExpandIcon } = core.useIcon();
22
22
  return /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
23
23
  ref,
24
24
  className: clsx.clsx(withBaseName(), className, {
@@ -28,7 +28,7 @@ const MenuButtonTrigger = react.forwardRef(function MenuButtonTrigger2({ classNa
28
28
  ...rest,
29
29
  children: [
30
30
  children,
31
- !hideCaret && /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownIcon, {
31
+ !hideCaret && /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, {
32
32
  className: withBaseName("caretIcon"),
33
33
  "data-testid": "menu-button-trigger-caret"
34
34
  })
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { ChevronDownIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { type ReactNode, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport menuButtonTrigger from \"./MenuButtonTrigger.css\";\n\nconst withBaseName = makePrefixer(\"saltMenuButtonTrigger\");\n\nexport interface MenuButtonTriggerProps extends ButtonProps {\n className?: string;\n hideCaret?: boolean;\n isMenuOpen?: boolean;\n children?: ReactNode;\n}\n\nexport const MenuButtonTrigger = forwardRef<\n HTMLButtonElement,\n MenuButtonTriggerProps\n>(function MenuButtonTrigger(\n { className, hideCaret, isMenuOpen, children, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button-trigger\",\n css: menuButtonTrigger,\n window: targetWindow,\n });\n\n return (\n <Button\n ref={ref}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"buttonOpen\")]: isMenuOpen,\n })}\n data-testid=\"menu-button-trigger\"\n {...rest}\n >\n {children}\n {!hideCaret && (\n <ChevronDownIcon\n className={withBaseName(\"caretIcon\")}\n data-testid=\"menu-button-trigger-caret\"\n />\n )}\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","MenuButtonTrigger","useWindow","useComponentCssInjection","menuButtonTrigger","jsxs","Button","clsx","jsx","ChevronDownIcon"],"mappings":";;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA,CAAA;AAS5C,MAAA,iBAAA,GAAoBC,gBAG/B,CAAA,SAASC,kBACT,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,UAAY,EAAA,QAAA,EAAA,GAAa,IAAK,EAAA,EACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACGC,eAAA,CAAAC,WAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,MACzC,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,KAC/B,CAAA;AAAA,IACD,aAAY,EAAA,qBAAA;AAAA,IACX,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MACA,CAAC,6BACCC,cAAA,CAAAC,qBAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,QACnC,aAAY,EAAA,2BAAA;AAAA,OACd,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"MenuButtonTrigger.js","sources":["../src/menu-button/MenuButtonTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ReactNode, forwardRef } from \"react\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport menuButtonTrigger from \"./MenuButtonTrigger.css\";\n\nconst withBaseName = makePrefixer(\"saltMenuButtonTrigger\");\n\nexport interface MenuButtonTriggerProps extends ButtonProps {\n className?: string;\n hideCaret?: boolean;\n isMenuOpen?: boolean;\n children?: ReactNode;\n}\n\nexport const MenuButtonTrigger = forwardRef<\n HTMLButtonElement,\n MenuButtonTriggerProps\n>(function MenuButtonTrigger(\n { className, hideCaret, isMenuOpen, children, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-button-trigger\",\n css: menuButtonTrigger,\n window: targetWindow,\n });\n const { ExpandIcon } = useIcon();\n\n return (\n <Button\n ref={ref}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"buttonOpen\")]: isMenuOpen,\n })}\n data-testid=\"menu-button-trigger\"\n {...rest}\n >\n {children}\n {!hideCaret && (\n <ExpandIcon\n className={withBaseName(\"caretIcon\")}\n data-testid=\"menu-button-trigger-caret\"\n />\n )}\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","MenuButtonTrigger","useWindow","useComponentCssInjection","menuButtonTrigger","useIcon","jsxs","Button","clsx","jsx"],"mappings":";;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA,CAAA;AAS5C,MAAA,iBAAA,GAAoBC,gBAG/B,CAAA,SAASC,kBACT,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,UAAY,EAAA,QAAA,EAAA,GAAa,IAAK,EAAA,EACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,YAAQ,EAAA,CAAA;AAE/B,EAAA,uBACGC,eAAA,CAAAC,WAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,MACzC,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,KAC/B,CAAA;AAAA,IACD,aAAY,EAAA,qBAAA;AAAA,IACX,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MACA,CAAC,6BACCC,cAAA,CAAA,UAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,QACnC,aAAY,EAAA,2BAAA;AAAA,OACd,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@salt-ds/core');
7
- var icons = require('@salt-ds/icons');
8
7
  var react = require('react');
9
8
  require('../../list/Highlighter.js');
10
9
  var ListItem = require('../../list/ListItem.js');
@@ -19,6 +18,7 @@ const withBaseName = core.makePrefixer("saltCategoryListItem");
19
18
  const CategoryListItem = function CategoryListItem2({ item: category, ...props }) {
20
19
  const textRef = react.useRef(null);
21
20
  const context = CategoryListContext.useCategoryListContext();
21
+ const { ExpandGroupIcon } = core.useIcon();
22
22
  const textStyle = react.useMemo(
23
23
  () => ({
24
24
  minWidth: context.width
@@ -50,7 +50,7 @@ const CategoryListItem = function CategoryListItem2({ item: category, ...props }
50
50
  })
51
51
  ]
52
52
  }),
53
- /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronRightIcon, {
53
+ /* @__PURE__ */ jsxRuntime.jsx(ExpandGroupIcon, {
54
54
  className: withBaseName("chevron")
55
55
  })
56
56
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronRightIcon } from \"@salt-ds/icons\";\nimport { type CSSProperties, useMemo, useRef } from \"react\";\nimport { ListItem, type ListItemProps, type ListItemType } from \"../../list\";\nimport type { QueryInputCategory } from \"../queryInputTypes\";\nimport { useCategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryListItem\");\n\nexport interface CategoryListItemProps\n extends ListItemProps<QueryInputCategory> {\n category: QueryInputCategory;\n}\n\nexport const CategoryListItem: ListItemType<QueryInputCategory> =\n function CategoryListItem({ item: category, ...props }) {\n const textRef = useRef<HTMLDivElement>(null);\n const context = useCategoryListContext();\n\n const textStyle: CSSProperties = useMemo(\n () => ({\n minWidth: context.width,\n }),\n [context.width],\n );\n\n return (\n <ListItem {...props} label={category?.name}>\n <div ref={textRef} className={withBaseName(\"text\")} style={textStyle}>\n {category?.name}\n </div>\n <div className={withBaseName(\"valuesContainer\")}>\n <span>(</span>\n <span className={withBaseName(\"values\")}>\n {category?.values.join(\", \")}\n </span>\n <span>)</span>\n </div>\n <ChevronRightIcon className={withBaseName(\"chevron\")} />\n </ListItem>\n );\n };\n"],"names":["makePrefixer","CategoryListItem","useRef","useCategoryListContext","useMemo","jsxs","ListItem","jsx","ChevronRightIcon"],"mappings":";;;;;;;;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAOjD,MAAM,mBACX,SAASC,iBAAAA,CAAiB,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,OAAS,EAAA;AACtD,EAAM,MAAA,OAAA,GAAUC,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,UAAUC,0CAAuB,EAAA,CAAA;AAEvC,EAAA,MAAM,SAA2B,GAAAC,aAAA;AAAA,IAC/B,OAAO;AAAA,MACL,UAAU,OAAQ,CAAA,KAAA;AAAA,KACpB,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA;AAAA,IAAU,GAAG,KAAA;AAAA,IAAO,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,IACpC,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,GAAK,EAAA,OAAA;AAAA,QAAS,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAAG,KAAO,EAAA,SAAA;AAAA,QACxD,QAAU,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,OACb,CAAA;AAAA,sBACCF,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QAC5C,QAAA,EAAA;AAAA,0BAACE,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,0BACNA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,YACnC,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,SAAA;AAAA,OACT,CAAA;AAAA,sBACCA,cAAA,CAAAC,sBAAA,EAAA;AAAA,QAAiB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,OAAG,CAAA;AAAA,KAAA;AAAA,GACxD,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { type CSSProperties, useMemo, useRef } from \"react\";\nimport { ListItem, type ListItemProps, type ListItemType } from \"../../list\";\nimport type { QueryInputCategory } from \"../queryInputTypes\";\nimport { useCategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryListItem\");\n\nexport interface CategoryListItemProps\n extends ListItemProps<QueryInputCategory> {\n category: QueryInputCategory;\n}\n\nexport const CategoryListItem: ListItemType<QueryInputCategory> =\n function CategoryListItem({ item: category, ...props }) {\n const textRef = useRef<HTMLDivElement>(null);\n const context = useCategoryListContext();\n const { ExpandGroupIcon } = useIcon();\n const textStyle: CSSProperties = useMemo(\n () => ({\n minWidth: context.width,\n }),\n [context.width],\n );\n\n return (\n <ListItem {...props} label={category?.name}>\n <div ref={textRef} className={withBaseName(\"text\")} style={textStyle}>\n {category?.name}\n </div>\n <div className={withBaseName(\"valuesContainer\")}>\n <span>(</span>\n <span className={withBaseName(\"values\")}>\n {category?.values.join(\", \")}\n </span>\n <span>)</span>\n </div>\n <ExpandGroupIcon className={withBaseName(\"chevron\")} />\n </ListItem>\n );\n };\n"],"names":["makePrefixer","CategoryListItem","useRef","useCategoryListContext","useIcon","useMemo","jsxs","ListItem","jsx"],"mappings":";;;;;;;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAOjD,MAAM,mBACX,SAASC,iBAAAA,CAAiB,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,OAAS,EAAA;AACtD,EAAM,MAAA,OAAA,GAAUC,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,UAAUC,0CAAuB,EAAA,CAAA;AACvC,EAAM,MAAA,EAAE,eAAgB,EAAA,GAAIC,YAAQ,EAAA,CAAA;AACpC,EAAA,MAAM,SAA2B,GAAAC,aAAA;AAAA,IAC/B,OAAO;AAAA,MACL,UAAU,OAAQ,CAAA,KAAA;AAAA,KACpB,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA;AAAA,IAAU,GAAG,KAAA;AAAA,IAAO,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,IACpC,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,GAAK,EAAA,OAAA;AAAA,QAAS,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAAG,KAAO,EAAA,SAAA;AAAA,QACxD,QAAU,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,OACb,CAAA;AAAA,sBACCF,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QAC5C,QAAA,EAAA;AAAA,0BAACE,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,0BACNA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,YACnC,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,SAAA;AAAA,OACT,CAAA;AAAA,sBACCA,cAAA,CAAA,eAAA,EAAA;AAAA,QAAgB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,OAAG,CAAA;AAAA,KAAA;AAAA,GACvD,CAAA,CAAA;AAEJ;;;;"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@salt-ds/core');
7
- var icons = require('@salt-ds/icons');
8
7
  require('../../list/Highlighter.js');
9
8
  var ListItem = require('../../list/ListItem.js');
10
9
  var List = require('../../list/List.js');
@@ -25,6 +24,7 @@ function ValueList(props) {
25
24
  highlightedValueIndex,
26
25
  setHighlightedValueIndex
27
26
  } = props;
27
+ const { PreviousIcon } = core.useIcon();
28
28
  const handleSelect = (_, value) => {
29
29
  onValueToggle(category, value);
30
30
  };
@@ -51,7 +51,7 @@ function ValueList(props) {
51
51
  onClick: onBack,
52
52
  selectable: false,
53
53
  children: [
54
- /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronLeftIcon, {}),
54
+ /* @__PURE__ */ jsxRuntime.jsx(PreviousIcon, {}),
55
55
  /* @__PURE__ */ jsxRuntime.jsx("div", {
56
56
  className: withBaseName("category"),
57
57
  children: category ? category.name : ""