@salt-ds/lab 1.0.0-alpha.66 → 1.0.0-alpha.68

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 (645) hide show
  1. package/CHANGELOG.md +184 -0
  2. package/css/salt-lab.css +24 -388
  3. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  4. package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
  5. package/dist-cjs/button-bar/OrderedButton.js.map +1 -1
  6. package/dist-cjs/button-bar/internal/useDescendant.js.map +1 -1
  7. package/dist-cjs/calendar/Calendar.js +23 -8
  8. package/dist-cjs/calendar/Calendar.js.map +1 -1
  9. package/dist-cjs/calendar/CalendarGrid.js +56 -80
  10. package/dist-cjs/calendar/CalendarGrid.js.map +1 -1
  11. package/dist-cjs/calendar/CalendarMonthHeader.css.js +6 -0
  12. package/dist-cjs/calendar/CalendarMonthHeader.css.js.map +1 -0
  13. package/dist-cjs/calendar/CalendarMonthHeader.js +48 -0
  14. package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -0
  15. package/dist-cjs/calendar/CalendarNavigation.js +30 -39
  16. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  17. package/dist-cjs/calendar/CalendarWeekHeader.js +2 -6
  18. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
  19. package/dist-cjs/calendar/internal/CalendarContext.js +3 -1
  20. package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
  21. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  22. package/dist-cjs/calendar/internal/CalendarDay.js +88 -76
  23. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  24. package/dist-cjs/calendar/internal/CalendarMonth.js +13 -23
  25. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  26. package/dist-cjs/calendar/internal/useFocusManagement.js +5 -6
  27. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  28. package/dist-cjs/calendar/internal/utils.js +8 -12
  29. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  30. package/dist-cjs/calendar/useCalendar.js +69 -109
  31. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  32. package/dist-cjs/calendar/useCalendarDay.js +21 -18
  33. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  34. package/dist-cjs/calendar/useCalendarSelection.js +146 -34
  35. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  36. package/dist-cjs/carousel/CarouselContext.js.map +1 -1
  37. package/dist-cjs/carousel/CarouselControls.js.map +1 -1
  38. package/dist-cjs/carousel/CarouselReducer.js.map +1 -1
  39. package/dist-cjs/carousel/CarouselSlide.js.map +1 -1
  40. package/dist-cjs/carousel/CarouselSlider.js.map +1 -1
  41. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  42. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  43. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  44. package/dist-cjs/cascading-menu/internal/keydownHandlers.js.map +1 -1
  45. package/dist-cjs/cascading-menu/internal/useClickAway.js.map +1 -1
  46. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  47. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  48. package/dist-cjs/cascading-menu/internal/useStateReducer.js.map +1 -1
  49. package/dist-cjs/cascading-menu/stateChangeTypes.js +0 -1
  50. package/dist-cjs/cascading-menu/stateChangeTypes.js.map +1 -1
  51. package/dist-cjs/color-chooser/Color.js.map +1 -1
  52. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  53. package/dist-cjs/color-chooser/ColorHelpers.js.map +1 -1
  54. package/dist-cjs/color-chooser/ColorPicker.js.map +1 -1
  55. package/dist-cjs/color-chooser/DictTabs.js.map +1 -1
  56. package/dist-cjs/color-chooser/HexInput.js.map +1 -1
  57. package/dist-cjs/color-chooser/Swatch.js.map +1 -1
  58. package/dist-cjs/color-chooser/Swatches.js.map +1 -1
  59. package/dist-cjs/color-chooser/SwatchesPicker.js.map +1 -1
  60. package/dist-cjs/combo-box/ComboBox.js +0 -2
  61. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  62. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  63. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js +0 -4
  64. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  65. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js +0 -4
  66. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  67. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  68. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  69. package/dist-cjs/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  70. package/dist-cjs/common-hooks/calcPreferredHeight.js.map +1 -1
  71. package/dist-cjs/common-hooks/collectionProvider.js.map +1 -1
  72. package/dist-cjs/common-hooks/list-dom-utils.js.map +1 -1
  73. package/dist-cjs/common-hooks/selectionTypes.js.map +1 -1
  74. package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
  75. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  76. package/dist-cjs/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  77. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  78. package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  79. package/dist-cjs/common-hooks/useSelection.js.map +1 -1
  80. package/dist-cjs/common-hooks/useTypeahead.js +1 -1
  81. package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
  82. package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
  83. package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
  84. package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
  85. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  86. package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
  87. package/dist-cjs/contact-details/internal/ContactDetailsContext.js.map +1 -1
  88. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  89. package/dist-cjs/date-input/DateInputRange.js +61 -51
  90. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  91. package/dist-cjs/date-input/DateInputSingle.js +33 -18
  92. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  93. package/dist-cjs/date-picker/DatePicker.js +9 -1
  94. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  95. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  96. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  97. package/dist-cjs/date-picker/DatePickerHelperText.css.js +6 -0
  98. package/dist-cjs/date-picker/DatePickerHelperText.css.js.map +1 -0
  99. package/dist-cjs/date-picker/DatePickerHelperText.js +36 -0
  100. package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -0
  101. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
  102. package/dist-cjs/date-picker/DatePickerOverlayProvider.js +40 -16
  103. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
  104. package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
  105. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +247 -0
  106. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -0
  107. package/dist-cjs/date-picker/DatePickerRangeInput.js +38 -6
  108. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  109. package/dist-cjs/date-picker/DatePickerRangePanel.js +188 -32
  110. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  111. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +255 -0
  112. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -0
  113. package/dist-cjs/date-picker/DatePickerSingleInput.js +13 -5
  114. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  115. package/dist-cjs/date-picker/DatePickerSinglePanel.js +6 -105
  116. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
  117. package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -1
  118. package/dist-cjs/date-picker/useDatePicker.js +71 -11
  119. package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
  120. package/dist-cjs/date-picker/useFocusOut.js +43 -0
  121. package/dist-cjs/date-picker/useFocusOut.js.map +1 -0
  122. package/dist-cjs/date-picker/useKeyboard.js +4 -5
  123. package/dist-cjs/date-picker/useKeyboard.js.map +1 -1
  124. package/dist-cjs/deck-item/DeckItem.js.map +1 -1
  125. package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
  126. package/dist-cjs/dropdown/Dropdown.js +0 -1
  127. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  128. package/dist-cjs/dropdown/DropdownBase.js +0 -1
  129. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  130. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  131. package/dist-cjs/dropdown/useClickAway.js.map +1 -1
  132. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  133. package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
  134. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  135. package/dist-cjs/form-field-legacy/FormFieldLegacy.js.map +1 -1
  136. package/dist-cjs/form-field-legacy/StatusIndicator.js.map +1 -1
  137. package/dist-cjs/formatted-input/FormattedInput.js.map +1 -1
  138. package/dist-cjs/index.js +8 -14
  139. package/dist-cjs/index.js.map +1 -1
  140. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  141. package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
  142. package/dist-cjs/list/Highlighter.js.map +1 -1
  143. package/dist-cjs/list/List.js.map +1 -1
  144. package/dist-cjs/list/ListItem.js.map +1 -1
  145. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  146. package/dist-cjs/list/useList.js +0 -1
  147. package/dist-cjs/list/useList.js.map +1 -1
  148. package/dist-cjs/list/useListHeight.js.map +1 -1
  149. package/dist-cjs/list-deprecated/ListBase.js +1 -3
  150. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  151. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  152. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  153. package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
  154. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  155. package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  156. package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
  157. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  158. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  159. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  160. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  161. package/dist-cjs/list-next/ListNext.js.map +1 -1
  162. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  163. package/dist-cjs/list-next/useList.js.map +1 -1
  164. package/dist-cjs/localization-provider/LocalizationProvider.js +5 -2
  165. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
  166. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  167. package/dist-cjs/metric/MetricContent.js.map +1 -1
  168. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  169. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  170. package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
  171. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  172. package/dist-cjs/query-input/internal/usePopperStatus.js +2 -2
  173. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  174. package/dist-cjs/query-input/useQueryInput.js +0 -1
  175. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  176. package/dist-cjs/responsive/OverflowReducer.js +1 -3
  177. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  178. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  179. package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
  180. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  181. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  182. package/dist-cjs/responsive/useOverflowLayout.js +0 -3
  183. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  184. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  185. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  186. package/dist-cjs/responsive/useWidth.js.map +1 -1
  187. package/dist-cjs/responsive/utils.js.map +1 -1
  188. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  189. package/dist-cjs/tabs/Tab.js.map +1 -1
  190. package/dist-cjs/tabs/Tabs.js.map +1 -1
  191. package/dist-cjs/tabs/Tabstrip.js +0 -1
  192. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  193. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  194. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  195. package/dist-cjs/tabs/useEditableItem.js.map +1 -1
  196. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  197. package/dist-cjs/tabs/useSelection.js.map +1 -1
  198. package/dist-cjs/tabs/useTabs.js.map +1 -1
  199. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  200. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  201. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  202. package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
  203. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
  204. package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
  205. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  206. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  207. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  208. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  209. package/dist-cjs/tabs-next/hooks/useCollection.js +2 -2
  210. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  211. package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
  212. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  213. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  214. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  215. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  216. package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
  217. package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
  218. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  219. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  220. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  221. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  222. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +1 -1
  223. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  224. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  225. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  226. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  227. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  228. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  229. package/dist-cjs/tree/Tree.js +2 -6
  230. package/dist-cjs/tree/Tree.js.map +1 -1
  231. package/dist-cjs/tree/TreeNode.js.map +1 -1
  232. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
  233. package/dist-cjs/tree/useTree.js.map +1 -1
  234. package/dist-cjs/utils/useClickOutside.js.map +1 -1
  235. package/dist-cjs/utils/useSlideSelection.js.map +1 -1
  236. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  237. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  238. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  239. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  240. package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
  241. package/dist-es/calendar/Calendar.js +24 -9
  242. package/dist-es/calendar/Calendar.js.map +1 -1
  243. package/dist-es/calendar/CalendarGrid.js +59 -83
  244. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  245. package/dist-es/calendar/CalendarMonthHeader.css.js +4 -0
  246. package/dist-es/calendar/CalendarMonthHeader.css.js.map +1 -0
  247. package/dist-es/calendar/CalendarMonthHeader.js +46 -0
  248. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -0
  249. package/dist-es/calendar/CalendarNavigation.js +30 -39
  250. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  251. package/dist-es/calendar/CalendarWeekHeader.js +2 -6
  252. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  253. package/dist-es/calendar/internal/CalendarContext.js +3 -1
  254. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  255. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  256. package/dist-es/calendar/internal/CalendarDay.js +90 -78
  257. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  258. package/dist-es/calendar/internal/CalendarMonth.js +13 -23
  259. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  260. package/dist-es/calendar/internal/useFocusManagement.js +5 -6
  261. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  262. package/dist-es/calendar/internal/utils.js +8 -12
  263. package/dist-es/calendar/internal/utils.js.map +1 -1
  264. package/dist-es/calendar/useCalendar.js +72 -112
  265. package/dist-es/calendar/useCalendar.js.map +1 -1
  266. package/dist-es/calendar/useCalendarDay.js +21 -18
  267. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  268. package/dist-es/calendar/useCalendarSelection.js +146 -34
  269. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  270. package/dist-es/carousel/CarouselContext.js.map +1 -1
  271. package/dist-es/carousel/CarouselControls.js.map +1 -1
  272. package/dist-es/carousel/CarouselReducer.js.map +1 -1
  273. package/dist-es/carousel/CarouselSlide.js.map +1 -1
  274. package/dist-es/carousel/CarouselSlider.js.map +1 -1
  275. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  276. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  277. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  278. package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
  279. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  280. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  281. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  282. package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
  283. package/dist-es/cascading-menu/stateChangeTypes.js +0 -1
  284. package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
  285. package/dist-es/color-chooser/Color.js.map +1 -1
  286. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  287. package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
  288. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  289. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  290. package/dist-es/color-chooser/HexInput.js.map +1 -1
  291. package/dist-es/color-chooser/Swatch.js.map +1 -1
  292. package/dist-es/color-chooser/Swatches.js.map +1 -1
  293. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  294. package/dist-es/combo-box/ComboBox.js +0 -2
  295. package/dist-es/combo-box/ComboBox.js.map +1 -1
  296. package/dist-es/combo-box/useCombobox.js.map +1 -1
  297. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +1 -5
  298. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  299. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +1 -5
  300. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  301. package/dist-es/combo-box-deprecated/internal/useComboBox.js +1 -1
  302. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  303. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -1
  304. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  305. package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  306. package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
  307. package/dist-es/common-hooks/collectionProvider.js +1 -1
  308. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  309. package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
  310. package/dist-es/common-hooks/selectionTypes.js.map +1 -1
  311. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  312. package/dist-es/common-hooks/useCollectionItems.js +1 -1
  313. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  314. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  315. package/dist-es/common-hooks/useKeyboardNavigation.js +1 -1
  316. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  317. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  318. package/dist-es/common-hooks/useSelection.js.map +1 -1
  319. package/dist-es/common-hooks/useTypeahead.js +1 -1
  320. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  321. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  322. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  323. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  324. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  325. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  326. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  327. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  328. package/dist-es/date-input/DateInputRange.js +61 -51
  329. package/dist-es/date-input/DateInputRange.js.map +1 -1
  330. package/dist-es/date-input/DateInputSingle.js +34 -19
  331. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  332. package/dist-es/date-picker/DatePicker.js +9 -1
  333. package/dist-es/date-picker/DatePicker.js.map +1 -1
  334. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  335. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  336. package/dist-es/date-picker/DatePickerHelperText.css.js +4 -0
  337. package/dist-es/date-picker/DatePickerHelperText.css.js.map +1 -0
  338. package/dist-es/date-picker/DatePickerHelperText.js +34 -0
  339. package/dist-es/date-picker/DatePickerHelperText.js.map +1 -0
  340. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  341. package/dist-es/date-picker/DatePickerOverlayProvider.js +41 -17
  342. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  343. package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
  344. package/dist-es/date-picker/DatePickerRangeGridPanel.js +245 -0
  345. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -0
  346. package/dist-es/date-picker/DatePickerRangeInput.js +39 -7
  347. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  348. package/dist-es/date-picker/DatePickerRangePanel.js +190 -34
  349. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  350. package/dist-es/date-picker/DatePickerSingleGridPanel.js +253 -0
  351. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -0
  352. package/dist-es/date-picker/DatePickerSingleInput.js +13 -5
  353. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  354. package/dist-es/date-picker/DatePickerSinglePanel.js +8 -107
  355. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  356. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  357. package/dist-es/date-picker/useDatePicker.js +71 -11
  358. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  359. package/dist-es/date-picker/useFocusOut.js +41 -0
  360. package/dist-es/date-picker/useFocusOut.js.map +1 -0
  361. package/dist-es/date-picker/useKeyboard.js +4 -5
  362. package/dist-es/date-picker/useKeyboard.js.map +1 -1
  363. package/dist-es/deck-item/DeckItem.js.map +1 -1
  364. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  365. package/dist-es/dropdown/Dropdown.js +0 -1
  366. package/dist-es/dropdown/Dropdown.js.map +1 -1
  367. package/dist-es/dropdown/DropdownBase.js +1 -2
  368. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  369. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  370. package/dist-es/dropdown/useClickAway.js.map +1 -1
  371. package/dist-es/dropdown/useDropdown.js.map +1 -1
  372. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  373. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  374. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  375. package/dist-es/form-field-legacy/StatusIndicator.js +1 -1
  376. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  377. package/dist-es/formatted-input/FormattedInput.js +1 -1
  378. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  379. package/dist-es/index.js +4 -7
  380. package/dist-es/index.js.map +1 -1
  381. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  382. package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
  383. package/dist-es/list/Highlighter.js.map +1 -1
  384. package/dist-es/list/List.js.map +1 -1
  385. package/dist-es/list/ListItem.js.map +1 -1
  386. package/dist-es/list/VirtualizedList.js.map +1 -1
  387. package/dist-es/list/useList.js +0 -1
  388. package/dist-es/list/useList.js.map +1 -1
  389. package/dist-es/list/useListHeight.js.map +1 -1
  390. package/dist-es/list-deprecated/ListBase.js +1 -3
  391. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  392. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  393. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  394. package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
  395. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  396. package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  397. package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
  398. package/dist-es/list-deprecated/useList.js.map +1 -1
  399. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  400. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  401. package/dist-es/list-next/ListItemNext.js.map +1 -1
  402. package/dist-es/list-next/ListNext.js.map +1 -1
  403. package/dist-es/list-next/ListNextContext.js.map +1 -1
  404. package/dist-es/list-next/useList.js.map +1 -1
  405. package/dist-es/localization-provider/LocalizationProvider.js +6 -3
  406. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
  407. package/dist-es/menu-button/MenuButton.js.map +1 -1
  408. package/dist-es/metric/MetricContent.js +2 -2
  409. package/dist-es/metric/MetricContent.js.map +1 -1
  410. package/dist-es/number-input/NumberInput.js +1 -1
  411. package/dist-es/number-input/NumberInput.js.map +1 -1
  412. package/dist-es/number-input/useNumberInput.js.map +1 -1
  413. package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
  414. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  415. package/dist-es/query-input/internal/usePopperStatus.js +2 -2
  416. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  417. package/dist-es/query-input/useQueryInput.js +0 -1
  418. package/dist-es/query-input/useQueryInput.js.map +1 -1
  419. package/dist-es/responsive/OverflowReducer.js +1 -3
  420. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  421. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  422. package/dist-es/responsive/useInstantCollapse.js.map +1 -1
  423. package/dist-es/responsive/useOverflow.js +1 -1
  424. package/dist-es/responsive/useOverflow.js.map +1 -1
  425. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  426. package/dist-es/responsive/useOverflowLayout.js +0 -3
  427. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  428. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  429. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  430. package/dist-es/responsive/useWidth.js.map +1 -1
  431. package/dist-es/responsive/utils.js.map +1 -1
  432. package/dist-es/search-input/SearchInput.js.map +1 -1
  433. package/dist-es/tabs/Tab.js.map +1 -1
  434. package/dist-es/tabs/Tabs.js.map +1 -1
  435. package/dist-es/tabs/Tabstrip.js +0 -1
  436. package/dist-es/tabs/Tabstrip.js.map +1 -1
  437. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js +1 -1
  438. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  439. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  440. package/dist-es/tabs/useEditableItem.js.map +1 -1
  441. package/dist-es/tabs/useKeyboardNavigation.js +1 -1
  442. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  443. package/dist-es/tabs/useSelection.js.map +1 -1
  444. package/dist-es/tabs/useTabs.js.map +1 -1
  445. package/dist-es/tabs/useTabstrip.js.map +1 -1
  446. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  447. package/dist-es/tabs-next/TabNext.js.map +1 -1
  448. package/dist-es/tabs-next/TabNextAction.js.map +1 -1
  449. package/dist-es/tabs-next/TabNextContext.js.map +1 -1
  450. package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
  451. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  452. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  453. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  454. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  455. package/dist-es/tabs-next/hooks/useCollection.js +2 -2
  456. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  457. package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
  458. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  459. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  460. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  461. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  462. package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
  463. package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
  464. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  465. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  466. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  467. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  468. package/dist-es/tokenized-input-next/useTokenizedInputNext.js +1 -1
  469. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  470. package/dist-es/toolbar/Tooltray.js.map +1 -1
  471. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  472. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  473. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  474. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  475. package/dist-es/tree/Tree.js +2 -6
  476. package/dist-es/tree/Tree.js.map +1 -1
  477. package/dist-es/tree/TreeNode.js.map +1 -1
  478. package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
  479. package/dist-es/tree/useTree.js.map +1 -1
  480. package/dist-es/utils/useClickOutside.js.map +1 -1
  481. package/dist-es/utils/useSlideSelection.js.map +1 -1
  482. package/dist-es/window/ElectronWindow.js +1 -1
  483. package/dist-es/window/ElectronWindow.js.map +1 -1
  484. package/dist-types/calendar/Calendar.d.ts +22 -3
  485. package/dist-types/calendar/CalendarGrid.d.ts +19 -3
  486. package/dist-types/calendar/CalendarMonthHeader.d.ts +18 -0
  487. package/dist-types/calendar/CalendarNavigation.d.ts +9 -0
  488. package/dist-types/calendar/index.d.ts +1 -0
  489. package/dist-types/calendar/internal/CalendarDay.d.ts +25 -6
  490. package/dist-types/calendar/internal/CalendarMonth.d.ts +2 -6
  491. package/dist-types/calendar/internal/utils.d.ts +3 -7
  492. package/dist-types/calendar/useCalendar.d.ts +34 -30
  493. package/dist-types/calendar/useCalendarDay.d.ts +3 -2
  494. package/dist-types/calendar/useCalendarSelection.d.ts +60 -8
  495. package/dist-types/date-input/DateInputRange.d.ts +12 -8
  496. package/dist-types/date-input/DateInputSingle.d.ts +12 -8
  497. package/dist-types/date-picker/DatePicker.d.ts +14 -6
  498. package/dist-types/date-picker/DatePickerContext.d.ts +29 -1
  499. package/dist-types/date-picker/DatePickerHelperText.d.ts +4 -0
  500. package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +9 -2
  501. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +17 -0
  502. package/dist-types/date-picker/DatePickerRangeInput.d.ts +1 -0
  503. package/dist-types/date-picker/DatePickerRangePanel.d.ts +24 -20
  504. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +65 -0
  505. package/dist-types/date-picker/DatePickerSingleInput.d.ts +1 -0
  506. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +6 -48
  507. package/dist-types/date-picker/index.d.ts +4 -1
  508. package/dist-types/date-picker/useDatePicker.d.ts +29 -9
  509. package/dist-types/date-picker/useFocusOut.d.ts +9 -0
  510. package/dist-types/date-picker/useKeyboard.d.ts +7 -1
  511. package/dist-types/index.d.ts +0 -2
  512. package/package.json +3 -4
  513. package/dist-cjs/calendar/CalendarGrid.css.js +0 -6
  514. package/dist-cjs/calendar/CalendarGrid.css.js.map +0 -1
  515. package/dist-cjs/combo-box-deprecated/internal/getAnnouncement.js +0 -8
  516. package/dist-cjs/combo-box-deprecated/internal/getAnnouncement.js.map +0 -1
  517. package/dist-cjs/splitter/SplitHandle.css.js +0 -6
  518. package/dist-cjs/splitter/SplitHandle.css.js.map +0 -1
  519. package/dist-cjs/splitter/SplitHandle.js +0 -60
  520. package/dist-cjs/splitter/SplitHandle.js.map +0 -1
  521. package/dist-cjs/splitter/SplitPanel.css.js +0 -6
  522. package/dist-cjs/splitter/SplitPanel.css.js.map +0 -1
  523. package/dist-cjs/splitter/SplitPanel.js +0 -37
  524. package/dist-cjs/splitter/SplitPanel.js.map +0 -1
  525. package/dist-cjs/splitter/Splitter.js +0 -31
  526. package/dist-cjs/splitter/Splitter.js.map +0 -1
  527. package/dist-cjs/splitter/utils.js +0 -18
  528. package/dist-cjs/splitter/utils.js.map +0 -1
  529. package/dist-cjs/stepped-tracker/Step.Connector.css.js +0 -6
  530. package/dist-cjs/stepped-tracker/Step.Connector.css.js.map +0 -1
  531. package/dist-cjs/stepped-tracker/Step.Connector.js +0 -21
  532. package/dist-cjs/stepped-tracker/Step.Connector.js.map +0 -1
  533. package/dist-cjs/stepped-tracker/Step.Description.css.js +0 -6
  534. package/dist-cjs/stepped-tracker/Step.Description.css.js.map +0 -1
  535. package/dist-cjs/stepped-tracker/Step.Description.js +0 -35
  536. package/dist-cjs/stepped-tracker/Step.Description.js.map +0 -1
  537. package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js +0 -6
  538. package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js.map +0 -1
  539. package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js +0 -38
  540. package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js.map +0 -1
  541. package/dist-cjs/stepped-tracker/Step.Icon.css.js +0 -6
  542. package/dist-cjs/stepped-tracker/Step.Icon.css.js.map +0 -1
  543. package/dist-cjs/stepped-tracker/Step.Icon.js +0 -57
  544. package/dist-cjs/stepped-tracker/Step.Icon.js.map +0 -1
  545. package/dist-cjs/stepped-tracker/Step.Label.css.js +0 -6
  546. package/dist-cjs/stepped-tracker/Step.Label.css.js.map +0 -1
  547. package/dist-cjs/stepped-tracker/Step.Label.js +0 -37
  548. package/dist-cjs/stepped-tracker/Step.Label.js.map +0 -1
  549. package/dist-cjs/stepped-tracker/Step.SROnly.css.js +0 -6
  550. package/dist-cjs/stepped-tracker/Step.SROnly.css.js.map +0 -1
  551. package/dist-cjs/stepped-tracker/Step.SROnly.js +0 -21
  552. package/dist-cjs/stepped-tracker/Step.SROnly.js.map +0 -1
  553. package/dist-cjs/stepped-tracker/Step.css.js +0 -6
  554. package/dist-cjs/stepped-tracker/Step.css.js.map +0 -1
  555. package/dist-cjs/stepped-tracker/Step.js +0 -161
  556. package/dist-cjs/stepped-tracker/Step.js.map +0 -1
  557. package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js +0 -19
  558. package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js.map +0 -1
  559. package/dist-cjs/stepped-tracker/SteppedTracker.css.js +0 -6
  560. package/dist-cjs/stepped-tracker/SteppedTracker.css.js.map +0 -1
  561. package/dist-cjs/stepped-tracker/SteppedTracker.js +0 -36
  562. package/dist-cjs/stepped-tracker/SteppedTracker.js.map +0 -1
  563. package/dist-cjs/stepped-tracker/stepReducer.js +0 -155
  564. package/dist-cjs/stepped-tracker/stepReducer.js.map +0 -1
  565. package/dist-cjs/stepped-tracker/useStepReducer.js +0 -18
  566. package/dist-cjs/stepped-tracker/useStepReducer.js.map +0 -1
  567. package/dist-cjs/stepped-tracker/utils.js +0 -121
  568. package/dist-cjs/stepped-tracker/utils.js.map +0 -1
  569. package/dist-es/calendar/CalendarGrid.css.js +0 -4
  570. package/dist-es/calendar/CalendarGrid.css.js.map +0 -1
  571. package/dist-es/combo-box-deprecated/internal/getAnnouncement.js +0 -6
  572. package/dist-es/combo-box-deprecated/internal/getAnnouncement.js.map +0 -1
  573. package/dist-es/splitter/SplitHandle.css.js +0 -4
  574. package/dist-es/splitter/SplitHandle.css.js.map +0 -1
  575. package/dist-es/splitter/SplitHandle.js +0 -58
  576. package/dist-es/splitter/SplitHandle.js.map +0 -1
  577. package/dist-es/splitter/SplitPanel.css.js +0 -4
  578. package/dist-es/splitter/SplitPanel.css.js.map +0 -1
  579. package/dist-es/splitter/SplitPanel.js +0 -35
  580. package/dist-es/splitter/SplitPanel.js.map +0 -1
  581. package/dist-es/splitter/Splitter.js +0 -27
  582. package/dist-es/splitter/Splitter.js.map +0 -1
  583. package/dist-es/splitter/utils.js +0 -15
  584. package/dist-es/splitter/utils.js.map +0 -1
  585. package/dist-es/stepped-tracker/Step.Connector.css.js +0 -4
  586. package/dist-es/stepped-tracker/Step.Connector.css.js.map +0 -1
  587. package/dist-es/stepped-tracker/Step.Connector.js +0 -19
  588. package/dist-es/stepped-tracker/Step.Connector.js.map +0 -1
  589. package/dist-es/stepped-tracker/Step.Description.css.js +0 -4
  590. package/dist-es/stepped-tracker/Step.Description.css.js.map +0 -1
  591. package/dist-es/stepped-tracker/Step.Description.js +0 -33
  592. package/dist-es/stepped-tracker/Step.Description.js.map +0 -1
  593. package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js +0 -4
  594. package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js.map +0 -1
  595. package/dist-es/stepped-tracker/Step.ExpandTrigger.js +0 -36
  596. package/dist-es/stepped-tracker/Step.ExpandTrigger.js.map +0 -1
  597. package/dist-es/stepped-tracker/Step.Icon.css.js +0 -4
  598. package/dist-es/stepped-tracker/Step.Icon.css.js.map +0 -1
  599. package/dist-es/stepped-tracker/Step.Icon.js +0 -55
  600. package/dist-es/stepped-tracker/Step.Icon.js.map +0 -1
  601. package/dist-es/stepped-tracker/Step.Label.css.js +0 -4
  602. package/dist-es/stepped-tracker/Step.Label.css.js.map +0 -1
  603. package/dist-es/stepped-tracker/Step.Label.js +0 -35
  604. package/dist-es/stepped-tracker/Step.Label.js.map +0 -1
  605. package/dist-es/stepped-tracker/Step.SROnly.css.js +0 -4
  606. package/dist-es/stepped-tracker/Step.SROnly.css.js.map +0 -1
  607. package/dist-es/stepped-tracker/Step.SROnly.js +0 -19
  608. package/dist-es/stepped-tracker/Step.SROnly.js.map +0 -1
  609. package/dist-es/stepped-tracker/Step.css.js +0 -4
  610. package/dist-es/stepped-tracker/Step.css.js.map +0 -1
  611. package/dist-es/stepped-tracker/Step.js +0 -159
  612. package/dist-es/stepped-tracker/Step.js.map +0 -1
  613. package/dist-es/stepped-tracker/SteppedTracker.Provider.js +0 -15
  614. package/dist-es/stepped-tracker/SteppedTracker.Provider.js.map +0 -1
  615. package/dist-es/stepped-tracker/SteppedTracker.css.js +0 -4
  616. package/dist-es/stepped-tracker/SteppedTracker.css.js.map +0 -1
  617. package/dist-es/stepped-tracker/SteppedTracker.js +0 -34
  618. package/dist-es/stepped-tracker/SteppedTracker.js.map +0 -1
  619. package/dist-es/stepped-tracker/stepReducer.js +0 -153
  620. package/dist-es/stepped-tracker/stepReducer.js.map +0 -1
  621. package/dist-es/stepped-tracker/useStepReducer.js +0 -16
  622. package/dist-es/stepped-tracker/useStepReducer.js.map +0 -1
  623. package/dist-es/stepped-tracker/utils.js +0 -114
  624. package/dist-es/stepped-tracker/utils.js.map +0 -1
  625. package/dist-types/splitter/SplitHandle.d.ts +0 -21
  626. package/dist-types/splitter/SplitPanel.d.ts +0 -10
  627. package/dist-types/splitter/Splitter.d.ts +0 -22
  628. package/dist-types/splitter/index.d.ts +0 -4
  629. package/dist-types/splitter/utils.d.ts +0 -4
  630. package/dist-types/stepped-tracker/Step.Connector.d.ts +0 -1
  631. package/dist-types/stepped-tracker/Step.Description.d.ts +0 -4
  632. package/dist-types/stepped-tracker/Step.ExpandTrigger.d.ts +0 -5
  633. package/dist-types/stepped-tracker/Step.Icon.d.ts +0 -8
  634. package/dist-types/stepped-tracker/Step.Label.d.ts +0 -4
  635. package/dist-types/stepped-tracker/Step.SROnly.d.ts +0 -5
  636. package/dist-types/stepped-tracker/Step.d.ts +0 -2
  637. package/dist-types/stepped-tracker/Step.types.d.ts +0 -19
  638. package/dist-types/stepped-tracker/SteppedTracker.Provider.d.ts +0 -9
  639. package/dist-types/stepped-tracker/SteppedTracker.d.ts +0 -2
  640. package/dist-types/stepped-tracker/SteppedTracker.types.d.ts +0 -6
  641. package/dist-types/stepped-tracker/index.d.ts +0 -6
  642. package/dist-types/stepped-tracker/stepReducer.d.ts +0 -2
  643. package/dist-types/stepped-tracker/stepReducer.types.d.ts +0 -27
  644. package/dist-types/stepped-tracker/useStepReducer.d.ts +0 -3
  645. package/dist-types/stepped-tracker/utils.d.ts +0 -10
@@ -1,17 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var react = require('react');
4
3
  var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
5
4
  var CalendarContext = require('./internal/CalendarContext.js');
6
5
  var useFocusManagement = require('./internal/useFocusManagement.js');
7
6
  var useCalendarSelection = require('./useCalendarSelection.js');
8
7
 
9
- function useCalendarDay(props, ref) {
8
+ function useCalendarDay(props) {
10
9
  const { date, month } = props;
11
10
  const { dateAdapter } = LocalizationProvider.useLocalization();
12
11
  const {
13
- state: { focusedDate, hideOutOfRangeDates, locale, calendarFocused },
12
+ state: {
13
+ focusedDate,
14
+ focusedDateRef,
15
+ hideOutOfRangeDates,
16
+ timezone,
17
+ focusableDates
18
+ },
14
19
  helpers: {
20
+ setHoveredDate,
15
21
  isDayUnselectable,
16
22
  isDaySelectable,
17
23
  isDayHighlighted,
@@ -31,33 +37,29 @@ function useCalendarDay(props, ref) {
31
37
  };
32
38
  const handleFocus = (event) => {
33
39
  focusManager.handleFocus(event);
40
+ setHoveredDate(event, date);
34
41
  };
35
- const handleMouseOver = (event) => {
36
- var _a;
37
- (_a = selectionManager.handleMouseOver) == null ? void 0 : _a.call(selectionManager, event);
42
+ const handleMouseEnter = (event) => {
43
+ setHoveredDate(event, date);
38
44
  };
39
45
  const eventHandlers = {
40
46
  onClick: handleClick,
41
47
  onKeyDown: handleKeyDown,
42
48
  onFocus: handleFocus,
43
- onMouseOver: handleMouseOver
49
+ onMouseEnter: handleMouseEnter
44
50
  };
45
51
  const outOfRange = !dateAdapter.isSame(date, month, "month");
46
- const focused = focusedDate && dateAdapter.isSame(date, focusedDate, "day") && calendarFocused && !outOfRange;
47
- const tabIndex = focusedDate && dateAdapter.isSame(date, focusedDate, "day") && !outOfRange ? 0 : -1;
48
- const today = dateAdapter.isSame(dateAdapter.today(locale), date, "day");
49
- const unselectableReason = isDayUnselectable(date) || isDayDisabled(date);
52
+ const focused = focusedDate && dateAdapter.isSame(date, focusedDate, "day") && !outOfRange;
53
+ const tabIndex = focusableDates.find(
54
+ (tabbableDate) => dateAdapter.isSame(date, tabbableDate, "day")
55
+ ) ? 0 : -1;
56
+ const today = dateAdapter.isSame(dateAdapter.today(timezone), date, "day");
57
+ const unselectableReason = isDayUnselectable(date);
50
58
  const highlightedReason = isDayHighlighted(date);
51
59
  const disabled = isDayDisabled(date) || outOfRange && isOutsideAllowedMonths(date) || isDaySelectable && !isDaySelectable(date);
52
60
  const unselectable = Boolean(unselectableReason);
53
61
  const highlighted = Boolean(highlightedReason);
54
- const hidden = hideOutOfRangeDates && outOfRange;
55
- react.useEffect(() => {
56
- var _a;
57
- if (focused) {
58
- (_a = ref.current) == null ? void 0 : _a.focus({ preventScroll: true });
59
- }
60
- }, [ref, focused]);
62
+ const hidden = hideOutOfRangeDates ? outOfRange : false;
61
63
  return {
62
64
  status: {
63
65
  outOfRange,
@@ -76,6 +78,7 @@ function useCalendarDay(props, ref) {
76
78
  ...eventHandlers,
77
79
  ...selectionManager.dayProps
78
80
  },
81
+ focusedDateRef: focused ? focusedDateRef : null,
79
82
  unselectableReason,
80
83
  highlightedReason
81
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendarDay.js","sources":["../src/calendar/useCalendarDay.ts"],"sourcesContent":["import type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type RefObject,\n useEffect,\n} from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { useFocusManagement } from \"./internal/useFocusManagement\";\nimport { useCalendarSelectionDay } from \"./useCalendarSelection\";\n\n/**\n * Interface representing the status of a day in the Calendar.\n */\nexport interface DayStatus {\n /**\n * If `true`, the day is out of the selectable range.\n */\n outOfRange?: boolean;\n /**\n * If `true`, the day is selected.\n */\n selected?: boolean;\n /**\n * If `true`, the day is today.\n */\n today?: boolean;\n /**\n * If set, the day is unselectable with a reason.\n */\n unselectable?: string | false;\n /**\n * If set, the day is highlighted with a reason.\n */\n highlighted?: string | false;\n /**\n * If `true`, the day is focused.\n */\n focused?: boolean;\n /**\n * If `true`, the day is disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the day is hidden.\n */\n hidden?: boolean;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status\n */\nexport interface useCalendarDayProps<TDate> {\n /**\n * The date of the calendar day.\n */\n date: TDate;\n /**\n * The month of the calendar day.\n */\n month: TDate;\n}\n\nexport function useCalendarDay<TDate extends DateFrameworkType>(\n props: useCalendarDayProps<TDate>,\n ref: RefObject<HTMLElement>,\n) {\n const { date, month } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const {\n state: { focusedDate, hideOutOfRangeDates, locale, calendarFocused },\n helpers: {\n isDayUnselectable,\n isDaySelectable,\n isDayHighlighted,\n isDayDisabled,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext<TDate>();\n const selectionManager = useCalendarSelectionDay<TDate>({ date });\n const focusManager = useFocusManagement<TDate>({ date });\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager?.handleClick(event);\n focusManager.handleClick(event);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleKeyDown(event);\n selectionManager?.handleKeyDown(event);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleFocus(event);\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager.handleMouseOver?.(event);\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onMouseOver: handleMouseOver,\n };\n\n const outOfRange = !dateAdapter.isSame(date, month, \"month\");\n const focused =\n focusedDate &&\n dateAdapter.isSame(date, focusedDate, \"day\") &&\n calendarFocused &&\n !outOfRange;\n const tabIndex =\n focusedDate && dateAdapter.isSame(date, focusedDate, \"day\") && !outOfRange\n ? 0\n : -1;\n const today = dateAdapter.isSame(dateAdapter.today(locale), date, \"day\");\n\n const unselectableReason = isDayUnselectable(date) || isDayDisabled(date);\n const highlightedReason = isDayHighlighted(date);\n\n const disabled =\n isDayDisabled(date) ||\n (outOfRange && isOutsideAllowedMonths(date)) ||\n (isDaySelectable && !isDaySelectable(date));\n const unselectable = Boolean(unselectableReason);\n const highlighted = Boolean(highlightedReason);\n const hidden = hideOutOfRangeDates && outOfRange;\n\n useEffect(() => {\n if (focused) {\n ref.current?.focus({ preventScroll: true });\n }\n }, [ref, focused]);\n\n return {\n status: {\n outOfRange,\n today,\n unselectable,\n focused,\n hidden,\n disabled,\n highlighted,\n ...selectionManager.status,\n } as DayStatus,\n dayProps: {\n tabIndex,\n \"aria-current\": today ? \"date\" : undefined,\n \"aria-hidden\": hidden ? \"true\" : undefined,\n ...eventHandlers,\n ...selectionManager.dayProps,\n } as ComponentPropsWithoutRef<\"button\">,\n unselectableReason,\n highlightedReason,\n };\n}\n"],"names":["useLocalization","useCalendarContext","useCalendarSelectionDay","useFocusManagement","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendarDay.js","sources":["../src/calendar/useCalendarDay.ts"],"sourcesContent":["import type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport type {\n ComponentPropsWithoutRef,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { useFocusManagement } from \"./internal/useFocusManagement\";\nimport { useCalendarSelectionDay } from \"./useCalendarSelection\";\n\n/**\n * Interface representing the status of a day in the Calendar.\n */\nexport interface DayStatus {\n /**\n * If `true`, the day is out of the selectable range.\n */\n outOfRange?: boolean;\n /**\n * If `true`, the day is selected.\n */\n selected?: boolean;\n /**\n * If `true`, the day is today.\n */\n today?: boolean;\n /**\n * If set, the day is unselectable with a reason.\n */\n unselectable?: string | false;\n /**\n * If set, the day is highlighted with a reason.\n */\n highlighted?: string | false;\n /**\n * If `true`, the day is focused.\n */\n focused?: boolean;\n /**\n * If `true`, the day is disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the day is hidden.\n */\n hidden?: boolean;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status\n * @template TDate - The type of the date object.\n */\nexport interface useCalendarDayProps<TDate> {\n /**\n * The date of the calendar day.\n */\n date: TDate;\n /**\n * The month of the calendar day.\n */\n month: TDate;\n}\n\nexport function useCalendarDay<TDate extends DateFrameworkType>(\n props: useCalendarDayProps<TDate>,\n) {\n const { date, month } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const {\n state: {\n focusedDate,\n focusedDateRef,\n hideOutOfRangeDates,\n timezone,\n focusableDates,\n },\n helpers: {\n setHoveredDate,\n isDayUnselectable,\n isDaySelectable,\n isDayHighlighted,\n isDayDisabled,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext<TDate>();\n const selectionManager = useCalendarSelectionDay<TDate>({ date });\n const focusManager = useFocusManagement<TDate>({ date });\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager?.handleClick(event);\n focusManager.handleClick(event);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleKeyDown(event);\n selectionManager?.handleKeyDown(event);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleFocus(event);\n setHoveredDate(event, date);\n };\n\n const handleMouseEnter: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, date);\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n };\n\n const outOfRange = !dateAdapter.isSame(date, month, \"month\");\n const focused =\n focusedDate && dateAdapter.isSame(date, focusedDate, \"day\") && !outOfRange;\n const tabIndex = focusableDates.find((tabbableDate) =>\n dateAdapter.isSame(date, tabbableDate, \"day\"),\n )\n ? 0\n : -1;\n const today = dateAdapter.isSame(dateAdapter.today(timezone), date, \"day\");\n\n const unselectableReason = isDayUnselectable(date);\n const highlightedReason = isDayHighlighted(date);\n\n const disabled =\n isDayDisabled(date) ||\n (outOfRange && isOutsideAllowedMonths(date)) ||\n (isDaySelectable && !isDaySelectable(date));\n const unselectable = Boolean(unselectableReason);\n const highlighted = Boolean(highlightedReason);\n const hidden = hideOutOfRangeDates ? outOfRange : false;\n\n return {\n status: {\n outOfRange,\n today,\n unselectable,\n focused,\n hidden,\n disabled,\n highlighted,\n ...selectionManager.status,\n } as DayStatus,\n dayProps: {\n tabIndex,\n \"aria-current\": today ? \"date\" : undefined,\n \"aria-hidden\": hidden ? \"true\" : undefined,\n ...eventHandlers,\n ...selectionManager.dayProps,\n } as ComponentPropsWithoutRef<\"button\">,\n focusedDateRef: focused ? focusedDateRef : null,\n unselectableReason,\n highlightedReason,\n };\n}\n"],"names":["useLocalization","useCalendarContext","useCalendarSelectionDay","useFocusManagement"],"mappings":"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"}
@@ -5,6 +5,7 @@ var clsx = require('clsx');
5
5
  var react = require('react');
6
6
  var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
7
7
  var CalendarContext = require('./internal/CalendarContext.js');
8
+ var utils = require('./internal/utils.js');
8
9
 
9
10
  function isSingleSelectionValueType(value) {
10
11
  return !isMultipleDateSelection(value) && !isDateRangeSelection(value);
@@ -43,13 +44,20 @@ function updateRangeSelection(datePicker, currentSelectedDate, newSelectedDate)
43
44
  }
44
45
  function useCalendarSelection(props) {
45
46
  const {
47
+ focusedDate: focusedDateProp,
46
48
  hoveredDate: hoveredDateProp,
47
49
  selectedDate: selectedDateProp,
48
50
  defaultSelectedDate,
49
51
  onSelectionChange,
50
52
  onHoveredDateChange,
51
- isDaySelectable,
52
- selectionVariant
53
+ isDaySelectable = () => true,
54
+ isDayVisible = () => true,
55
+ isOutsideAllowedDates = () => true,
56
+ focusedDateRef,
57
+ onFocusedDateChange,
58
+ selectionVariant,
59
+ timezone,
60
+ visibleMonth
53
61
  // startDateOffset,
54
62
  // endDateOffset,
55
63
  } = props;
@@ -82,7 +90,6 @@ function useCalendarSelection(props) {
82
90
  );
83
91
  const setSelectedDate = react.useCallback(
84
92
  (event, newSelectedDate) => {
85
- var _a;
86
93
  if (!isDaySelectable || isDaySelectable(newSelectedDate)) {
87
94
  switch (selectionVariant) {
88
95
  case "single": {
@@ -116,13 +123,21 @@ function useCalendarSelection(props) {
116
123
  endDate: getEndDateOffset(newSelectedDate)
117
124
  };
118
125
  setSelectedDateState(newOffsetDate);
119
- (_a = props.onSelectionChange) == null ? void 0 : _a.call(props, event, newOffsetDate);
126
+ onSelectionChange == null ? void 0 : onSelectionChange(event, newOffsetDate);
120
127
  break;
121
128
  }
122
129
  }
123
130
  }
124
131
  },
125
- [isDaySelectable, selectedDate, selectionVariant, onSelectionChange]
132
+ [
133
+ dateAdapter,
134
+ getEndDateOffset,
135
+ getStartDateOffset,
136
+ isDaySelectable,
137
+ selectedDate,
138
+ selectionVariant,
139
+ onSelectionChange
140
+ ]
126
141
  );
127
142
  const isSelected = react.useCallback(
128
143
  (date) => {
@@ -142,6 +157,59 @@ function useCalendarSelection(props) {
142
157
  },
143
158
  [dateAdapter, selectionVariant, selectedDate]
144
159
  );
160
+ const getDefaultFocusedDate = () => {
161
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate)) {
162
+ if ((selectedDate == null ? void 0 : selectedDate.startDate) && isDayVisible(selectedDate.startDate)) {
163
+ return selectedDate.startDate;
164
+ }
165
+ if ((selectedDate == null ? void 0 : selectedDate.endDate) && isDayVisible(selectedDate.endDate)) {
166
+ return selectedDate.endDate;
167
+ }
168
+ } else if (selectionVariant === "multiselect" && Array.isArray(selectedDate)) {
169
+ const selectionInMonth = selectedDate.filter((day) => isDayVisible(day)).sort((a, b) => dateAdapter.compare(a, b));
170
+ if (selectionInMonth.length > 0) {
171
+ return selectionInMonth[0];
172
+ }
173
+ } else if (selectedDate && selectionVariant === "single" && !isDateRangeSelection(selectedDate) && !Array.isArray(selectedDate) && isDayVisible(selectedDate)) {
174
+ return selectedDate;
175
+ }
176
+ if ((isDaySelectable == null ? void 0 : isDaySelectable(dateAdapter.today(timezone))) && isDayVisible(dateAdapter.today(timezone))) {
177
+ return dateAdapter.today(timezone);
178
+ }
179
+ const firstSelectableDate = utils.generateDatesForMonth(
180
+ dateAdapter,
181
+ visibleMonth
182
+ ).find((visibleDay) => visibleDay && (isDaySelectable == null ? void 0 : isDaySelectable(visibleDay)));
183
+ if (firstSelectableDate) {
184
+ return firstSelectableDate;
185
+ }
186
+ return null;
187
+ };
188
+ const [focusedDate, setFocusedDateState] = core.useControlled({
189
+ controlled: focusedDateProp,
190
+ default: react.useMemo(getDefaultFocusedDate, []),
191
+ name: "Calendar",
192
+ state: "focusedDate"
193
+ });
194
+ const setFocusedDate = react.useCallback(
195
+ (event, date) => {
196
+ if (focusedDateRef && (event == null ? void 0 : event.target) instanceof HTMLElement) {
197
+ focusedDateRef.current = event.target;
198
+ }
199
+ if (date && (focusedDate && dateAdapter.isSame(date, focusedDate, "day") || isOutsideAllowedDates(date))) {
200
+ return;
201
+ }
202
+ setFocusedDateState(date);
203
+ onFocusedDateChange == null ? void 0 : onFocusedDateChange(event, date);
204
+ },
205
+ [
206
+ dateAdapter,
207
+ focusedDate,
208
+ focusedDateRef,
209
+ isOutsideAllowedDates,
210
+ onFocusedDateChange
211
+ ]
212
+ );
145
213
  const [hoveredDate, setHoveredDateState] = core.useControlled({
146
214
  controlled: hoveredDateProp,
147
215
  default: void 0,
@@ -159,45 +227,95 @@ function useCalendarSelection(props) {
159
227
  (date) => {
160
228
  return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, "day");
161
229
  },
162
- [hoveredDate]
230
+ [dateAdapter, hoveredDate]
163
231
  );
232
+ const getFocusableDates = react.useCallback(() => {
233
+ const focusableDates = [];
234
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate)) {
235
+ if ((selectedDate == null ? void 0 : selectedDate.startDate) && isDayVisible(selectedDate.startDate)) {
236
+ focusableDates.push(selectedDate.startDate);
237
+ } else if ((selectedDate == null ? void 0 : selectedDate.endDate) && isDayVisible(selectedDate.endDate)) {
238
+ focusableDates.push(selectedDate.endDate);
239
+ }
240
+ } else if (selectionVariant === "multiselect" && Array.isArray(selectedDate)) {
241
+ const selectionInMonth = selectedDate.filter((day) => isDayVisible(day)).sort((a, b) => dateAdapter.compare(a, b));
242
+ if (selectionInMonth.length > 0) {
243
+ focusableDates.push(selectionInMonth[0]);
244
+ }
245
+ } else if (selectionVariant === "single" && !isDateRangeSelection(selectedDate) && !Array.isArray(selectedDate) && selectedDate && isDayVisible(selectedDate)) {
246
+ focusableDates.push(selectedDate);
247
+ }
248
+ if (focusedDate && visibleMonth && dateAdapter.isSame(focusedDate, visibleMonth, "month")) {
249
+ focusableDates.push(focusedDate);
250
+ return focusableDates;
251
+ }
252
+ if (focusableDates.length === 0 && isDaySelectable(dateAdapter.today(timezone)) && isDayVisible(dateAdapter.today(timezone))) {
253
+ focusableDates.push(dateAdapter.today(timezone));
254
+ }
255
+ if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {
256
+ const firstSelectableDate = utils.generateDatesForMonth(
257
+ dateAdapter,
258
+ visibleMonth
259
+ ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));
260
+ if (firstSelectableDate) {
261
+ focusableDates.push(firstSelectableDate);
262
+ }
263
+ }
264
+ return focusableDates;
265
+ }, [
266
+ dateAdapter,
267
+ focusedDate,
268
+ isDaySelectable,
269
+ isDayVisible,
270
+ selectedDate,
271
+ selectionVariant,
272
+ timezone,
273
+ visibleMonth
274
+ ]);
164
275
  const isSelectedSpan = react.useCallback(
165
276
  (date) => {
166
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && (selectedDate == null ? void 0 : selectedDate.startDate) && (selectedDate == null ? void 0 : selectedDate.endDate)) {
277
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && dateAdapter.isValid(selectedDate.startDate) && dateAdapter.isValid(selectedDate.endDate) && !isOutsideAllowedDates(selectedDate.startDate) && !isOutsideAllowedDates(selectedDate.endDate)) {
167
278
  return dateAdapter.compare(date, selectedDate.startDate) > 0 && dateAdapter.compare(date, selectedDate.endDate) < 0;
168
279
  }
169
280
  return false;
170
281
  },
171
- [selectionVariant, selectedDate]
282
+ [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
172
283
  );
173
284
  const isHoveredSpan = react.useCallback(
174
285
  (date) => {
175
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && selectedDate.startDate && !selectedDate.endDate && hoveredDate) {
286
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && dateAdapter.isValid(selectedDate.startDate) && !dateAdapter.isValid(selectedDate.endDate) && !isOutsideAllowedDates(selectedDate.startDate) && hoveredDate) {
176
287
  const isForwardRange = dateAdapter.compare(hoveredDate, selectedDate.startDate) > 0 && (dateAdapter.compare(date, selectedDate.startDate) > 0 && dateAdapter.compare(date, hoveredDate) < 0 || dateAdapter.isSame(date, hoveredDate, "day"));
177
288
  const isValidDayHovered = !isDaySelectable || isDaySelectable(hoveredDate);
178
289
  return isForwardRange && isValidDayHovered;
179
290
  }
180
291
  return false;
181
292
  },
182
- [selectionVariant, selectedDate, hoveredDate, isDaySelectable]
293
+ [
294
+ dateAdapter,
295
+ isOutsideAllowedDates,
296
+ selectionVariant,
297
+ selectedDate,
298
+ hoveredDate,
299
+ isDaySelectable
300
+ ]
183
301
  );
184
302
  const isSelectedStart = react.useCallback(
185
303
  (date) => {
186
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && selectedDate.startDate) {
304
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && dateAdapter.isValid(selectedDate.startDate) && !isOutsideAllowedDates(selectedDate.startDate)) {
187
305
  return dateAdapter.isSame(selectedDate.startDate, date, "day");
188
306
  }
189
307
  return false;
190
308
  },
191
- [selectionVariant, selectedDate]
309
+ [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
192
310
  );
193
311
  const isSelectedEnd = react.useCallback(
194
312
  (date) => {
195
- if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && selectedDate.endDate) {
313
+ if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(selectedDate) && dateAdapter.isValid(selectedDate.endDate) && !isOutsideAllowedDates(selectedDate.endDate)) {
196
314
  return dateAdapter.isSame(selectedDate.endDate, date, "day");
197
315
  }
198
316
  return false;
199
317
  },
200
- [selectionVariant, selectedDate]
318
+ [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
201
319
  );
202
320
  const isHoveredOffset = react.useCallback(
203
321
  (date) => {
@@ -209,6 +327,7 @@ function useCalendarSelection(props) {
209
327
  return false;
210
328
  },
211
329
  [
330
+ dateAdapter,
212
331
  getStartDateOffset,
213
332
  getEndDateOffset,
214
333
  hoveredDate,
@@ -219,8 +338,11 @@ function useCalendarSelection(props) {
219
338
  return react.useMemo(
220
339
  () => ({
221
340
  state: {
341
+ focusedDate,
342
+ focusedDateRef,
343
+ hoveredDate,
222
344
  selectedDate,
223
- hoveredDate
345
+ focusableDates: getFocusableDates()
224
346
  },
225
347
  helpers: {
226
348
  setSelectedDate,
@@ -232,22 +354,27 @@ function useCalendarSelection(props) {
232
354
  isSelectedStart,
233
355
  isSelectedEnd,
234
356
  isHoveredOffset,
235
- isDaySelectable
357
+ isDaySelectable,
358
+ setFocusedDate
236
359
  }
237
360
  }),
238
361
  [
239
362
  selectedDate,
363
+ focusedDate,
364
+ focusedDateRef,
365
+ getFocusableDates,
240
366
  hoveredDate,
241
- setSelectedDate,
242
367
  isSelected,
243
- setHoveredDate,
244
368
  isHovered,
245
369
  isSelectedSpan,
246
370
  isHoveredSpan,
247
371
  isSelectedStart,
248
372
  isSelectedEnd,
249
373
  isHoveredOffset,
250
- isDaySelectable
374
+ isDaySelectable,
375
+ setFocusedDate,
376
+ setHoveredDate,
377
+ setSelectedDate
251
378
  ]
252
379
  );
253
380
  }
@@ -258,7 +385,6 @@ function useCalendarSelectionDay({
258
385
  helpers: {
259
386
  setSelectedDate,
260
387
  isSelected,
261
- setHoveredDate,
262
388
  isSelectedSpan,
263
389
  isHoveredSpan,
264
390
  isSelectedStart,
@@ -285,18 +411,6 @@ function useCalendarSelectionDay({
285
411
  },
286
412
  [date, setSelectedDate]
287
413
  );
288
- const handleMouseOver = react.useCallback(
289
- (event) => {
290
- setHoveredDate(event, date);
291
- },
292
- [date, setHoveredDate]
293
- );
294
- const handleMouseLeave = react.useCallback(
295
- (event) => {
296
- setHoveredDate(event, null);
297
- },
298
- [setHoveredDate]
299
- );
300
414
  const selected = isSelected(date);
301
415
  const selectedSpan = isSelectedSpan(date);
302
416
  const hoveredSpan = isHoveredSpan(date);
@@ -307,8 +421,6 @@ function useCalendarSelectionDay({
307
421
  return {
308
422
  handleClick,
309
423
  handleKeyDown,
310
- handleMouseOver,
311
- handleMouseLeave,
312
424
  status: {
313
425
  selected,
314
426
  selectedSpan,
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\n\n/**\n * Type representing a single date selection.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing multiple date selections.\n */\nexport type MultipleDateSelection<TDate extends DateFrameworkType> = TDate[];\n\n/**\n * Type representing a date range selection.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range.\n */\n startDate?: TDate | null;\n /**\n * The end date of the range.\n */\n endDate?: TDate | null;\n};\n\n/**\n * Type representing all possible selection value types.\n */\nexport type AllSelectionValueType<TDate extends DateFrameworkType> =\n | SingleDateSelection<TDate>\n | MultipleDateSelection<TDate>\n | DateRangeSelection<TDate>\n | null;\n\n/**\n * Checks if a value is a single date selection.\n * @param value - The value to check.\n * @returns `true` if the value is a single date selection, otherwise `false`.\n */\n// biome-ignore lint/suspicious/noExplicitAny: type guard\nexport function isSingleSelectionValueType<TDate extends DateFrameworkType>(\n value: any,\n): value is TDate {\n return (\n !isMultipleDateSelection<TDate>(value) &&\n !isDateRangeSelection<TDate>(value)\n );\n}\n\n/**\n * Checks if a value is a date range selection.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\n// biome-ignore lint/suspicious/noExplicitAny: type guard\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Checks if a value is a multiple date selection.\n * @param value - The value to check.\n * @returns `true` if the value is a multiple date selection, otherwise `false`.\n */\nexport function isMultipleDateSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: type guard\n value: any,\n): value is MultipleDateSelection<TDate> {\n return (\n Array.isArray(value) &&\n value.every((item) => isSingleSelectionValueType(item))\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template SelectionVariantType - The type of the selection variant.\n */\ninterface UseCalendarSelectionBaseProps<TDate extends DateFrameworkType> {\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends Omit<\n UseCalendarSelectionBaseProps<TDate>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * Properties for the range date selection hook.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n}\n\n/**\n * Properties for the multi-select date selection hook.\n */\nexport interface UseCalendarSelectionMultiSelectProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"multiselect\".\n */\n selectionVariant: \"multiselect\";\n /**\n * The currently selected date.\n */\n selectedDate?: MultipleDateSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: MultipleDateSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: MultipleDateSelection<TDate>,\n ) => void;\n}\n\n/**\n * Properties for the single date selection hook.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiSelectProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>;\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction addOrRemoveFromArray<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n array: AllSelectionValueType<TDate>,\n item: TDate,\n) {\n if (Array.isArray(array)) {\n const filteredArray = array.filter(\n (element) => !dateAdapter.isSame(element, item, \"day\"),\n );\n if (filteredArray.length === array.length) {\n return array.concat(item);\n }\n return filteredArray;\n }\n return [item];\n}\n\nfunction updateRangeSelection<TDate extends DateFrameworkType>(\n datePicker: SaltDateAdapter<TDate>,\n currentSelectedDate: DateRangeSelection<TDate> | undefined,\n newSelectedDate: TDate,\n): DateRangeSelection<TDate> {\n let base = { ...currentSelectedDate };\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n datePicker.compare(newSelectedDate, base.startDate) < 0\n ) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n datePicker.compare(newSelectedDate, base.startDate) >= 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n return base;\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable,\n selectionVariant,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n switch (selectionVariant) {\n case \"single\": {\n setSelectedDateState(newSelectedDate);\n onSelectionChange?.(event, newSelectedDate);\n break;\n }\n case \"multiselect\": {\n const newMultiSelectDate = addOrRemoveFromArray<TDate>(\n dateAdapter,\n selectedDate as TDate[],\n newSelectedDate,\n );\n setSelectedDateState(newMultiSelectDate);\n onSelectionChange?.(event, newMultiSelectDate);\n break;\n }\n case \"range\": {\n const newRangeDate = updateRangeSelection<TDate>(\n dateAdapter,\n selectedDate as DateRangeSelection<TDate>,\n newSelectedDate,\n );\n setSelectedDateState(newRangeDate);\n onSelectionChange?.(event, newRangeDate);\n break;\n }\n case \"offset\": {\n const newOffsetDate: DateRangeSelection<TDate> = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newOffsetDate);\n props.onSelectionChange?.(event, newOffsetDate);\n break;\n }\n }\n }\n },\n [isDaySelectable, selectedDate, selectionVariant, onSelectionChange],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n switch (selectionVariant) {\n case \"single\":\n return (\n isSingleSelectionValueType(selectedDate) &&\n dateAdapter.isSame(selectedDate as TDate, date, \"day\")\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) =>\n dateAdapter.isSame(element, date, \"day\"),\n )\n );\n default:\n return false;\n }\n },\n [dateAdapter, selectionVariant, selectedDate],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [hoveredDate],\n );\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n selectedDate?.startDate &&\n selectedDate?.endDate\n ) {\n return (\n dateAdapter.compare(date, selectedDate.startDate) > 0 &&\n dateAdapter.compare(date, selectedDate.endDate) < 0\n );\n }\n return false;\n },\n [selectionVariant, selectedDate],\n );\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n selectedDate.startDate &&\n !selectedDate.endDate &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, selectedDate.startDate) > 0 &&\n ((dateAdapter.compare(date, selectedDate.startDate) > 0 &&\n dateAdapter.compare(date, hoveredDate) < 0) ||\n dateAdapter.isSame(date, hoveredDate, \"day\"));\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n },\n [selectionVariant, selectedDate, hoveredDate, isDaySelectable],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n selectedDate.startDate\n ) {\n return dateAdapter.isSame(selectedDate.startDate, date, \"day\");\n }\n return false;\n },\n [selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n selectedDate.endDate\n ) {\n return dateAdapter.isSame(selectedDate.endDate, date, \"day\");\n }\n return false;\n },\n [selectionVariant, selectedDate],\n );\n\n const isHoveredOffset = useCallback(\n (date: TDate) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n dateAdapter.compare(date, startDate) >= 0 &&\n dateAdapter.compare(date, endDate) <= 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n\n return false;\n },\n [\n getStartDateOffset,\n getEndDateOffset,\n hoveredDate,\n isDaySelectable,\n selectionVariant,\n ],\n );\n\n return useMemo(\n () => ({\n state: {\n selectedDate,\n hoveredDate,\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n },\n }),\n [\n selectedDate,\n hoveredDate,\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: { date: TDate }) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setHoveredDate(event, date);\n },\n [date, setHoveredDate],\n );\n\n const handleMouseLeave: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setHoveredDate(event, null);\n },\n [setHoveredDate],\n );\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n handleMouseOver,\n handleMouseLeave,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","useMemo","useCalendarContext","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { generateDatesForMonth } from \"./internal/utils\";\n\n/**\n * Type representing a single date selection.\n * @template TDate - The type of the date object.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing multiple date selections.\n * @template TDate - The type of the date object.\n */\nexport type MultipleDateSelection<TDate extends DateFrameworkType> = TDate[];\n\n/**\n * Type representing a date range selection.\n * @template TDate - The type of the date object.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range.\n */\n startDate?: TDate | null;\n /**\n * The end date of the range.\n */\n endDate?: TDate | null;\n};\n\n/**\n * Type representing all possible selection value types.\n * @template TDate - The type of the date object.\n */\nexport type AllSelectionValueType<TDate extends DateFrameworkType> =\n | SingleDateSelection<TDate>\n | MultipleDateSelection<TDate>\n | DateRangeSelection<TDate>\n | null;\n\n/**\n * Checks if a value is a single date selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a single date selection, otherwise `false`.\n */\nexport function isSingleSelectionValueType<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is TDate {\n return (\n !isMultipleDateSelection<TDate>(value) &&\n !isDateRangeSelection<TDate>(value)\n );\n}\n\n/**\n * Checks if a value is a date range selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Checks if a value is a multiple date selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a multiple date selection, otherwise `false`.\n */\nexport function isMultipleDateSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: type guard\n value: any,\n): value is MultipleDateSelection<TDate> {\n return (\n Array.isArray(value) &&\n value.every((item) => isSingleSelectionValueType(item))\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionBaseProps<\n TDate extends DateFrameworkType,\n> {\n /**\n * The currently focused date in the calendar, or null if no date is focused.\n */\n focusedDate?: TDate | null;\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Determines if a date is outside the allowed date range.\n * @param date - The date to check.\n * @returns `true` if the date is outside the allowed range, otherwise `false`.\n */\n isOutsideAllowedDates?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is visible.\n * @param date - The date to check.\n * @returns `true` if the day is visible, otherwise `false`.\n */\n isDayVisible?: (date: TDate) => boolean;\n /**\n * Ref to attach to the focused element, enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event, if user event triggered focus or null.\n * @param date - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n date: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * The currently visible month.\n */\n visibleMonth?: TDate;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends Omit<\n UseCalendarSelectionBaseProps<TDate>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * Properties for the range date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n}\n\n/**\n * Properties for the multi-select date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiSelectProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"multiselect\".\n */\n selectionVariant: \"multiselect\";\n /**\n * The currently selected date.\n */\n selectedDate?: MultipleDateSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: MultipleDateSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: MultipleDateSelection<TDate>,\n ) => void;\n}\n\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n * @template TDate - The type of the date object.\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiSelectProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>;\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction addOrRemoveFromArray<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n array: AllSelectionValueType<TDate>,\n item: TDate,\n) {\n if (Array.isArray(array)) {\n const filteredArray = array.filter(\n (element) => !dateAdapter.isSame(element, item, \"day\"),\n );\n if (filteredArray.length === array.length) {\n return array.concat(item);\n }\n return filteredArray;\n }\n return [item];\n}\n\nfunction updateRangeSelection<TDate extends DateFrameworkType>(\n datePicker: SaltDateAdapter<TDate>,\n currentSelectedDate: DateRangeSelection<TDate> | undefined,\n newSelectedDate: TDate,\n): DateRangeSelection<TDate> {\n let base = { ...currentSelectedDate };\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n datePicker.compare(newSelectedDate, base.startDate) < 0\n ) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n datePicker.compare(newSelectedDate, base.startDate) >= 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n return base;\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n focusedDate: focusedDateProp,\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable = () => true,\n isDayVisible = () => true,\n isOutsideAllowedDates = () => true,\n focusedDateRef,\n onFocusedDateChange,\n selectionVariant,\n timezone,\n visibleMonth,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n switch (selectionVariant) {\n case \"single\": {\n setSelectedDateState(newSelectedDate);\n onSelectionChange?.(event, newSelectedDate);\n break;\n }\n case \"multiselect\": {\n const newMultiSelectDate = addOrRemoveFromArray<TDate>(\n dateAdapter,\n selectedDate as TDate[],\n newSelectedDate,\n );\n setSelectedDateState(newMultiSelectDate);\n onSelectionChange?.(event, newMultiSelectDate);\n break;\n }\n case \"range\": {\n const newRangeDate = updateRangeSelection<TDate>(\n dateAdapter,\n selectedDate as DateRangeSelection<TDate>,\n newSelectedDate,\n );\n setSelectedDateState(newRangeDate);\n onSelectionChange?.(event, newRangeDate);\n break;\n }\n case \"offset\": {\n const newOffsetDate: DateRangeSelection<TDate> = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newOffsetDate);\n onSelectionChange?.(event, newOffsetDate);\n break;\n }\n }\n }\n },\n [\n dateAdapter,\n getEndDateOffset,\n getStartDateOffset,\n isDaySelectable,\n selectedDate,\n selectionVariant,\n onSelectionChange,\n ],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n switch (selectionVariant) {\n case \"single\":\n return (\n isSingleSelectionValueType(selectedDate) &&\n dateAdapter.isSame(selectedDate as TDate, date, \"day\")\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) =>\n dateAdapter.isSame(element, date, \"day\"),\n )\n );\n default:\n return false;\n }\n },\n [dateAdapter, selectionVariant, selectedDate],\n );\n\n const getDefaultFocusedDate = () => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection<TDate>(selectedDate)\n ) {\n if (selectedDate?.startDate && isDayVisible(selectedDate.startDate)) {\n return selectedDate.startDate;\n }\n if (selectedDate?.endDate && isDayVisible(selectedDate.endDate)) {\n return selectedDate.endDate;\n }\n } else if (\n selectionVariant === \"multiselect\" &&\n Array.isArray(selectedDate)\n ) {\n // return first selected day in visible month\n const selectionInMonth = selectedDate\n .filter((day) => isDayVisible(day))\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (\n selectedDate &&\n selectionVariant === \"single\" &&\n !isDateRangeSelection(selectedDate) &&\n !Array.isArray(selectedDate) &&\n isDayVisible(selectedDate)\n ) {\n return selectedDate;\n }\n // Defaults\n if (\n isDaySelectable?.(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n return dateAdapter.today(timezone);\n }\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable?.(visibleDay));\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n };\n\n const [focusedDate, setFocusedDateState] = useControlled({\n controlled: focusedDateProp,\n default: useMemo(getDefaultFocusedDate, []),\n name: \"Calendar\",\n state: \"focusedDate\",\n });\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent | null, date: TDate | null) => {\n if (focusedDateRef && event?.target instanceof HTMLElement) {\n focusedDateRef.current = event.target;\n }\n if (\n date &&\n ((focusedDate && dateAdapter.isSame(date, focusedDate, \"day\")) ||\n isOutsideAllowedDates(date))\n ) {\n return;\n }\n setFocusedDateState(date);\n onFocusedDateChange?.(event, date);\n },\n [\n dateAdapter,\n focusedDate,\n focusedDateRef,\n isOutsideAllowedDates,\n onFocusedDateChange,\n ],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [dateAdapter, hoveredDate],\n );\n\n const getFocusableDates = useCallback(() => {\n const focusableDates = [];\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection<TDate>(selectedDate)\n ) {\n if (selectedDate?.startDate && isDayVisible(selectedDate.startDate)) {\n focusableDates.push(selectedDate.startDate);\n } else if (selectedDate?.endDate && isDayVisible(selectedDate.endDate)) {\n focusableDates.push(selectedDate.endDate);\n }\n } else if (\n selectionVariant === \"multiselect\" &&\n Array.isArray(selectedDate)\n ) {\n // return first selected day in visible month\n const selectionInMonth = selectedDate\n .filter((day) => isDayVisible(day))\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n focusableDates.push(selectionInMonth[0]);\n }\n } else if (\n selectionVariant === \"single\" &&\n !isDateRangeSelection(selectedDate) &&\n !Array.isArray(selectedDate) &&\n selectedDate &&\n isDayVisible(selectedDate)\n ) {\n focusableDates.push(selectedDate);\n }\n if (\n focusedDate &&\n visibleMonth &&\n dateAdapter.isSame(focusedDate, visibleMonth, \"month\")\n ) {\n focusableDates.push(focusedDate);\n return focusableDates;\n }\n // Defaults\n if (\n focusableDates.length === 0 &&\n isDaySelectable(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n focusableDates.push(dateAdapter.today(timezone));\n }\n if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));\n if (firstSelectableDate) {\n focusableDates.push(firstSelectableDate);\n }\n }\n return focusableDates;\n }, [\n dateAdapter,\n focusedDate,\n isDaySelectable,\n isDayVisible,\n selectedDate,\n selectionVariant,\n timezone,\n visibleMonth,\n ]);\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n dateAdapter.isValid(selectedDate.startDate) &&\n dateAdapter.isValid(selectedDate.endDate) &&\n !isOutsideAllowedDates(selectedDate.startDate) &&\n !isOutsideAllowedDates(selectedDate.endDate)\n ) {\n return (\n dateAdapter.compare(date, selectedDate.startDate) > 0 &&\n dateAdapter.compare(date, selectedDate.endDate) < 0\n );\n }\n return false;\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n dateAdapter.isValid(selectedDate.startDate) &&\n !dateAdapter.isValid(selectedDate.endDate) &&\n !isOutsideAllowedDates(selectedDate.startDate) &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, selectedDate.startDate) > 0 &&\n ((dateAdapter.compare(date, selectedDate.startDate) > 0 &&\n dateAdapter.compare(date, hoveredDate) < 0) ||\n dateAdapter.isSame(date, hoveredDate, \"day\"));\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n },\n [\n dateAdapter,\n isOutsideAllowedDates,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n dateAdapter.isValid(selectedDate.startDate) &&\n !isOutsideAllowedDates(selectedDate.startDate)\n ) {\n return dateAdapter.isSame(selectedDate.startDate, date, \"day\");\n }\n return false;\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(selectedDate) &&\n dateAdapter.isValid(selectedDate.endDate) &&\n !isOutsideAllowedDates(selectedDate.endDate)\n ) {\n return dateAdapter.isSame(selectedDate.endDate, date, \"day\");\n }\n return false;\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isHoveredOffset = useCallback(\n (date: TDate) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n dateAdapter.compare(date, startDate) >= 0 &&\n dateAdapter.compare(date, endDate) <= 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n\n return false;\n },\n [\n dateAdapter,\n getStartDateOffset,\n getEndDateOffset,\n hoveredDate,\n isDaySelectable,\n selectionVariant,\n ],\n );\n\n return useMemo(\n () => ({\n state: {\n focusedDate,\n focusedDateRef,\n hoveredDate,\n selectedDate,\n focusableDates: getFocusableDates(),\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n },\n }),\n [\n selectedDate,\n focusedDate,\n focusedDateRef,\n getFocusableDates,\n hoveredDate,\n isSelected,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n setHoveredDate,\n setSelectedDate,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: {\n date: TDate;\n}) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","generateDatesForMonth","useMemo","useCalendarContext","clsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselContext.js","sources":["../src/carousel/CarouselContext.tsx"],"sourcesContent":["import { createContext, useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useEffect, useReducer } from \"react\";\nimport {\n type CarouselReducerDispatch,\n type CarouselReducerState,\n carouselReducer,\n} from \"./CarouselReducer\";\n\nexport const CarouselStateContext = createContext<CarouselReducerState>(\n \"CarouselStateContext\",\n {\n slides: new Map(),\n activeSlideIndex: 0,\n visibleSlides: 1,\n focusedSlideIndex: 0,\n carouselId: undefined,\n },\n);\nexport const CarouselDispatchContext = createContext<CarouselReducerDispatch>(\n \"CarouselDispatchContext\",\n () => {\n return;\n },\n);\n\nexport function CarouselProvider({\n children,\n activeSlideIndex: activeSlideIndexProp,\n defaultActiveSlideIndex = 0,\n visibleSlides = 1,\n id,\n}: {\n children: ReactNode;\n activeSlideIndex?: number;\n defaultActiveSlideIndex?: number;\n visibleSlides?: number;\n id?: string;\n}) {\n const [activeSlideIndex, setActiveSlideIndex] = useControlled({\n controlled: activeSlideIndexProp,\n default: defaultActiveSlideIndex,\n name: \"Carousel\",\n state: \"activeSlideIndex\",\n });\n const [state, dispatch] = useReducer(carouselReducer, {\n slides: new Map(),\n focusedSlideIndex: activeSlideIndex,\n activeSlideIndex,\n visibleSlides,\n carouselId: id,\n });\n\n useEffect(() => {\n dispatch({\n type: \"updateSlideCount\",\n payload: visibleSlides,\n });\n }, [visibleSlides]);\n\n useEffect(() => {\n dispatch({\n type: \"moveToIndex\",\n payload: activeSlideIndex,\n });\n }, [activeSlideIndex]);\n\n return (\n <CarouselStateContext.Provider value={state}>\n <CarouselDispatchContext.Provider value={dispatch}>\n {children}\n </CarouselDispatchContext.Provider>\n </CarouselStateContext.Provider>\n );\n}\n"],"names":["createContext","useControlled","useReducer","carouselReducer","useEffect","jsx"],"mappings":";;;;;;;AAQO,MAAM,oBAAuB,GAAAA,kBAAA;AAAA,EAClC,sBAAA;AAAA,EACA;AAAA,IACE,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,gBAAkB,EAAA,CAAA;AAAA,IAClB,aAAe,EAAA,CAAA;AAAA,IACf,iBAAmB,EAAA,CAAA;AAAA,IACnB,UAAY,EAAA,KAAA;AAAA;AAEhB;AACO,MAAM,uBAA0B,GAAAA,kBAAA;AAAA,EACrC,yBAAA;AAAA,EACA,MAAM;AACJ,IAAA;AAAA;AAEJ;AAEO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,QAAA;AAAA,EACA,gBAAkB,EAAA,oBAAA;AAAA,EAClB,uBAA0B,GAAA,CAAA;AAAA,EAC1B,aAAgB,GAAA,CAAA;AAAA,EAChB;AACF,CAMG,EAAA;AACD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IAC5D,UAAY,EAAA,oBAAA;AAAA,IACZ,OAAS,EAAA,uBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,iBAAWC,+BAAiB,EAAA;AAAA,IACpD,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,iBAAmB,EAAA,gBAAA;AAAA,IACnB,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAAC,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,kBAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,uBACGC,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,KAAA,EACpC,QAAC,kBAAAA,cAAA,CAAA,uBAAA,CAAwB,QAAxB,EAAA,EAAiC,KAAO,EAAA,QAAA,EACtC,UACH,CACF,EAAA,CAAA;AAEJ;;;;;;"}
1
+ {"version":3,"file":"CarouselContext.js","sources":["../src/carousel/CarouselContext.tsx"],"sourcesContent":["import { createContext, useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useEffect, useReducer } from \"react\";\nimport {\n type CarouselReducerDispatch,\n type CarouselReducerState,\n carouselReducer,\n} from \"./CarouselReducer\";\n\nexport const CarouselStateContext = createContext<CarouselReducerState>(\n \"CarouselStateContext\",\n {\n slides: new Map(),\n activeSlideIndex: 0,\n visibleSlides: 1,\n focusedSlideIndex: 0,\n carouselId: undefined,\n },\n);\nexport const CarouselDispatchContext = createContext<CarouselReducerDispatch>(\n \"CarouselDispatchContext\",\n () => {\n return;\n },\n);\n\nexport function CarouselProvider({\n children,\n activeSlideIndex: activeSlideIndexProp,\n defaultActiveSlideIndex = 0,\n visibleSlides = 1,\n id,\n}: {\n children: ReactNode;\n activeSlideIndex?: number;\n defaultActiveSlideIndex?: number;\n visibleSlides?: number;\n id?: string;\n}) {\n const [activeSlideIndex, setActiveSlideIndex] = useControlled({\n controlled: activeSlideIndexProp,\n default: defaultActiveSlideIndex,\n name: \"Carousel\",\n state: \"activeSlideIndex\",\n });\n const [state, dispatch] = useReducer(carouselReducer, {\n slides: new Map(),\n focusedSlideIndex: activeSlideIndex,\n activeSlideIndex,\n visibleSlides,\n carouselId: id,\n });\n\n useEffect(() => {\n dispatch({\n type: \"updateSlideCount\",\n payload: visibleSlides,\n });\n }, [visibleSlides]);\n\n useEffect(() => {\n dispatch({\n type: \"moveToIndex\",\n payload: activeSlideIndex,\n });\n }, [activeSlideIndex]);\n\n return (\n <CarouselStateContext.Provider value={state}>\n <CarouselDispatchContext.Provider value={dispatch}>\n {children}\n </CarouselDispatchContext.Provider>\n </CarouselStateContext.Provider>\n );\n}\n"],"names":["createContext","useControlled","useReducer","carouselReducer","useEffect","jsx"],"mappings":";;;;;;;AAQO,MAAM,oBAAuB,GAAAA,kBAAA;AAAA,EAClC,sBAAA;AAAA,EACA;AAAA,IACE,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,gBAAkB,EAAA,CAAA;AAAA,IAClB,aAAe,EAAA,CAAA;AAAA,IACf,iBAAmB,EAAA,CAAA;AAAA,IACnB,UAAY,EAAA;AAAA;AAEhB;AACO,MAAM,uBAA0B,GAAAA,kBAAA;AAAA,EACrC,yBAAA;AAAA,EACA,MAAM;AACJ,IAAA;AAAA;AAEJ;AAEO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,QAAA;AAAA,EACA,gBAAkB,EAAA,oBAAA;AAAA,EAClB,uBAA0B,GAAA,CAAA;AAAA,EAC1B,aAAgB,GAAA,CAAA;AAAA,EAChB;AACF,CAMG,EAAA;AACD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IAC5D,UAAY,EAAA,oBAAA;AAAA,IACZ,OAAS,EAAA,uBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,iBAAWC,+BAAiB,EAAA;AAAA,IACpD,MAAA,sBAAY,GAAI,EAAA;AAAA,IAChB,iBAAmB,EAAA,gBAAA;AAAA,IACnB,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAAC,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,kBAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,GACH,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,uBACGC,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,KAAA,EACpC,QAAC,kBAAAA,cAAA,CAAA,uBAAA,CAAwB,QAAxB,EAAA,EAAiC,KAAO,EAAA,QAAA,EACtC,UACH,CACF,EAAA,CAAA;AAEJ;;;;;;"}