@salt-ds/lab 1.0.0-alpha.67 → 1.0.0-alpha.69

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 (547) hide show
  1. package/CHANGELOG.md +179 -0
  2. package/css/salt-lab.css +24 -190
  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 -8
  139. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  140. package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
  141. package/dist-cjs/list/Highlighter.js.map +1 -1
  142. package/dist-cjs/list/List.js.map +1 -1
  143. package/dist-cjs/list/ListItem.js.map +1 -1
  144. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  145. package/dist-cjs/list/useList.js +0 -1
  146. package/dist-cjs/list/useList.js.map +1 -1
  147. package/dist-cjs/list/useListHeight.js.map +1 -1
  148. package/dist-cjs/list-deprecated/ListBase.js +1 -3
  149. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  150. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  151. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  152. package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
  153. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  154. package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  155. package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
  156. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  157. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  158. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  159. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  160. package/dist-cjs/list-next/ListNext.js.map +1 -1
  161. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  162. package/dist-cjs/list-next/useList.js.map +1 -1
  163. package/dist-cjs/localization-provider/LocalizationProvider.js +5 -2
  164. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
  165. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  166. package/dist-cjs/metric/MetricContent.js.map +1 -1
  167. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  168. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  169. package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
  170. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  171. package/dist-cjs/query-input/internal/usePopperStatus.js +2 -2
  172. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  173. package/dist-cjs/query-input/useQueryInput.js +0 -1
  174. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  175. package/dist-cjs/responsive/OverflowReducer.js +1 -3
  176. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  177. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  178. package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
  179. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  180. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  181. package/dist-cjs/responsive/useOverflowLayout.js +0 -3
  182. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  183. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  184. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  185. package/dist-cjs/responsive/useWidth.js.map +1 -1
  186. package/dist-cjs/responsive/utils.js.map +1 -1
  187. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  188. package/dist-cjs/tabs/Tab.js.map +1 -1
  189. package/dist-cjs/tabs/Tabs.js.map +1 -1
  190. package/dist-cjs/tabs/Tabstrip.js +0 -1
  191. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  192. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  193. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  194. package/dist-cjs/tabs/useEditableItem.js.map +1 -1
  195. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  196. package/dist-cjs/tabs/useSelection.js.map +1 -1
  197. package/dist-cjs/tabs/useTabs.js.map +1 -1
  198. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  199. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  200. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  201. package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
  202. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
  203. package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
  204. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  205. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  206. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  207. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  208. package/dist-cjs/tabs-next/hooks/useCollection.js +2 -2
  209. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  210. package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
  211. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  212. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  213. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  214. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  215. package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
  216. package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
  217. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  218. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  219. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  220. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  221. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +1 -1
  222. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  223. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  224. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  225. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  226. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  227. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  228. package/dist-cjs/tree/Tree.js +2 -6
  229. package/dist-cjs/tree/Tree.js.map +1 -1
  230. package/dist-cjs/tree/TreeNode.js.map +1 -1
  231. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
  232. package/dist-cjs/tree/useTree.js.map +1 -1
  233. package/dist-cjs/utils/useClickOutside.js.map +1 -1
  234. package/dist-cjs/utils/useSlideSelection.js.map +1 -1
  235. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  236. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  237. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  238. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  239. package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
  240. package/dist-es/calendar/Calendar.js +24 -9
  241. package/dist-es/calendar/Calendar.js.map +1 -1
  242. package/dist-es/calendar/CalendarGrid.js +59 -83
  243. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  244. package/dist-es/calendar/CalendarMonthHeader.css.js +4 -0
  245. package/dist-es/calendar/CalendarMonthHeader.css.js.map +1 -0
  246. package/dist-es/calendar/CalendarMonthHeader.js +46 -0
  247. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -0
  248. package/dist-es/calendar/CalendarNavigation.js +30 -39
  249. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  250. package/dist-es/calendar/CalendarWeekHeader.js +2 -6
  251. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  252. package/dist-es/calendar/internal/CalendarContext.js +3 -1
  253. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  254. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  255. package/dist-es/calendar/internal/CalendarDay.js +90 -78
  256. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  257. package/dist-es/calendar/internal/CalendarMonth.js +13 -23
  258. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  259. package/dist-es/calendar/internal/useFocusManagement.js +5 -6
  260. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  261. package/dist-es/calendar/internal/utils.js +8 -12
  262. package/dist-es/calendar/internal/utils.js.map +1 -1
  263. package/dist-es/calendar/useCalendar.js +72 -112
  264. package/dist-es/calendar/useCalendar.js.map +1 -1
  265. package/dist-es/calendar/useCalendarDay.js +21 -18
  266. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  267. package/dist-es/calendar/useCalendarSelection.js +146 -34
  268. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  269. package/dist-es/carousel/CarouselContext.js.map +1 -1
  270. package/dist-es/carousel/CarouselControls.js.map +1 -1
  271. package/dist-es/carousel/CarouselReducer.js.map +1 -1
  272. package/dist-es/carousel/CarouselSlide.js.map +1 -1
  273. package/dist-es/carousel/CarouselSlider.js.map +1 -1
  274. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  275. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  276. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  277. package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
  278. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  279. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  280. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  281. package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
  282. package/dist-es/cascading-menu/stateChangeTypes.js +0 -1
  283. package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
  284. package/dist-es/color-chooser/Color.js.map +1 -1
  285. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  286. package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
  287. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  288. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  289. package/dist-es/color-chooser/HexInput.js.map +1 -1
  290. package/dist-es/color-chooser/Swatch.js.map +1 -1
  291. package/dist-es/color-chooser/Swatches.js.map +1 -1
  292. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  293. package/dist-es/combo-box/ComboBox.js +0 -2
  294. package/dist-es/combo-box/ComboBox.js.map +1 -1
  295. package/dist-es/combo-box/useCombobox.js.map +1 -1
  296. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +1 -5
  297. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  298. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +1 -5
  299. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  300. package/dist-es/combo-box-deprecated/internal/useComboBox.js +1 -1
  301. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  302. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -1
  303. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  304. package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  305. package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
  306. package/dist-es/common-hooks/collectionProvider.js +1 -1
  307. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  308. package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
  309. package/dist-es/common-hooks/selectionTypes.js.map +1 -1
  310. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  311. package/dist-es/common-hooks/useCollectionItems.js +1 -1
  312. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  313. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  314. package/dist-es/common-hooks/useKeyboardNavigation.js +1 -1
  315. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  316. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  317. package/dist-es/common-hooks/useSelection.js.map +1 -1
  318. package/dist-es/common-hooks/useTypeahead.js +1 -1
  319. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  320. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  321. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  322. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  323. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  324. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  325. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  326. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  327. package/dist-es/date-input/DateInputRange.js +61 -51
  328. package/dist-es/date-input/DateInputRange.js.map +1 -1
  329. package/dist-es/date-input/DateInputSingle.js +34 -19
  330. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  331. package/dist-es/date-picker/DatePicker.js +9 -1
  332. package/dist-es/date-picker/DatePicker.js.map +1 -1
  333. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  334. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  335. package/dist-es/date-picker/DatePickerHelperText.css.js +4 -0
  336. package/dist-es/date-picker/DatePickerHelperText.css.js.map +1 -0
  337. package/dist-es/date-picker/DatePickerHelperText.js +34 -0
  338. package/dist-es/date-picker/DatePickerHelperText.js.map +1 -0
  339. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  340. package/dist-es/date-picker/DatePickerOverlayProvider.js +41 -17
  341. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  342. package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
  343. package/dist-es/date-picker/DatePickerRangeGridPanel.js +245 -0
  344. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -0
  345. package/dist-es/date-picker/DatePickerRangeInput.js +39 -7
  346. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  347. package/dist-es/date-picker/DatePickerRangePanel.js +190 -34
  348. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  349. package/dist-es/date-picker/DatePickerSingleGridPanel.js +253 -0
  350. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -0
  351. package/dist-es/date-picker/DatePickerSingleInput.js +13 -5
  352. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  353. package/dist-es/date-picker/DatePickerSinglePanel.js +8 -107
  354. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  355. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  356. package/dist-es/date-picker/useDatePicker.js +71 -11
  357. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  358. package/dist-es/date-picker/useFocusOut.js +41 -0
  359. package/dist-es/date-picker/useFocusOut.js.map +1 -0
  360. package/dist-es/date-picker/useKeyboard.js +4 -5
  361. package/dist-es/date-picker/useKeyboard.js.map +1 -1
  362. package/dist-es/deck-item/DeckItem.js.map +1 -1
  363. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  364. package/dist-es/dropdown/Dropdown.js +0 -1
  365. package/dist-es/dropdown/Dropdown.js.map +1 -1
  366. package/dist-es/dropdown/DropdownBase.js +1 -2
  367. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  368. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  369. package/dist-es/dropdown/useClickAway.js.map +1 -1
  370. package/dist-es/dropdown/useDropdown.js.map +1 -1
  371. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  372. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  373. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  374. package/dist-es/form-field-legacy/StatusIndicator.js +1 -1
  375. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  376. package/dist-es/formatted-input/FormattedInput.js +1 -1
  377. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  378. package/dist-es/index.js +4 -4
  379. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  380. package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
  381. package/dist-es/list/Highlighter.js.map +1 -1
  382. package/dist-es/list/List.js.map +1 -1
  383. package/dist-es/list/ListItem.js.map +1 -1
  384. package/dist-es/list/VirtualizedList.js.map +1 -1
  385. package/dist-es/list/useList.js +0 -1
  386. package/dist-es/list/useList.js.map +1 -1
  387. package/dist-es/list/useListHeight.js.map +1 -1
  388. package/dist-es/list-deprecated/ListBase.js +1 -3
  389. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  390. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  391. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  392. package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
  393. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  394. package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  395. package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
  396. package/dist-es/list-deprecated/useList.js.map +1 -1
  397. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  398. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  399. package/dist-es/list-next/ListItemNext.js.map +1 -1
  400. package/dist-es/list-next/ListNext.js.map +1 -1
  401. package/dist-es/list-next/ListNextContext.js.map +1 -1
  402. package/dist-es/list-next/useList.js.map +1 -1
  403. package/dist-es/localization-provider/LocalizationProvider.js +6 -3
  404. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
  405. package/dist-es/menu-button/MenuButton.js.map +1 -1
  406. package/dist-es/metric/MetricContent.js +2 -2
  407. package/dist-es/metric/MetricContent.js.map +1 -1
  408. package/dist-es/number-input/NumberInput.js +1 -1
  409. package/dist-es/number-input/NumberInput.js.map +1 -1
  410. package/dist-es/number-input/useNumberInput.js.map +1 -1
  411. package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
  412. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  413. package/dist-es/query-input/internal/usePopperStatus.js +2 -2
  414. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  415. package/dist-es/query-input/useQueryInput.js +0 -1
  416. package/dist-es/query-input/useQueryInput.js.map +1 -1
  417. package/dist-es/responsive/OverflowReducer.js +1 -3
  418. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  419. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  420. package/dist-es/responsive/useInstantCollapse.js.map +1 -1
  421. package/dist-es/responsive/useOverflow.js +1 -1
  422. package/dist-es/responsive/useOverflow.js.map +1 -1
  423. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  424. package/dist-es/responsive/useOverflowLayout.js +0 -3
  425. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  426. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  427. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  428. package/dist-es/responsive/useWidth.js.map +1 -1
  429. package/dist-es/responsive/utils.js.map +1 -1
  430. package/dist-es/search-input/SearchInput.js.map +1 -1
  431. package/dist-es/tabs/Tab.js.map +1 -1
  432. package/dist-es/tabs/Tabs.js.map +1 -1
  433. package/dist-es/tabs/Tabstrip.js +0 -1
  434. package/dist-es/tabs/Tabstrip.js.map +1 -1
  435. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js +1 -1
  436. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  437. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  438. package/dist-es/tabs/useEditableItem.js.map +1 -1
  439. package/dist-es/tabs/useKeyboardNavigation.js +1 -1
  440. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  441. package/dist-es/tabs/useSelection.js.map +1 -1
  442. package/dist-es/tabs/useTabs.js.map +1 -1
  443. package/dist-es/tabs/useTabstrip.js.map +1 -1
  444. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  445. package/dist-es/tabs-next/TabNext.js.map +1 -1
  446. package/dist-es/tabs-next/TabNextAction.js.map +1 -1
  447. package/dist-es/tabs-next/TabNextContext.js.map +1 -1
  448. package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
  449. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  450. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  451. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  452. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  453. package/dist-es/tabs-next/hooks/useCollection.js +2 -2
  454. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  455. package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
  456. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  457. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  458. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  459. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  460. package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
  461. package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
  462. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  463. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  464. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  465. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  466. package/dist-es/tokenized-input-next/useTokenizedInputNext.js +1 -1
  467. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  468. package/dist-es/toolbar/Tooltray.js.map +1 -1
  469. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  470. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  471. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  472. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  473. package/dist-es/tree/Tree.js +2 -6
  474. package/dist-es/tree/Tree.js.map +1 -1
  475. package/dist-es/tree/TreeNode.js.map +1 -1
  476. package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
  477. package/dist-es/tree/useTree.js.map +1 -1
  478. package/dist-es/utils/useClickOutside.js.map +1 -1
  479. package/dist-es/utils/useSlideSelection.js.map +1 -1
  480. package/dist-es/window/ElectronWindow.js +1 -1
  481. package/dist-es/window/ElectronWindow.js.map +1 -1
  482. package/dist-types/calendar/Calendar.d.ts +22 -3
  483. package/dist-types/calendar/CalendarGrid.d.ts +19 -3
  484. package/dist-types/calendar/CalendarMonthHeader.d.ts +18 -0
  485. package/dist-types/calendar/CalendarNavigation.d.ts +9 -0
  486. package/dist-types/calendar/index.d.ts +1 -0
  487. package/dist-types/calendar/internal/CalendarDay.d.ts +25 -6
  488. package/dist-types/calendar/internal/CalendarMonth.d.ts +2 -6
  489. package/dist-types/calendar/internal/utils.d.ts +3 -7
  490. package/dist-types/calendar/useCalendar.d.ts +34 -30
  491. package/dist-types/calendar/useCalendarDay.d.ts +3 -2
  492. package/dist-types/calendar/useCalendarSelection.d.ts +60 -8
  493. package/dist-types/date-input/DateInputRange.d.ts +12 -8
  494. package/dist-types/date-input/DateInputSingle.d.ts +12 -8
  495. package/dist-types/date-picker/DatePicker.d.ts +14 -6
  496. package/dist-types/date-picker/DatePickerContext.d.ts +29 -1
  497. package/dist-types/date-picker/DatePickerHelperText.d.ts +4 -0
  498. package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +9 -2
  499. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +17 -0
  500. package/dist-types/date-picker/DatePickerRangeInput.d.ts +1 -0
  501. package/dist-types/date-picker/DatePickerRangePanel.d.ts +24 -20
  502. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +65 -0
  503. package/dist-types/date-picker/DatePickerSingleInput.d.ts +1 -0
  504. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +6 -48
  505. package/dist-types/date-picker/index.d.ts +4 -1
  506. package/dist-types/date-picker/useDatePicker.d.ts +29 -9
  507. package/dist-types/date-picker/useFocusOut.d.ts +9 -0
  508. package/dist-types/date-picker/useKeyboard.d.ts +7 -1
  509. package/dist-types/index.d.ts +0 -1
  510. package/package.json +3 -4
  511. package/dist-cjs/calendar/CalendarGrid.css.js +0 -6
  512. package/dist-cjs/calendar/CalendarGrid.css.js.map +0 -1
  513. package/dist-cjs/combo-box-deprecated/internal/getAnnouncement.js +0 -8
  514. package/dist-cjs/combo-box-deprecated/internal/getAnnouncement.js.map +0 -1
  515. package/dist-cjs/splitter/SplitHandle.css.js +0 -6
  516. package/dist-cjs/splitter/SplitHandle.css.js.map +0 -1
  517. package/dist-cjs/splitter/SplitHandle.js +0 -60
  518. package/dist-cjs/splitter/SplitHandle.js.map +0 -1
  519. package/dist-cjs/splitter/SplitPanel.css.js +0 -6
  520. package/dist-cjs/splitter/SplitPanel.css.js.map +0 -1
  521. package/dist-cjs/splitter/SplitPanel.js +0 -37
  522. package/dist-cjs/splitter/SplitPanel.js.map +0 -1
  523. package/dist-cjs/splitter/Splitter.js +0 -31
  524. package/dist-cjs/splitter/Splitter.js.map +0 -1
  525. package/dist-cjs/splitter/utils.js +0 -18
  526. package/dist-cjs/splitter/utils.js.map +0 -1
  527. package/dist-es/calendar/CalendarGrid.css.js +0 -4
  528. package/dist-es/calendar/CalendarGrid.css.js.map +0 -1
  529. package/dist-es/combo-box-deprecated/internal/getAnnouncement.js +0 -6
  530. package/dist-es/combo-box-deprecated/internal/getAnnouncement.js.map +0 -1
  531. package/dist-es/splitter/SplitHandle.css.js +0 -4
  532. package/dist-es/splitter/SplitHandle.css.js.map +0 -1
  533. package/dist-es/splitter/SplitHandle.js +0 -58
  534. package/dist-es/splitter/SplitHandle.js.map +0 -1
  535. package/dist-es/splitter/SplitPanel.css.js +0 -4
  536. package/dist-es/splitter/SplitPanel.css.js.map +0 -1
  537. package/dist-es/splitter/SplitPanel.js +0 -35
  538. package/dist-es/splitter/SplitPanel.js.map +0 -1
  539. package/dist-es/splitter/Splitter.js +0 -27
  540. package/dist-es/splitter/Splitter.js.map +0 -1
  541. package/dist-es/splitter/utils.js +0 -15
  542. package/dist-es/splitter/utils.js.map +0 -1
  543. package/dist-types/splitter/SplitHandle.d.ts +0 -21
  544. package/dist-types/splitter/SplitPanel.d.ts +0 -10
  545. package/dist-types/splitter/Splitter.d.ts +0 -22
  546. package/dist-types/splitter/index.d.ts +0 -4
  547. package/dist-types/splitter/utils.d.ts +0 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,184 @@
1
1
  # @salt-ds/lab
2
2
 
3
+ ## 1.0.0-alpha.69
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [f107d63]
8
+ - @salt-ds/core@1.46.1
9
+
10
+ ## 1.0.0-alpha.68
11
+
12
+ ### Minor Changes
13
+
14
+ - 4a240fd: - Removed `Splitter` component from labs, replaced with `@salt-ds/react-resizable-panels-theme` package.
15
+
16
+ ### Patch Changes
17
+
18
+ - 1a50f7b: - `DatePickerSinglePanel` has been deprecated, use `DatePickerSingleGridPanel` instead.
19
+
20
+ - `DatePickerSinglePanel` has been renamed to `DatePickerSingleGridPanel` to align the naming with `DatePickerRangeGridPanel`. This component now provides up to 12 `Calendars` within a panel via the `numberOfVisibleMonths` and `columns` props, enabling multi-month date selection (defaults to 1 visible calendar).
21
+
22
+ ```
23
+ <DatePicker
24
+ selectionVariant="single"
25
+ >
26
+ <DatePickerTrigger>
27
+ <DatePickerSingleInput />
28
+ </DatePickerTrigger>
29
+ <DatePickerOverlay>
30
+ <DatePickerSingleGridPanel numberOfVisibleMonths={12} columns={3} />
31
+ </DatePickerOverlay>
32
+ </DatePicker>
33
+ ```
34
+
35
+ - `DatePickerRangeGridPanel` has been added. It provides up to 12 Calendars within a panel via the `numberOfVisibleMonths` and `columns` props, enabling multi-month date range selection (defaults to 2 visible calendars and 2 columns).
36
+
37
+ ```
38
+ <DatePicker
39
+ selectionVariant="range"
40
+ >
41
+ <DatePickerTrigger>
42
+ <DatePickerRangeInput />
43
+ </DatePickerTrigger>
44
+ <DatePickerOverlay>
45
+ <DatePickerRangeGridPanel numberOfVisibleMonths={12} columns={3} />
46
+ </DatePickerOverlay>
47
+ </DatePicker>
48
+ ```
49
+
50
+ Note: `DatePickerRangePanel` remains unchanged and provides a dual `Calendar` date view, with individual month/year dropdowns for the start and end date range.
51
+
52
+ - `CalendarWeekHeader` is now rendered by `CalendarGrid` and can be customized using the `CalendarWeekHeaderProps` prop. If you currently use `CalendarWeekHeader`, you may see two day of week headers, so delete the version from your code.
53
+ - `CalendarMonthHeader` is now rendered by `CalendarGrid` and can be customized using the `CalendarMonthHeaderProps` prop.
54
+ - A new `CalendarMonthHeader` component has been added, used by `CalendarGrid` to display a multi-month grid of `Calendar` components.
55
+ - `DatePickerRangePanel` props `StartCalendarWeekHeaderProps` and `EndCalendarWeekHeaderProps` removed.
56
+ Pass props to `CalendarWeekHeader` using `StartCalendarGridProps -> CalendarWeekHeaderProps` and `EndCalendarGridProps -> CalendarWeekHeaderProps`.
57
+
58
+ ```
59
+ <DatePicker
60
+ selectionVariant="range"
61
+ >
62
+ <DatePickerTrigger>
63
+ <DatePickerRangeInput />
64
+ </DatePickerTrigger>
65
+ <DatePickerOverlay>
66
+ <DatePickerRangePanel
67
+ StartCalendarGridProps={{ CalendarWeekHeaderProps: { "data-test-id" : "some value" }}}
68
+ EndCalendarGridProps={{ CalendarWeekHeaderProps: { "data-test-id" : "some value" }}}
69
+ />
70
+ </DatePickerOverlay>
71
+ </DatePicker>
72
+ ```
73
+
74
+ - `DatePicker` now supports `isDayDisabled`, `isDayUnselectable`, and `isDayHighlighted` props, rather than providing them through the `Calendar` props.
75
+ - The `DatePickerOverlayProvider` prop `onOpenChange` has changed signature and `event` has been removed, to create a consistent API with other components.
76
+
77
+ ```diff
78
+ - onOpenChange?: ( newOpen: boolean, event?: Event, reason?: DatePickerOpenChangeReason) => void;
79
+ + onOpenChange?: ( newOpen: boolean, reason?: DatePickerOpenChangeReason) => void;
80
+ ```
81
+
82
+ - DatePicker helper text simplified and resizing bug fixed
83
+
84
+ In our DatePicker examples, we demonstrate how to include helper text when using a DatePicker within a FormField.
85
+ The design requires the helper text to move inside the panel when the DatePicker is opened.
86
+ However, this caused a resizing issue with the original date input.
87
+
88
+ To resolve this, we have refactored the implementation by introducing a `DatePickerHelperText` component.
89
+ This component is used as a child of the `DatePicker`, streamlining the process and removing the need for users to manage the visibility of the helper text themselves.
90
+
91
+ ```diff
92
+ - <FormField validationStatus={validationStatus}>
93
+ - <FormLabel>Select a date</FormLabel>
94
+ - <DatePicker
95
+ - selectionVariant={"single"}
96
+ - >
97
+ - <DatePickerTrigger>
98
+ - <DatePickerSingleInput />
99
+ - </DatePickerTrigger>
100
+ - <DatePickerOverlay>
101
+ - <DatePickerSingleGridPanel
102
+ - helperText={helperText}
103
+ - />
104
+ - <DatePickerHelperText>{helperText}</DatePickerHelperText>
105
+ - </DatePickerOverlay>
106
+ - </DatePicker>
107
+ - {!open ? <FormHelperText>{helperText}</FormHelperText> : null}
108
+ - </FormField>
109
+ + <FormField validationStatus={validationStatus}>
110
+ + <FormLabel>Select a date</FormLabel>
111
+ + <DatePicker
112
+ + selectionVariant={"single"}
113
+ + >
114
+ + <DatePickerTrigger>
115
+ + <DatePickerSingleInput />
116
+ + </DatePickerTrigger>
117
+ + <DatePickerOverlay>
118
+ + <DatePickerSingleGridPanel
119
+ + helperText={helperText}
120
+ + />
121
+ + </DatePickerOverlay>
122
+ + <DatePickerHelperText>{helperText}</DatePickerHelperText>
123
+ + </DatePicker>
124
+ + </FormField>
125
+ ```
126
+
127
+ - Added `useFocusOut` floating-ui middleware to close the overlay upon focus out.
128
+ - Fixed a bug where the change event was triggered by blur when the entered date had not changed.
129
+ - Fixed the styling of disabled and unselectable days, which previously used the same style.
130
+ - Fixed invalid date ranges so they do not render as selected.
131
+ - Fixed a bug for helper text to ensure it wraps during overflow.
132
+ - Timezone prop added to date components, `DatePicker`, `DatePickerSingleInput`, `DatePickerRangeInput`, `DateInputSingle`, `DateInputRange`, `Calendar`.
133
+ The `timezone` prop defines the timezone for the date components, when working with dates and times, it is important to ensure that the correct timezone is applied to avoid confusion and errors.
134
+ If not working with times, the timezone can still affect the date displayed, as the date may be interpreted in a different timezone than intended.
135
+ For this reason, when working with dates, it is recommended to always set the timezone to ensure that the date is displayed correctly.
136
+ "UTC" is a cross-platform standard and is the most common timezone used in programming but may require you to convert to your local timezone for display purposes.
137
+ If `timezone` is not set the timezone will be defined by the default behaviour of your configured date framework.
138
+ The `timezone` prop can be set to one of the following values:
139
+ - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate` or "default" if no date is defined.
140
+ - If set to "default", the default timezone of the date library will be used.
141
+ - If set to "system", the local system's timezone will be applied.
142
+ - If set to "UTC", the time will be returned in UTC.
143
+ - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.
144
+ Timezone is not supported by v3 of `date-fns`, so if you are using `date-fns` v3, the timezone will be set to "default" by default. If you require timezone support, use a date framework such as `luxon` or `dayjs`.
145
+ - `Calendar` previously could render custom contents but did not provide a way to change the highlight styles, so `renderDayContents` has been replaced with `render`, passed through `CalendarDayProps`.
146
+
147
+ ```
148
+ function renderDayButton({
149
+ className,
150
+ date,
151
+ status,
152
+ ...rest
153
+ }: renderCalendarDayProps<DateFrameworkType>): ReactElement {
154
+ return (
155
+ <button
156
+ {...rest}
157
+ className={clsx([{ buttonWithDot: !status.outOfRange }, className])}
158
+ >
159
+ <span className={clsx({ dot: !status.outOfRange })}>
160
+ {dateAdapter.format(date, "D")}
161
+ </span>
162
+ {status.today ? <span className={"today"} /> : null}
163
+ </button>
164
+ );
165
+ }
166
+
167
+ return (
168
+ <Calendar hideOutOfRangeDates {...args}>
169
+ <CalendarNavigation />
170
+ <CalendarGrid CalendarDayProps={{ render: renderDayButton }} />
171
+ </Calendar>
172
+ );
173
+ ```
174
+
175
+ - Updated dependencies [1a50f7b]
176
+ - Updated dependencies [8b4cbfb]
177
+ - Updated dependencies [bbdf4a6]
178
+ - Updated dependencies [ec1736e]
179
+ - @salt-ds/date-adapters@0.1.0-alpha.4
180
+ - @salt-ds/core@1.46.0
181
+
3
182
  ## 1.0.0-alpha.67
4
183
 
5
184
  ### Minor Changes
package/css/salt-lab.css CHANGED
@@ -213,6 +213,12 @@
213
213
  position: relative;
214
214
  }
215
215
 
216
+ /* src/calendar/CalendarMonthHeader.css */
217
+ .saltCalendarMonthHeader {
218
+ width: 100%;
219
+ text-align: center;
220
+ }
221
+
216
222
  /* src/calendar/CalendarNavigation.css */
217
223
  .saltCalendarNavigation {
218
224
  display: grid;
@@ -1194,6 +1200,15 @@
1194
1200
  margin-left: var(--salt-spacing-100);
1195
1201
  }
1196
1202
 
1203
+ /* src/date-picker/DatePickerHelperText.css */
1204
+ .saltDatePickerHelperText {
1205
+ visibility: visible;
1206
+ margin-top: var(--salt-spacing-75);
1207
+ }
1208
+ .saltDatePickerHelperText-open {
1209
+ visibility: hidden;
1210
+ }
1211
+
1197
1212
  /* src/date-picker/DatePickerOverlay.css */
1198
1213
  .saltDatePickerOverlay {
1199
1214
  background: var(--salt-container-primary-background);
@@ -1211,6 +1226,7 @@
1211
1226
  .saltDatePickerOverlay {
1212
1227
  background: var(--salt-container-primary-background);
1213
1228
  border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);
1229
+ border-radius: var(--salt-palette-corner, 0);
1214
1230
  overflow: hidden;
1215
1231
  overflow-y: auto;
1216
1232
  position: relative;
@@ -1223,7 +1239,7 @@
1223
1239
  width: min-content;
1224
1240
  gap: 1px;
1225
1241
  }
1226
- .saltDatePickerPanel-header {
1242
+ .saltDatePickerPanel-container > .saltDatePickerPanel-header {
1227
1243
  padding: var(--salt-spacing-100);
1228
1244
  }
1229
1245
 
@@ -2773,189 +2789,6 @@
2773
2789
  display: none;
2774
2790
  }
2775
2791
 
2776
- /* src/splitter/SplitHandle.css */
2777
- .saltSplitHandle {
2778
- --splitHandle-size: var(--salt-size-thickness-400, calc(var(--salt-size-border) * 4));
2779
- --splitHandle-borderWidth: var(--salt-size-thickness-100, var(--salt-size-border));
2780
- --splitHandle-borderColor: var(--salt-separable-secondary-borderColor);
2781
- --splitHandle-borderStyle: var(--salt-separable-borderStyle);
2782
- --splitHandle-dot-background: var(--salt-separable-foreground);
2783
- --splitHandle-dot-background-hover: var(--salt-separable-foreground-hover);
2784
- --splitHandle-dot-background-active: var(--salt-separable-foreground-active);
2785
- position: relative;
2786
- display: inline-flex;
2787
- justify-content: center;
2788
- align-items: center;
2789
- gap: 2px;
2790
- box-sizing: content-box;
2791
- background: var(--splitHandle-background);
2792
- }
2793
- .saltSplitHandle-bordered,
2794
- .saltSplitHandle-variant-primary {
2795
- --splitHandle-background: var(--salt-container-primary-background);
2796
- --splitHandle-background-hover: var(--salt-separable-background-hover);
2797
- --splitHandle-background-active: var(--salt-separable-background-active);
2798
- }
2799
- .saltSplitHandle-variant-secondary {
2800
- --splitHandle-background: var(--salt-container-secondary-background);
2801
- --splitHandle-background-hover: var(--salt-separable-background-hover);
2802
- --splitHandle-background-active: var(--salt-separable-background-active);
2803
- }
2804
- .saltSplitHandle-variant-tertiary {
2805
- --splitHandle-background: var(--salt-container-tertiary-background);
2806
- --splitHandle-background-hover: var(--salt-separable-background-hover);
2807
- --splitHandle-background-active: var(--salt-separable-background-active);
2808
- }
2809
- .saltSplitHandle-variant-transparent {
2810
- --splitHandle-background: var(--salt-separable-background);
2811
- --splitHandle-background-hover: var(--salt-separable-background-hover);
2812
- --splitHandle-background-active: var(--salt-separable-background-active);
2813
- }
2814
- .saltSplitHandle[data-resize-handle-state=hover] {
2815
- background: var(--splitHandle-background-hover);
2816
- }
2817
- .saltSplitHandle[data-resize-handle-state=drag] {
2818
- --splitHandle-background: var(--splitHandle-background-active);
2819
- }
2820
- .saltSplitHandle[data-panel-group-direction=horizontal] {
2821
- flex-direction: column;
2822
- width: var(--splitHandle-size);
2823
- }
2824
- .saltSplitHandle[data-panel-group-direction=vertical] {
2825
- flex-direction: row;
2826
- height: var(--splitHandle-size);
2827
- }
2828
- .saltSplitHandle[data-panel-group-direction=horizontal]::after {
2829
- content: "";
2830
- position: absolute;
2831
- left: -10px;
2832
- right: -10px;
2833
- top: 0;
2834
- bottom: 0;
2835
- }
2836
- .saltSplitHandle[data-panel-group-direction=vertical]::after {
2837
- content: "";
2838
- position: absolute;
2839
- left: 0;
2840
- right: 0;
2841
- top: -10px;
2842
- bottom: -10px;
2843
- }
2844
- .saltSplitHandle:focus-visible {
2845
- outline-style: var(--salt-focused-outlineStyle);
2846
- outline-width: var(--salt-focused-outlineWidth);
2847
- outline-color: var(--salt-focused-outlineColor);
2848
- outline-offset: var(--salt-focused-outlineOffset);
2849
- }
2850
- .saltSplitHandle-border-top {
2851
- border-top-width: var(--splitHandle-borderWidth);
2852
- border-top-color: var(--splitHandle-borderColor);
2853
- border-top-style: var(--splitHandle-borderStyle);
2854
- border-bottom-width: var(--splitHandle-borderWidth);
2855
- border-bottom-color: transparent;
2856
- border-bottom-style: var(--splitHandle-borderStyle);
2857
- }
2858
- .saltSplitHandle-border-bottom {
2859
- border-top-width: var(--splitHandle-borderWidth);
2860
- border-top-color: transparent;
2861
- border-top-style: var(--splitHandle-borderStyle);
2862
- border-bottom-width: var(--splitHandle-borderWidth);
2863
- border-bottom-color: var(--splitHandle-borderColor);
2864
- border-bottom-style: var(--splitHandle-borderStyle);
2865
- }
2866
- .saltSplitHandle-border-top-bottom {
2867
- border-top-width: var(--splitHandle-borderWidth);
2868
- border-top-color: var(--splitHandle-borderColor);
2869
- border-top-style: var(--splitHandle-borderStyle);
2870
- border-bottom-width: var(--splitHandle-borderWidth);
2871
- border-bottom-color: var(--splitHandle-borderColor);
2872
- border-bottom-style: var(--splitHandle-borderStyle);
2873
- }
2874
- .saltSplitHandle-border-left {
2875
- border-left-width: var(--splitHandle-borderWidth);
2876
- border-left-color: var(--splitHandle-borderColor);
2877
- border-left-style: var(--splitHandle-borderStyle);
2878
- border-right-width: var(--splitHandle-borderWidth);
2879
- border-right-color: transparent;
2880
- border-right-style: var(--splitHandle-borderStyle);
2881
- }
2882
- .saltSplitHandle-border-right {
2883
- border-left-width: var(--splitHandle-borderWidth);
2884
- border-left-color: transparent;
2885
- border-left-style: var(--splitHandle-borderStyle);
2886
- border-right-width: var(--splitHandle-borderWidth);
2887
- border-right-color: var(--splitHandle-borderColor);
2888
- border-right-style: var(--splitHandle-borderStyle);
2889
- }
2890
- .saltSplitHandle-border-left-right {
2891
- border-left-width: var(--splitHandle-borderWidth);
2892
- border-left-color: var(--splitHandle-borderColor);
2893
- border-left-style: var(--splitHandle-borderStyle);
2894
- border-right-width: var(--splitHandle-borderWidth);
2895
- border-right-color: var(--splitHandle-borderColor);
2896
- border-right-style: var(--splitHandle-borderStyle);
2897
- }
2898
- .saltSplitHandle[data-panel-group-direction=horizontal] + div[data-panel-size="0.0"] + .saltSplitHandle[data-panel-group-direction=horizontal] {
2899
- margin-left: -1px;
2900
- }
2901
- .saltSplitHandle[data-panel-group-direction=vertical] + div[data-panel-size="0.0"] + .saltSplitHandle[data-panel-group-direction=vertical] {
2902
- margin-top: -1px;
2903
- }
2904
- @supports selector(:has(*)) {
2905
- .saltSplitPanel:first-of-type[data-panel-size="0.0"] + .saltSplitHandle-bordered[data-panel-group-direction=horizontal] {
2906
- margin-left: -1px;
2907
- }
2908
- .saltSplitPanel:first-of-type[data-panel-size="0.0"] + .saltSplitHandle-bordered[data-panel-group-direction=vertical] {
2909
- margin-top: -1px;
2910
- }
2911
- .saltSplitHandle-bordered[data-panel-group-direction=horizontal]:has(+ .saltSplitPanel:last-of-type[data-panel-size="0.0"]) {
2912
- margin-right: -1px;
2913
- }
2914
- .saltSplitHandle-bordered[data-panel-group-direction=vertical]:has(+ .saltSplitPanel:last-of-type[data-panel-size="0.0"]) {
2915
- margin-bottom: -1px;
2916
- }
2917
- }
2918
- .saltSplitHandle-dot {
2919
- background: var(--splitHandle-dot-background);
2920
- }
2921
- .saltSplitHandle[data-resize-handle-state=hover] > .saltSplitHandle-dot {
2922
- background: var(--splitHandle-dot-background-hover);
2923
- }
2924
- .saltSplitHandle[data-resize-handle-state=drag] > .saltSplitHandle-dot {
2925
- background: var(--splitHandle-dot-background-active);
2926
- }
2927
- .saltSplitHandle[data-panel-group-direction=horizontal] > .saltSplitHandle-dot {
2928
- width: 2px;
2929
- height: 1px;
2930
- }
2931
- .saltSplitHandle[data-panel-group-direction=vertical] > .saltSplitHandle-dot {
2932
- height: 2px;
2933
- width: 1px;
2934
- }
2935
-
2936
- /* src/splitter/SplitPanel.css */
2937
- .saltSplitPanel {
2938
- box-sizing: border-box;
2939
- background: var(--splitPanel-background);
2940
- }
2941
- .saltSplitPanel[data-panel-size="0.0"] {
2942
- visibility: hidden;
2943
- }
2944
- .saltSplitPanel-primary {
2945
- --splitPanel-background: var(--salt-container-primary-background);
2946
- }
2947
- .saltSplitPanel-secondary {
2948
- --splitPanel-background: var(--salt-container-secondary-background);
2949
- }
2950
- .saltSplitPanel-tertiary {
2951
- --splitPanel-background: var(--salt-container-tertiary-background);
2952
- }
2953
- @supports selector(:has(*)) {
2954
- .saltSplitPanel:has(.saltSplitPanel) {
2955
- background: unset;
2956
- }
2957
- }
2958
-
2959
2792
  /* src/static-list/StaticList.css */
2960
2793
  .saltStaticList {
2961
2794
  overflow-y: auto;
@@ -4291,7 +4124,8 @@
4291
4124
  margin: 0 var(--salt-spacing-50);
4292
4125
  width: 100%;
4293
4126
  }
4294
- .saltCalendarDay:focus-visible {
4127
+ .saltCalendarDay-focused,
4128
+ .saltCalendarDay.saltCalendarDay:focus-visible {
4295
4129
  outline: var(--salt-focused-outline);
4296
4130
  outline-offset: calc(0px - var(--salt-focused-outlineWidth));
4297
4131
  }
@@ -4301,7 +4135,7 @@
4301
4135
  .saltCalendarDay-outOfRange:hover {
4302
4136
  color: var(--salt-content-primary-foreground);
4303
4137
  }
4304
- .saltCalendarDay-outOfRange .saltCalendarDay-today {
4138
+ .saltCalendarDay-outOfRange .saltCalendarDay-today > span:last-of-type {
4305
4139
  border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-secondary-foreground);
4306
4140
  }
4307
4141
  .saltCalendarDay-outOfRange.saltCalendarDay-highlighted:before {
@@ -4370,9 +4204,9 @@
4370
4204
  background: var(--salt-content-secondary-foreground);
4371
4205
  position: absolute;
4372
4206
  }
4373
- .saltCalendarDay-today,
4374
- .saltCalendarDay-today:hover,
4375
- .saltCalendarDay-outOfRange .saltCalendarDay-today:hover {
4207
+ .saltCalendarDay-today > span:last-of-type,
4208
+ .saltCalendarDay-today > span:last-of-type:hover,
4209
+ .saltCalendarDay-outOfRange .saltCalendarDay-today > span:last-of-type:hover {
4376
4210
  border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-accent-borderColor);
4377
4211
  margin-bottom: calc(var(--salt-size-indicator) * -1);
4378
4212
  }
@@ -4494,4 +4328,4 @@
4494
4328
  margin: calc(var(--salt-size-unit) / 2) 0;
4495
4329
  }
4496
4330
 
4497
- /* src/c73aefdf-62ff-4b8b-8ac0-ab77a4c4d85e.css */
4331
+ /* src/647bddf6-32e8-4e00-a034-3790297bd4ad.css */
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbsContext.js","sources":["../src/breadcrumbs/internal/BreadcrumbsContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport interface BreadcrumbsContext {\n wrap?: boolean;\n itemsMaxWidth?: number | string;\n itemsMinWidth?: number | string;\n liClass?: string;\n}\n\nexport const BreadcrumbsContext = createContext<BreadcrumbsContext | undefined>(\n undefined,\n);\n\nexport const useBreadcrumbsContext = () => {\n const context = useContext(BreadcrumbsContext);\n if (!context) {\n throw new Error(\n \"BreadcrumbsItem compound components cannot be rendered outside the Breadcrumbs component\",\n );\n }\n return context;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AASO,MAAM,kBAAqB,GAAAA,mBAAA;AAAA,EAChC,KAAA;AACF;AAEO,MAAM,wBAAwB,MAAM;AACzC,EAAM,MAAA,OAAA,GAAUC,iBAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA;AAEF,EAAO,OAAA,OAAA;AACT;;;;;"}
1
+ {"version":3,"file":"BreadcrumbsContext.js","sources":["../src/breadcrumbs/internal/BreadcrumbsContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport interface BreadcrumbsContext {\n wrap?: boolean;\n itemsMaxWidth?: number | string;\n itemsMinWidth?: number | string;\n liClass?: string;\n}\n\nexport const BreadcrumbsContext = createContext<BreadcrumbsContext | undefined>(\n undefined,\n);\n\nexport const useBreadcrumbsContext = () => {\n const context = useContext(BreadcrumbsContext);\n if (!context) {\n throw new Error(\n \"BreadcrumbsItem compound components cannot be rendered outside the Breadcrumbs component\",\n );\n }\n return context;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AASO,MAAM,kBAAqB,GAAAA,mBAAA;AAAA,EAChC;AACF;AAEO,MAAM,wBAAwB,MAAM;AACzC,EAAM,MAAA,OAAA,GAAUC,iBAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA;AAEF,EAAO,OAAA,OAAA;AACT;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonBar.js","sources":["../src/button-bar/ButtonBar.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n Children,\n type HTMLAttributes,\n type ReactNode,\n forwardRef,\n useMemo,\n} from \"react\";\n\nimport { type ButtonVariant, makePrefixer } from \"@salt-ds/core\";\nimport { ButtonBarContext } from \"./internal/ButtonBarContext\";\nimport { DescendantProvider } from \"./internal/DescendantContext\";\nimport { useDescendants } from \"./internal/useDescendants\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport buttonBarCss from \"./ButtonBar.css\";\n\nexport type PartialRecord<K extends keyof any, T> = Partial<Record<K, T>>;\n\ntype ButtonBarOrderKey = \"order\" | \"alignLeftOrder\" | \"stackOrder\";\nexport type ButtonBarSortOrder = \"asc\" | \"desc\";\n\nexport const DefaultButtonsOrderByVariant: Record<\n ButtonVariant,\n Record<ButtonBarOrderKey, number>\n> = {\n cta: {\n order: 0,\n alignLeftOrder: 1,\n stackOrder: 2,\n },\n primary: {\n order: 1,\n alignLeftOrder: 2,\n stackOrder: 1,\n },\n secondary: {\n order: 2,\n alignLeftOrder: 0,\n stackOrder: 0,\n },\n};\n\ntype OrderedButtonData = { variant?: ButtonVariant } & PartialRecord<\n ButtonBarOrderKey,\n number\n>;\n\nfunction getPriorityForButton(\n item: OrderedButtonData,\n field: ButtonBarOrderKey,\n) {\n const variant = item?.variant || \"primary\";\n return item?.[field] ?? DefaultButtonsOrderByVariant[variant][field];\n}\nconst createComparatorForField = (\n field: ButtonBarOrderKey,\n sort: ButtonBarSortOrder,\n alignLeft: boolean,\n childrenData: Array<OrderedButtonData>,\n) => {\n let equalityResult: number;\n if (field === \"order\" || field === \"stackOrder\") {\n equalityResult = sort === \"asc\" ? 1 : 0;\n } else {\n equalityResult = alignLeft ? 1 : -1;\n }\n\n function createDescComparator(indexA: number, indexB: number) {\n const priorityA = getPriorityForButton(childrenData[indexA], field);\n const priorityB = getPriorityForButton(childrenData[indexB], field);\n if (priorityA == null && priorityB == null) {\n return 0;\n }\n if (priorityA == null) {\n return 1;\n }\n if (priorityB == null) {\n return -1;\n }\n if (priorityA === priorityB) {\n return equalityResult;\n }\n return priorityB - priorityA;\n }\n\n function createAscComparator(indexA: number, indexB: number) {\n return createDescComparator(indexA, indexB) * -1;\n }\n\n return sort === \"asc\" ? createAscComparator : createDescComparator;\n};\n\nfunction alignSecondaryChild(\n orderedChildrenData: Array<OrderedButtonData & { index: number }>,\n sortOrder: ButtonBarSortOrder,\n alignLeft: boolean,\n): { index?: number; align?: \"left\" | \"right\" } {\n const noSecondaryChildren = { index: undefined, align: undefined };\n if (sortOrder === \"asc\" || alignLeft) {\n const firstSecondaryChildIndex = orderedChildrenData.findIndex(\n (childData) => childData.variant === \"secondary\",\n );\n\n if (firstSecondaryChildIndex !== -1) {\n const originalChildIndex =\n orderedChildrenData[firstSecondaryChildIndex].index;\n return { index: originalChildIndex, align: \"right\" };\n }\n return noSecondaryChildren;\n }\n let index = orderedChildrenData.length;\n while (index--) {\n if (orderedChildrenData[index].variant === \"secondary\") {\n return { index: orderedChildrenData[index].index, align: \"left\" };\n }\n }\n return noSecondaryChildren;\n}\n\nexport interface ButtonBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * By default ButtonBar lays buttons from right to left horizontally ordering action buttons by order prop.\n * Use this prop to lay button from left to right instead.\n * Actions buttons will be ordered by alignLeftOrder prop.\n */\n alignLeft?: boolean;\n /**\n * A list of OrderButtons. Required to have some children.\n */\n children: ReactNode;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * By default ButtonBar aligns secondary buttons to the left while displayed horizontally\n * and to the right while aligned left or sorting ascending.\n * Use this prop to disable this behavior.\n */\n disableAutoAlignment?: boolean;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is NOT stacked and aligned left.\n */\n sortAlignLeft?: ButtonBarSortOrder;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is NOT stacked and NOT aligned left.\n */\n sortOrder?: ButtonBarSortOrder;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is stacked.\n */\n sortStackOrder?: ButtonBarSortOrder;\n /**\n * When the viewport is equal to or smaller than the breakpoint the buttons will be stacked vertically.\n * Alternatively pass a screen width number in pixels.\n * Use `0` to disable this feature. Defaults to 'xs'.\n * Actions buttons will be ordered by stackOrder prop.\n */\n stackAtBreakpoint?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n}\n\nconst withBaseName = makePrefixer(\"saltButtonBar\");\n\nexport const ButtonBar = forwardRef<HTMLDivElement, ButtonBarProps>(\n function ButtonBar(\n {\n alignLeft = false,\n children: childrenProp,\n className,\n disableAutoAlignment,\n sortAlignLeft = \"desc\",\n sortOrder = \"desc\",\n sortStackOrder = \"desc\",\n stackAtBreakpoint = \"xs\",\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-button-bar\",\n css: buttonBarCss,\n window: targetWindow,\n });\n\n const [childrenData, setChildrenData] = useDescendants<OrderedButtonData>();\n // TODO: we need a mechanism to work with breakpoints.\n const matches = false;\n\n const childrenArray = Children.toArray(childrenProp);\n const childrenIndexes = childrenArray.map((_, index) => index);\n const stackOrderComparator = createComparatorForField(\n \"stackOrder\",\n sortStackOrder,\n alignLeft,\n childrenData,\n );\n const orderComparator = createComparatorForField(\n \"order\",\n sortOrder,\n alignLeft,\n childrenData,\n );\n const alignLeftComparator = createComparatorForField(\n \"alignLeftOrder\",\n sortAlignLeft,\n alignLeft,\n childrenData,\n );\n\n let orderedChildrenIndexes: number[];\n\n if (childrenData.length !== childrenIndexes.length) {\n orderedChildrenIndexes = childrenIndexes;\n } else {\n orderedChildrenIndexes = matches\n ? childrenIndexes.sort(stackOrderComparator)\n : childrenIndexes.sort(\n alignLeft ? alignLeftComparator : orderComparator,\n );\n }\n\n let secondaryChildAlignment: { index?: number; align?: \"left\" | \"right\" } =\n {\n index: undefined,\n align: undefined,\n };\n if (!disableAutoAlignment) {\n secondaryChildAlignment = alignSecondaryChild(\n orderedChildrenIndexes.map((index) => ({\n index,\n ...childrenData[index],\n })),\n sortOrder,\n alignLeft,\n );\n }\n\n const hasSecondaryButtons = childrenData.some(\n (buttonData) => buttonData.variant === \"secondary\",\n );\n\n const orderedChildren = orderedChildrenIndexes.map(\n (index) => childrenArray[index],\n );\n\n const buttonBarContextValue = useMemo(\n () => ({\n matches,\n alignedIndex: secondaryChildAlignment.index,\n align: secondaryChildAlignment.align,\n }),\n [matches, secondaryChildAlignment.align, secondaryChildAlignment.index],\n );\n\n return (\n <ButtonBarContext.Provider value={buttonBarContextValue}>\n <DescendantProvider items={childrenData} setItems={setChildrenData}>\n <div\n aria-label=\"button bar\"\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"stacked\")]: matches,\n [withBaseName(\"alignLeft\")]: alignLeft,\n [withBaseName(\"autoAligning\")]:\n hasSecondaryButtons && !disableAutoAlignment,\n },\n className,\n )}\n ref={ref}\n role=\"region\"\n {...rest}\n >\n {orderedChildren}\n </div>\n </DescendantProvider>\n </ButtonBarContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ButtonBar","useWindow","useComponentCssInjection","buttonBarCss","useDescendants","Children","useMemo","jsx","ButtonBarContext","DescendantProvider","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"ButtonBar.js","sources":["../src/button-bar/ButtonBar.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n Children,\n type HTMLAttributes,\n type ReactNode,\n forwardRef,\n useMemo,\n} from \"react\";\n\nimport { type ButtonVariant, makePrefixer } from \"@salt-ds/core\";\nimport { ButtonBarContext } from \"./internal/ButtonBarContext\";\nimport { DescendantProvider } from \"./internal/DescendantContext\";\nimport { useDescendants } from \"./internal/useDescendants\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport buttonBarCss from \"./ButtonBar.css\";\n\nexport type PartialRecord<K extends keyof any, T> = Partial<Record<K, T>>;\n\ntype ButtonBarOrderKey = \"order\" | \"alignLeftOrder\" | \"stackOrder\";\nexport type ButtonBarSortOrder = \"asc\" | \"desc\";\n\nexport const DefaultButtonsOrderByVariant: Record<\n ButtonVariant,\n Record<ButtonBarOrderKey, number>\n> = {\n cta: {\n order: 0,\n alignLeftOrder: 1,\n stackOrder: 2,\n },\n primary: {\n order: 1,\n alignLeftOrder: 2,\n stackOrder: 1,\n },\n secondary: {\n order: 2,\n alignLeftOrder: 0,\n stackOrder: 0,\n },\n};\n\ntype OrderedButtonData = { variant?: ButtonVariant } & PartialRecord<\n ButtonBarOrderKey,\n number\n>;\n\nfunction getPriorityForButton(\n item: OrderedButtonData,\n field: ButtonBarOrderKey,\n) {\n const variant = item?.variant || \"primary\";\n return item?.[field] ?? DefaultButtonsOrderByVariant[variant][field];\n}\nconst createComparatorForField = (\n field: ButtonBarOrderKey,\n sort: ButtonBarSortOrder,\n alignLeft: boolean,\n childrenData: Array<OrderedButtonData>,\n) => {\n let equalityResult: number;\n if (field === \"order\" || field === \"stackOrder\") {\n equalityResult = sort === \"asc\" ? 1 : 0;\n } else {\n equalityResult = alignLeft ? 1 : -1;\n }\n\n function createDescComparator(indexA: number, indexB: number) {\n const priorityA = getPriorityForButton(childrenData[indexA], field);\n const priorityB = getPriorityForButton(childrenData[indexB], field);\n if (priorityA == null && priorityB == null) {\n return 0;\n }\n if (priorityA == null) {\n return 1;\n }\n if (priorityB == null) {\n return -1;\n }\n if (priorityA === priorityB) {\n return equalityResult;\n }\n return priorityB - priorityA;\n }\n\n function createAscComparator(indexA: number, indexB: number) {\n return createDescComparator(indexA, indexB) * -1;\n }\n\n return sort === \"asc\" ? createAscComparator : createDescComparator;\n};\n\nfunction alignSecondaryChild(\n orderedChildrenData: Array<OrderedButtonData & { index: number }>,\n sortOrder: ButtonBarSortOrder,\n alignLeft: boolean,\n): { index?: number; align?: \"left\" | \"right\" } {\n const noSecondaryChildren = { index: undefined, align: undefined };\n if (sortOrder === \"asc\" || alignLeft) {\n const firstSecondaryChildIndex = orderedChildrenData.findIndex(\n (childData) => childData.variant === \"secondary\",\n );\n\n if (firstSecondaryChildIndex !== -1) {\n const originalChildIndex =\n orderedChildrenData[firstSecondaryChildIndex].index;\n return { index: originalChildIndex, align: \"right\" };\n }\n return noSecondaryChildren;\n }\n let index = orderedChildrenData.length;\n while (index--) {\n if (orderedChildrenData[index].variant === \"secondary\") {\n return { index: orderedChildrenData[index].index, align: \"left\" };\n }\n }\n return noSecondaryChildren;\n}\n\nexport interface ButtonBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * By default ButtonBar lays buttons from right to left horizontally ordering action buttons by order prop.\n * Use this prop to lay button from left to right instead.\n * Actions buttons will be ordered by alignLeftOrder prop.\n */\n alignLeft?: boolean;\n /**\n * A list of OrderButtons. Required to have some children.\n */\n children: ReactNode;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * By default ButtonBar aligns secondary buttons to the left while displayed horizontally\n * and to the right while aligned left or sorting ascending.\n * Use this prop to disable this behavior.\n */\n disableAutoAlignment?: boolean;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is NOT stacked and aligned left.\n */\n sortAlignLeft?: ButtonBarSortOrder;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is NOT stacked and NOT aligned left.\n */\n sortOrder?: ButtonBarSortOrder;\n /**\n * By default ButtonBar sorts buttons in descending order.\n * Use this prop to change that when the button bar is stacked.\n */\n sortStackOrder?: ButtonBarSortOrder;\n /**\n * When the viewport is equal to or smaller than the breakpoint the buttons will be stacked vertically.\n * Alternatively pass a screen width number in pixels.\n * Use `0` to disable this feature. Defaults to 'xs'.\n * Actions buttons will be ordered by stackOrder prop.\n */\n stackAtBreakpoint?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n}\n\nconst withBaseName = makePrefixer(\"saltButtonBar\");\n\nexport const ButtonBar = forwardRef<HTMLDivElement, ButtonBarProps>(\n function ButtonBar(\n {\n alignLeft = false,\n children: childrenProp,\n className,\n disableAutoAlignment,\n sortAlignLeft = \"desc\",\n sortOrder = \"desc\",\n sortStackOrder = \"desc\",\n stackAtBreakpoint = \"xs\",\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-button-bar\",\n css: buttonBarCss,\n window: targetWindow,\n });\n\n const [childrenData, setChildrenData] = useDescendants<OrderedButtonData>();\n // TODO: we need a mechanism to work with breakpoints.\n const matches = false;\n\n const childrenArray = Children.toArray(childrenProp);\n const childrenIndexes = childrenArray.map((_, index) => index);\n const stackOrderComparator = createComparatorForField(\n \"stackOrder\",\n sortStackOrder,\n alignLeft,\n childrenData,\n );\n const orderComparator = createComparatorForField(\n \"order\",\n sortOrder,\n alignLeft,\n childrenData,\n );\n const alignLeftComparator = createComparatorForField(\n \"alignLeftOrder\",\n sortAlignLeft,\n alignLeft,\n childrenData,\n );\n\n let orderedChildrenIndexes: number[];\n\n if (childrenData.length !== childrenIndexes.length) {\n orderedChildrenIndexes = childrenIndexes;\n } else {\n orderedChildrenIndexes = matches\n ? childrenIndexes.sort(stackOrderComparator)\n : childrenIndexes.sort(\n alignLeft ? alignLeftComparator : orderComparator,\n );\n }\n\n let secondaryChildAlignment: { index?: number; align?: \"left\" | \"right\" } =\n {\n index: undefined,\n align: undefined,\n };\n if (!disableAutoAlignment) {\n secondaryChildAlignment = alignSecondaryChild(\n orderedChildrenIndexes.map((index) => ({\n index,\n ...childrenData[index],\n })),\n sortOrder,\n alignLeft,\n );\n }\n\n const hasSecondaryButtons = childrenData.some(\n (buttonData) => buttonData.variant === \"secondary\",\n );\n\n const orderedChildren = orderedChildrenIndexes.map(\n (index) => childrenArray[index],\n );\n\n const buttonBarContextValue = useMemo(\n () => ({\n matches,\n alignedIndex: secondaryChildAlignment.index,\n align: secondaryChildAlignment.align,\n }),\n [matches, secondaryChildAlignment.align, secondaryChildAlignment.index],\n );\n\n return (\n <ButtonBarContext.Provider value={buttonBarContextValue}>\n <DescendantProvider items={childrenData} setItems={setChildrenData}>\n <div\n aria-label=\"button bar\"\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"stacked\")]: matches,\n [withBaseName(\"alignLeft\")]: alignLeft,\n [withBaseName(\"autoAligning\")]:\n hasSecondaryButtons && !disableAutoAlignment,\n },\n className,\n )}\n ref={ref}\n role=\"region\"\n {...rest}\n >\n {orderedChildren}\n </div>\n </DescendantProvider>\n </ButtonBarContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ButtonBar","useWindow","useComponentCssInjection","buttonBarCss","useDescendants","Children","useMemo","jsx","ButtonBarContext","DescendantProvider","clsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrderedButton.js","sources":["../src/button-bar/OrderedButton.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { forwardRef, useContext } from \"react\";\n\nimport {\n Button,\n type ButtonProps,\n capitalize,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { ButtonBarContext } from \"./internal/ButtonBarContext\";\nimport { useDescendant } from \"./internal/useDescendant\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport orderedButtonCss from \"./OrderedButton.css\";\n\nexport interface OrderedButtonProps extends ButtonProps {\n /**\n * Aligns the button (and any buttons before/after) it on the left/right\n * of the container\n */\n align?: \"left\" | \"right\";\n /**\n * The order the button will be rendered when NOT stacked and the button bar is aligned left order.\n * Buttons are ordered in descending order by default and then by their source order.\n * This defaults to 1 for `CTA`, 2 for `regular` and 0 for `secondary`\n */\n alignLeftOrder?: number;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * The order the button will be rendered when NOT stacked. Buttons are ordered\n * in descending order by default and then by their source order.\n * This defaults to 0 for `CTA`, 1 for `regular` and 2 for `secondary`\n */\n order?: number;\n /**\n * The order the button will be rendered when stacked. Buttons are ordered\n * in descending order by default and then by their source order.\n * This defaults to 2 for `CTA`, 1 for `regular` and 0 for `secondary`\n */\n stackOrder?: number;\n}\n\nconst withBasename = makePrefixer(\"saltOrderedButton\");\n\nexport const OrderedButton = forwardRef<HTMLButtonElement, OrderedButtonProps>(\n function OrderedButton(\n {\n className,\n align: alignProp,\n order,\n alignLeftOrder,\n stackOrder,\n variant,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-ordered-button\",\n css: orderedButtonCss,\n window: targetWindow,\n });\n\n const index = useDescendant({ order, stackOrder, alignLeftOrder, variant });\n const {\n matches,\n align: alignContext,\n alignedIndex,\n } = useContext(ButtonBarContext);\n\n const alignFromParent = index === alignedIndex ? alignContext : undefined;\n const align = alignProp || alignFromParent;\n\n return (\n <Button\n className={clsx(\n withBasename(),\n {\n [withBasename(`align${align ? capitalize(align) : \"\"}`)]:\n align && !matches,\n [withBasename(\"stacked\")]: matches,\n },\n className,\n )}\n ref={ref}\n variant={variant}\n {...restProps}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OrderedButton","useWindow","useComponentCssInjection","orderedButtonCss","useDescendant","useContext","ButtonBarContext","jsx","Button","clsx","capitalize"],"mappings":";;;;;;;;;;;;AA+CA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,KAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,QAAQC,2BAAc,CAAA,EAAE,OAAO,UAAY,EAAA,cAAA,EAAgB,SAAS,CAAA;AAC1E,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP;AAAA,KACF,GAAIC,iBAAWC,iCAAgB,CAAA;AAE/B,IAAM,MAAA,eAAA,GAAkB,KAAU,KAAA,YAAA,GAAe,YAAe,GAAA,KAAA,CAAA;AAChE,IAAA,MAAM,QAAQ,SAAa,IAAA,eAAA;AAE3B,IACE,uBAAAC,cAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,CAAQ,KAAA,EAAA,KAAA,GAAQC,eAAW,CAAA,KAAK,CAAI,GAAA,EAAE,CAAE,CAAA,CAAC,GACrD,KAAA,IAAS,CAAC,OAAA;AAAA,YACZ,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACA,OAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"OrderedButton.js","sources":["../src/button-bar/OrderedButton.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { forwardRef, useContext } from \"react\";\n\nimport {\n Button,\n type ButtonProps,\n capitalize,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { ButtonBarContext } from \"./internal/ButtonBarContext\";\nimport { useDescendant } from \"./internal/useDescendant\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport orderedButtonCss from \"./OrderedButton.css\";\n\nexport interface OrderedButtonProps extends ButtonProps {\n /**\n * Aligns the button (and any buttons before/after) it on the left/right\n * of the container\n */\n align?: \"left\" | \"right\";\n /**\n * The order the button will be rendered when NOT stacked and the button bar is aligned left order.\n * Buttons are ordered in descending order by default and then by their source order.\n * This defaults to 1 for `CTA`, 2 for `regular` and 0 for `secondary`\n */\n alignLeftOrder?: number;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * The order the button will be rendered when NOT stacked. Buttons are ordered\n * in descending order by default and then by their source order.\n * This defaults to 0 for `CTA`, 1 for `regular` and 2 for `secondary`\n */\n order?: number;\n /**\n * The order the button will be rendered when stacked. Buttons are ordered\n * in descending order by default and then by their source order.\n * This defaults to 2 for `CTA`, 1 for `regular` and 0 for `secondary`\n */\n stackOrder?: number;\n}\n\nconst withBasename = makePrefixer(\"saltOrderedButton\");\n\nexport const OrderedButton = forwardRef<HTMLButtonElement, OrderedButtonProps>(\n function OrderedButton(\n {\n className,\n align: alignProp,\n order,\n alignLeftOrder,\n stackOrder,\n variant,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-ordered-button\",\n css: orderedButtonCss,\n window: targetWindow,\n });\n\n const index = useDescendant({ order, stackOrder, alignLeftOrder, variant });\n const {\n matches,\n align: alignContext,\n alignedIndex,\n } = useContext(ButtonBarContext);\n\n const alignFromParent = index === alignedIndex ? alignContext : undefined;\n const align = alignProp || alignFromParent;\n\n return (\n <Button\n className={clsx(\n withBasename(),\n {\n [withBasename(`align${align ? capitalize(align) : \"\"}`)]:\n align && !matches,\n [withBasename(\"stacked\")]: matches,\n },\n className,\n )}\n ref={ref}\n variant={variant}\n {...restProps}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OrderedButton","useWindow","useComponentCssInjection","orderedButtonCss","useDescendant","useContext","ButtonBarContext","jsx","Button","clsx","capitalize"],"mappings":";;;;;;;;;;;;AA+CA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,KAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,QAAQC,2BAAc,CAAA,EAAE,OAAO,UAAY,EAAA,cAAA,EAAgB,SAAS,CAAA;AAC1E,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP;AAAA,KACF,GAAIC,iBAAWC,iCAAgB,CAAA;AAE/B,IAAM,MAAA,eAAA,GAAkB,KAAU,KAAA,YAAA,GAAe,YAAe,GAAA,MAAA;AAChE,IAAA,MAAM,QAAQ,SAAa,IAAA,eAAA;AAE3B,IACE,uBAAAC,cAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,CAAQ,KAAA,EAAA,KAAA,GAAQC,eAAW,CAAA,KAAK,CAAI,GAAA,EAAE,CAAE,CAAA,CAAC,GACrD,KAAA,IAAS,CAAC,OAAA;AAAA,YACZ,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACA,OAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA;AAGN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDescendant.js","sources":["../src/button-bar/internal/useDescendant.ts"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n// Copied from https://gist.github.com/ryanflorence/10e9387f633f9d2e6f444a9bddaabf6e\nimport { useContext, useRef } from \"react\";\n\nimport { DescendantContext } from \"./DescendantContext\";\n\nexport function useDescendant(descendant: Record<string, any>): number {\n const { assigning, setItems } = useContext(DescendantContext);\n const index = useRef(-1);\n\n useIsomorphicLayoutEffect(() => {\n if (assigning?.current && setItems) {\n setItems((old) => {\n index.current = old.length;\n return old.concat(descendant);\n });\n }\n });\n\n // first render its wrong, after a forceUpdate in parent useIsomorphicLayoutEffect it's\n // right, and its all synchronous so we don't get any flashing\n return index.current;\n}\n"],"names":["useContext","DescendantContext","useRef","useIsomorphicLayoutEffect"],"mappings":";;;;;;AAMO,SAAS,cAAc,UAAyC,EAAA;AACrE,EAAA,MAAM,EAAE,SAAA,EAAW,QAAS,EAAA,GAAIA,iBAAWC,mCAAiB,CAAA;AAC5D,EAAM,MAAA,KAAA,GAAQC,aAAO,CAAE,CAAA,CAAA;AAEvB,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,YAAW,QAAU,EAAA;AAClC,MAAA,QAAA,CAAS,CAAC,GAAQ,KAAA;AAChB,QAAA,KAAA,CAAM,UAAU,GAAI,CAAA,MAAA;AACpB,QAAO,OAAA,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,OAC7B,CAAA;AAAA;AACH,GACD,CAAA;AAID,EAAA,OAAO,KAAM,CAAA,OAAA;AACf;;;;"}
1
+ {"version":3,"file":"useDescendant.js","sources":["../src/button-bar/internal/useDescendant.ts"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n// Copied from https://gist.github.com/ryanflorence/10e9387f633f9d2e6f444a9bddaabf6e\nimport { useContext, useRef } from \"react\";\n\nimport { DescendantContext } from \"./DescendantContext\";\n\nexport function useDescendant(descendant: Record<string, any>): number {\n const { assigning, setItems } = useContext(DescendantContext);\n const index = useRef(-1);\n\n useIsomorphicLayoutEffect(() => {\n if (assigning?.current && setItems) {\n setItems((old) => {\n index.current = old.length;\n return old.concat(descendant);\n });\n }\n });\n\n // first render its wrong, after a forceUpdate in parent useIsomorphicLayoutEffect it's\n // right, and its all synchronous so we don't get any flashing\n return index.current;\n}\n"],"names":["useContext","DescendantContext","useRef","useIsomorphicLayoutEffect"],"mappings":";;;;;;AAMO,SAAS,cAAc,UAAyC,EAAA;AACrE,EAAA,MAAM,EAAE,SAAA,EAAW,QAAS,EAAA,GAAIA,iBAAWC,mCAAiB,CAAA;AAC5D,EAAM,MAAA,KAAA,GAAQC,aAAO,EAAE,CAAA;AAEvB,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,YAAW,QAAU,EAAA;AAClC,MAAA,QAAA,CAAS,CAAC,GAAQ,KAAA;AAChB,QAAA,KAAA,CAAM,UAAU,GAAI,CAAA,MAAA;AACpB,QAAO,OAAA,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,OAC7B,CAAA;AAAA;AACH,GACD,CAAA;AAID,EAAA,OAAO,KAAM,CAAA,OAAA;AACf;;;;"}
@@ -28,20 +28,34 @@ const Calendar = react.forwardRef(
28
28
  defaultSelectedDate,
29
29
  visibleMonth: visibleMonthProp,
30
30
  defaultVisibleMonth,
31
+ onFocusedDateChange,
31
32
  onSelectionChange,
32
33
  onVisibleMonthChange,
33
34
  hideOutOfRangeDates,
35
+ focusedDate,
36
+ focusedDateRef,
34
37
  isDayUnselectable,
35
38
  isDayHighlighted,
36
39
  isDayDisabled,
37
- locale,
38
40
  minDate,
39
41
  maxDate,
42
+ numberOfVisibleMonths = 1,
40
43
  selectionVariant,
41
44
  onHoveredDateChange,
42
45
  hoveredDate,
46
+ timezone: timezoneProp,
43
47
  ...propsRest
44
48
  } = props;
49
+ let timezone = "default";
50
+ if (timezoneProp) {
51
+ timezone = timezoneProp;
52
+ } else if (selectionVariant === "range") {
53
+ const defaultRangeTimezoneDate = (selectedDate == null ? void 0 : selectedDate.startDate) ?? (selectedDate == null ? void 0 : selectedDate.endDate) ?? (defaultSelectedDate == null ? void 0 : defaultSelectedDate.startDate) ?? (defaultSelectedDate == null ? void 0 : defaultSelectedDate.endDate);
54
+ timezone = defaultRangeTimezoneDate ? dateAdapter.getTimezone(defaultRangeTimezoneDate) : "default";
55
+ } else if (selectionVariant === "single") {
56
+ const defaultSingleTimezoneDate = selectedDate ?? defaultSelectedDate;
57
+ timezone = defaultSingleTimezoneDate ? dateAdapter.getTimezone(defaultSingleTimezoneDate) : "default";
58
+ }
45
59
  let startDateOffset;
46
60
  let endDateOffset;
47
61
  let rest;
@@ -50,6 +64,7 @@ const Calendar = react.forwardRef(
50
64
  } else {
51
65
  rest = propsRest;
52
66
  }
67
+ const defaultFocusedDateRef = react.useRef(null);
53
68
  const useCalendarProps = {
54
69
  selectedDate,
55
70
  defaultSelectedDate,
@@ -57,25 +72,25 @@ const Calendar = react.forwardRef(
57
72
  defaultVisibleMonth,
58
73
  onSelectionChange,
59
74
  onVisibleMonthChange,
75
+ focusedDate,
76
+ focusedDateRef: focusedDateRef !== void 0 ? focusedDateRef : defaultFocusedDateRef,
60
77
  isDayUnselectable,
61
78
  isDayHighlighted,
62
79
  isDayDisabled,
63
- locale,
64
80
  minDate,
65
81
  maxDate,
82
+ numberOfVisibleMonths,
66
83
  selectionVariant,
84
+ onFocusedDateChange,
67
85
  onHoveredDateChange,
68
86
  hideOutOfRangeDates,
69
87
  hoveredDate,
70
88
  startDateOffset,
71
- endDateOffset
89
+ endDateOffset,
90
+ timezone
72
91
  };
73
92
  const { state, helpers } = useCalendar.useCalendar(useCalendarProps);
74
- const calendarLabel = dateAdapter.format(
75
- state.visibleMonth,
76
- "MMMM YYYY",
77
- locale
78
- );
93
+ const calendarLabel = dateAdapter.format(state.visibleMonth, "MMMM YYYY");
79
94
  return /* @__PURE__ */ jsxRuntime.jsx(
80
95
  CalendarContext.CalendarContext.Provider,
81
96
  {