@salt-ds/lab 1.0.0-alpha.76 → 1.0.0-alpha.78

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 (686) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/css/salt-lab.css +274 -79
  3. package/dist-cjs/app-header/AppHeader.js.map +1 -1
  4. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
  5. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +1 -1
  6. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  7. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  8. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
  9. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
  10. package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
  11. package/dist-cjs/button-bar/OrderedButton.js.map +1 -1
  12. package/dist-cjs/button-bar/internal/ButtonBarContext.js.map +1 -1
  13. package/dist-cjs/button-bar/internal/DescendantContext.js.map +1 -1
  14. package/dist-cjs/button-bar/internal/useDescendant.js.map +1 -1
  15. package/dist-cjs/button-bar/internal/useDescendants.js.map +1 -1
  16. package/dist-cjs/calendar/Calendar.css.js +1 -1
  17. package/dist-cjs/calendar/Calendar.js +11 -2
  18. package/dist-cjs/calendar/Calendar.js.map +1 -1
  19. package/dist-cjs/calendar/CalendarGrid.js +38 -36
  20. package/dist-cjs/calendar/CalendarGrid.js.map +1 -1
  21. package/dist-cjs/calendar/CalendarMonthHeader.js +1 -1
  22. package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -1
  23. package/dist-cjs/calendar/CalendarNavigation.css.js +1 -1
  24. package/dist-cjs/calendar/CalendarNavigation.js +20 -13
  25. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
  26. package/dist-cjs/calendar/CalendarWeekHeader.css.js +1 -1
  27. package/dist-cjs/calendar/CalendarWeekHeader.js +1 -1
  28. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
  29. package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
  30. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  31. package/dist-cjs/calendar/internal/CalendarDay.js +26 -36
  32. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  33. package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
  34. package/dist-cjs/calendar/internal/CalendarMonth.js +30 -9
  35. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  36. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  37. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  38. package/dist-cjs/calendar/useCalendar.js +7 -9
  39. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  40. package/dist-cjs/calendar/useCalendarDay.js +7 -11
  41. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  42. package/dist-cjs/calendar/useCalendarSelection.js +144 -76
  43. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  44. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  45. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  46. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  47. package/dist-cjs/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
  48. package/dist-cjs/cascading-menu/internal/keydownHandlers.js.map +1 -1
  49. package/dist-cjs/cascading-menu/internal/menuPositioning.js.map +1 -1
  50. package/dist-cjs/cascading-menu/internal/stateUtils.js.map +1 -1
  51. package/dist-cjs/cascading-menu/internal/useClickAway.js.map +1 -1
  52. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  53. package/dist-cjs/cascading-menu/internal/useMountedRef.js.map +1 -1
  54. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  55. package/dist-cjs/cascading-menu/internal/useRefsManager.js.map +1 -1
  56. package/dist-cjs/cascading-menu/internal/useStateReducer.js.map +1 -1
  57. package/dist-cjs/cascading-menu/stateChangeTypes.js.map +1 -1
  58. package/dist-cjs/color-chooser/AlphaInputField.js.map +1 -1
  59. package/dist-cjs/color-chooser/Color.js.map +1 -1
  60. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  61. package/dist-cjs/color-chooser/ColorHelpers.js.map +1 -1
  62. package/dist-cjs/color-chooser/ColorPicker.js.map +1 -1
  63. package/dist-cjs/color-chooser/DictTabs.js.map +1 -1
  64. package/dist-cjs/color-chooser/GetColorPalettes.js.map +1 -1
  65. package/dist-cjs/color-chooser/HexInput.js.map +1 -1
  66. package/dist-cjs/color-chooser/RGBAInput.js.map +1 -1
  67. package/dist-cjs/color-chooser/RGBAInputField.js.map +1 -1
  68. package/dist-cjs/color-chooser/Swatch.js.map +1 -1
  69. package/dist-cjs/color-chooser/Swatches.js.map +1 -1
  70. package/dist-cjs/color-chooser/SwatchesPicker.js.map +1 -1
  71. package/dist-cjs/color-chooser/color-utils.js.map +1 -1
  72. package/dist-cjs/color-chooser/colorMap.js.map +1 -1
  73. package/dist-cjs/color-chooser/createTabsMapping.js.map +1 -1
  74. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  75. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  76. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  77. package/dist-cjs/combo-box-deprecated/filterHelpers.js.map +1 -1
  78. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  79. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  80. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  81. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  82. package/dist-cjs/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  83. package/dist-cjs/common-hooks/calcPreferredHeight.js.map +1 -1
  84. package/dist-cjs/common-hooks/collectionProvider.js.map +1 -1
  85. package/dist-cjs/common-hooks/itemToString.js.map +1 -1
  86. package/dist-cjs/common-hooks/keyUtils.js.map +1 -1
  87. package/dist-cjs/common-hooks/list-dom-utils.js.map +1 -1
  88. package/dist-cjs/common-hooks/selectionTypes.js.map +1 -1
  89. package/dist-cjs/common-hooks/useAutoSizer.js.map +1 -1
  90. package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
  91. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  92. package/dist-cjs/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  93. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  94. package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  95. package/dist-cjs/common-hooks/useSelection.js.map +1 -1
  96. package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
  97. package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
  98. package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
  99. package/dist-cjs/common-hooks/utils/filter-utils.js.map +1 -1
  100. package/dist-cjs/common-hooks/utils/isSelected.js.map +1 -1
  101. package/dist-cjs/contact-details/ContactAction.js.map +1 -1
  102. package/dist-cjs/contact-details/ContactActions.js.map +1 -1
  103. package/dist-cjs/contact-details/ContactAvatar.js.map +1 -1
  104. package/dist-cjs/contact-details/ContactDetails.js.map +1 -1
  105. package/dist-cjs/contact-details/ContactFavoriteToggle.js.map +1 -1
  106. package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
  107. package/dist-cjs/contact-details/ContactMetadataItem.js.map +1 -1
  108. package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
  109. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  110. package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
  111. package/dist-cjs/contact-details/MailLinkComponent.js.map +1 -1
  112. package/dist-cjs/contact-details/internal/ContactDetailsContext.js.map +1 -1
  113. package/dist-cjs/contact-details/internal/FavoriteToggle.js.map +1 -1
  114. package/dist-cjs/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  115. package/dist-cjs/contact-details/internal/StarIcon.js.map +1 -1
  116. package/dist-cjs/contact-details/internal/StarIconContainer.js.map +1 -1
  117. package/dist-cjs/contact-details/internal/useComponentSize.js.map +1 -1
  118. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  119. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  120. package/dist-cjs/date-input/DateInputRange.js +3 -2
  121. package/dist-cjs/date-input/DateInputRange.js.map +1 -1
  122. package/dist-cjs/date-input/DateInputSingle.js +5 -2
  123. package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
  124. package/dist-cjs/date-picker/DatePicker.js +0 -2
  125. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  126. package/dist-cjs/date-picker/DatePickerActions.js +1 -1
  127. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
  128. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  129. package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -1
  130. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
  131. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
  132. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +2 -3
  133. package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  134. package/dist-cjs/date-picker/DatePickerRangeInput.js +22 -8
  135. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  136. package/dist-cjs/date-picker/DatePickerRangePanel.js +2 -4
  137. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
  138. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +2 -4
  139. package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  140. package/dist-cjs/date-picker/DatePickerSingleInput.js +12 -7
  141. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  142. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
  143. package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -1
  144. package/dist-cjs/date-picker/useDatePicker.js +0 -17
  145. package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
  146. package/dist-cjs/date-picker/useFocusOut.js.map +1 -1
  147. package/dist-cjs/date-picker/useKeyboard.js.map +1 -1
  148. package/dist-cjs/deck-item/DeckItem.js.map +1 -1
  149. package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
  150. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  151. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  152. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  153. package/dist-cjs/dropdown/useClickAway.js.map +1 -1
  154. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  155. package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
  156. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  157. package/dist-cjs/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
  158. package/dist-cjs/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
  159. package/dist-cjs/form-field-legacy/FormActivationIndicator.js.map +1 -1
  160. package/dist-cjs/form-field-legacy/FormFieldLegacy.js.map +1 -1
  161. package/dist-cjs/form-field-legacy/FormHelperText.js.map +1 -1
  162. package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
  163. package/dist-cjs/form-field-legacy/NecessityIndicator.js.map +1 -1
  164. package/dist-cjs/form-field-legacy/StatusIndicator.js.map +1 -1
  165. package/dist-cjs/form-field-legacy/constant.js.map +1 -1
  166. package/dist-cjs/form-group/FormGroup.js.map +1 -1
  167. package/dist-cjs/formatted-input/FormattedInput.js.map +1 -1
  168. package/dist-cjs/formatted-input/internal/InputWithMask.js.map +1 -1
  169. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  170. package/dist-cjs/input-legacy/StaticInputAdornment.js.map +1 -1
  171. package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
  172. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  173. package/dist-cjs/list/Highlighter.js.map +1 -1
  174. package/dist-cjs/list/List.js.map +1 -1
  175. package/dist-cjs/list/ListItem.js.map +1 -1
  176. package/dist-cjs/list/ListItemGroup.js.map +1 -1
  177. package/dist-cjs/list/ListItemHeader.js.map +1 -1
  178. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  179. package/dist-cjs/list/keyset.js.map +1 -1
  180. package/dist-cjs/list/useList.js.map +1 -1
  181. package/dist-cjs/list/useListHeight.js.map +1 -1
  182. package/dist-cjs/list/useVirtualization.js.map +1 -1
  183. package/dist-cjs/list-deprecated/List.js.map +1 -1
  184. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  185. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  186. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  187. package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
  188. package/dist-cjs/list-deprecated/ListStateContext.js.map +1 -1
  189. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  190. package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
  191. package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  192. package/dist-cjs/list-deprecated/internal/helpers.js.map +1 -1
  193. package/dist-cjs/list-deprecated/internal/scrollIntoView.js.map +1 -1
  194. package/dist-cjs/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  195. package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
  196. package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
  197. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  198. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  199. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  200. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  201. package/dist-cjs/list-next/ListNext.js.map +1 -1
  202. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  203. package/dist-cjs/list-next/useList.js.map +1 -1
  204. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
  205. package/dist-cjs/logo/Logo.js.map +1 -1
  206. package/dist-cjs/logo/LogoImage.js.map +1 -1
  207. package/dist-cjs/logo/LogoSeparator.js.map +1 -1
  208. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  209. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  210. package/dist-cjs/metric/Metric.js.map +1 -1
  211. package/dist-cjs/metric/MetricContent.js.map +1 -1
  212. package/dist-cjs/metric/MetricHeader.js.map +1 -1
  213. package/dist-cjs/metric/internal/MetricContext.js.map +1 -1
  214. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  215. package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  216. package/dist-cjs/number-input/internal/useCaret.js.map +1 -1
  217. package/dist-cjs/number-input/internal/useInterval.js.map +1 -1
  218. package/dist-cjs/number-input/internal/utils.js.map +1 -1
  219. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  220. package/dist-cjs/portal/Portal.js.map +1 -1
  221. package/dist-cjs/query-input/QueryInput.js.map +1 -1
  222. package/dist-cjs/query-input/internal/CategoryList.js.map +1 -1
  223. package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
  224. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  225. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  226. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  227. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  228. package/dist-cjs/query-input/internal/ValueSelector.js.map +1 -1
  229. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  230. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  231. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  232. package/dist-cjs/responsive/overflowUtils.js.map +1 -1
  233. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  234. package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
  235. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  236. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  237. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  238. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  239. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  240. package/dist-cjs/responsive/useWidth.js.map +1 -1
  241. package/dist-cjs/responsive/utils.js.map +1 -1
  242. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  243. package/dist-cjs/static-list/StaticList.js.map +1 -1
  244. package/dist-cjs/static-list/StaticListItem.js.map +1 -1
  245. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -1
  246. package/dist-cjs/system-status/SystemStatus.js.map +1 -1
  247. package/dist-cjs/system-status/SystemStatusActions.js.map +1 -1
  248. package/dist-cjs/system-status/SystemStatusContent.js.map +1 -1
  249. package/dist-cjs/table/TBody.js.map +1 -1
  250. package/dist-cjs/table/TD.js +6 -2
  251. package/dist-cjs/table/TD.js.map +1 -1
  252. package/dist-cjs/table/TFoot.js.map +1 -1
  253. package/dist-cjs/table/TH.js +6 -2
  254. package/dist-cjs/table/TH.js.map +1 -1
  255. package/dist-cjs/table/THead.js.map +1 -1
  256. package/dist-cjs/table/TR.js.map +1 -1
  257. package/dist-cjs/table/Table.css.js +1 -1
  258. package/dist-cjs/table/Table.js +2 -2
  259. package/dist-cjs/table/Table.js.map +1 -1
  260. package/dist-cjs/tabs/Tab.js.map +1 -1
  261. package/dist-cjs/tabs/TabActivationIndicator.js.map +1 -1
  262. package/dist-cjs/tabs/TabPanel.js.map +1 -1
  263. package/dist-cjs/tabs/Tabs.js.map +1 -1
  264. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  265. package/dist-cjs/tabs/drag-drop/Draggable.js.map +1 -1
  266. package/dist-cjs/tabs/drag-drop/drag-utils.js.map +1 -1
  267. package/dist-cjs/tabs/drag-drop/dragDropTypes.js.map +1 -1
  268. package/dist-cjs/tabs/drag-drop/useDragDrop.js.map +1 -1
  269. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  270. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  271. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  272. package/dist-cjs/tabs/useEditableItem.js.map +1 -1
  273. package/dist-cjs/tabs/useItemsWithIds.js.map +1 -1
  274. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  275. package/dist-cjs/tabs/useSelection.js.map +1 -1
  276. package/dist-cjs/tabs/useTabs.js.map +1 -1
  277. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  278. package/dist-cjs/tabs-next/TabBar.js.map +1 -1
  279. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  280. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  281. package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
  282. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
  283. package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
  284. package/dist-cjs/tabs-next/TabNextTrigger.css.js +1 -1
  285. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  286. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  287. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  288. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  289. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  290. package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
  291. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  292. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  293. package/dist-cjs/toast-group/ToastGroup.js.map +1 -1
  294. package/dist-cjs/tokenized-input/TokenizedInput.js.map +1 -1
  295. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  296. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  297. package/dist-cjs/tokenized-input/internal/InputRuler.js.map +1 -1
  298. package/dist-cjs/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  299. package/dist-cjs/tokenized-input/internal/defaultItemToString.js.map +1 -1
  300. package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
  301. package/dist-cjs/tokenized-input/internal/isPlainObject.js.map +1 -1
  302. package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
  303. package/dist-cjs/tokenized-input/internal/useWidth.js.map +1 -1
  304. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  305. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  306. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  307. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  308. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  309. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -1
  310. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  311. package/dist-cjs/toolbar/Toolbar.js.map +1 -1
  312. package/dist-cjs/toolbar/ToolbarButton.js.map +1 -1
  313. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  314. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  315. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  316. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  317. package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  318. package/dist-cjs/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  319. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  320. package/dist-cjs/tree/Tree.js.map +1 -1
  321. package/dist-cjs/tree/TreeNode.js.map +1 -1
  322. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
  323. package/dist-cjs/tree/useTree.js.map +1 -1
  324. package/dist-cjs/utils/escapeRegExp.js.map +1 -1
  325. package/dist-cjs/utils/forwardCallbackProps.js.map +1 -1
  326. package/dist-cjs/utils/isEmail.js.map +1 -1
  327. package/dist-cjs/utils/isPlainObject.js.map +1 -1
  328. package/dist-cjs/utils/partition.js.map +1 -1
  329. package/dist-cjs/utils/useClickOutside.js.map +1 -1
  330. package/dist-cjs/utils/useEventCallback.js.map +1 -1
  331. package/dist-cjs/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  332. package/dist-cjs/utils/useLayoutEffectOnce.js.map +1 -1
  333. package/dist-cjs/utils/useLayoutEffectSkipFirst.js.map +1 -1
  334. package/dist-cjs/utils/useOverflowDetection.js.map +1 -1
  335. package/dist-cjs/utils/useSlideSelection.js.map +1 -1
  336. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  337. package/dist-cjs/window/WindowContext.js.map +1 -1
  338. package/dist-cjs/window/desktop-utils.js.map +1 -1
  339. package/dist-es/app-header/AppHeader.js.map +1 -1
  340. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  341. package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
  342. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  343. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  344. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
  345. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
  346. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  347. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  348. package/dist-es/button-bar/internal/ButtonBarContext.js.map +1 -1
  349. package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
  350. package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
  351. package/dist-es/button-bar/internal/useDescendants.js.map +1 -1
  352. package/dist-es/calendar/Calendar.css.js +1 -1
  353. package/dist-es/calendar/Calendar.js +12 -3
  354. package/dist-es/calendar/Calendar.js.map +1 -1
  355. package/dist-es/calendar/CalendarGrid.js +39 -37
  356. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  357. package/dist-es/calendar/CalendarMonthHeader.js +1 -1
  358. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -1
  359. package/dist-es/calendar/CalendarNavigation.css.js +1 -1
  360. package/dist-es/calendar/CalendarNavigation.js +21 -14
  361. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  362. package/dist-es/calendar/CalendarWeekHeader.css.js +1 -1
  363. package/dist-es/calendar/CalendarWeekHeader.js +2 -2
  364. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  365. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  366. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  367. package/dist-es/calendar/internal/CalendarDay.js +27 -37
  368. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  369. package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
  370. package/dist-es/calendar/internal/CalendarMonth.js +31 -10
  371. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  372. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  373. package/dist-es/calendar/internal/utils.js.map +1 -1
  374. package/dist-es/calendar/useCalendar.js +7 -9
  375. package/dist-es/calendar/useCalendar.js.map +1 -1
  376. package/dist-es/calendar/useCalendarDay.js +7 -11
  377. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  378. package/dist-es/calendar/useCalendarSelection.js +144 -76
  379. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  380. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  381. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  382. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  383. package/dist-es/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
  384. package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
  385. package/dist-es/cascading-menu/internal/menuPositioning.js.map +1 -1
  386. package/dist-es/cascading-menu/internal/stateUtils.js.map +1 -1
  387. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  388. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  389. package/dist-es/cascading-menu/internal/useMountedRef.js.map +1 -1
  390. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  391. package/dist-es/cascading-menu/internal/useRefsManager.js.map +1 -1
  392. package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
  393. package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
  394. package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
  395. package/dist-es/color-chooser/Color.js.map +1 -1
  396. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  397. package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
  398. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  399. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  400. package/dist-es/color-chooser/GetColorPalettes.js.map +1 -1
  401. package/dist-es/color-chooser/HexInput.js.map +1 -1
  402. package/dist-es/color-chooser/RGBAInput.js.map +1 -1
  403. package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
  404. package/dist-es/color-chooser/Swatch.js.map +1 -1
  405. package/dist-es/color-chooser/Swatches.js.map +1 -1
  406. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  407. package/dist-es/color-chooser/color-utils.js.map +1 -1
  408. package/dist-es/color-chooser/colorMap.js.map +1 -1
  409. package/dist-es/color-chooser/createTabsMapping.js.map +1 -1
  410. package/dist-es/combo-box/ComboBox.js.map +1 -1
  411. package/dist-es/combo-box/useCombobox.js.map +1 -1
  412. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  413. package/dist-es/combo-box-deprecated/filterHelpers.js.map +1 -1
  414. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  415. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  416. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  417. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  418. package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  419. package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
  420. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  421. package/dist-es/common-hooks/itemToString.js.map +1 -1
  422. package/dist-es/common-hooks/keyUtils.js.map +1 -1
  423. package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
  424. package/dist-es/common-hooks/selectionTypes.js.map +1 -1
  425. package/dist-es/common-hooks/useAutoSizer.js.map +1 -1
  426. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  427. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  428. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  429. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  430. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  431. package/dist-es/common-hooks/useSelection.js.map +1 -1
  432. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  433. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  434. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  435. package/dist-es/common-hooks/utils/filter-utils.js.map +1 -1
  436. package/dist-es/common-hooks/utils/isSelected.js.map +1 -1
  437. package/dist-es/contact-details/ContactAction.js.map +1 -1
  438. package/dist-es/contact-details/ContactActions.js.map +1 -1
  439. package/dist-es/contact-details/ContactAvatar.js.map +1 -1
  440. package/dist-es/contact-details/ContactDetails.js.map +1 -1
  441. package/dist-es/contact-details/ContactFavoriteToggle.js.map +1 -1
  442. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  443. package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
  444. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  445. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  446. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  447. package/dist-es/contact-details/MailLinkComponent.js.map +1 -1
  448. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  449. package/dist-es/contact-details/internal/FavoriteToggle.js.map +1 -1
  450. package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  451. package/dist-es/contact-details/internal/StarIcon.js.map +1 -1
  452. package/dist-es/contact-details/internal/StarIconContainer.js.map +1 -1
  453. package/dist-es/contact-details/internal/useComponentSize.js.map +1 -1
  454. package/dist-es/content-status/ContentStatus.js.map +1 -1
  455. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  456. package/dist-es/date-input/DateInputRange.js +3 -2
  457. package/dist-es/date-input/DateInputRange.js.map +1 -1
  458. package/dist-es/date-input/DateInputSingle.js +5 -2
  459. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  460. package/dist-es/date-picker/DatePicker.js +0 -2
  461. package/dist-es/date-picker/DatePicker.js.map +1 -1
  462. package/dist-es/date-picker/DatePickerActions.js +1 -1
  463. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  464. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  465. package/dist-es/date-picker/DatePickerHelperText.js.map +1 -1
  466. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  467. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  468. package/dist-es/date-picker/DatePickerRangeGridPanel.js +2 -3
  469. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  470. package/dist-es/date-picker/DatePickerRangeInput.js +22 -8
  471. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  472. package/dist-es/date-picker/DatePickerRangePanel.js +2 -4
  473. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  474. package/dist-es/date-picker/DatePickerSingleGridPanel.js +2 -4
  475. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  476. package/dist-es/date-picker/DatePickerSingleInput.js +12 -7
  477. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  478. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  479. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  480. package/dist-es/date-picker/useDatePicker.js +0 -17
  481. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  482. package/dist-es/date-picker/useFocusOut.js.map +1 -1
  483. package/dist-es/date-picker/useKeyboard.js.map +1 -1
  484. package/dist-es/deck-item/DeckItem.js.map +1 -1
  485. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  486. package/dist-es/dropdown/Dropdown.js.map +1 -1
  487. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  488. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  489. package/dist-es/dropdown/useClickAway.js.map +1 -1
  490. package/dist-es/dropdown/useDropdown.js.map +1 -1
  491. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  492. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  493. package/dist-es/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
  494. package/dist-es/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
  495. package/dist-es/form-field-legacy/FormActivationIndicator.js.map +1 -1
  496. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  497. package/dist-es/form-field-legacy/FormHelperText.js.map +1 -1
  498. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  499. package/dist-es/form-field-legacy/NecessityIndicator.js.map +1 -1
  500. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  501. package/dist-es/form-field-legacy/constant.js.map +1 -1
  502. package/dist-es/form-group/FormGroup.js.map +1 -1
  503. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  504. package/dist-es/formatted-input/internal/InputWithMask.js.map +1 -1
  505. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  506. package/dist-es/input-legacy/StaticInputAdornment.js.map +1 -1
  507. package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
  508. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  509. package/dist-es/list/Highlighter.js.map +1 -1
  510. package/dist-es/list/List.js.map +1 -1
  511. package/dist-es/list/ListItem.js.map +1 -1
  512. package/dist-es/list/ListItemGroup.js.map +1 -1
  513. package/dist-es/list/ListItemHeader.js.map +1 -1
  514. package/dist-es/list/VirtualizedList.js.map +1 -1
  515. package/dist-es/list/keyset.js.map +1 -1
  516. package/dist-es/list/useList.js.map +1 -1
  517. package/dist-es/list/useListHeight.js.map +1 -1
  518. package/dist-es/list/useVirtualization.js.map +1 -1
  519. package/dist-es/list-deprecated/List.js.map +1 -1
  520. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  521. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  522. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  523. package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
  524. package/dist-es/list-deprecated/ListStateContext.js.map +1 -1
  525. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  526. package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
  527. package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  528. package/dist-es/list-deprecated/internal/helpers.js.map +1 -1
  529. package/dist-es/list-deprecated/internal/scrollIntoView.js.map +1 -1
  530. package/dist-es/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  531. package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
  532. package/dist-es/list-deprecated/itemToString.js.map +1 -1
  533. package/dist-es/list-deprecated/useList.js.map +1 -1
  534. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  535. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  536. package/dist-es/list-next/ListItemNext.js.map +1 -1
  537. package/dist-es/list-next/ListNext.js.map +1 -1
  538. package/dist-es/list-next/ListNextContext.js.map +1 -1
  539. package/dist-es/list-next/useList.js.map +1 -1
  540. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
  541. package/dist-es/logo/Logo.js.map +1 -1
  542. package/dist-es/logo/LogoImage.js.map +1 -1
  543. package/dist-es/logo/LogoSeparator.js.map +1 -1
  544. package/dist-es/menu-button/MenuButton.js.map +1 -1
  545. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  546. package/dist-es/metric/Metric.js.map +1 -1
  547. package/dist-es/metric/MetricContent.js.map +1 -1
  548. package/dist-es/metric/MetricHeader.js.map +1 -1
  549. package/dist-es/metric/internal/MetricContext.js.map +1 -1
  550. package/dist-es/number-input/NumberInput.js.map +1 -1
  551. package/dist-es/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  552. package/dist-es/number-input/internal/useCaret.js.map +1 -1
  553. package/dist-es/number-input/internal/useInterval.js.map +1 -1
  554. package/dist-es/number-input/internal/utils.js.map +1 -1
  555. package/dist-es/number-input/useNumberInput.js.map +1 -1
  556. package/dist-es/portal/Portal.js.map +1 -1
  557. package/dist-es/query-input/QueryInput.js.map +1 -1
  558. package/dist-es/query-input/internal/CategoryList.js.map +1 -1
  559. package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
  560. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  561. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  562. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  563. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  564. package/dist-es/query-input/internal/ValueSelector.js.map +1 -1
  565. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  566. package/dist-es/query-input/useQueryInput.js.map +1 -1
  567. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  568. package/dist-es/responsive/overflowUtils.js.map +1 -1
  569. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  570. package/dist-es/responsive/useInstantCollapse.js.map +1 -1
  571. package/dist-es/responsive/useOverflow.js.map +1 -1
  572. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  573. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  574. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  575. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  576. package/dist-es/responsive/useWidth.js.map +1 -1
  577. package/dist-es/responsive/utils.js.map +1 -1
  578. package/dist-es/search-input/SearchInput.js.map +1 -1
  579. package/dist-es/static-list/StaticList.js.map +1 -1
  580. package/dist-es/static-list/StaticListItem.js.map +1 -1
  581. package/dist-es/static-list/StaticListItemContent.js.map +1 -1
  582. package/dist-es/system-status/SystemStatus.js.map +1 -1
  583. package/dist-es/system-status/SystemStatusActions.js.map +1 -1
  584. package/dist-es/system-status/SystemStatusContent.js.map +1 -1
  585. package/dist-es/table/TBody.js.map +1 -1
  586. package/dist-es/table/TD.js +6 -2
  587. package/dist-es/table/TD.js.map +1 -1
  588. package/dist-es/table/TFoot.js.map +1 -1
  589. package/dist-es/table/TH.js +6 -2
  590. package/dist-es/table/TH.js.map +1 -1
  591. package/dist-es/table/THead.js.map +1 -1
  592. package/dist-es/table/TR.js.map +1 -1
  593. package/dist-es/table/Table.css.js +1 -1
  594. package/dist-es/table/Table.js +2 -2
  595. package/dist-es/table/Table.js.map +1 -1
  596. package/dist-es/tabs/Tab.js.map +1 -1
  597. package/dist-es/tabs/TabActivationIndicator.js.map +1 -1
  598. package/dist-es/tabs/TabPanel.js.map +1 -1
  599. package/dist-es/tabs/Tabs.js.map +1 -1
  600. package/dist-es/tabs/Tabstrip.js.map +1 -1
  601. package/dist-es/tabs/drag-drop/Draggable.js.map +1 -1
  602. package/dist-es/tabs/drag-drop/drag-utils.js.map +1 -1
  603. package/dist-es/tabs/drag-drop/dragDropTypes.js.map +1 -1
  604. package/dist-es/tabs/drag-drop/useDragDrop.js.map +1 -1
  605. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  606. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  607. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  608. package/dist-es/tabs/useEditableItem.js.map +1 -1
  609. package/dist-es/tabs/useItemsWithIds.js.map +1 -1
  610. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  611. package/dist-es/tabs/useSelection.js.map +1 -1
  612. package/dist-es/tabs/useTabs.js.map +1 -1
  613. package/dist-es/tabs/useTabstrip.js.map +1 -1
  614. package/dist-es/tabs-next/TabBar.js.map +1 -1
  615. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  616. package/dist-es/tabs-next/TabNext.js.map +1 -1
  617. package/dist-es/tabs-next/TabNextAction.js.map +1 -1
  618. package/dist-es/tabs-next/TabNextContext.js.map +1 -1
  619. package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
  620. package/dist-es/tabs-next/TabNextTrigger.css.js +1 -1
  621. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  622. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  623. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  624. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  625. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  626. package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
  627. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  628. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  629. package/dist-es/toast-group/ToastGroup.js.map +1 -1
  630. package/dist-es/tokenized-input/TokenizedInput.js.map +1 -1
  631. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  632. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  633. package/dist-es/tokenized-input/internal/InputRuler.js.map +1 -1
  634. package/dist-es/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  635. package/dist-es/tokenized-input/internal/defaultItemToString.js.map +1 -1
  636. package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
  637. package/dist-es/tokenized-input/internal/isPlainObject.js.map +1 -1
  638. package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
  639. package/dist-es/tokenized-input/internal/useWidth.js.map +1 -1
  640. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  641. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  642. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  643. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  644. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  645. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -1
  646. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  647. package/dist-es/toolbar/Toolbar.js.map +1 -1
  648. package/dist-es/toolbar/ToolbarButton.js.map +1 -1
  649. package/dist-es/toolbar/Tooltray.js.map +1 -1
  650. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  651. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  652. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  653. package/dist-es/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  654. package/dist-es/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  655. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  656. package/dist-es/tree/Tree.js.map +1 -1
  657. package/dist-es/tree/TreeNode.js.map +1 -1
  658. package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
  659. package/dist-es/tree/useTree.js.map +1 -1
  660. package/dist-es/utils/escapeRegExp.js.map +1 -1
  661. package/dist-es/utils/forwardCallbackProps.js.map +1 -1
  662. package/dist-es/utils/isEmail.js.map +1 -1
  663. package/dist-es/utils/isPlainObject.js.map +1 -1
  664. package/dist-es/utils/partition.js.map +1 -1
  665. package/dist-es/utils/useClickOutside.js.map +1 -1
  666. package/dist-es/utils/useEventCallback.js.map +1 -1
  667. package/dist-es/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  668. package/dist-es/utils/useLayoutEffectOnce.js.map +1 -1
  669. package/dist-es/utils/useLayoutEffectSkipFirst.js.map +1 -1
  670. package/dist-es/utils/useOverflowDetection.js.map +1 -1
  671. package/dist-es/utils/useSlideSelection.js.map +1 -1
  672. package/dist-es/window/ElectronWindow.js.map +1 -1
  673. package/dist-es/window/WindowContext.js.map +1 -1
  674. package/dist-es/window/desktop-utils.js.map +1 -1
  675. package/dist-types/calendar/useCalendar.d.ts +26 -25
  676. package/dist-types/calendar/useCalendarDay.d.ts +1 -5
  677. package/dist-types/calendar/useCalendarSelection.d.ts +14 -11
  678. package/dist-types/date-picker/DatePickerContext.d.ts +0 -6
  679. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +2 -2
  680. package/dist-types/date-picker/DatePickerRangePanel.d.ts +4 -4
  681. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +2 -2
  682. package/dist-types/date-picker/useDatePicker.d.ts +0 -6
  683. package/dist-types/table/TD.d.ts +6 -0
  684. package/dist-types/table/TH.d.ts +6 -0
  685. package/dist-types/table/Table.d.ts +3 -3
  686. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerHelperText.js","sources":["../src/date-picker/DatePickerHelperText.tsx"],"sourcesContent":["import {\n FormFieldHelperText,\n type FormFieldHelperTextProps,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport datePickerHelperText from \"./DatePickerHelperText.css\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerHelperText\");\n\nexport interface DatePickerHelperTextProps extends FormFieldHelperTextProps {}\n\nexport const DatePickerHelperText = forwardRef(function DatePickerHelperText(\n { className, ...rest }: DatePickerHelperTextProps,\n ref: React.Ref<HTMLLabelElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-helper-text\",\n css: datePickerHelperText,\n window: targetWindow,\n });\n\n const {\n state: { open },\n } = useDatePickerOverlay();\n\n return (\n <FormFieldHelperText\n ref={ref}\n className={clsx(className, withBaseName(), {\n [withBaseName(\"open\")]: open,\n })}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerHelperText","useWindow","useComponentCssInjection","datePickerHelperText","useDatePickerOverlay","jsx","FormFieldHelperText","clsx"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAI/C,MAAA,oBAAA,GAAuBC,iBAAW,SAASC,qBAAAA,CACtD,EAAE,SAAW,EAAA,GAAG,IAAK,EAAA,EACrB,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,8BAAA;AAAA,IACR,GAAK,EAAAC,sBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,IAAK;AAAA,MACZC,8CAAqB,EAAA;AAEzB,EACE,uBAAAC,cAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA,CAAK,SAAW,EAAA,YAAA,EAAgB,EAAA;AAAA,QACzC,CAAC,YAAA,CAAa,MAAM,CAAC,GAAG;AAAA,OACzB,CAAA;AAAA,MACA,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"DatePickerHelperText.js","sources":["../src/date-picker/DatePickerHelperText.tsx"],"sourcesContent":["import {\n FormFieldHelperText,\n type FormFieldHelperTextProps,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport datePickerHelperText from \"./DatePickerHelperText.css\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerHelperText\");\n\nexport interface DatePickerHelperTextProps extends FormFieldHelperTextProps {}\n\nexport const DatePickerHelperText = forwardRef(function DatePickerHelperText(\n { className, ...rest }: DatePickerHelperTextProps,\n ref: React.Ref<HTMLLabelElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-helper-text\",\n css: datePickerHelperText,\n window: targetWindow,\n });\n\n const {\n state: { open },\n } = useDatePickerOverlay();\n\n return (\n <FormFieldHelperText\n ref={ref}\n className={clsx(className, withBaseName(), {\n [withBaseName(\"open\")]: open,\n })}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerHelperText","useWindow","useComponentCssInjection","datePickerHelperText","useDatePickerOverlay","jsx","FormFieldHelperText","clsx"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAIrD,MAAM,oBAAA,GAAuBC,iBAAW,SAASC,qBAAAA,CACtD,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EACrB,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,8BAAA;AAAA,IACR,GAAA,EAAKC,sBAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,IAAA;AAAK,MACZC,8CAAA,EAAqB;AAEzB,EAAA,uBACEC,cAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAWC,SAAA,CAAK,SAAA,EAAW,YAAA,EAAa,EAAG;AAAA,QACzC,CAAC,YAAA,CAAa,MAAM,CAAC,GAAG;AAAA,OACzB,CAAA;AAAA,MACA,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerOverlay.js","sources":["../src/date-picker/DatePickerOverlay.tsx"],"sourcesContent":["import {\n makePrefixer,\n useFloatingComponent,\n useForkRef,\n useFormFieldProps,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport datePickerOverlayCss from \"./DatePickerOverlay.css\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerOverlay\");\n\n/**\n * Props for the DatePickerOverlay component.\n */\nexport interface DatePickerOverlayProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content to be rendered inside the overlay.\n */\n children: ReactNode;\n}\n\nexport const DatePickerOverlay = forwardRef<\n HTMLDivElement,\n DatePickerOverlayProps\n>(function DatePickerOverlay({ className, children, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-overlay\",\n css: datePickerOverlayCss,\n window: targetWindow,\n });\n\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const { a11yProps } = useFormFieldProps();\n\n const {\n state: { open, floatingUIResult },\n helpers: { getFloatingProps },\n } = useDatePickerOverlay();\n\n const floatingRef = useForkRef<HTMLDivElement>(\n ref,\n floatingUIResult?.floating,\n );\n\n return (\n <FloatingComponent\n className={clsx(withBaseName(), className)}\n open={open || false}\n role=\"dialog\"\n aria-modal=\"true\"\n ref={floatingRef}\n {...(getFloatingProps\n ? getFloatingProps({\n ...a11yProps,\n ...rest,\n })\n : rest)}\n >\n {children}\n </FloatingComponent>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerOverlay","useWindow","useComponentCssInjection","datePickerOverlayCss","useFloatingComponent","useFormFieldProps","useDatePickerOverlay","useForkRef","jsx","clsx"],"mappings":";;;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA;AAa5C,MAAA,iBAAA,GAAoBC,gBAG/B,CAAA,SAASC,kBAAkB,CAAA,EAAE,WAAW,QAAU,EAAA,GAAG,IAAK,EAAA,EAAG,GAAK,EAAA;AAClE,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,yBAAqB,EAAA;AAE9D,EAAM,MAAA,EAAE,SAAU,EAAA,GAAIC,sBAAkB,EAAA;AAExC,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,IAAA,EAAM,gBAAiB,EAAA;AAAA,IAChC,OAAA,EAAS,EAAE,gBAAiB;AAAA,MAC1BC,8CAAqB,EAAA;AAEzB,EAAA,MAAM,WAAc,GAAAC,eAAA;AAAA,IAClB,GAAA;AAAA,IACA,gBAAkB,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAA;AAAA,GACpB;AAEA,EACE,uBAAAC,cAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,MAAM,IAAQ,IAAA,KAAA;AAAA,MACd,IAAK,EAAA,QAAA;AAAA,MACL,YAAW,EAAA,MAAA;AAAA,MACX,GAAK,EAAA,WAAA;AAAA,MACJ,GAAI,mBACD,gBAAiB,CAAA;AAAA,QACf,GAAG,SAAA;AAAA,QACH,GAAG;AAAA,OACJ,CACD,GAAA,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"DatePickerOverlay.js","sources":["../src/date-picker/DatePickerOverlay.tsx"],"sourcesContent":["import {\n makePrefixer,\n useFloatingComponent,\n useForkRef,\n useFormFieldProps,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport datePickerOverlayCss from \"./DatePickerOverlay.css\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerOverlay\");\n\n/**\n * Props for the DatePickerOverlay component.\n */\nexport interface DatePickerOverlayProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content to be rendered inside the overlay.\n */\n children: ReactNode;\n}\n\nexport const DatePickerOverlay = forwardRef<\n HTMLDivElement,\n DatePickerOverlayProps\n>(function DatePickerOverlay({ className, children, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-overlay\",\n css: datePickerOverlayCss,\n window: targetWindow,\n });\n\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const { a11yProps } = useFormFieldProps();\n\n const {\n state: { open, floatingUIResult },\n helpers: { getFloatingProps },\n } = useDatePickerOverlay();\n\n const floatingRef = useForkRef<HTMLDivElement>(\n ref,\n floatingUIResult?.floating,\n );\n\n return (\n <FloatingComponent\n className={clsx(withBaseName(), className)}\n open={open || false}\n role=\"dialog\"\n aria-modal=\"true\"\n ref={floatingRef}\n {...(getFloatingProps\n ? getFloatingProps({\n ...a11yProps,\n ...rest,\n })\n : rest)}\n >\n {children}\n </FloatingComponent>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerOverlay","useWindow","useComponentCssInjection","datePickerOverlayCss","useFloatingComponent","useFormFieldProps","useDatePickerOverlay","useForkRef","jsx","clsx"],"mappings":";;;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA;AAalD,MAAM,iBAAA,GAAoBC,gBAAA,CAG/B,SAASC,kBAAAA,CAAkB,EAAE,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAClE,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,0BAAA;AAAA,IACR,GAAA,EAAKC,mBAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB,GAAIC,yBAAA,EAAqB;AAE9D,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIC,sBAAA,EAAkB;AAExC,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,IAAA,EAAM,gBAAA,EAAiB;AAAA,IAChC,OAAA,EAAS,EAAE,gBAAA;AAAiB,MAC1BC,8CAAA,EAAqB;AAEzB,EAAA,MAAM,WAAA,GAAcC,eAAA;AAAA,IAClB,GAAA;AAAA,IACA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAkB;AAAA,GACpB;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACzC,MAAM,IAAA,IAAQ,KAAA;AAAA,MACd,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,MAAA;AAAA,MACX,GAAA,EAAK,WAAA;AAAA,MACJ,GAAI,mBACD,gBAAA,CAAiB;AAAA,QACf,GAAG,SAAA;AAAA,QACH,GAAG;AAAA,OACJ,CAAA,GACD,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerOverlayProvider.js","sources":["../src/date-picker/DatePickerOverlayProvider.tsx"],"sourcesContent":["import {\n type ElementProps,\n type FloatingContext,\n type OpenChangeReason as FloatingUIOpenChangeReason,\n flip,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { createContext, useControlled, useFloatingUI } from \"@salt-ds/core\";\nimport {\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useFocusOut } from \"./useFocusOut\";\nimport { useKeyboard } from \"./useKeyboard\";\n\n/** Reason for overlay state change, can be a custom reason */\nexport type DatePickerOpenChangeReason =\n | FloatingUIOpenChangeReason\n | \"apply\"\n | \"cancel\"\n | string;\n/**\n * Interface representing the state for a DatePicker overlay.\n */\ninterface DatePickerOverlayState {\n /**\n * If `true`, the overlay is open.\n */\n open: boolean;\n /**\n * If `true`, the overlay contains the active element\n */\n focused: boolean;\n /**\n * The result of the floating UI calculations.\n */\n floatingUIResult: ReturnType<typeof useFloatingUI>;\n /**\n * Ref to attach to the initially focused element, when the overlay is opened.\n */\n initialFocusRef?: React.MutableRefObject<HTMLElement | null>;\n}\n\n/**\n * Interface representing the helper functions for a DatePicker overlay.\n */\ninterface DatePickerOverlayHelpers {\n /**\n * Function to get the props for the floating element.\n */\n getFloatingProps: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n /**\n * Function to get the props for the reference element.\n */\n getReferenceProps: ReturnType<typeof useInteractions>[\"getReferenceProps\"];\n /**\n * Sets the open state of the overlay.\n * @param newOpen - The new value for the open state.\n * @param event - event that triggered the state change\n * @param reason - reason for the the state change\n */\n setOpen: (\n newOpen: boolean,\n event?: Event,\n reason?: DatePickerOpenChangeReason,\n ) => void;\n /**~\n * Register a callback for when onDismiss is called\n * @param onDismissCallback\n */\n setOnDismiss: (onDismissCallback: (event?: Event) => void) => void;\n}\n\n/**\n * Interface representing the context type for a DatePicker overlay.\n */\ninterface DatePickerOverlayContextType {\n /**\n * The state of the DatePicker overlay.\n */\n state: DatePickerOverlayState;\n /**\n * The helper functions for the DatePicker overlay.\n */\n helpers: DatePickerOverlayHelpers;\n}\n\n/**\n * Context for the DatePicker overlay.\n */\nconst DatePickerOverlayContext = createContext<\n DatePickerOverlayContextType | undefined\n>(\"DatePickerOverlayContext\", undefined);\n\n/**\n * Props for the DatePickerOverlayProvider component.\n */\ninterface DatePickerOverlayProviderProps {\n /**\n * If `true`, the overlay is open.\n */\n open?: boolean;\n /**\n * When `open` is uncontrolled, set this to `true` to open on click\n */\n openOnClick?: boolean;\n /**\n * Handler for when open state changes\n * @param newOpen - true when opened\n * @param reason - reason for the the state change\n */\n onOpenChange?: (\n newOpen: boolean,\n reason?: DatePickerOpenChangeReason,\n ) => void;\n /**\n * The default open state of the overlay.\n */\n defaultOpen?: boolean;\n /**\n * The content to be rendered inside the overlay provider.\n */\n children: ReactNode;\n /**\n * A factory method to create a set of interaction, if provided overrides the default interactions\n */\n interactions?: (context: FloatingContext) => Array<ElementProps>;\n /**\n * When true, shouldn't open the overlay.\n */\n readOnly?: boolean;\n}\n\nexport const DatePickerOverlayProvider: React.FC<\n DatePickerOverlayProviderProps\n> = ({\n open: openProp,\n openOnClick,\n defaultOpen,\n onOpenChange,\n children,\n interactions,\n readOnly,\n}) => {\n const [open, setOpenState, isOpenControlled] = useControlled({\n controlled: openProp,\n default: Boolean(defaultOpen),\n name: \"DatePicker\",\n state: \"openDatePickerOverlay\",\n });\n const triggeringElementRef = useRef<HTMLElement | null>(null);\n const initialFocusRef = useRef<HTMLElement | null>(null);\n const [focused, setFocused] = useState(false);\n const onDismissCallback = useRef<(event?: Event) => void>();\n const handleOpenChange = useCallback(\n (newOpen: boolean, _event?: Event, reason?: DatePickerOpenChangeReason) => {\n if (newOpen) {\n if (readOnly) {\n return;\n }\n triggeringElementRef.current = document.activeElement as HTMLElement;\n setFocused(true);\n } else if (!isOpenControlled && reason !== \"focus-out\") {\n const trigger = triggeringElementRef.current as HTMLElement;\n if (trigger) {\n trigger.focus();\n }\n if (trigger instanceof HTMLInputElement) {\n setTimeout(() => {\n trigger.setSelectionRange(0, trigger.value.length);\n }, 1);\n }\n triggeringElementRef.current = null;\n }\n setOpenState(newOpen);\n onOpenChange?.(newOpen, reason);\n\n if (\n reason === \"focus-out\" ||\n reason === \"escape-key\" ||\n (reason === \"outside-press\" && onDismissCallback.current)\n ) {\n onDismissCallback?.current?.();\n }\n },\n [isOpenControlled, onOpenChange, readOnly],\n );\n\n const openState = open && !readOnly;\n const floatingUIResult = useFloatingUI({\n open: openState,\n onOpenChange: handleOpenChange,\n placement: \"bottom-start\",\n middleware: [flip({ fallbackStrategy: \"initialPlacement\" })],\n });\n\n const handleContainerBlur = useCallback(() => {\n setTimeout(() => {\n setFocused(\n !!floatingUIResult?.refs.floating?.current?.contains(\n document.activeElement,\n ),\n );\n }, 0);\n }, [floatingUIResult]);\n\n const {\n getFloatingProps: getFloatingPropsCallback,\n getReferenceProps: getReferencePropsCallback,\n } = useInteractions(\n interactions\n ? interactions(floatingUIResult.context)\n : [\n // biome-ignore lint/correctness/useHookAtTopLevel: useDismiss is not a React hook\n useDismiss(floatingUIResult.context, {}),\n // biome-ignore lint/correctness/useHookAtTopLevel: useKeyboard is not a React hook\n useKeyboard(floatingUIResult.context, {\n enabled: !readOnly,\n onArrowDown: (event) => {\n handleOpenChange(true, event.nativeEvent, \"reference-press\");\n },\n }),\n // biome-ignore lint/correctness/useHookAtTopLevel: useClick is not a React hook\n useClick(floatingUIResult.context, {\n enabled: !!openOnClick && !readOnly,\n toggle: false,\n keyboardHandlers: false,\n }),\n // biome-ignore lint/correctness/useHookAtTopLevel: useFocusOut is not a React hook\n useFocusOut(floatingUIResult.context, {\n enabled: !readOnly,\n }),\n ],\n );\n\n const getFloatingProps = useCallback(\n (userProps: React.HTMLProps<HTMLElement> | undefined) => {\n const { x, y, strategy, elements } = floatingUIResult;\n return {\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n ...getFloatingPropsCallback(userProps),\n focusManagerProps: {\n returnFocus: false,\n context: floatingUIResult.context,\n initialFocus: initialFocusRef,\n },\n };\n },\n [getFloatingPropsCallback, floatingUIResult],\n );\n const setOnDismiss = useCallback(\n (dismissCallback: (event?: Event) => void) => {\n onDismissCallback.current = dismissCallback;\n },\n [],\n );\n\n const state: DatePickerOverlayState = useMemo(\n () => ({\n open: openState,\n focused,\n floatingUIResult,\n initialFocusRef,\n }),\n [focused, openState, floatingUIResult],\n );\n\n const helpers: DatePickerOverlayHelpers = useMemo(\n () => ({\n getFloatingProps,\n getReferenceProps: getReferencePropsCallback,\n setOpen: handleOpenChange,\n setOnDismiss,\n }),\n [\n getFloatingProps,\n getReferencePropsCallback,\n handleOpenChange,\n setOnDismiss,\n ],\n );\n const contextValue = useMemo(() => ({ state, helpers }), [state, helpers]);\n\n return (\n <DatePickerOverlayContext.Provider value={contextValue}>\n <div onBlur={handleContainerBlur}>{children}</div>\n </DatePickerOverlayContext.Provider>\n );\n};\n\nexport const useDatePickerOverlay = (): DatePickerOverlayContextType => {\n const context = useContext(DatePickerOverlayContext);\n if (!context) {\n throw new Error(\n \"useDatePickerOverlay must be used within a DatePickerOverlayProvider\",\n );\n }\n return context;\n};\n"],"names":["createContext","useControlled","useRef","useState","useCallback","useFloatingUI","flip","useInteractions","useDismiss","useKeyboard","useClick","useFocusOut","useMemo","jsx","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerOverlayProvider.js","sources":["../src/date-picker/DatePickerOverlayProvider.tsx"],"sourcesContent":["import {\n type ElementProps,\n type FloatingContext,\n type OpenChangeReason as FloatingUIOpenChangeReason,\n flip,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { createContext, useControlled, useFloatingUI } from \"@salt-ds/core\";\nimport {\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useFocusOut } from \"./useFocusOut\";\nimport { useKeyboard } from \"./useKeyboard\";\n\n/** Reason for overlay state change, can be a custom reason */\nexport type DatePickerOpenChangeReason =\n | FloatingUIOpenChangeReason\n | \"apply\"\n | \"cancel\"\n | string;\n/**\n * Interface representing the state for a DatePicker overlay.\n */\ninterface DatePickerOverlayState {\n /**\n * If `true`, the overlay is open.\n */\n open: boolean;\n /**\n * If `true`, the overlay contains the active element\n */\n focused: boolean;\n /**\n * The result of the floating UI calculations.\n */\n floatingUIResult: ReturnType<typeof useFloatingUI>;\n /**\n * Ref to attach to the initially focused element, when the overlay is opened.\n */\n initialFocusRef?: React.MutableRefObject<HTMLElement | null>;\n}\n\n/**\n * Interface representing the helper functions for a DatePicker overlay.\n */\ninterface DatePickerOverlayHelpers {\n /**\n * Function to get the props for the floating element.\n */\n getFloatingProps: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n /**\n * Function to get the props for the reference element.\n */\n getReferenceProps: ReturnType<typeof useInteractions>[\"getReferenceProps\"];\n /**\n * Sets the open state of the overlay.\n * @param newOpen - The new value for the open state.\n * @param event - event that triggered the state change\n * @param reason - reason for the the state change\n */\n setOpen: (\n newOpen: boolean,\n event?: Event,\n reason?: DatePickerOpenChangeReason,\n ) => void;\n /**~\n * Register a callback for when onDismiss is called\n * @param onDismissCallback\n */\n setOnDismiss: (onDismissCallback: (event?: Event) => void) => void;\n}\n\n/**\n * Interface representing the context type for a DatePicker overlay.\n */\ninterface DatePickerOverlayContextType {\n /**\n * The state of the DatePicker overlay.\n */\n state: DatePickerOverlayState;\n /**\n * The helper functions for the DatePicker overlay.\n */\n helpers: DatePickerOverlayHelpers;\n}\n\n/**\n * Context for the DatePicker overlay.\n */\nconst DatePickerOverlayContext = createContext<\n DatePickerOverlayContextType | undefined\n>(\"DatePickerOverlayContext\", undefined);\n\n/**\n * Props for the DatePickerOverlayProvider component.\n */\ninterface DatePickerOverlayProviderProps {\n /**\n * If `true`, the overlay is open.\n */\n open?: boolean;\n /**\n * When `open` is uncontrolled, set this to `true` to open on click\n */\n openOnClick?: boolean;\n /**\n * Handler for when open state changes\n * @param newOpen - true when opened\n * @param reason - reason for the the state change\n */\n onOpenChange?: (\n newOpen: boolean,\n reason?: DatePickerOpenChangeReason,\n ) => void;\n /**\n * The default open state of the overlay.\n */\n defaultOpen?: boolean;\n /**\n * The content to be rendered inside the overlay provider.\n */\n children: ReactNode;\n /**\n * A factory method to create a set of interaction, if provided overrides the default interactions\n */\n interactions?: (context: FloatingContext) => Array<ElementProps>;\n /**\n * When true, shouldn't open the overlay.\n */\n readOnly?: boolean;\n}\n\nexport const DatePickerOverlayProvider: React.FC<\n DatePickerOverlayProviderProps\n> = ({\n open: openProp,\n openOnClick,\n defaultOpen,\n onOpenChange,\n children,\n interactions,\n readOnly,\n}) => {\n const [open, setOpenState, isOpenControlled] = useControlled({\n controlled: openProp,\n default: Boolean(defaultOpen),\n name: \"DatePicker\",\n state: \"openDatePickerOverlay\",\n });\n const triggeringElementRef = useRef<HTMLElement | null>(null);\n const initialFocusRef = useRef<HTMLElement | null>(null);\n const [focused, setFocused] = useState(false);\n const onDismissCallback = useRef<(event?: Event) => void>();\n const handleOpenChange = useCallback(\n (newOpen: boolean, _event?: Event, reason?: DatePickerOpenChangeReason) => {\n if (newOpen) {\n if (readOnly) {\n return;\n }\n triggeringElementRef.current = document.activeElement as HTMLElement;\n setFocused(true);\n } else if (!isOpenControlled && reason !== \"focus-out\") {\n const trigger = triggeringElementRef.current as HTMLElement;\n if (trigger) {\n trigger.focus();\n }\n if (trigger instanceof HTMLInputElement) {\n setTimeout(() => {\n trigger.setSelectionRange(0, trigger.value.length);\n }, 1);\n }\n triggeringElementRef.current = null;\n }\n setOpenState(newOpen);\n onOpenChange?.(newOpen, reason);\n\n if (\n reason === \"focus-out\" ||\n reason === \"escape-key\" ||\n (reason === \"outside-press\" && onDismissCallback.current)\n ) {\n onDismissCallback?.current?.();\n }\n },\n [isOpenControlled, onOpenChange, readOnly],\n );\n\n const openState = open && !readOnly;\n const floatingUIResult = useFloatingUI({\n open: openState,\n onOpenChange: handleOpenChange,\n placement: \"bottom-start\",\n middleware: [flip({ fallbackStrategy: \"initialPlacement\" })],\n });\n\n const handleContainerBlur = useCallback(() => {\n setTimeout(() => {\n setFocused(\n !!floatingUIResult?.refs.floating?.current?.contains(\n document.activeElement,\n ),\n );\n }, 0);\n }, [floatingUIResult]);\n\n const {\n getFloatingProps: getFloatingPropsCallback,\n getReferenceProps: getReferencePropsCallback,\n } = useInteractions(\n interactions\n ? interactions(floatingUIResult.context)\n : [\n // biome-ignore lint/correctness/useHookAtTopLevel: useDismiss is not a React hook\n useDismiss(floatingUIResult.context, {}),\n // biome-ignore lint/correctness/useHookAtTopLevel: useKeyboard is not a React hook\n useKeyboard(floatingUIResult.context, {\n enabled: !readOnly,\n onArrowDown: (event) => {\n handleOpenChange(true, event.nativeEvent, \"reference-press\");\n },\n }),\n // biome-ignore lint/correctness/useHookAtTopLevel: useClick is not a React hook\n useClick(floatingUIResult.context, {\n enabled: !!openOnClick && !readOnly,\n toggle: false,\n keyboardHandlers: false,\n }),\n // biome-ignore lint/correctness/useHookAtTopLevel: useFocusOut is not a React hook\n useFocusOut(floatingUIResult.context, {\n enabled: !readOnly,\n }),\n ],\n );\n\n const getFloatingProps = useCallback(\n (userProps: React.HTMLProps<HTMLElement> | undefined) => {\n const { x, y, strategy, elements } = floatingUIResult;\n return {\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n ...getFloatingPropsCallback(userProps),\n focusManagerProps: {\n returnFocus: false,\n context: floatingUIResult.context,\n initialFocus: initialFocusRef,\n },\n };\n },\n [getFloatingPropsCallback, floatingUIResult],\n );\n const setOnDismiss = useCallback(\n (dismissCallback: (event?: Event) => void) => {\n onDismissCallback.current = dismissCallback;\n },\n [],\n );\n\n const state: DatePickerOverlayState = useMemo(\n () => ({\n open: openState,\n focused,\n floatingUIResult,\n initialFocusRef,\n }),\n [focused, openState, floatingUIResult],\n );\n\n const helpers: DatePickerOverlayHelpers = useMemo(\n () => ({\n getFloatingProps,\n getReferenceProps: getReferencePropsCallback,\n setOpen: handleOpenChange,\n setOnDismiss,\n }),\n [\n getFloatingProps,\n getReferencePropsCallback,\n handleOpenChange,\n setOnDismiss,\n ],\n );\n const contextValue = useMemo(() => ({ state, helpers }), [state, helpers]);\n\n return (\n <DatePickerOverlayContext.Provider value={contextValue}>\n <div onBlur={handleContainerBlur}>{children}</div>\n </DatePickerOverlayContext.Provider>\n );\n};\n\nexport const useDatePickerOverlay = (): DatePickerOverlayContextType => {\n const context = useContext(DatePickerOverlayContext);\n if (!context) {\n throw new Error(\n \"useDatePickerOverlay must be used within a DatePickerOverlayProvider\",\n );\n }\n return context;\n};\n"],"names":["createContext","useControlled","useRef","useState","useCallback","useFloatingUI","flip","useInteractions","useDismiss","useKeyboard","useClick","useFocusOut","useMemo","jsx","useContext"],"mappings":"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"}
@@ -60,7 +60,7 @@ const DatePickerRangeGridPanel = react.forwardRef(
60
60
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
61
61
  maxDate = dateAdapter.add(minDate, { months: 1 })
62
62
  },
63
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
63
+ helpers: { select, isDayHighlighted, isDayUnselectable }
64
64
  } = stateAndHelpers;
65
65
  const { matchedBreakpoints } = core.useBreakpoint();
66
66
  const responsiveColumns = core.resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;
@@ -79,7 +79,7 @@ const DatePickerRangeGridPanel = react.forwardRef(
79
79
  const isOutsideAllowedDates = (date) => {
80
80
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
81
81
  };
82
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
82
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
83
83
  const startVisibleMonth = dateAdapter.startOf(visibleMonth, "month");
84
84
  const endVisibleMonth = dateAdapter.add(visibleMonth, {
85
85
  months: responsiveNumberOfVisibleMonths - 1
@@ -201,7 +201,6 @@ const DatePickerRangeGridPanel = react.forwardRef(
201
201
  onSelectionChange: handleSelectionChange,
202
202
  onVisibleMonthChange: handleVisibleMonthChange,
203
203
  hideOutOfRangeDates: true,
204
- isDayDisabled,
205
204
  isDayHighlighted,
206
205
  isDayUnselectable,
207
206
  selectedDate,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangeGridPanel.js","sources":["../src/date-picker/DatePickerRangeGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n resolveResponsiveValue,\n StackLayout,\n useBreakpoint,\n useControlled,\n} from \"@salt-ds/core\";\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n CalendarNavigation,\n type CalendarRangeProps,\n type DateRangeSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type RangeDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport type { DatePickerPanelBaseProps } from \"./DatePickerSingleGridPanel\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\n/**\n * Props for the DatePickerRangeGridPanel component.\n * @template TDate - The type of the date object.\n */\nexport type DatePickerRangeGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n DateRangeSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerRangeGridPanel = forwardRef(\n function DatePickerRangeGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerRangeGridPanelProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n CalendarProps,\n CalendarNavigationProps,\n CalendarGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onFocusedDateChange,\n onHoveredDateChange,\n onVisibleMonthChange,\n helperText,\n onSelectionChange,\n numberOfVisibleMonths = 2,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: RangeDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"range\",\n });\n\n const {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const {\n state: {\n timezone,\n selectedDate = null,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable },\n } = stateAndHelpers;\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const responsiveColumns =\n resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;\n const responsiveNumberOfVisibleMonths =\n resolveResponsiveValue(numberOfVisibleMonths, matchedBreakpoints) ?? 1;\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate: TDate =\n selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : dateAdapter.today(timezone);\n\n // Ensure that defaultVisibleMonth is used if provided, otherwise use the start of the valid date\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerRangeGridPanel\",\n state: \"visibleMonth\",\n });\n\n const getNextFocusedDate = () => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n\n const isDaySelectable = (date: TDate) =>\n !(\n date &&\n (isDayUnselectable?.(date) ||\n isDayDisabled?.(date) ||\n isOutsideAllowedDates(date))\n );\n\n const startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const getVisibleSelectedDate = () => {\n const startDateStartOfMonth = selectedDate?.startDate\n ? dateAdapter.startOf(selectedDate.startDate, \"month\")\n : null;\n const endDateStartOfMonth = selectedDate?.endDate\n ? dateAdapter.startOf(selectedDate.endDate, \"month\")\n : null;\n if (\n selectedDate?.startDate &&\n startDateStartOfMonth &&\n dateAdapter.compare(startDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(startDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.startDate)\n ) {\n return selectedDate?.startDate;\n }\n if (\n selectedDate?.endDate &&\n endDateStartOfMonth &&\n dateAdapter.compare(endDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(endDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.endDate)\n ) {\n return selectedDate?.endDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate) {\n return focusSelectedDate;\n }\n\n // Today\n const today = dateAdapter.today(timezone);\n const todayStartOfMonth = dateAdapter.startOf(today, \"month\");\n if (\n dateAdapter.compare(todayStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(todayStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(today)\n ) {\n return today;\n }\n\n // First selectable date across visible months\n const getFirstSelectableDate = (\n startMonth: TDate,\n numberOfMonths: number,\n ) => {\n for (let i = 0; i < numberOfMonths; i++) {\n const currentMonth = dateAdapter.add(startMonth, { months: i });\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n currentMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n }\n\n return null;\n };\n\n return getFirstSelectableDate(\n startVisibleMonth,\n responsiveNumberOfVisibleMonths,\n );\n };\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const dateRange = newDate as DateRangeSelection<TDate> | null;\n select(event, dateRange);\n onSelectionChange?.(event, dateRange);\n },\n [onSelectionChange, select],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setVisibleMonth(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange],\n );\n\n const handleFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (!newFocusedDate) {\n onFocusedDateChange?.(event, newFocusedDate);\n return;\n }\n\n const startOfFocusedMonth = dateAdapter.startOf(\n newFocusedDate,\n \"month\",\n );\n const lastVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const isBeforeVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, visibleMonth) < 0;\n const isAfterLastVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, lastVisibleMonth) > 0;\n\n if (isBeforeVisibleMonth) {\n handleVisibleMonthChange(event, startOfFocusedMonth);\n } else if (isAfterLastVisibleMonth) {\n const newLastVisibleMonth = dateAdapter.subtract(\n startOfFocusedMonth,\n { months: responsiveNumberOfVisibleMonths - 1 },\n );\n handleVisibleMonthChange(event, newLastVisibleMonth);\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n handleVisibleMonthChange,\n onFocusedDateChange,\n responsiveNumberOfVisibleMonths,\n visibleMonth,\n ],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n // Called when the overlay opens or the focus shifts between trigger and overlay\n if (focused && !calendarGridFocused.current) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate();\n }\n return prevFocusedDate;\n });\n }\n calendarGridFocused.current = focused;\n }, [focused]);\n\n const calendarProps = {\n visibleMonth,\n focusedDateRef: initialFocusRef,\n focusedDate: calendarGridFocused?.current ? focusedDate : null,\n hoveredDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n hideOutOfRangeDates: true,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n selectedDate,\n minDate,\n maxDate,\n timezone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar\n selectionVariant={\"range\"}\n {...(calendarProps as Partial<CalendarRangeProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerRangeGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useDatePickerOverlay","useState","useRef","useBreakpoint","resolveResponsiveValue","useControlled","generateDatesForMonth","useCallback","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerRangeGridPanel.js","sources":["../src/date-picker/DatePickerRangeGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n resolveResponsiveValue,\n StackLayout,\n useBreakpoint,\n useControlled,\n} from \"@salt-ds/core\";\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n CalendarNavigation,\n type CalendarRangeProps,\n type DateRangeSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type RangeDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport type { DatePickerPanelBaseProps } from \"./DatePickerSingleGridPanel\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\n/**\n * Props for the DatePickerRangeGridPanel component.\n * @template TDate - The type of the date object.\n */\nexport type DatePickerRangeGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n DateRangeSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"multiselect\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerRangeGridPanel = forwardRef(\n function DatePickerRangeGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerRangeGridPanelProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n CalendarProps,\n CalendarNavigationProps,\n CalendarGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onFocusedDateChange,\n onHoveredDateChange,\n onVisibleMonthChange,\n helperText,\n onSelectionChange,\n numberOfVisibleMonths = 2,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: RangeDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"range\",\n });\n\n const {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const {\n state: {\n timezone,\n selectedDate = null,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayHighlighted, isDayUnselectable },\n } = stateAndHelpers;\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const responsiveColumns =\n resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;\n const responsiveNumberOfVisibleMonths =\n resolveResponsiveValue(numberOfVisibleMonths, matchedBreakpoints) ?? 1;\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate: TDate =\n selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : dateAdapter.today(timezone);\n\n // Ensure that defaultVisibleMonth is used if provided, otherwise use the start of the valid date\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerRangeGridPanel\",\n state: \"visibleMonth\",\n });\n\n const getNextFocusedDate = () => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n\n const isDaySelectable = (date: TDate) =>\n !(date && (isDayUnselectable?.(date) || isOutsideAllowedDates(date)));\n\n const startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const getVisibleSelectedDate = () => {\n const startDateStartOfMonth = selectedDate?.startDate\n ? dateAdapter.startOf(selectedDate.startDate, \"month\")\n : null;\n const endDateStartOfMonth = selectedDate?.endDate\n ? dateAdapter.startOf(selectedDate.endDate, \"month\")\n : null;\n if (\n selectedDate?.startDate &&\n startDateStartOfMonth &&\n dateAdapter.compare(startDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(startDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.startDate)\n ) {\n return selectedDate?.startDate;\n }\n if (\n selectedDate?.endDate &&\n endDateStartOfMonth &&\n dateAdapter.compare(endDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(endDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.endDate)\n ) {\n return selectedDate?.endDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate) {\n return focusSelectedDate;\n }\n\n // Today\n const today = dateAdapter.today(timezone);\n const todayStartOfMonth = dateAdapter.startOf(today, \"month\");\n if (\n dateAdapter.compare(todayStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(todayStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(today)\n ) {\n return today;\n }\n\n // First selectable date across visible months\n const getFirstSelectableDate = (\n startMonth: TDate,\n numberOfMonths: number,\n ) => {\n for (let i = 0; i < numberOfMonths; i++) {\n const currentMonth = dateAdapter.add(startMonth, { months: i });\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n currentMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n }\n\n return null;\n };\n\n return getFirstSelectableDate(\n startVisibleMonth,\n responsiveNumberOfVisibleMonths,\n );\n };\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const dateRange = newDate as DateRangeSelection<TDate> | null;\n select(event, dateRange);\n onSelectionChange?.(event, dateRange);\n },\n [onSelectionChange, select],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setVisibleMonth(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange],\n );\n\n const handleFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (!newFocusedDate) {\n onFocusedDateChange?.(event, newFocusedDate);\n return;\n }\n\n const startOfFocusedMonth = dateAdapter.startOf(\n newFocusedDate,\n \"month\",\n );\n const lastVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const isBeforeVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, visibleMonth) < 0;\n const isAfterLastVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, lastVisibleMonth) > 0;\n\n if (isBeforeVisibleMonth) {\n handleVisibleMonthChange(event, startOfFocusedMonth);\n } else if (isAfterLastVisibleMonth) {\n const newLastVisibleMonth = dateAdapter.subtract(\n startOfFocusedMonth,\n { months: responsiveNumberOfVisibleMonths - 1 },\n );\n handleVisibleMonthChange(event, newLastVisibleMonth);\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n handleVisibleMonthChange,\n onFocusedDateChange,\n responsiveNumberOfVisibleMonths,\n visibleMonth,\n ],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n // Called when the overlay opens or the focus shifts between trigger and overlay\n if (focused && !calendarGridFocused.current) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate();\n }\n return prevFocusedDate;\n });\n }\n calendarGridFocused.current = focused;\n }, [focused]);\n\n const calendarProps = {\n visibleMonth,\n focusedDateRef: initialFocusRef,\n focusedDate: calendarGridFocused?.current ? focusedDate : null,\n hoveredDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n hideOutOfRangeDates: true,\n isDayHighlighted,\n isDayUnselectable,\n selectedDate,\n minDate,\n maxDate,\n timezone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar\n selectionVariant={\"range\"}\n {...(calendarProps as Partial<CalendarRangeProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerRangeGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useDatePickerOverlay","useState","useRef","useBreakpoint","resolveResponsiveValue","useControlled","generateDatesForMonth","useCallback","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AA2BhD,MAAM,wBAAA,GAA2BC,gBAAA;AAAA,EACtC,SAASC,yBAAAA,CACP,KAAA,EACA,GAAA,EACA;AACA,IAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,oCAAA,EAAuB;AAE/C,IAAA,MAAM;AAAA,MACJ,aAAA;AAAA,MACA,uBAAA;AAAA,MACA,iBAAA;AAAA,MACA,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA,EAAc,gBAAA;AAAA,MACd,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,oBAAA;AAAA,MACA,UAAA;AAAA,MACA,iBAAA;AAAA,MACA,qBAAA,GAAwB,CAAA;AAAA,MACxB,OAAA,GAAU,qBAAA;AAAA,MACV,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,mCAAA;AAAA,MACR,GAAA,EAAKC,eAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,kBAA+CC,sCAAA,CAAqB;AAAA,MACxE,gBAAA,EAAkB;AAAA,KACnB,CAAA;AAED,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,EAAE,OAAA,EAAS,eAAA;AAAgB,QAChCC,8CAAA,EAAqB;AAEzB,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAuB,IAAI,CAAA;AACjE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAuB,IAAI,CAAA;AACjE,IAAA,MAAM,mBAAA,GAAsBC,aAAO,KAAK,CAAA;AAExC,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,QAAA;AAAA,QACA,YAAA,GAAe,IAAA;AAAA,QACf,UAAU,WAAA,CAAY,OAAA,CAAQ,YAAY,KAAA,CAAM,QAAQ,GAAG,OAAO,CAAA;AAAA,QAClE,UAAU,WAAA,CAAY,GAAA,CAAI,SAAS,EAAE,MAAA,EAAQ,GAAG;AAAA,OAClD;AAAA,MACA,OAAA,EAAS,EAAE,MAAA,EAAQ,gBAAA,EAAkB,iBAAA;AAAkB,KACzD,GAAI,eAAA;AAEJ,IAAA,MAAM,EAAE,kBAAA,EAAmB,GAAIC,kBAAA,EAAc;AAE7C,IAAA,MAAM,iBAAA,GACJC,2BAAA,CAAuB,OAAA,EAAS,kBAAkB,CAAA,IAAK,CAAA;AACzD,IAAA,MAAM,+BAAA,GACJA,2BAAA,CAAuB,qBAAA,EAAuB,kBAAkB,CAAA,IAAK,CAAA;AAEvE,IAAA,MAAM,CAAC,+BAA+B,CAAA,GAAIH,cAAA,CAAS,MAAM;AACvD,MAAA,MAAM,SAAA,GAAA,CACJ,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAA,KAAa,WAAA,CAAY,OAAA,CAAQ,YAAA,CAAa,SAAS,CAAA,GACjE,YAAA,CAAa,SAAA,GACb,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA;AAGhC,MAAA,OAAO,mBAAA,IAAuB,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AAAA,IACtE,CAAC,CAAA;AAED,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAII,kBAAA,CAAc;AAAA,MACpD,UAAA,EAAY,gBAAA;AAAA,MACZ,OAAA,EAAS,+BAAA;AAAA,MACT,IAAA,EAAM,0BAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,qBAAA,GAAwB,CAAC,IAAA,KAAgB;AAC7C,QAAA,OACE,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,GAAI,KACrC,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,GAAI,CAAA;AAAA,MAEzC,CAAA;AAEA,MAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KACvB,EAAE,UAAS,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,IAAA,CAAA,KAAS,sBAAsB,IAAI,CAAA,CAAA,CAAA;AAEpE,MAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,OAAA,CAAQ,YAAA,EAAc,OAAO,CAAA;AACnE,MAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,YAAA,EAAc;AAAA,QACpD,QAAQ,+BAAA,GAAkC;AAAA,OAC3C,CAAA;AAED,MAAA,MAAM,yBAAyB,MAAM;AACnC,QAAA,MAAM,qBAAA,GAAA,CAAwB,6CAAc,SAAA,IACxC,WAAA,CAAY,QAAQ,YAAA,CAAa,SAAA,EAAW,OAAO,CAAA,GACnD,IAAA;AACJ,QAAA,MAAM,mBAAA,GAAA,CAAsB,6CAAc,OAAA,IACtC,WAAA,CAAY,QAAQ,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA,GACjD,IAAA;AACJ,QAAA,IAAA,CACE,6CAAc,SAAA,KACd,qBAAA,IACA,YAAY,OAAA,CAAQ,qBAAA,EAAuB,iBAAiB,CAAA,IAAK,CAAA,IACjE,WAAA,CAAY,OAAA,CAAQ,uBAAuB,eAAe,CAAA,IAAK,KAC/D,eAAA,CAAgB,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAS,CAAA,EACvC;AACA,UAAA,OAAO,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAA;AAAA,QACvB;AACA,QAAA,IAAA,CACE,6CAAc,OAAA,KACd,mBAAA,IACA,YAAY,OAAA,CAAQ,mBAAA,EAAqB,iBAAiB,CAAA,IAAK,CAAA,IAC/D,WAAA,CAAY,OAAA,CAAQ,qBAAqB,eAAe,CAAA,IAAK,KAC7D,eAAA,CAAgB,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAO,CAAA,EACrC;AACA,UAAA,OAAO,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAA;AAAA,QACvB;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,MAAM,oBAAoB,sBAAA,EAAuB;AACjD,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,OAAO,iBAAA;AAAA,MACT;AAGA,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA;AACxC,MAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,OAAO,CAAA;AAC5D,MAAA,IACE,WAAA,CAAY,OAAA,CAAQ,iBAAA,EAAmB,iBAAiB,KAAK,CAAA,IAC7D,WAAA,CAAY,OAAA,CAAQ,iBAAA,EAAmB,eAAe,CAAA,IAAK,CAAA,IAC3D,eAAA,CAAgB,KAAK,CAAA,EACrB;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,sBAAA,GAAyB,CAC7B,UAAA,EACA,cAAA,KACG;AACH,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,EAAgB,CAAA,EAAA,EAAK;AACvC,UAAA,MAAM,eAAe,WAAA,CAAY,GAAA,CAAI,YAAY,EAAE,MAAA,EAAQ,GAAG,CAAA;AAC9D,UAAA,MAAM,mBAAA,GAAsBC,2BAAA;AAAA,YAC1B,WAAA;AAAA,YACA;AAAA,YACA,IAAA,CAAK,CAAC,UAAA,KAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AAElD,UAAA,IAAI,mBAAA,EAAqB;AACvB,YAAA,OAAO,mBAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,OAAO,sBAAA;AAAA,QACL,iBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,qBAAA,GAAwBC,iBAAA;AAAA,MAC5B,CACE,OACA,OAAA,KACG;AACH,QAAA,MAAM,SAAA,GAAY,OAAA;AAClB,QAAA,MAAA,CAAO,OAAO,SAAS,CAAA;AACvB,QAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAA,EAAO,SAAA,CAAA;AAAA,MAC7B,CAAA;AAAA,MACA,CAAC,mBAAmB,MAAM;AAAA,KAC5B;AAEA,IAAA,MAAM,uBAAA,GAA0BA,iBAAA;AAAA,MAC9B,CAAC,OAAuB,cAAA,KAAiC;AACvD,QAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,QAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA,CAAC,mBAAmB;AAAA,KACtB;AAEA,IAAA,MAAM,wBAAA,GAA2BA,iBAAA;AAAA,MAC/B,CAAC,OAA8B,eAAA,KAA2B;AACxD,QAAA,eAAA,CAAgB,eAAe,CAAA;AAC/B,QAAA,oBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,oBAAA,CAAuB,KAAA,EAAO,eAAA,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,CAAC,oBAAoB;AAAA,KACvB;AAEA,IAAA,MAAM,uBAAA,GAA0BA,iBAAA;AAAA,MAC9B,CAAC,OAA8B,cAAA,KAA0B;AACvD,QAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,QAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,UAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAC7B,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,sBAAsB,WAAA,CAAY,OAAA;AAAA,UACtC,cAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,GAAA,CAAI,YAAA,EAAc;AAAA,UACrD,QAAQ,+BAAA,GAAkC;AAAA,SAC3C,CAAA;AAED,QAAA,MAAM,oBAAA,GACJ,WAAA,CAAY,OAAA,CAAQ,mBAAA,EAAqB,YAAY,CAAA,GAAI,CAAA;AAC3D,QAAA,MAAM,uBAAA,GACJ,WAAA,CAAY,OAAA,CAAQ,mBAAA,EAAqB,gBAAgB,CAAA,GAAI,CAAA;AAE/D,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,wBAAA,CAAyB,OAAO,mBAAmB,CAAA;AAAA,QACrD,WAAW,uBAAA,EAAyB;AAClC,UAAA,MAAM,sBAAsB,WAAA,CAAY,QAAA;AAAA,YACtC,mBAAA;AAAA,YACA,EAAE,MAAA,EAAQ,+BAAA,GAAkC,CAAA;AAAE,WAChD;AACA,UAAA,wBAAA,CAAyB,OAAO,mBAAmB,CAAA;AAAA,QACrD;AACA,QAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA;AAAA,QACE,WAAA;AAAA,QACA,wBAAA;AAAA,QACA,mBAAA;AAAA,QACA,+BAAA;AAAA,QACA;AAAA;AACF,KACF;AAGA,IAAAC,qBAAA,CAAgB,MAAM;AAEpB,MAAA,IAAI,OAAA,IAAW,CAAC,mBAAA,CAAoB,OAAA,EAAS;AAC3C,QAAA,cAAA,CAAe,CAAC,eAAA,KAAoB;AAClC,UAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,YAAA,OAAO,kBAAA,EAAmB;AAAA,UAC5B;AACA,UAAA,OAAO,eAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AACA,MAAA,mBAAA,CAAoB,OAAA,GAAU,OAAA;AAAA,IAChC,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,YAAA;AAAA,MACA,cAAA,EAAgB,eAAA;AAAA,MAChB,WAAA,EAAA,CAAa,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAqB,OAAA,IAAU,WAAA,GAAc,IAAA;AAAA,MAC1D,WAAA;AAAA,MACA,qBAAA,EAAuB,+BAAA;AAAA,MACvB,mBAAA,EAAqB,uBAAA;AAAA,MACrB,mBAAA,EAAqB,uBAAA;AAAA,MACrB,iBAAA,EAAmB,qBAAA;AAAA,MACnB,oBAAA,EAAsB,wBAAA;AAAA,MACtB,mBAAA,EAAqB,IAAA;AAAA,MACrB,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL;AAEA,IAAA,uBACEC,eAAA;AAAA,MAACC,gBAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAU,IAAA;AAAA,QACV,GAAA,EAAK,CAAA;AAAA,QACL,SAAA,EAAWC,SAAA,CAAK,SAAA,EAAW,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,QACpD,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCC,cAAA,CAACC,iBAAS,SAAA,EAAW,YAAA,CAAa,QAAQ,CAAA,EACxC,QAAA,kBAAAD,cAAA,CAACE,wBAAA,EAAA,EAAqB,QAAA,EAAA,UAAA,EAAW,CAAA,EACnC,CAAA;AAAA,0BAEFF,cAAA,CAACG,eAAA,EAAA,EAAW,GAAA,EAAK,CAAA,EACf,QAAA,kBAAAH,cAAA,CAACI,sBAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,EAAC,EACjC,QAAA,kBAAAP,eAAA;AAAA,YAACQ,iBAAA;AAAA,YAAA;AAAA,cACC,gBAAA,EAAkB,OAAA;AAAA,cACjB,GAAI,aAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gCAAAL,cAAA,CAACM,qCAAA,EAAA,EAAoB,GAAG,uBAAA,EAAyB,CAAA;AAAA,gCACjDN,cAAA;AAAA,kBAACO,yBAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAS,iBAAA;AAAA,oBACR,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,aAEJ,CAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
@@ -17,18 +17,32 @@ function defaultRangeValidator(dateAdapter, date, details, minDate, maxDate) {
17
17
  if (!startDate) {
18
18
  details.startDate = details.startDate || {};
19
19
  details.startDate.errors = details.startDate.errors || [];
20
- details.startDate.errors.push({
21
- type: dateAdapters.DateDetailError.UNSET,
22
- message: "no start date defined"
23
- });
20
+ const unsetStartDateError = details.startDate.errors.find(
21
+ (err) => err.type === dateAdapters.DateDetailError.UNSET
22
+ );
23
+ if (unsetStartDateError) {
24
+ unsetStartDateError.message = "no start date defined";
25
+ } else {
26
+ details.startDate.errors.push({
27
+ type: dateAdapters.DateDetailError.UNSET,
28
+ message: "no start date defined"
29
+ });
30
+ }
24
31
  }
25
32
  if (!endDate) {
26
33
  details.endDate = details.endDate || {};
27
34
  details.endDate.errors = details.endDate.errors || [];
28
- details.endDate.errors.push({
29
- type: dateAdapters.DateDetailError.UNSET,
30
- message: "no end date defined"
31
- });
35
+ const unsetEndDateError = details.endDate.errors.find(
36
+ (err) => err.type === dateAdapters.DateDetailError.UNSET
37
+ );
38
+ if (unsetEndDateError) {
39
+ unsetEndDateError.message = "no end date defined";
40
+ } else {
41
+ details.endDate.errors.push({
42
+ type: dateAdapters.DateDetailError.UNSET,
43
+ message: "no end date defined"
44
+ });
45
+ }
32
46
  }
33
47
  if (dateAdapter.isValid(startDate) && dateAdapter.isValid(endDate) && dateAdapter.compare(startDate, endDate) > 0) {
34
48
  details.startDate = details.startDate || {};
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangeInput.js","sources":["../src/date-picker/DatePickerRangeInput.tsx"],"sourcesContent":["import { Button, makePrefixer, useControlled, useIcon } from \"@salt-ds/core\";\nimport {\n DateDetailError,\n type DateFrameworkType,\n type SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type MouseEventHandler,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport type { DateRangeSelection, SingleDateSelection } from \"../calendar\";\nimport {\n DateInputRange,\n type DateInputRangeDetails,\n type DateInputRangeProps,\n type DateInputRangeValue,\n} from \"../date-input\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerRangeInput\");\n\n/**\n * Props for the DatePickerRangeInput component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangeInputProps<TDate extends DateFrameworkType>\n extends DateInputRangeProps<TDate> {\n /**\n * Function to validate the entered date\n * @param date - The selected date\n * @param details - The details of date selection, either a valid date or error\n * @returns updated DateInputRangeDetails details\n */\n validate?: (\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => DateInputRangeDetails;\n}\n\nexport function defaultRangeValidator<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n minDate?: TDate,\n maxDate?: TDate,\n): DateInputRangeDetails {\n const { startDate, endDate } = date || {};\n\n if (!startDate) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no start date defined\",\n });\n }\n if (!endDate) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no end date defined\",\n });\n }\n\n // If startDate is after endDate\n if (\n dateAdapter.isValid(startDate) &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(startDate, endDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"greater-than-end-date\",\n message: \"start date after end date\",\n });\n }\n // If startDate is before minDate\n if (\n minDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, minDate) < 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"min-date\",\n message: \"is before min date\",\n });\n }\n // If startDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, maxDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n if (\n minDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, minDate) < 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is before min date\",\n });\n }\n // If endDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, maxDate) > 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n return details;\n}\n\nexport const DatePickerRangeInput = forwardRef(function DatePickerRangeInput<\n TDate extends DateFrameworkType,\n>(\n props: DatePickerRangeInputProps<SingleDateSelection<TDate>>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const { dateAdapter } = useLocalization<TDate>();\n const {\n className,\n endInputProps,\n startInputProps,\n defaultValue,\n format = \"DD MMM YYYY\",\n value: valueProp,\n validate,\n onChange,\n onDateValueChange,\n ...rest\n } = props;\n\n const { CalendarIcon } = useIcon();\n\n const {\n state: {\n selectedDate,\n disabled,\n readOnly,\n cancelled,\n minDate,\n maxDate,\n timezone,\n },\n helpers: { select },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const previousValue = useRef<typeof valueProp>();\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"DatePickerRangeInput\",\n state: \"dateValue\",\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run when date changes to sync the value\n useEffect(() => {\n setValue({\n startDate: !selectedDate?.startDate\n ? \"\"\n : selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? dateAdapter.format(selectedDate.startDate, format)\n : value?.startDate,\n endDate: !selectedDate?.endDate\n ? \"\"\n : selectedDate?.endDate && dateAdapter.isValid(selectedDate.endDate)\n ? dateAdapter.format(selectedDate.endDate, format)\n : value?.endDate,\n });\n }, [dateAdapter, format, selectedDate]);\n\n const handleCalendarButton: MouseEventHandler<HTMLButtonElement> =\n useCallback(\n (event) => {\n event.persist();\n setOpen(!open, event.nativeEvent, \"click\");\n event.stopPropagation();\n },\n [open, setOpen],\n );\n\n const handleDateChange = useCallback(\n (\n event: SyntheticEvent,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => {\n const validatedDetails = validate\n ? validate(date, details)\n : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);\n select(event, date, validatedDetails);\n },\n [dateAdapter, select, minDate, maxDate, validate],\n );\n\n const handleDateValueChange = useCallback(\n (event: SyntheticEvent | null, newDateValue: DateInputRangeValue) => {\n setValue(newDateValue);\n onDateValueChange?.(event, newDateValue);\n },\n [onDateValueChange],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: should run when open changes and not selected date or value\n useEffect(() => {\n if (open) {\n previousValue.current = value;\n }\n }, [open]);\n\n useEffect(() => {\n if (cancelled) {\n setValue(previousValue.current);\n }\n }, [cancelled]);\n\n return (\n <DateInputRange\n value={\n value ?? {\n startDate: \"\",\n endDate: \"\",\n }\n }\n className={clsx(withBaseName(), className)}\n date={selectedDate ?? null}\n startInputProps={startInputProps}\n endInputProps={endInputProps}\n readOnly={readOnly}\n disabled={disabled}\n ref={ref}\n onDateChange={handleDateChange}\n onDateValueChange={handleDateValueChange}\n onChange={onChange}\n endAdornment={\n !readOnly && (\n <Button\n appearance=\"transparent\"\n sentiment=\"neutral\"\n onClick={handleCalendarButton}\n disabled={disabled}\n aria-label=\"Open Calendar\"\n >\n <CalendarIcon aria-hidden />\n </Button>\n )\n }\n format={format}\n timezone={timezone}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","DateDetailError","forwardRef","DatePickerRangeInput","useLocalization","useIcon","useDatePickerContext","useDatePickerOverlay","useRef","useControlled","useEffect","useCallback","jsx","DateInputRange","clsx","Button"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerRangeInput.js","sources":["../src/date-picker/DatePickerRangeInput.tsx"],"sourcesContent":["import { Button, makePrefixer, useControlled, useIcon } from \"@salt-ds/core\";\nimport {\n DateDetailError,\n type DateFrameworkType,\n type SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type MouseEventHandler,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport type { DateRangeSelection, SingleDateSelection } from \"../calendar\";\nimport {\n DateInputRange,\n type DateInputRangeDetails,\n type DateInputRangeProps,\n type DateInputRangeValue,\n} from \"../date-input\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerRangeInput\");\n\n/**\n * Props for the DatePickerRangeInput component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangeInputProps<TDate extends DateFrameworkType>\n extends DateInputRangeProps<TDate> {\n /**\n * Function to validate the entered date\n * @param date - The selected date\n * @param details - The details of date selection, either a valid date or error\n * @returns updated DateInputRangeDetails details\n */\n validate?: (\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => DateInputRangeDetails;\n}\n\nexport function defaultRangeValidator<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n minDate?: TDate,\n maxDate?: TDate,\n): DateInputRangeDetails {\n const { startDate, endDate } = date || {};\n\n if (!startDate) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n const unsetStartDateError = details.startDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetStartDateError) {\n unsetStartDateError.message = \"no start date defined\";\n } else {\n details.startDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no start date defined\",\n });\n }\n }\n\n if (!endDate) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n const unsetEndDateError = details.endDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetEndDateError) {\n unsetEndDateError.message = \"no end date defined\";\n } else {\n details.endDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no end date defined\",\n });\n }\n }\n\n // If startDate is after endDate\n if (\n dateAdapter.isValid(startDate) &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(startDate, endDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"greater-than-end-date\",\n message: \"start date after end date\",\n });\n }\n // If startDate is before minDate\n if (\n minDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, minDate) < 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"min-date\",\n message: \"is before min date\",\n });\n }\n // If startDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, maxDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n if (\n minDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, minDate) < 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is before min date\",\n });\n }\n // If endDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, maxDate) > 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n return details;\n}\n\nexport const DatePickerRangeInput = forwardRef(function DatePickerRangeInput<\n TDate extends DateFrameworkType,\n>(\n props: DatePickerRangeInputProps<SingleDateSelection<TDate>>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const { dateAdapter } = useLocalization<TDate>();\n const {\n className,\n endInputProps,\n startInputProps,\n defaultValue,\n format = \"DD MMM YYYY\",\n value: valueProp,\n validate,\n onChange,\n onDateValueChange,\n ...rest\n } = props;\n\n const { CalendarIcon } = useIcon();\n\n const {\n state: {\n selectedDate,\n disabled,\n readOnly,\n cancelled,\n minDate,\n maxDate,\n timezone,\n },\n helpers: { select },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const previousValue = useRef<typeof valueProp>();\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"DatePickerRangeInput\",\n state: \"dateValue\",\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run when date changes to sync the value\n useEffect(() => {\n setValue({\n startDate: !selectedDate?.startDate\n ? \"\"\n : selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? dateAdapter.format(selectedDate.startDate, format)\n : value?.startDate,\n endDate: !selectedDate?.endDate\n ? \"\"\n : selectedDate?.endDate && dateAdapter.isValid(selectedDate.endDate)\n ? dateAdapter.format(selectedDate.endDate, format)\n : value?.endDate,\n });\n }, [dateAdapter, format, selectedDate]);\n\n const handleCalendarButton: MouseEventHandler<HTMLButtonElement> =\n useCallback(\n (event) => {\n event.persist();\n setOpen(!open, event.nativeEvent, \"click\");\n event.stopPropagation();\n },\n [open, setOpen],\n );\n\n const handleDateChange = useCallback(\n (\n event: SyntheticEvent,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => {\n const validatedDetails = validate\n ? validate(date, details)\n : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);\n select(event, date, validatedDetails);\n },\n [dateAdapter, select, minDate, maxDate, validate],\n );\n\n const handleDateValueChange = useCallback(\n (event: SyntheticEvent | null, newDateValue: DateInputRangeValue) => {\n setValue(newDateValue);\n onDateValueChange?.(event, newDateValue);\n },\n [onDateValueChange],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: should run when open changes and not selected date or value\n useEffect(() => {\n if (open) {\n previousValue.current = value;\n }\n }, [open]);\n\n useEffect(() => {\n if (cancelled) {\n setValue(previousValue.current);\n }\n }, [cancelled]);\n\n return (\n <DateInputRange\n value={\n value ?? {\n startDate: \"\",\n endDate: \"\",\n }\n }\n className={clsx(withBaseName(), className)}\n date={selectedDate ?? null}\n startInputProps={startInputProps}\n endInputProps={endInputProps}\n readOnly={readOnly}\n disabled={disabled}\n ref={ref}\n onDateChange={handleDateChange}\n onDateValueChange={handleDateValueChange}\n onChange={onChange}\n endAdornment={\n !readOnly && (\n <Button\n appearance=\"transparent\"\n sentiment=\"neutral\"\n onClick={handleCalendarButton}\n disabled={disabled}\n aria-label=\"Open Calendar\"\n >\n <CalendarIcon aria-hidden />\n </Button>\n )\n }\n format={format}\n timezone={timezone}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","DateDetailError","forwardRef","DatePickerRangeInput","useLocalization","useIcon","useDatePickerContext","useDatePickerOverlay","useRef","useControlled","useEffect","useCallback","jsx","DateInputRange","clsx","Button"],"mappings":"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"}
@@ -78,7 +78,7 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
78
78
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
79
79
  maxDate = dateAdapter.add(minDate, { months: 1 })
80
80
  },
81
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
81
+ helpers: { select, isDayHighlighted, isDayUnselectable }
82
82
  } = DatePickerContext.useDatePickerContext({ selectionVariant: "range" });
83
83
  const {
84
84
  state: { initialFocusRef, focused }
@@ -190,7 +190,7 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
190
190
  const isOutsideAllowedDates = (date) => {
191
191
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
192
192
  };
193
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
193
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
194
194
  const getVisibleSelectedDate = (visibleMonth) => {
195
195
  if ((selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isSame(visibleMonth, selectedDate.startDate, "month") && isDaySelectable(selectedDate.startDate)) {
196
196
  return selectedDate.startDate;
@@ -268,7 +268,6 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
268
268
  visibleMonth: startVisibleMonth,
269
269
  hoveredDate,
270
270
  selectedDate: calendarSelectedDate,
271
- isDayDisabled,
272
271
  isDayHighlighted,
273
272
  isDayUnselectable,
274
273
  focusedDateRef: initialFocusRef,
@@ -289,7 +288,6 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
289
288
  const EndCalendarProps = {
290
289
  visibleMonth: endVisibleMonth,
291
290
  hoveredDate,
292
- isDayDisabled,
293
291
  isDayHighlighted,
294
292
  isDayUnselectable,
295
293
  focusedDateRef: initialFocusRef,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangePanel.js","sources":["../src/date-picker/DatePickerRangePanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n StackLayout,\n useControlled,\n useForkRef,\n} from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n type CalendarGridProps,\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarOffsetProps,\n type CalendarProps,\n type CalendarRangeProps,\n type DateRangeSelection,\n type UseCalendarSelectionRangeProps,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\n\n/**\n * Props for the DatePickerRangePanel component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangePanelProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date range is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date range or null.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month for the start date.\n */\n startVisibleMonth?: TDate;\n\n /**\n * The default visible month for the start date.\n */\n defaultStartVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the start date changes.\n * @param event - The synthetic event, or null if called by effect.\n * @param visibleMonth - The new visible month for the start date.\n */\n onStartVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * The currently visible month for the end date.\n */\n endVisibleMonth?: TDate;\n\n /**\n * The default visible month for the end date.\n */\n defaultEndVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the end date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param visibleMonth - The new visible month for the end date.\n */\n onEndVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param hoveredDate - The new hovered date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n hoveredDate?: 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 /**\n * Props to be passed to the start date CalendarNavigation component.\n */\n StartCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n\n /**\n * Props to be passed to the start date calendar component.\n */\n StartCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate> | CalendarOffsetProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n /**\n * Props to be passed to the start date CalendarGrid component.\n */\n StartCalendarGridProps?: CalendarGridProps<TDate>;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n /**\n * Props to be passed to the end date CalendarGrid component.\n */\n EndCalendarGridProps?: CalendarGridProps<TDate>;\n}\n\nfunction getFallbackVisibleMonths<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n selectedDate: DateRangeSelection<TDate> | null,\n timezone: Timezone = \"default\",\n) {\n function createConsecutiveRange(date: TDate) {\n const startDate = dateAdapter.startOf(date, \"month\");\n const endDate = dateAdapter.add(startDate, { months: 1 });\n return [startDate, endDate];\n }\n\n if (selectedDate && dateAdapter.isValid(selectedDate?.startDate)) {\n const { startDate, endDate } = selectedDate;\n if (dateAdapter.isValid(endDate)) {\n return dateAdapter.isSame(startDate, endDate, \"month\")\n ? createConsecutiveRange(startDate)\n : [\n dateAdapter.startOf(startDate, \"month\"),\n dateAdapter.startOf(endDate, \"month\"),\n ];\n }\n return createConsecutiveRange(startDate);\n }\n\n const currentMonth = dateAdapter.startOf(\n dateAdapter.today(timezone),\n \"month\",\n );\n return [currentMonth, dateAdapter.add(currentMonth, { months: 1 })];\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerRangePanel = forwardRef(function DatePickerRangePanel<\n TDate extends DateFrameworkType,\n>(props: DatePickerRangePanelProps<TDate>, ref: React.Ref<HTMLDivElement>) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n className,\n defaultStartVisibleMonth: defaultStartVisibleMonthProp,\n startVisibleMonth: startVisibleMonthProp,\n onStartVisibleMonthChange,\n defaultEndVisibleMonth: defaultEndVisibleMonthProp,\n endVisibleMonth: endVisibleMonthProp,\n onEndVisibleMonthChange,\n helperText,\n onFocusedDateChange,\n onHoveredDateChange,\n onSelectionChange,\n StartCalendarProps: StartCalendarPropsProp,\n StartCalendarNavigationProps,\n StartCalendarGridProps,\n EndCalendarProps: EndCalendarPropsProp,\n EndCalendarNavigationProps,\n EndCalendarGridProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const calendarsRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, calendarsRef);\n\n const {\n state: {\n timezone,\n selectedDate,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n\n const {\n state: { initialFocusRef, focused },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n\n const [[fallbackStartVisibleMonth, fallbackEndVisibleMonth]] = useState(() =>\n getFallbackVisibleMonths<TDate>(dateAdapter, selectedDate, timezone),\n );\n\n const [startVisibleMonth, setStartVisibleMonth] = useControlled({\n controlled: startVisibleMonthProp,\n default: defaultStartVisibleMonthProp || fallbackStartVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"startVisibleMonth\",\n });\n\n const [endVisibleMonth, setEndVisibleMonth] = useControlled({\n controlled: endVisibleMonthProp,\n default: defaultEndVisibleMonthProp || fallbackEndVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"endVisibleMonth\",\n });\n\n const handleSelectionChange = useCallback(\n (event: SyntheticEvent, newDate: DateRangeSelection<TDate> | null) => {\n select(event, newDate);\n onSelectionChange?.(event, newDate);\n },\n [select, onSelectionChange],\n );\n\n const handleHoveredStartDateChange: CalendarProps<TDate>[\"onHoveredDateChange\"] =\n useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleHoveredEndDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleStartVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setStartVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, endVisibleMonth) >= 0) {\n setEndVisibleMonth(dateAdapter.add(newVisibleMonth, { months: 1 }));\n }\n onStartVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, endVisibleMonth, onStartVisibleMonthChange],\n );\n\n const handleEndVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setEndVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, startVisibleMonth) <= 0) {\n setStartVisibleMonth(\n dateAdapter.startOf(\n dateAdapter.subtract(newVisibleMonth, { months: 1 }),\n \"month\",\n ),\n );\n }\n onEndVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, startVisibleMonth, onEndVisibleMonthChange],\n );\n\n const calendarSelectedDate = {\n startDate:\n selectedDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : null,\n endDate:\n selectedDate && dateAdapter.isValid(selectedDate.endDate)\n ? selectedDate.endDate\n : null,\n };\n\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n\n const handleStartCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(startVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleStartVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n startVisibleMonth,\n handleStartVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const handleEndCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(endVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleEndVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n endVisibleMonth,\n handleEndVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const getNextFocusedDate = (\n nextStartVisibleMonth: TDate,\n nextEndVisibleMonth: TDate,\n ) => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n const isDaySelectable = (date: TDate) =>\n !(\n date &&\n (isDayUnselectable?.(date) ||\n isDayDisabled?.(date) ||\n isOutsideAllowedDates(date))\n );\n\n const getVisibleSelectedDate = (visibleMonth: TDate) => {\n if (\n selectedDate?.startDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.startDate, \"month\") &&\n isDaySelectable(selectedDate.startDate)\n ) {\n return selectedDate.startDate;\n }\n if (\n selectedDate?.endDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.endDate, \"month\") &&\n isDaySelectable(selectedDate.endDate)\n ) {\n return selectedDate.endDate;\n }\n return null;\n };\n let focusSelectedDate = getVisibleSelectedDate(nextStartVisibleMonth);\n focusSelectedDate =\n focusSelectedDate ?? getVisibleSelectedDate(nextEndVisibleMonth);\n if (focusSelectedDate && isDaySelectable(focusSelectedDate)) {\n return focusSelectedDate;\n }\n // Today\n const today = dateAdapter.today(timezone);\n if (\n (dateAdapter.isSame(nextStartVisibleMonth, today, \"month\") ||\n dateAdapter.isSame(nextEndVisibleMonth, today, \"month\")) &&\n isDaySelectable(today)\n ) {\n return today;\n }\n // First selectable date in either calendar\n const getFirstSelectableDate = (visibleMonth: TDate) => {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n return firstSelectableDate ?? null;\n };\n\n return (\n getFirstSelectableDate(nextStartVisibleMonth) ??\n getFirstSelectableDate(nextEndVisibleMonth)\n );\n };\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n if (!focused) {\n setFocusedDate(null);\n return;\n }\n\n const isStartDateValid =\n selectedDate?.startDate &&\n dateAdapter.isValid(selectedDate.startDate) &&\n dateAdapter.compare(selectedDate.startDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.startDate, maxDate) <= 0;\n\n const isEndDateValid =\n selectedDate?.endDate &&\n dateAdapter.isValid(selectedDate.endDate) &&\n dateAdapter.compare(selectedDate.endDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.endDate, maxDate) <= 0;\n\n let nextStartVisibleMonth = startVisibleMonth;\n let nextEndVisibleMonth = endVisibleMonth;\n\n const setVisibleMonths = (\n start: typeof nextStartVisibleMonth,\n end: typeof nextEndVisibleMonth,\n ) => {\n nextStartVisibleMonth = dateAdapter.startOf(start, \"month\");\n nextEndVisibleMonth = dateAdapter.startOf(end, \"month\");\n };\n\n if (\n selectedDate?.startDate &&\n selectedDate?.endDate &&\n isStartDateValid &&\n isEndDateValid\n ) {\n if (\n dateAdapter.isSame(\n selectedDate.startDate,\n startVisibleMonth,\n \"month\",\n ) &&\n dateAdapter.isSame(selectedDate.endDate, startVisibleMonth, \"month\")\n ) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else {\n setVisibleMonths(selectedDate.startDate, selectedDate.endDate);\n }\n } else if (selectedDate?.startDate && isStartDateValid) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else if (selectedDate?.endDate && isEndDateValid) {\n setVisibleMonths(\n dateAdapter.subtract(selectedDate.endDate, { months: 1 }),\n selectedDate.endDate,\n );\n }\n\n if (!focusedDate) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate(nextStartVisibleMonth, nextEndVisibleMonth);\n }\n return prevFocusedDate;\n });\n }\n }, [dateAdapter, minDate, maxDate, focused]);\n\n const StartCalendarProps = {\n visibleMonth: startVisibleMonth,\n hoveredDate,\n selectedDate: calendarSelectedDate,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) < 0\n ? focusedDate\n : null,\n onHoveredDateChange: handleHoveredStartDateChange,\n onFocusedDateChange: handleStartCalendarFocusedDateChange,\n onVisibleMonthChange: handleStartVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...StartCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n const EndCalendarProps = {\n visibleMonth: endVisibleMonth,\n hoveredDate,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) >= 0\n ? focusedDate\n : null,\n selectedDate: calendarSelectedDate,\n onFocusedDateChange: handleEndCalendarFocusedDateChange,\n onHoveredDateChange: handleHoveredEndDateChange,\n onVisibleMonthChange: handleEndVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...EndCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={containerRef}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant={\"range\"} {...StartCalendarProps}>\n <CalendarNavigation\n disableNavigateNext={dateAdapter.isSame(\n startVisibleMonth,\n dateAdapter.subtract(maxDate, { months: 1 }),\n \"month\",\n )}\n {...StartCalendarNavigationProps}\n />\n <CalendarGrid {...StartCalendarGridProps} />\n </Calendar>\n <Calendar selectionVariant={\"range\"} {...EndCalendarProps}>\n <CalendarNavigation\n disableNavigatePrevious={dateAdapter.isSame(\n endVisibleMonth,\n dateAdapter.add(minDate, { months: 1 }),\n \"month\",\n )}\n {...EndCalendarNavigationProps}\n />\n <CalendarGrid {...EndCalendarGridProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerRangePanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useRef","useForkRef","useDatePickerContext","useDatePickerOverlay","useState","useControlled","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerRangePanel.js","sources":["../src/date-picker/DatePickerRangePanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n StackLayout,\n useControlled,\n useForkRef,\n} from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n type CalendarGridProps,\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarOffsetProps,\n type CalendarProps,\n type CalendarRangeProps,\n type DateRangeSelection,\n type UseCalendarSelectionRangeProps,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\n\n/**\n * Props for the DatePickerRangePanel component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangePanelProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date range is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date range or null.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month for the start date.\n */\n startVisibleMonth?: TDate;\n\n /**\n * The default visible month for the start date.\n */\n defaultStartVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the start date changes.\n * @param event - The synthetic event, or null if called by effect.\n * @param visibleMonth - The new visible month for the start date.\n */\n onStartVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * The currently visible month for the end date.\n */\n endVisibleMonth?: TDate;\n\n /**\n * The default visible month for the end date.\n */\n defaultEndVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the end date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param visibleMonth - The new visible month for the end date.\n */\n onEndVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param focusedDate - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n focusedDate?: 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 /**\n * Props to be passed to the start date CalendarNavigation component.\n */\n StartCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n\n /**\n * Props to be passed to the start date calendar component.\n */\n StartCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate> | CalendarOffsetProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"multiselect\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n /**\n * Props to be passed to the start date CalendarGrid component.\n */\n StartCalendarGridProps?: CalendarGridProps<TDate>;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"multiselect\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n /**\n * Props to be passed to the end date CalendarGrid component.\n */\n EndCalendarGridProps?: CalendarGridProps<TDate>;\n}\n\nfunction getFallbackVisibleMonths<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n selectedDate: DateRangeSelection<TDate> | null,\n timezone: Timezone = \"default\",\n) {\n function createConsecutiveRange(date: TDate) {\n const startDate = dateAdapter.startOf(date, \"month\");\n const endDate = dateAdapter.add(startDate, { months: 1 });\n return [startDate, endDate];\n }\n\n if (selectedDate && dateAdapter.isValid(selectedDate?.startDate)) {\n const { startDate, endDate } = selectedDate;\n if (dateAdapter.isValid(endDate)) {\n return dateAdapter.isSame(startDate, endDate, \"month\")\n ? createConsecutiveRange(startDate)\n : [\n dateAdapter.startOf(startDate, \"month\"),\n dateAdapter.startOf(endDate, \"month\"),\n ];\n }\n return createConsecutiveRange(startDate);\n }\n\n const currentMonth = dateAdapter.startOf(\n dateAdapter.today(timezone),\n \"month\",\n );\n return [currentMonth, dateAdapter.add(currentMonth, { months: 1 })];\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerRangePanel = forwardRef(function DatePickerRangePanel<\n TDate extends DateFrameworkType,\n>(props: DatePickerRangePanelProps<TDate>, ref: React.Ref<HTMLDivElement>) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n className,\n defaultStartVisibleMonth: defaultStartVisibleMonthProp,\n startVisibleMonth: startVisibleMonthProp,\n onStartVisibleMonthChange,\n defaultEndVisibleMonth: defaultEndVisibleMonthProp,\n endVisibleMonth: endVisibleMonthProp,\n onEndVisibleMonthChange,\n helperText,\n onFocusedDateChange,\n onHoveredDateChange,\n onSelectionChange,\n StartCalendarProps: StartCalendarPropsProp,\n StartCalendarNavigationProps,\n StartCalendarGridProps,\n EndCalendarProps: EndCalendarPropsProp,\n EndCalendarNavigationProps,\n EndCalendarGridProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const calendarsRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, calendarsRef);\n\n const {\n state: {\n timezone,\n selectedDate,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayHighlighted, isDayUnselectable },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n\n const {\n state: { initialFocusRef, focused },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n\n const [[fallbackStartVisibleMonth, fallbackEndVisibleMonth]] = useState(() =>\n getFallbackVisibleMonths<TDate>(dateAdapter, selectedDate, timezone),\n );\n\n const [startVisibleMonth, setStartVisibleMonth] = useControlled({\n controlled: startVisibleMonthProp,\n default: defaultStartVisibleMonthProp || fallbackStartVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"startVisibleMonth\",\n });\n\n const [endVisibleMonth, setEndVisibleMonth] = useControlled({\n controlled: endVisibleMonthProp,\n default: defaultEndVisibleMonthProp || fallbackEndVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"endVisibleMonth\",\n });\n\n const handleSelectionChange = useCallback(\n (event: SyntheticEvent, newDate: DateRangeSelection<TDate> | null) => {\n select(event, newDate);\n onSelectionChange?.(event, newDate);\n },\n [select, onSelectionChange],\n );\n\n const handleHoveredStartDateChange: CalendarProps<TDate>[\"onHoveredDateChange\"] =\n useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleHoveredEndDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleStartVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setStartVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, endVisibleMonth) >= 0) {\n setEndVisibleMonth(dateAdapter.add(newVisibleMonth, { months: 1 }));\n }\n onStartVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, endVisibleMonth, onStartVisibleMonthChange],\n );\n\n const handleEndVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setEndVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, startVisibleMonth) <= 0) {\n setStartVisibleMonth(\n dateAdapter.startOf(\n dateAdapter.subtract(newVisibleMonth, { months: 1 }),\n \"month\",\n ),\n );\n }\n onEndVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, startVisibleMonth, onEndVisibleMonthChange],\n );\n\n const calendarSelectedDate = {\n startDate:\n selectedDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : null,\n endDate:\n selectedDate && dateAdapter.isValid(selectedDate.endDate)\n ? selectedDate.endDate\n : null,\n };\n\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n\n const handleStartCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(startVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleStartVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n startVisibleMonth,\n handleStartVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const handleEndCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(endVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleEndVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n endVisibleMonth,\n handleEndVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const getNextFocusedDate = (\n nextStartVisibleMonth: TDate,\n nextEndVisibleMonth: TDate,\n ) => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n const isDaySelectable = (date: TDate) =>\n !(date && (isDayUnselectable?.(date) || isOutsideAllowedDates(date)));\n\n const getVisibleSelectedDate = (visibleMonth: TDate) => {\n if (\n selectedDate?.startDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.startDate, \"month\") &&\n isDaySelectable(selectedDate.startDate)\n ) {\n return selectedDate.startDate;\n }\n if (\n selectedDate?.endDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.endDate, \"month\") &&\n isDaySelectable(selectedDate.endDate)\n ) {\n return selectedDate.endDate;\n }\n return null;\n };\n let focusSelectedDate = getVisibleSelectedDate(nextStartVisibleMonth);\n focusSelectedDate =\n focusSelectedDate ?? getVisibleSelectedDate(nextEndVisibleMonth);\n if (focusSelectedDate && isDaySelectable(focusSelectedDate)) {\n return focusSelectedDate;\n }\n // Today\n const today = dateAdapter.today(timezone);\n if (\n (dateAdapter.isSame(nextStartVisibleMonth, today, \"month\") ||\n dateAdapter.isSame(nextEndVisibleMonth, today, \"month\")) &&\n isDaySelectable(today)\n ) {\n return today;\n }\n // First selectable date in either calendar\n const getFirstSelectableDate = (visibleMonth: TDate) => {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n return firstSelectableDate ?? null;\n };\n\n return (\n getFirstSelectableDate(nextStartVisibleMonth) ??\n getFirstSelectableDate(nextEndVisibleMonth)\n );\n };\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n if (!focused) {\n setFocusedDate(null);\n return;\n }\n\n const isStartDateValid =\n selectedDate?.startDate &&\n dateAdapter.isValid(selectedDate.startDate) &&\n dateAdapter.compare(selectedDate.startDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.startDate, maxDate) <= 0;\n\n const isEndDateValid =\n selectedDate?.endDate &&\n dateAdapter.isValid(selectedDate.endDate) &&\n dateAdapter.compare(selectedDate.endDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.endDate, maxDate) <= 0;\n\n let nextStartVisibleMonth = startVisibleMonth;\n let nextEndVisibleMonth = endVisibleMonth;\n\n const setVisibleMonths = (\n start: typeof nextStartVisibleMonth,\n end: typeof nextEndVisibleMonth,\n ) => {\n nextStartVisibleMonth = dateAdapter.startOf(start, \"month\");\n nextEndVisibleMonth = dateAdapter.startOf(end, \"month\");\n };\n\n if (\n selectedDate?.startDate &&\n selectedDate?.endDate &&\n isStartDateValid &&\n isEndDateValid\n ) {\n if (\n dateAdapter.isSame(\n selectedDate.startDate,\n startVisibleMonth,\n \"month\",\n ) &&\n dateAdapter.isSame(selectedDate.endDate, startVisibleMonth, \"month\")\n ) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else {\n setVisibleMonths(selectedDate.startDate, selectedDate.endDate);\n }\n } else if (selectedDate?.startDate && isStartDateValid) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else if (selectedDate?.endDate && isEndDateValid) {\n setVisibleMonths(\n dateAdapter.subtract(selectedDate.endDate, { months: 1 }),\n selectedDate.endDate,\n );\n }\n\n if (!focusedDate) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate(nextStartVisibleMonth, nextEndVisibleMonth);\n }\n return prevFocusedDate;\n });\n }\n }, [dateAdapter, minDate, maxDate, focused]);\n\n const StartCalendarProps = {\n visibleMonth: startVisibleMonth,\n hoveredDate,\n selectedDate: calendarSelectedDate,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) < 0\n ? focusedDate\n : null,\n onHoveredDateChange: handleHoveredStartDateChange,\n onFocusedDateChange: handleStartCalendarFocusedDateChange,\n onVisibleMonthChange: handleStartVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...StartCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n const EndCalendarProps = {\n visibleMonth: endVisibleMonth,\n hoveredDate,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) >= 0\n ? focusedDate\n : null,\n selectedDate: calendarSelectedDate,\n onFocusedDateChange: handleEndCalendarFocusedDateChange,\n onHoveredDateChange: handleHoveredEndDateChange,\n onVisibleMonthChange: handleEndVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...EndCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={containerRef}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant={\"range\"} {...StartCalendarProps}>\n <CalendarNavigation\n disableNavigateNext={dateAdapter.isSame(\n startVisibleMonth,\n dateAdapter.subtract(maxDate, { months: 1 }),\n \"month\",\n )}\n {...StartCalendarNavigationProps}\n />\n <CalendarGrid {...StartCalendarGridProps} />\n </Calendar>\n <Calendar selectionVariant={\"range\"} {...EndCalendarProps}>\n <CalendarNavigation\n disableNavigatePrevious={dateAdapter.isSame(\n endVisibleMonth,\n dateAdapter.add(minDate, { months: 1 }),\n \"month\",\n )}\n {...EndCalendarNavigationProps}\n />\n <CalendarGrid {...EndCalendarGridProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerRangePanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useRef","useForkRef","useDatePickerContext","useDatePickerOverlay","useState","useControlled","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
@@ -54,7 +54,7 @@ const DatePickerSingleGridPanel = react.forwardRef(
54
54
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
55
55
  maxDate = dateAdapter.add(minDate, { months: 1 })
56
56
  },
57
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
57
+ helpers: { select, isDayHighlighted, isDayUnselectable }
58
58
  } = stateAndHelpers;
59
59
  const { matchedBreakpoints } = core.useBreakpoint();
60
60
  const responsiveColumns = core.resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;
@@ -138,7 +138,7 @@ const DatePickerSingleGridPanel = react.forwardRef(
138
138
  const isOutsideAllowedDates = (date) => {
139
139
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
140
140
  };
141
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
141
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
142
142
  const startVisibleMonth = dateAdapter.startOf(visibleMonth, "month");
143
143
  const endVisibleMonth = dateAdapter.add(visibleMonth, {
144
144
  months: responsiveNumberOfVisibleMonths - 1
@@ -178,7 +178,6 @@ const DatePickerSingleGridPanel = react.forwardRef(
178
178
  );
179
179
  }, [
180
180
  dateAdapter,
181
- isDayDisabled,
182
181
  isDayUnselectable,
183
182
  minDate,
184
183
  maxDate,
@@ -203,7 +202,6 @@ const DatePickerSingleGridPanel = react.forwardRef(
203
202
  focusedDateRef: initialFocusRef,
204
203
  focusedDate: (calendarGridFocused == null ? void 0 : calendarGridFocused.current) ? focusedDate : null,
205
204
  hoveredDate,
206
- isDayDisabled,
207
205
  isDayHighlighted,
208
206
  isDayUnselectable,
209
207
  hideOutOfRangeDates: true,