@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":"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":[],"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":[],"mappings":"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"}
@@ -58,7 +58,7 @@ const DatePickerRangeGridPanel = forwardRef(
58
58
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
59
59
  maxDate = dateAdapter.add(minDate, { months: 1 })
60
60
  },
61
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
61
+ helpers: { select, isDayHighlighted, isDayUnselectable }
62
62
  } = stateAndHelpers;
63
63
  const { matchedBreakpoints } = useBreakpoint();
64
64
  const responsiveColumns = resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;
@@ -77,7 +77,7 @@ const DatePickerRangeGridPanel = forwardRef(
77
77
  const isOutsideAllowedDates = (date) => {
78
78
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
79
79
  };
80
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
80
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
81
81
  const startVisibleMonth = dateAdapter.startOf(visibleMonth, "month");
82
82
  const endVisibleMonth = dateAdapter.add(visibleMonth, {
83
83
  months: responsiveNumberOfVisibleMonths - 1
@@ -199,7 +199,6 @@ const DatePickerRangeGridPanel = forwardRef(
199
199
  onSelectionChange: handleSelectionChange,
200
200
  onVisibleMonthChange: handleVisibleMonthChange,
201
201
  hideOutOfRangeDates: true,
202
- isDayDisabled,
203
202
  isDayHighlighted,
204
203
  isDayUnselectable,
205
204
  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":["DatePickerRangeGridPanel","datePickerPanelCss"],"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":["DatePickerRangeGridPanel","datePickerPanelCss"],"mappings":";;;;;;;;;;;;;;;;;;AAyCA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA;AA2BhD,MAAM,wBAAA,GAA2B,UAAA;AAAA,EACtC,SAASA,yBAAAA,CACP,KAAA,EACA,GAAA,EACA;AACA,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,eAAA,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,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,mCAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,kBAA+C,oBAAA,CAAqB;AAAA,MACxE,gBAAA,EAAkB;AAAA,KACnB,CAAA;AAED,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,EAAE,OAAA,EAAS,eAAA;AAAgB,QAChC,oBAAA,EAAqB;AAEzB,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAuB,IAAI,CAAA;AACjE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAuB,IAAI,CAAA;AACjE,IAAA,MAAM,mBAAA,GAAsB,OAAO,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,GAAI,aAAA,EAAc;AAE7C,IAAA,MAAM,iBAAA,GACJ,sBAAA,CAAuB,OAAA,EAAS,kBAAkB,CAAA,IAAK,CAAA;AACzD,IAAA,MAAM,+BAAA,GACJ,sBAAA,CAAuB,qBAAA,EAAuB,kBAAkB,CAAA,IAAK,CAAA;AAEvE,IAAA,MAAM,CAAC,+BAA+B,CAAA,GAAI,QAAA,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,GAAI,aAAA,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,GAAsB,qBAAA;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,GAAwB,WAAA;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,GAA0B,WAAA;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,GAA2B,WAAA;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,GAA0B,WAAA;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,IAAA,eAAA,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,uBACE,IAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAU,IAAA;AAAA,QACV,GAAA,EAAK,CAAA;AAAA,QACL,SAAA,EAAW,IAAA,CAAK,SAAA,EAAW,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,QACpD,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,UAAA,oBACC,GAAA,CAAC,YAAS,SAAA,EAAW,YAAA,CAAa,QAAQ,CAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,mBAAA,EAAA,EAAqB,QAAA,EAAA,UAAA,EAAW,CAAA,EACnC,CAAA;AAAA,0BAEF,GAAA,CAAC,UAAA,EAAA,EAAW,GAAA,EAAK,CAAA,EACf,QAAA,kBAAA,GAAA,CAAC,iBAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,EAAC,EACjC,QAAA,kBAAA,IAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,gBAAA,EAAkB,OAAA;AAAA,cACjB,GAAI,aAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,uBAAA,EAAyB,CAAA;AAAA,gCACjD,GAAA;AAAA,kBAAC,YAAA;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;;;;"}
@@ -15,18 +15,32 @@ function defaultRangeValidator(dateAdapter, date, details, minDate, maxDate) {
15
15
  if (!startDate) {
16
16
  details.startDate = details.startDate || {};
17
17
  details.startDate.errors = details.startDate.errors || [];
18
- details.startDate.errors.push({
19
- type: DateDetailError.UNSET,
20
- message: "no start date defined"
21
- });
18
+ const unsetStartDateError = details.startDate.errors.find(
19
+ (err) => err.type === DateDetailError.UNSET
20
+ );
21
+ if (unsetStartDateError) {
22
+ unsetStartDateError.message = "no start date defined";
23
+ } else {
24
+ details.startDate.errors.push({
25
+ type: DateDetailError.UNSET,
26
+ message: "no start date defined"
27
+ });
28
+ }
22
29
  }
23
30
  if (!endDate) {
24
31
  details.endDate = details.endDate || {};
25
32
  details.endDate.errors = details.endDate.errors || [];
26
- details.endDate.errors.push({
27
- type: DateDetailError.UNSET,
28
- message: "no end date defined"
29
- });
33
+ const unsetEndDateError = details.endDate.errors.find(
34
+ (err) => err.type === DateDetailError.UNSET
35
+ );
36
+ if (unsetEndDateError) {
37
+ unsetEndDateError.message = "no end date defined";
38
+ } else {
39
+ details.endDate.errors.push({
40
+ type: DateDetailError.UNSET,
41
+ message: "no end date defined"
42
+ });
43
+ }
30
44
  }
31
45
  if (dateAdapter.isValid(startDate) && dateAdapter.isValid(endDate) && dateAdapter.compare(startDate, endDate) > 0) {
32
46
  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":["DatePickerRangeInput"],"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":["DatePickerRangeInput"],"mappings":"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"}
@@ -76,7 +76,7 @@ const DatePickerRangePanel = forwardRef(function DatePickerRangePanel2(props, re
76
76
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
77
77
  maxDate = dateAdapter.add(minDate, { months: 1 })
78
78
  },
79
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
79
+ helpers: { select, isDayHighlighted, isDayUnselectable }
80
80
  } = useDatePickerContext({ selectionVariant: "range" });
81
81
  const {
82
82
  state: { initialFocusRef, focused }
@@ -188,7 +188,7 @@ const DatePickerRangePanel = forwardRef(function DatePickerRangePanel2(props, re
188
188
  const isOutsideAllowedDates = (date) => {
189
189
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
190
190
  };
191
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
191
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
192
192
  const getVisibleSelectedDate = (visibleMonth) => {
193
193
  if ((selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isSame(visibleMonth, selectedDate.startDate, "month") && isDaySelectable(selectedDate.startDate)) {
194
194
  return selectedDate.startDate;
@@ -266,7 +266,6 @@ const DatePickerRangePanel = forwardRef(function DatePickerRangePanel2(props, re
266
266
  visibleMonth: startVisibleMonth,
267
267
  hoveredDate,
268
268
  selectedDate: calendarSelectedDate,
269
- isDayDisabled,
270
269
  isDayHighlighted,
271
270
  isDayUnselectable,
272
271
  focusedDateRef: initialFocusRef,
@@ -287,7 +286,6 @@ const DatePickerRangePanel = forwardRef(function DatePickerRangePanel2(props, re
287
286
  const EndCalendarProps = {
288
287
  visibleMonth: endVisibleMonth,
289
288
  hoveredDate,
290
- isDayDisabled,
291
289
  isDayHighlighted,
292
290
  isDayUnselectable,
293
291
  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":["DatePickerRangePanel","datePickerPanelCss"],"mappings":";;;;;;;;;;;;;;;;;;AA+KA,SAAS,wBACP,CAAA,WAAA,EACA,YACA,EAAA,QAAA,GAAqB,SACrB,EAAA;AACA,EAAA,SAAS,uBAAuB,IAAa,EAAA;AAC3C,IAAA,MAAM,SAAY,GAAA,WAAA,CAAY,OAAQ,CAAA,IAAA,EAAM,OAAO,CAAA;AACnD,IAAA,MAAM,UAAU,WAAY,CAAA,GAAA,CAAI,WAAW,EAAE,MAAA,EAAQ,GAAG,CAAA;AACxD,IAAO,OAAA,CAAC,WAAW,OAAO,CAAA;AAAA;AAG5B,EAAA,IAAI,YAAgB,IAAA,WAAA,CAAY,OAAQ,CAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,EAAE,SAAW,EAAA,OAAA,EAAY,GAAA,YAAA;AAC/B,IAAI,IAAA,WAAA,CAAY,OAAQ,CAAA,OAAO,CAAG,EAAA;AAChC,MAAO,OAAA,WAAA,CAAY,OAAO,SAAW,EAAA,OAAA,EAAS,OAAO,CACjD,GAAA,sBAAA,CAAuB,SAAS,CAChC,GAAA;AAAA,QACE,WAAA,CAAY,OAAQ,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA,QACtC,WAAA,CAAY,OAAQ,CAAA,OAAA,EAAS,OAAO;AAAA,OACtC;AAAA;AAEN,IAAA,OAAO,uBAAuB,SAAS,CAAA;AAAA;AAGzC,EAAA,MAAM,eAAe,WAAY,CAAA,OAAA;AAAA,IAC/B,WAAA,CAAY,MAAM,QAAQ,CAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAO,OAAA,CAAC,cAAc,WAAY,CAAA,GAAA,CAAI,cAAc,EAAE,MAAA,EAAQ,CAAE,EAAC,CAAC,CAAA;AACpE;AAEA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA;AAEhD,MAAM,oBAAuB,GAAA,UAAA,CAAW,SAASA,qBAAAA,CAEtD,OAAyC,GAAgC,EAAA;AACzE,EAAM,MAAA,EAAE,WAAY,EAAA,GAAI,eAAuB,EAAA;AAE/C,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,wBAA0B,EAAA,4BAAA;AAAA,IAC1B,iBAAmB,EAAA,qBAAA;AAAA,IACnB,yBAAA;AAAA,IACA,sBAAwB,EAAA,0BAAA;AAAA,IACxB,eAAiB,EAAA,mBAAA;AAAA,IACjB,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAoB,EAAA,sBAAA;AAAA,IACpB,4BAAA;AAAA,IACA,sBAAA;AAAA,IACA,gBAAkB,EAAA,oBAAA;AAAA,IAClB,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,8BAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAM,MAAA,YAAA,GAAe,UAAW,CAAA,GAAA,EAAK,YAAY,CAAA;AAEjD,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA;AAAA,MACL,QAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAU,WAAY,CAAA,OAAA,CAAQ,YAAY,KAAM,CAAA,QAAQ,GAAG,OAAO,CAAA;AAAA,MAClE,UAAU,WAAY,CAAA,GAAA,CAAI,SAAS,EAAE,MAAA,EAAQ,GAAG;AAAA,KAClD;AAAA,IACA,OAAS,EAAA,EAAE,MAAQ,EAAA,aAAA,EAAe,kBAAkB,iBAAkB;AAAA,GACpE,GAAA,oBAAA,CAA4B,EAAE,gBAAA,EAAkB,SAAS,CAAA;AAE7D,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,eAAA,EAAiB,OAAQ;AAAA,MAChC,oBAAqB,EAAA;AAEzB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,CAAC,CAAC,yBAA2B,EAAA,uBAAuB,CAAC,CAAI,GAAA,QAAA;AAAA,IAAS,MACtE,wBAAA,CAAgC,WAAa,EAAA,YAAA,EAAc,QAAQ;AAAA,GACrE;AAEA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,aAAc,CAAA;AAAA,IAC9D,UAAY,EAAA,qBAAA;AAAA,IACZ,SAAS,4BAAgC,IAAA,yBAAA;AAAA,IACzC,IAAM,EAAA,sBAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,aAAc,CAAA;AAAA,IAC1D,UAAY,EAAA,mBAAA;AAAA,IACZ,SAAS,0BAA8B,IAAA,uBAAA;AAAA,IACvC,IAAM,EAAA,sBAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAA,MAAM,qBAAwB,GAAA,WAAA;AAAA,IAC5B,CAAC,OAAuB,OAA8C,KAAA;AACpE,MAAA,MAAA,CAAO,OAAO,OAAO,CAAA;AACrB,MAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAO,EAAA,OAAA,CAAA;AAAA,KAC7B;AAAA,IACA,CAAC,QAAQ,iBAAiB;AAAA,GAC5B;AAEA,EAAA,MAAM,4BACJ,GAAA,WAAA;AAAA,IACE,CAAC,OAAuB,cAAiC,KAAA;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,KAC/B;AAAA,IACA,CAAC,mBAAmB;AAAA,GACtB;AAEF,EAAA,MAAM,0BAA6B,GAAA,WAAA;AAAA,IACjC,CAAC,OAAuB,cAAiC,KAAA;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,KAC/B;AAAA,IACA,CAAC,mBAAmB;AAAA,GACtB;AAEA,EAAA,MAAM,6BAAgC,GAAA,WAAA;AAAA,IACpC,CAAC,OAA8B,eAA2B,KAAA;AACxD,MAAA,oBAAA,CAAqB,eAAe,CAAA;AACpC,MAAA,IAAI,WAAY,CAAA,OAAA,CAAQ,eAAiB,EAAA,eAAe,KAAK,CAAG,EAAA;AAC9D,QAAA,kBAAA,CAAmB,YAAY,GAAI,CAAA,eAAA,EAAiB,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAC,CAAA;AAAA;AAEpE,MAAA,yBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,yBAAA,CAA4B,KAAO,EAAA,eAAA,CAAA;AAAA,KACrC;AAAA,IACA,CAAC,WAAa,EAAA,eAAA,EAAiB,yBAAyB;AAAA,GAC1D;AAEA,EAAA,MAAM,2BAA8B,GAAA,WAAA;AAAA,IAClC,CAAC,OAA8B,eAA2B,KAAA;AACxD,MAAA,kBAAA,CAAmB,eAAe,CAAA;AAClC,MAAA,IAAI,WAAY,CAAA,OAAA,CAAQ,eAAiB,EAAA,iBAAiB,KAAK,CAAG,EAAA;AAChE,QAAA,oBAAA;AAAA,UACE,WAAY,CAAA,OAAA;AAAA,YACV,YAAY,QAAS,CAAA,eAAA,EAAiB,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,YACnD;AAAA;AACF,SACF;AAAA;AAEF,MAAA,uBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,uBAAA,CAA0B,KAAO,EAAA,eAAA,CAAA;AAAA,KACnC;AAAA,IACA,CAAC,WAAa,EAAA,iBAAA,EAAmB,uBAAuB;AAAA,GAC1D;AAEA,EAAA,MAAM,oBAAuB,GAAA;AAAA,IAC3B,SAAA,EACE,gBAAgB,WAAY,CAAA,OAAA,CAAQ,aAAa,SAAS,CAAA,GACtD,aAAa,SACb,GAAA,IAAA;AAAA,IACN,OAAA,EACE,gBAAgB,WAAY,CAAA,OAAA,CAAQ,aAAa,OAAO,CAAA,GACpD,aAAa,OACb,GAAA;AAAA,GACR;AAEA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,oCAAuC,GAAA,WAAA;AAAA,IAC3C,CAAC,OAA8B,cAA0B,KAAA;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,IACE,kBACA,CAAC,WAAA,CAAY,OAAO,iBAAmB,EAAA,cAAA,EAAgB,OAAO,CAC9D,EAAA;AACA,QAAA,6BAAA;AAAA,UACE,KAAA;AAAA,UACA,WAAA,CAAY,OAAQ,CAAA,cAAA,EAAgB,OAAO;AAAA,SAC7C;AAAA;AAEF,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,KAC/B;AAAA,IACA;AAAA,MACE,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,6BAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,kCAAqC,GAAA,WAAA;AAAA,IACzC,CAAC,OAA8B,cAA0B,KAAA;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,IACE,kBACA,CAAC,WAAA,CAAY,OAAO,eAAiB,EAAA,cAAA,EAAgB,OAAO,CAC5D,EAAA;AACA,QAAA,2BAAA;AAAA,UACE,KAAA;AAAA,UACA,WAAA,CAAY,OAAQ,CAAA,cAAA,EAAgB,OAAO;AAAA,SAC7C;AAAA;AAEF,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,KAC/B;AAAA,IACA;AAAA,MACE,WAAA;AAAA,MACA,eAAA;AAAA,MACA,2BAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAM,MAAA,kBAAA,GAAqB,CACzB,qBAAA,EACA,mBACG,KAAA;AACH,IAAM,MAAA,qBAAA,GAAwB,CAAC,IAAgB,KAAA;AAC7C,MACE,OAAA,WAAA,CAAY,OAAQ,CAAA,IAAA,EAAM,OAAO,CAAA,GAAI,KACrC,WAAY,CAAA,OAAA,CAAQ,IAAM,EAAA,OAAO,CAAI,GAAA,CAAA;AAAA,KAEzC;AACA,IAAM,MAAA,eAAA,GAAkB,CAAC,IAAA,KACvB,EACE,IAAA,KAAA,CACC,uDAAoB,IACnB,CAAA,MAAA,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAgB,IAChB,CAAA,CAAA,IAAA,qBAAA,CAAsB,IAAI,CAAA,CAAA,CAAA;AAGhC,IAAM,MAAA,sBAAA,GAAyB,CAAC,YAAwB,KAAA;AACtD,MAAA,IAAA,CACE,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,SAAA,KACd,WAAY,CAAA,MAAA,CAAO,YAAc,EAAA,YAAA,CAAa,SAAW,EAAA,OAAO,CAChE,IAAA,eAAA,CAAgB,YAAa,CAAA,SAAS,CACtC,EAAA;AACA,QAAA,OAAO,YAAa,CAAA,SAAA;AAAA;AAEtB,MAAA,IAAA,CACE,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,OAAA,KACd,WAAY,CAAA,MAAA,CAAO,YAAc,EAAA,YAAA,CAAa,OAAS,EAAA,OAAO,CAC9D,IAAA,eAAA,CAAgB,YAAa,CAAA,OAAO,CACpC,EAAA;AACA,QAAA,OAAO,YAAa,CAAA,OAAA;AAAA;AAEtB,MAAO,OAAA,IAAA;AAAA,KACT;AACA,IAAI,IAAA,iBAAA,GAAoB,uBAAuB,qBAAqB,CAAA;AACpE,IACE,iBAAA,GAAA,iBAAA,IAAqB,uBAAuB,mBAAmB,CAAA;AACjE,IAAI,IAAA,iBAAA,IAAqB,eAAgB,CAAA,iBAAiB,CAAG,EAAA;AAC3D,MAAO,OAAA,iBAAA;AAAA;AAGT,IAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,KAAA,CAAM,QAAQ,CAAA;AACxC,IAAA,IAAA,CACG,WAAY,CAAA,MAAA,CAAO,qBAAuB,EAAA,KAAA,EAAO,OAAO,CACvD,IAAA,WAAA,CAAY,MAAO,CAAA,mBAAA,EAAqB,KAAO,EAAA,OAAO,CACxD,KAAA,eAAA,CAAgB,KAAK,CACrB,EAAA;AACA,MAAO,OAAA,KAAA;AAAA;AAGT,IAAM,MAAA,sBAAA,GAAyB,CAAC,YAAwB,KAAA;AACtD,MAAA,MAAM,mBAAsB,GAAA,qBAAA;AAAA,QAC1B,WAAA;AAAA,QACA;AAAA,QACA,IAAK,CAAA,CAAC,UAAe,KAAA,eAAA,CAAgB,UAAU,CAAC,CAAA;AAClD,MAAA,OAAO,mBAAuB,IAAA,IAAA;AAAA,KAChC;AAEA,IAAA,OACE,sBAAuB,CAAA,qBAAqB,CAC5C,IAAA,sBAAA,CAAuB,mBAAmB,CAAA;AAAA,GAE9C;AAGA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA;AAAA;AAGF,IAAM,MAAA,gBAAA,GAAA,CACJ,6CAAc,SACd,KAAA,WAAA,CAAY,QAAQ,YAAa,CAAA,SAAS,KAC1C,WAAY,CAAA,OAAA,CAAQ,aAAa,SAAW,EAAA,OAAO,KAAK,CACxD,IAAA,WAAA,CAAY,QAAQ,YAAa,CAAA,SAAA,EAAW,OAAO,CAAK,IAAA,CAAA;AAE1D,IAAM,MAAA,cAAA,GAAA,CACJ,6CAAc,OACd,KAAA,WAAA,CAAY,QAAQ,YAAa,CAAA,OAAO,KACxC,WAAY,CAAA,OAAA,CAAQ,aAAa,OAAS,EAAA,OAAO,KAAK,CACtD,IAAA,WAAA,CAAY,QAAQ,YAAa,CAAA,OAAA,EAAS,OAAO,CAAK,IAAA,CAAA;AAExD,IAAA,IAAI,qBAAwB,GAAA,iBAAA;AAC5B,IAAA,IAAI,mBAAsB,GAAA,eAAA;AAE1B,IAAM,MAAA,gBAAA,GAAmB,CACvB,KAAA,EACA,GACG,KAAA;AACH,MAAwB,qBAAA,GAAA,WAAA,CAAY,OAAQ,CAAA,KAAA,EAAO,OAAO,CAAA;AAC1D,MAAsB,mBAAA,GAAA,WAAA,CAAY,OAAQ,CAAA,GAAA,EAAK,OAAO,CAAA;AAAA,KACxD;AAEA,IAAA,IAAA,CACE,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,SAAA,MACd,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,OAAA,CAAA,IACd,oBACA,cACA,EAAA;AACA,MAAA,IACE,WAAY,CAAA,MAAA;AAAA,QACV,YAAa,CAAA,SAAA;AAAA,QACb,iBAAA;AAAA,QACA;AAAA,WAEF,WAAY,CAAA,MAAA,CAAO,aAAa,OAAS,EAAA,iBAAA,EAAmB,OAAO,CACnE,EAAA;AACA,QAAA,gBAAA;AAAA,UACE,YAAa,CAAA,SAAA;AAAA,UACb,YAAY,GAAI,CAAA,YAAA,CAAa,WAAW,EAAE,MAAA,EAAQ,GAAG;AAAA,SACvD;AAAA,OACK,MAAA;AACL,QAAiB,gBAAA,CAAA,YAAA,CAAa,SAAW,EAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAC/D,KACF,MAAA,IAAA,CAAW,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,SAAA,KAAa,gBAAkB,EAAA;AACtD,MAAA,gBAAA;AAAA,QACE,YAAa,CAAA,SAAA;AAAA,QACb,YAAY,GAAI,CAAA,YAAA,CAAa,WAAW,EAAE,MAAA,EAAQ,GAAG;AAAA,OACvD;AAAA,KACF,MAAA,IAAA,CAAW,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,OAAA,KAAW,cAAgB,EAAA;AAClD,MAAA,gBAAA;AAAA,QACE,YAAY,QAAS,CAAA,YAAA,CAAa,SAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,QACxD,YAAa,CAAA;AAAA,OACf;AAAA;AAGF,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAA,cAAA,CAAe,CAAC,eAAoB,KAAA;AAClC,QAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,UAAO,OAAA,kBAAA,CAAmB,uBAAuB,mBAAmB,CAAA;AAAA;AAEtE,QAAO,OAAA,eAAA;AAAA,OACR,CAAA;AAAA;AACH,KACC,CAAC,WAAA,EAAa,OAAS,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAE3C,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,YAAc,EAAA,iBAAA;AAAA,IACd,WAAA;AAAA,IACA,YAAc,EAAA,oBAAA;AAAA,IACd,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAgB,EAAA,eAAA;AAAA,IAChB,WAAA,EACE,eACA,WAAY,CAAA,OAAA;AAAA,MACV,WAAA;AAAA,MACA,WAAA,CAAY,OAAQ,CAAA,eAAA,EAAiB,OAAO;AAAA,KAC9C,GAAI,IACA,WACA,GAAA,IAAA;AAAA,IACN,mBAAqB,EAAA,4BAAA;AAAA,IACrB,mBAAqB,EAAA,oCAAA;AAAA,IACrB,oBAAsB,EAAA,6BAAA;AAAA,IACtB,iBAAmB,EAAA,qBAAA;AAAA,IACnB,mBAAqB,EAAA,IAAA;AAAA,IACrB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL;AACA,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,YAAc,EAAA,eAAA;AAAA,IACd,WAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAgB,EAAA,eAAA;AAAA,IAChB,WAAA,EACE,eACA,WAAY,CAAA,OAAA;AAAA,MACV,WAAA;AAAA,MACA,WAAA,CAAY,OAAQ,CAAA,eAAA,EAAiB,OAAO;AAAA,KAC9C,IAAK,IACD,WACA,GAAA,IAAA;AAAA,IACN,YAAc,EAAA,oBAAA;AAAA,IACd,mBAAqB,EAAA,kCAAA;AAAA,IACrB,mBAAqB,EAAA,0BAAA;AAAA,IACrB,oBAAsB,EAAA,2BAAA;AAAA,IACtB,iBAAmB,EAAA,qBAAA;AAAA,IACnB,mBAAqB,EAAA,IAAA;AAAA,IACrB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,UAAU,EAAA,IAAA;AAAA,MACV,GAAK,EAAA,CAAA;AAAA,MACL,SAAW,EAAA,IAAA,CAAK,SAAW,EAAA,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,MACpD,GAAK,EAAA,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QACC,UAAA,oBAAA,GAAA,CAAC,YAAS,SAAW,EAAA,YAAA,CAAa,QAAQ,CACxC,EAAA,QAAA,kBAAA,GAAA,CAAC,mBAAqB,EAAA,EAAA,QAAA,EAAA,UAAA,EAAW,CACnC,EAAA,CAAA;AAAA,wBAEF,GAAA,CAAC,UAAW,EAAA,EAAA,GAAA,EAAK,CAEf,EAAA,QAAA,kBAAA,IAAA,CAAC,iBAAiB,QAAjB,EAAA,EAA0B,KAAO,EAAA,EAChC,EAAA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,QAAS,EAAA,EAAA,gBAAA,EAAkB,OAAU,EAAA,GAAG,kBACvC,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,kBAAA;AAAA,cAAA;AAAA,gBACC,qBAAqB,WAAY,CAAA,MAAA;AAAA,kBAC/B,iBAAA;AAAA,kBACA,YAAY,QAAS,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,kBAC3C;AAAA,iBACF;AAAA,gBACC,GAAG;AAAA;AAAA,aACN;AAAA,4BACA,GAAA,CAAC,YAAc,EAAA,EAAA,GAAG,sBAAwB,EAAA;AAAA,WAC5C,EAAA,CAAA;AAAA,0BACC,IAAA,CAAA,QAAA,EAAA,EAAS,gBAAkB,EAAA,OAAA,EAAU,GAAG,gBACvC,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,kBAAA;AAAA,cAAA;AAAA,gBACC,yBAAyB,WAAY,CAAA,MAAA;AAAA,kBACnC,eAAA;AAAA,kBACA,YAAY,GAAI,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,kBACtC;AAAA,iBACF;AAAA,gBACC,GAAG;AAAA;AAAA,aACN;AAAA,4BACA,GAAA,CAAC,YAAc,EAAA,EAAA,GAAG,oBAAsB,EAAA;AAAA,WAC1C,EAAA;AAAA,SAAA,EACF,CACF,EAAA;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
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":["DatePickerRangePanel","datePickerPanelCss"],"mappings":"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"}
@@ -52,7 +52,7 @@ const DatePickerSingleGridPanel = forwardRef(
52
52
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
53
53
  maxDate = dateAdapter.add(minDate, { months: 1 })
54
54
  },
55
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
55
+ helpers: { select, isDayHighlighted, isDayUnselectable }
56
56
  } = stateAndHelpers;
57
57
  const { matchedBreakpoints } = useBreakpoint();
58
58
  const responsiveColumns = resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;
@@ -136,7 +136,7 @@ const DatePickerSingleGridPanel = forwardRef(
136
136
  const isOutsideAllowedDates = (date) => {
137
137
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
138
138
  };
139
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
139
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
140
140
  const startVisibleMonth = dateAdapter.startOf(visibleMonth, "month");
141
141
  const endVisibleMonth = dateAdapter.add(visibleMonth, {
142
142
  months: responsiveNumberOfVisibleMonths - 1
@@ -176,7 +176,6 @@ const DatePickerSingleGridPanel = forwardRef(
176
176
  );
177
177
  }, [
178
178
  dateAdapter,
179
- isDayDisabled,
180
179
  isDayUnselectable,
181
180
  minDate,
182
181
  maxDate,
@@ -201,7 +200,6 @@ const DatePickerSingleGridPanel = forwardRef(
201
200
  focusedDateRef: initialFocusRef,
202
201
  focusedDate: (calendarGridFocused == null ? void 0 : calendarGridFocused.current) ? focusedDate : null,
203
202
  hoveredDate,
204
- isDayDisabled,
205
203
  isDayHighlighted,
206
204
  isDayUnselectable,
207
205
  hideOutOfRangeDates: true,