@salt-ds/lab 1.0.0-alpha.75 → 1.0.0-alpha.77

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 (794) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/css/salt-lab.css +284 -251
  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/index.js +0 -21
  170. package/dist-cjs/index.js.map +1 -1
  171. package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
  172. package/dist-cjs/input-legacy/StaticInputAdornment.js.map +1 -1
  173. package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
  174. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  175. package/dist-cjs/list/Highlighter.js.map +1 -1
  176. package/dist-cjs/list/List.js.map +1 -1
  177. package/dist-cjs/list/ListItem.js.map +1 -1
  178. package/dist-cjs/list/ListItemGroup.js.map +1 -1
  179. package/dist-cjs/list/ListItemHeader.js.map +1 -1
  180. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  181. package/dist-cjs/list/keyset.js.map +1 -1
  182. package/dist-cjs/list/useList.js.map +1 -1
  183. package/dist-cjs/list/useListHeight.js.map +1 -1
  184. package/dist-cjs/list/useVirtualization.js.map +1 -1
  185. package/dist-cjs/list-deprecated/List.js.map +1 -1
  186. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  187. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  188. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  189. package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
  190. package/dist-cjs/list-deprecated/ListStateContext.js.map +1 -1
  191. package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
  192. package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
  193. package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  194. package/dist-cjs/list-deprecated/internal/helpers.js.map +1 -1
  195. package/dist-cjs/list-deprecated/internal/scrollIntoView.js.map +1 -1
  196. package/dist-cjs/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  197. package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
  198. package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
  199. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  200. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  201. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  202. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  203. package/dist-cjs/list-next/ListNext.js.map +1 -1
  204. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  205. package/dist-cjs/list-next/useList.js.map +1 -1
  206. package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
  207. package/dist-cjs/logo/Logo.js.map +1 -1
  208. package/dist-cjs/logo/LogoImage.js.map +1 -1
  209. package/dist-cjs/logo/LogoSeparator.js.map +1 -1
  210. package/dist-cjs/menu-button/MenuButton.js.map +1 -1
  211. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  212. package/dist-cjs/metric/Metric.js.map +1 -1
  213. package/dist-cjs/metric/MetricContent.js.map +1 -1
  214. package/dist-cjs/metric/MetricHeader.js.map +1 -1
  215. package/dist-cjs/metric/internal/MetricContext.js.map +1 -1
  216. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  217. package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  218. package/dist-cjs/number-input/internal/useCaret.js.map +1 -1
  219. package/dist-cjs/number-input/internal/useInterval.js.map +1 -1
  220. package/dist-cjs/number-input/internal/utils.js.map +1 -1
  221. package/dist-cjs/number-input/useNumberInput.js.map +1 -1
  222. package/dist-cjs/portal/Portal.js.map +1 -1
  223. package/dist-cjs/query-input/QueryInput.js.map +1 -1
  224. package/dist-cjs/query-input/internal/CategoryList.js.map +1 -1
  225. package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
  226. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  227. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  228. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  229. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  230. package/dist-cjs/query-input/internal/ValueSelector.js.map +1 -1
  231. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  232. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  233. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  234. package/dist-cjs/responsive/overflowUtils.js.map +1 -1
  235. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  236. package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
  237. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  238. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  239. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  240. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  241. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  242. package/dist-cjs/responsive/useWidth.js.map +1 -1
  243. package/dist-cjs/responsive/utils.js.map +1 -1
  244. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  245. package/dist-cjs/static-list/StaticList.js.map +1 -1
  246. package/dist-cjs/static-list/StaticListItem.js.map +1 -1
  247. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -1
  248. package/dist-cjs/system-status/SystemStatus.js.map +1 -1
  249. package/dist-cjs/system-status/SystemStatusActions.js.map +1 -1
  250. package/dist-cjs/system-status/SystemStatusContent.js.map +1 -1
  251. package/dist-cjs/table/TBody.js.map +1 -1
  252. package/dist-cjs/table/TD.js +6 -2
  253. package/dist-cjs/table/TD.js.map +1 -1
  254. package/dist-cjs/table/TFoot.js.map +1 -1
  255. package/dist-cjs/table/TH.js +6 -2
  256. package/dist-cjs/table/TH.js.map +1 -1
  257. package/dist-cjs/table/THead.js.map +1 -1
  258. package/dist-cjs/table/TR.js.map +1 -1
  259. package/dist-cjs/table/Table.css.js +1 -1
  260. package/dist-cjs/table/Table.js +2 -2
  261. package/dist-cjs/table/Table.js.map +1 -1
  262. package/dist-cjs/tabs/Tab.js.map +1 -1
  263. package/dist-cjs/tabs/TabActivationIndicator.js.map +1 -1
  264. package/dist-cjs/tabs/TabPanel.js.map +1 -1
  265. package/dist-cjs/tabs/Tabs.js.map +1 -1
  266. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  267. package/dist-cjs/tabs/drag-drop/Draggable.js.map +1 -1
  268. package/dist-cjs/tabs/drag-drop/drag-utils.js.map +1 -1
  269. package/dist-cjs/tabs/drag-drop/dragDropTypes.js.map +1 -1
  270. package/dist-cjs/tabs/drag-drop/useDragDrop.js.map +1 -1
  271. package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  272. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  273. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  274. package/dist-cjs/tabs/useEditableItem.js.map +1 -1
  275. package/dist-cjs/tabs/useItemsWithIds.js.map +1 -1
  276. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  277. package/dist-cjs/tabs/useSelection.js.map +1 -1
  278. package/dist-cjs/tabs/useTabs.js.map +1 -1
  279. package/dist-cjs/tabs/useTabstrip.js.map +1 -1
  280. package/dist-cjs/tabs-next/TabBar.js.map +1 -1
  281. package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
  282. package/dist-cjs/tabs-next/TabListNext.js +3 -3
  283. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  284. package/dist-cjs/tabs-next/TabNext.css.js +1 -1
  285. package/dist-cjs/tabs-next/TabNext.js +0 -1
  286. package/dist-cjs/tabs-next/TabNext.js.map +1 -1
  287. package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
  288. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
  289. package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
  290. package/dist-cjs/tabs-next/TabNextTrigger.css.js +1 -1
  291. package/dist-cjs/tabs-next/TabNextTrigger.js +24 -23
  292. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  293. package/dist-cjs/tabs-next/TabOverflowList.css.js +1 -1
  294. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  295. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  296. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  297. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  298. package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
  299. package/dist-cjs/tabs-next/hooks/useOverflow.js +1 -1
  300. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  301. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js +3 -3
  302. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  303. package/dist-cjs/toast-group/ToastGroup.js.map +1 -1
  304. package/dist-cjs/tokenized-input/TokenizedInput.js.map +1 -1
  305. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  306. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  307. package/dist-cjs/tokenized-input/internal/InputRuler.js.map +1 -1
  308. package/dist-cjs/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  309. package/dist-cjs/tokenized-input/internal/defaultItemToString.js.map +1 -1
  310. package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
  311. package/dist-cjs/tokenized-input/internal/isPlainObject.js.map +1 -1
  312. package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
  313. package/dist-cjs/tokenized-input/internal/useWidth.js.map +1 -1
  314. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  315. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  316. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  317. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  318. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  319. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -1
  320. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  321. package/dist-cjs/toolbar/Toolbar.js.map +1 -1
  322. package/dist-cjs/toolbar/ToolbarButton.js.map +1 -1
  323. package/dist-cjs/toolbar/Tooltray.js.map +1 -1
  324. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  325. package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
  326. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  327. package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  328. package/dist-cjs/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  329. package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  330. package/dist-cjs/tree/Tree.js.map +1 -1
  331. package/dist-cjs/tree/TreeNode.js.map +1 -1
  332. package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
  333. package/dist-cjs/tree/useTree.js.map +1 -1
  334. package/dist-cjs/utils/escapeRegExp.js.map +1 -1
  335. package/dist-cjs/utils/forwardCallbackProps.js.map +1 -1
  336. package/dist-cjs/utils/isEmail.js.map +1 -1
  337. package/dist-cjs/utils/isPlainObject.js.map +1 -1
  338. package/dist-cjs/utils/partition.js.map +1 -1
  339. package/dist-cjs/utils/useClickOutside.js.map +1 -1
  340. package/dist-cjs/utils/useEventCallback.js.map +1 -1
  341. package/dist-cjs/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  342. package/dist-cjs/utils/useLayoutEffectOnce.js.map +1 -1
  343. package/dist-cjs/utils/useLayoutEffectSkipFirst.js.map +1 -1
  344. package/dist-cjs/utils/useOverflowDetection.js.map +1 -1
  345. package/dist-cjs/utils/useSlideSelection.js.map +1 -1
  346. package/dist-cjs/window/ElectronWindow.js.map +1 -1
  347. package/dist-cjs/window/WindowContext.js.map +1 -1
  348. package/dist-cjs/window/desktop-utils.js.map +1 -1
  349. package/dist-es/app-header/AppHeader.js.map +1 -1
  350. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  351. package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
  352. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  353. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
  354. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
  355. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
  356. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  357. package/dist-es/button-bar/OrderedButton.js.map +1 -1
  358. package/dist-es/button-bar/internal/ButtonBarContext.js.map +1 -1
  359. package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
  360. package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
  361. package/dist-es/button-bar/internal/useDescendants.js.map +1 -1
  362. package/dist-es/calendar/Calendar.css.js +1 -1
  363. package/dist-es/calendar/Calendar.js +12 -3
  364. package/dist-es/calendar/Calendar.js.map +1 -1
  365. package/dist-es/calendar/CalendarGrid.js +39 -37
  366. package/dist-es/calendar/CalendarGrid.js.map +1 -1
  367. package/dist-es/calendar/CalendarMonthHeader.js +1 -1
  368. package/dist-es/calendar/CalendarMonthHeader.js.map +1 -1
  369. package/dist-es/calendar/CalendarNavigation.css.js +1 -1
  370. package/dist-es/calendar/CalendarNavigation.js +21 -14
  371. package/dist-es/calendar/CalendarNavigation.js.map +1 -1
  372. package/dist-es/calendar/CalendarWeekHeader.css.js +1 -1
  373. package/dist-es/calendar/CalendarWeekHeader.js +2 -2
  374. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
  375. package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
  376. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  377. package/dist-es/calendar/internal/CalendarDay.js +27 -37
  378. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  379. package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
  380. package/dist-es/calendar/internal/CalendarMonth.js +31 -10
  381. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  382. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  383. package/dist-es/calendar/internal/utils.js.map +1 -1
  384. package/dist-es/calendar/useCalendar.js +7 -9
  385. package/dist-es/calendar/useCalendar.js.map +1 -1
  386. package/dist-es/calendar/useCalendarDay.js +7 -11
  387. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  388. package/dist-es/calendar/useCalendarSelection.js +144 -76
  389. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  390. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  391. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  392. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  393. package/dist-es/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
  394. package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
  395. package/dist-es/cascading-menu/internal/menuPositioning.js.map +1 -1
  396. package/dist-es/cascading-menu/internal/stateUtils.js.map +1 -1
  397. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  398. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  399. package/dist-es/cascading-menu/internal/useMountedRef.js.map +1 -1
  400. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  401. package/dist-es/cascading-menu/internal/useRefsManager.js.map +1 -1
  402. package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
  403. package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
  404. package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
  405. package/dist-es/color-chooser/Color.js.map +1 -1
  406. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  407. package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
  408. package/dist-es/color-chooser/ColorPicker.js.map +1 -1
  409. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  410. package/dist-es/color-chooser/GetColorPalettes.js.map +1 -1
  411. package/dist-es/color-chooser/HexInput.js.map +1 -1
  412. package/dist-es/color-chooser/RGBAInput.js.map +1 -1
  413. package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
  414. package/dist-es/color-chooser/Swatch.js.map +1 -1
  415. package/dist-es/color-chooser/Swatches.js.map +1 -1
  416. package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
  417. package/dist-es/color-chooser/color-utils.js.map +1 -1
  418. package/dist-es/color-chooser/colorMap.js.map +1 -1
  419. package/dist-es/color-chooser/createTabsMapping.js.map +1 -1
  420. package/dist-es/combo-box/ComboBox.js.map +1 -1
  421. package/dist-es/combo-box/useCombobox.js.map +1 -1
  422. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  423. package/dist-es/combo-box-deprecated/filterHelpers.js.map +1 -1
  424. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  425. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  426. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  427. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  428. package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
  429. package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
  430. package/dist-es/common-hooks/collectionProvider.js.map +1 -1
  431. package/dist-es/common-hooks/itemToString.js.map +1 -1
  432. package/dist-es/common-hooks/keyUtils.js.map +1 -1
  433. package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
  434. package/dist-es/common-hooks/selectionTypes.js.map +1 -1
  435. package/dist-es/common-hooks/useAutoSizer.js.map +1 -1
  436. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  437. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  438. package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
  439. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  440. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  441. package/dist-es/common-hooks/useSelection.js.map +1 -1
  442. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  443. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  444. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  445. package/dist-es/common-hooks/utils/filter-utils.js.map +1 -1
  446. package/dist-es/common-hooks/utils/isSelected.js.map +1 -1
  447. package/dist-es/contact-details/ContactAction.js.map +1 -1
  448. package/dist-es/contact-details/ContactActions.js.map +1 -1
  449. package/dist-es/contact-details/ContactAvatar.js.map +1 -1
  450. package/dist-es/contact-details/ContactDetails.js.map +1 -1
  451. package/dist-es/contact-details/ContactFavoriteToggle.js.map +1 -1
  452. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  453. package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
  454. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  455. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  456. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  457. package/dist-es/contact-details/MailLinkComponent.js.map +1 -1
  458. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  459. package/dist-es/contact-details/internal/FavoriteToggle.js.map +1 -1
  460. package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  461. package/dist-es/contact-details/internal/StarIcon.js.map +1 -1
  462. package/dist-es/contact-details/internal/StarIconContainer.js.map +1 -1
  463. package/dist-es/contact-details/internal/useComponentSize.js.map +1 -1
  464. package/dist-es/content-status/ContentStatus.js.map +1 -1
  465. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  466. package/dist-es/date-input/DateInputRange.js +3 -2
  467. package/dist-es/date-input/DateInputRange.js.map +1 -1
  468. package/dist-es/date-input/DateInputSingle.js +5 -2
  469. package/dist-es/date-input/DateInputSingle.js.map +1 -1
  470. package/dist-es/date-picker/DatePicker.js +0 -2
  471. package/dist-es/date-picker/DatePicker.js.map +1 -1
  472. package/dist-es/date-picker/DatePickerActions.js +1 -1
  473. package/dist-es/date-picker/DatePickerActions.js.map +1 -1
  474. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  475. package/dist-es/date-picker/DatePickerHelperText.js.map +1 -1
  476. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
  477. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
  478. package/dist-es/date-picker/DatePickerRangeGridPanel.js +2 -3
  479. package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -1
  480. package/dist-es/date-picker/DatePickerRangeInput.js +22 -8
  481. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  482. package/dist-es/date-picker/DatePickerRangePanel.js +2 -4
  483. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
  484. package/dist-es/date-picker/DatePickerSingleGridPanel.js +2 -4
  485. package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -1
  486. package/dist-es/date-picker/DatePickerSingleInput.js +12 -7
  487. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  488. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
  489. package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
  490. package/dist-es/date-picker/useDatePicker.js +0 -17
  491. package/dist-es/date-picker/useDatePicker.js.map +1 -1
  492. package/dist-es/date-picker/useFocusOut.js.map +1 -1
  493. package/dist-es/date-picker/useKeyboard.js.map +1 -1
  494. package/dist-es/deck-item/DeckItem.js.map +1 -1
  495. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  496. package/dist-es/dropdown/Dropdown.js.map +1 -1
  497. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  498. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  499. package/dist-es/dropdown/useClickAway.js.map +1 -1
  500. package/dist-es/dropdown/useDropdown.js.map +1 -1
  501. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  502. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  503. package/dist-es/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
  504. package/dist-es/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
  505. package/dist-es/form-field-legacy/FormActivationIndicator.js.map +1 -1
  506. package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
  507. package/dist-es/form-field-legacy/FormHelperText.js.map +1 -1
  508. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  509. package/dist-es/form-field-legacy/NecessityIndicator.js.map +1 -1
  510. package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
  511. package/dist-es/form-field-legacy/constant.js.map +1 -1
  512. package/dist-es/form-group/FormGroup.js.map +1 -1
  513. package/dist-es/formatted-input/FormattedInput.js.map +1 -1
  514. package/dist-es/formatted-input/internal/InputWithMask.js.map +1 -1
  515. package/dist-es/index.js +0 -10
  516. package/dist-es/index.js.map +1 -1
  517. package/dist-es/input-legacy/InputLegacy.js.map +1 -1
  518. package/dist-es/input-legacy/StaticInputAdornment.js.map +1 -1
  519. package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
  520. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  521. package/dist-es/list/Highlighter.js.map +1 -1
  522. package/dist-es/list/List.js.map +1 -1
  523. package/dist-es/list/ListItem.js.map +1 -1
  524. package/dist-es/list/ListItemGroup.js.map +1 -1
  525. package/dist-es/list/ListItemHeader.js.map +1 -1
  526. package/dist-es/list/VirtualizedList.js.map +1 -1
  527. package/dist-es/list/keyset.js.map +1 -1
  528. package/dist-es/list/useList.js.map +1 -1
  529. package/dist-es/list/useListHeight.js.map +1 -1
  530. package/dist-es/list/useVirtualization.js.map +1 -1
  531. package/dist-es/list-deprecated/List.js.map +1 -1
  532. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  533. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  534. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  535. package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
  536. package/dist-es/list-deprecated/ListStateContext.js.map +1 -1
  537. package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
  538. package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
  539. package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
  540. package/dist-es/list-deprecated/internal/helpers.js.map +1 -1
  541. package/dist-es/list-deprecated/internal/scrollIntoView.js.map +1 -1
  542. package/dist-es/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  543. package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
  544. package/dist-es/list-deprecated/itemToString.js.map +1 -1
  545. package/dist-es/list-deprecated/useList.js.map +1 -1
  546. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  547. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  548. package/dist-es/list-next/ListItemNext.js.map +1 -1
  549. package/dist-es/list-next/ListNext.js.map +1 -1
  550. package/dist-es/list-next/ListNextContext.js.map +1 -1
  551. package/dist-es/list-next/useList.js.map +1 -1
  552. package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
  553. package/dist-es/logo/Logo.js.map +1 -1
  554. package/dist-es/logo/LogoImage.js.map +1 -1
  555. package/dist-es/logo/LogoSeparator.js.map +1 -1
  556. package/dist-es/menu-button/MenuButton.js.map +1 -1
  557. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  558. package/dist-es/metric/Metric.js.map +1 -1
  559. package/dist-es/metric/MetricContent.js.map +1 -1
  560. package/dist-es/metric/MetricHeader.js.map +1 -1
  561. package/dist-es/metric/internal/MetricContext.js.map +1 -1
  562. package/dist-es/number-input/NumberInput.js.map +1 -1
  563. package/dist-es/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
  564. package/dist-es/number-input/internal/useCaret.js.map +1 -1
  565. package/dist-es/number-input/internal/useInterval.js.map +1 -1
  566. package/dist-es/number-input/internal/utils.js.map +1 -1
  567. package/dist-es/number-input/useNumberInput.js.map +1 -1
  568. package/dist-es/portal/Portal.js.map +1 -1
  569. package/dist-es/query-input/QueryInput.js.map +1 -1
  570. package/dist-es/query-input/internal/CategoryList.js.map +1 -1
  571. package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
  572. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  573. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  574. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  575. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  576. package/dist-es/query-input/internal/ValueSelector.js.map +1 -1
  577. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  578. package/dist-es/query-input/useQueryInput.js.map +1 -1
  579. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  580. package/dist-es/responsive/overflowUtils.js.map +1 -1
  581. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  582. package/dist-es/responsive/useInstantCollapse.js.map +1 -1
  583. package/dist-es/responsive/useOverflow.js.map +1 -1
  584. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  585. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  586. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  587. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  588. package/dist-es/responsive/useWidth.js.map +1 -1
  589. package/dist-es/responsive/utils.js.map +1 -1
  590. package/dist-es/search-input/SearchInput.js.map +1 -1
  591. package/dist-es/static-list/StaticList.js.map +1 -1
  592. package/dist-es/static-list/StaticListItem.js.map +1 -1
  593. package/dist-es/static-list/StaticListItemContent.js.map +1 -1
  594. package/dist-es/system-status/SystemStatus.js.map +1 -1
  595. package/dist-es/system-status/SystemStatusActions.js.map +1 -1
  596. package/dist-es/system-status/SystemStatusContent.js.map +1 -1
  597. package/dist-es/table/TBody.js.map +1 -1
  598. package/dist-es/table/TD.js +6 -2
  599. package/dist-es/table/TD.js.map +1 -1
  600. package/dist-es/table/TFoot.js.map +1 -1
  601. package/dist-es/table/TH.js +6 -2
  602. package/dist-es/table/TH.js.map +1 -1
  603. package/dist-es/table/THead.js.map +1 -1
  604. package/dist-es/table/TR.js.map +1 -1
  605. package/dist-es/table/Table.css.js +1 -1
  606. package/dist-es/table/Table.js +2 -2
  607. package/dist-es/table/Table.js.map +1 -1
  608. package/dist-es/tabs/Tab.js.map +1 -1
  609. package/dist-es/tabs/TabActivationIndicator.js.map +1 -1
  610. package/dist-es/tabs/TabPanel.js.map +1 -1
  611. package/dist-es/tabs/Tabs.js.map +1 -1
  612. package/dist-es/tabs/Tabstrip.js.map +1 -1
  613. package/dist-es/tabs/drag-drop/Draggable.js.map +1 -1
  614. package/dist-es/tabs/drag-drop/drag-utils.js.map +1 -1
  615. package/dist-es/tabs/drag-drop/dragDropTypes.js.map +1 -1
  616. package/dist-es/tabs/drag-drop/useDragDrop.js.map +1 -1
  617. package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
  618. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  619. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  620. package/dist-es/tabs/useEditableItem.js.map +1 -1
  621. package/dist-es/tabs/useItemsWithIds.js.map +1 -1
  622. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  623. package/dist-es/tabs/useSelection.js.map +1 -1
  624. package/dist-es/tabs/useTabs.js.map +1 -1
  625. package/dist-es/tabs/useTabstrip.js.map +1 -1
  626. package/dist-es/tabs-next/TabBar.js.map +1 -1
  627. package/dist-es/tabs-next/TabListNext.css.js +1 -1
  628. package/dist-es/tabs-next/TabListNext.js +3 -3
  629. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  630. package/dist-es/tabs-next/TabNext.css.js +1 -1
  631. package/dist-es/tabs-next/TabNext.js +0 -1
  632. package/dist-es/tabs-next/TabNext.js.map +1 -1
  633. package/dist-es/tabs-next/TabNextAction.js.map +1 -1
  634. package/dist-es/tabs-next/TabNextContext.js.map +1 -1
  635. package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
  636. package/dist-es/tabs-next/TabNextTrigger.css.js +1 -1
  637. package/dist-es/tabs-next/TabNextTrigger.js +24 -23
  638. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  639. package/dist-es/tabs-next/TabOverflowList.css.js +1 -1
  640. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  641. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  642. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  643. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  644. package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
  645. package/dist-es/tabs-next/hooks/useOverflow.js +1 -1
  646. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  647. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js +3 -3
  648. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
  649. package/dist-es/toast-group/ToastGroup.js.map +1 -1
  650. package/dist-es/tokenized-input/TokenizedInput.js.map +1 -1
  651. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  652. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  653. package/dist-es/tokenized-input/internal/InputRuler.js.map +1 -1
  654. package/dist-es/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
  655. package/dist-es/tokenized-input/internal/defaultItemToString.js.map +1 -1
  656. package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
  657. package/dist-es/tokenized-input/internal/isPlainObject.js.map +1 -1
  658. package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
  659. package/dist-es/tokenized-input/internal/useWidth.js.map +1 -1
  660. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  661. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  662. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  663. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
  664. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
  665. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -1
  666. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
  667. package/dist-es/toolbar/Toolbar.js.map +1 -1
  668. package/dist-es/toolbar/ToolbarButton.js.map +1 -1
  669. package/dist-es/toolbar/Tooltray.js.map +1 -1
  670. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  671. package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
  672. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  673. package/dist-es/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
  674. package/dist-es/toolbar/toolbar-field/ToolbarField.js.map +1 -1
  675. package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
  676. package/dist-es/tree/Tree.js.map +1 -1
  677. package/dist-es/tree/TreeNode.js.map +1 -1
  678. package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
  679. package/dist-es/tree/useTree.js.map +1 -1
  680. package/dist-es/utils/escapeRegExp.js.map +1 -1
  681. package/dist-es/utils/forwardCallbackProps.js.map +1 -1
  682. package/dist-es/utils/isEmail.js.map +1 -1
  683. package/dist-es/utils/isPlainObject.js.map +1 -1
  684. package/dist-es/utils/partition.js.map +1 -1
  685. package/dist-es/utils/useClickOutside.js.map +1 -1
  686. package/dist-es/utils/useEventCallback.js.map +1 -1
  687. package/dist-es/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  688. package/dist-es/utils/useLayoutEffectOnce.js.map +1 -1
  689. package/dist-es/utils/useLayoutEffectSkipFirst.js.map +1 -1
  690. package/dist-es/utils/useOverflowDetection.js.map +1 -1
  691. package/dist-es/utils/useSlideSelection.js.map +1 -1
  692. package/dist-es/window/ElectronWindow.js.map +1 -1
  693. package/dist-es/window/WindowContext.js.map +1 -1
  694. package/dist-es/window/desktop-utils.js.map +1 -1
  695. package/dist-types/calendar/useCalendar.d.ts +26 -25
  696. package/dist-types/calendar/useCalendarDay.d.ts +1 -5
  697. package/dist-types/calendar/useCalendarSelection.d.ts +14 -11
  698. package/dist-types/date-picker/DatePickerContext.d.ts +0 -6
  699. package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +2 -2
  700. package/dist-types/date-picker/DatePickerRangePanel.d.ts +4 -4
  701. package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +2 -2
  702. package/dist-types/date-picker/useDatePicker.d.ts +0 -6
  703. package/dist-types/index.d.ts +0 -2
  704. package/dist-types/table/TD.d.ts +6 -0
  705. package/dist-types/table/TH.d.ts +6 -0
  706. package/dist-types/table/Table.d.ts +3 -3
  707. package/dist-types/tabs-next/TabNextTrigger.d.ts +1 -1
  708. package/package.json +2 -2
  709. package/dist-cjs/collapsible/Collapsible.js +0 -47
  710. package/dist-cjs/collapsible/Collapsible.js.map +0 -1
  711. package/dist-cjs/collapsible/CollapsibleContext.js +0 -23
  712. package/dist-cjs/collapsible/CollapsibleContext.js.map +0 -1
  713. package/dist-cjs/collapsible/CollapsiblePanel.css.js +0 -6
  714. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +0 -1
  715. package/dist-cjs/collapsible/CollapsiblePanel.js +0 -42
  716. package/dist-cjs/collapsible/CollapsiblePanel.js.map +0 -1
  717. package/dist-cjs/collapsible/CollapsibleTrigger.js +0 -35
  718. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +0 -1
  719. package/dist-cjs/vertical-navigation/SubMenuContext.js +0 -34
  720. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +0 -1
  721. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +0 -6
  722. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +0 -1
  723. package/dist-cjs/vertical-navigation/VerticalNavigation.js +0 -34
  724. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +0 -1
  725. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +0 -48
  726. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +0 -1
  727. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +0 -6
  728. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
  729. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +0 -83
  730. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
  731. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -29
  732. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
  733. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -6
  734. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
  735. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +0 -24
  736. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
  737. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -6
  738. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
  739. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +0 -69
  740. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
  741. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -6
  742. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
  743. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +0 -35
  744. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
  745. package/dist-es/collapsible/Collapsible.js +0 -45
  746. package/dist-es/collapsible/Collapsible.js.map +0 -1
  747. package/dist-es/collapsible/CollapsibleContext.js +0 -20
  748. package/dist-es/collapsible/CollapsibleContext.js.map +0 -1
  749. package/dist-es/collapsible/CollapsiblePanel.css.js +0 -4
  750. package/dist-es/collapsible/CollapsiblePanel.css.js.map +0 -1
  751. package/dist-es/collapsible/CollapsiblePanel.js +0 -40
  752. package/dist-es/collapsible/CollapsiblePanel.js.map +0 -1
  753. package/dist-es/collapsible/CollapsibleTrigger.js +0 -33
  754. package/dist-es/collapsible/CollapsibleTrigger.js.map +0 -1
  755. package/dist-es/vertical-navigation/SubMenuContext.js +0 -30
  756. package/dist-es/vertical-navigation/SubMenuContext.js.map +0 -1
  757. package/dist-es/vertical-navigation/VerticalNavigation.css.js +0 -4
  758. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +0 -1
  759. package/dist-es/vertical-navigation/VerticalNavigation.js +0 -32
  760. package/dist-es/vertical-navigation/VerticalNavigation.js.map +0 -1
  761. package/dist-es/vertical-navigation/VerticalNavigationItem.js +0 -45
  762. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +0 -1
  763. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +0 -4
  764. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
  765. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +0 -81
  766. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
  767. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -27
  768. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
  769. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -4
  770. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
  771. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +0 -22
  772. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
  773. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -4
  774. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
  775. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +0 -67
  776. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
  777. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -4
  778. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
  779. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +0 -33
  780. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
  781. package/dist-types/collapsible/Collapsible.d.ts +0 -16
  782. package/dist-types/collapsible/CollapsibleContext.d.ts +0 -9
  783. package/dist-types/collapsible/CollapsiblePanel.d.ts +0 -4
  784. package/dist-types/collapsible/CollapsibleTrigger.d.ts +0 -5
  785. package/dist-types/collapsible/index.d.ts +0 -3
  786. package/dist-types/vertical-navigation/SubMenuContext.d.ts +0 -14
  787. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +0 -5
  788. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +0 -12
  789. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +0 -4
  790. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +0 -2
  791. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +0 -4
  792. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +0 -6
  793. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +0 -4
  794. package/dist-types/vertical-navigation/index.d.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangeGridPanel.js","sources":["../src/date-picker/DatePickerRangeGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n resolveResponsiveValue,\n StackLayout,\n useBreakpoint,\n useControlled,\n} from \"@salt-ds/core\";\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n CalendarNavigation,\n type CalendarRangeProps,\n type DateRangeSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type RangeDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport type { DatePickerPanelBaseProps } from \"./DatePickerSingleGridPanel\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\n/**\n * Props for the DatePickerRangeGridPanel component.\n * @template TDate - The type of the date object.\n */\nexport type DatePickerRangeGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n DateRangeSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerRangeGridPanel = forwardRef(\n function DatePickerRangeGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerRangeGridPanelProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n CalendarProps,\n CalendarNavigationProps,\n CalendarGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onFocusedDateChange,\n onHoveredDateChange,\n onVisibleMonthChange,\n helperText,\n onSelectionChange,\n numberOfVisibleMonths = 2,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: RangeDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"range\",\n });\n\n const {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const {\n state: {\n timezone,\n selectedDate = null,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable },\n } = stateAndHelpers;\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const responsiveColumns =\n resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;\n const responsiveNumberOfVisibleMonths =\n resolveResponsiveValue(numberOfVisibleMonths, matchedBreakpoints) ?? 1;\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate: TDate =\n selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : dateAdapter.today(timezone);\n\n // Ensure that defaultVisibleMonth is used if provided, otherwise use the start of the valid date\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerRangeGridPanel\",\n state: \"visibleMonth\",\n });\n\n const getNextFocusedDate = () => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n\n const isDaySelectable = (date: TDate) =>\n !(\n date &&\n (isDayUnselectable?.(date) ||\n isDayDisabled?.(date) ||\n isOutsideAllowedDates(date))\n );\n\n const startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const getVisibleSelectedDate = () => {\n const startDateStartOfMonth = selectedDate?.startDate\n ? dateAdapter.startOf(selectedDate.startDate, \"month\")\n : null;\n const endDateStartOfMonth = selectedDate?.endDate\n ? dateAdapter.startOf(selectedDate.endDate, \"month\")\n : null;\n if (\n selectedDate?.startDate &&\n startDateStartOfMonth &&\n dateAdapter.compare(startDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(startDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.startDate)\n ) {\n return selectedDate?.startDate;\n }\n if (\n selectedDate?.endDate &&\n endDateStartOfMonth &&\n dateAdapter.compare(endDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(endDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.endDate)\n ) {\n return selectedDate?.endDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate) {\n return focusSelectedDate;\n }\n\n // Today\n const today = dateAdapter.today(timezone);\n const todayStartOfMonth = dateAdapter.startOf(today, \"month\");\n if (\n dateAdapter.compare(todayStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(todayStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(today)\n ) {\n return today;\n }\n\n // First selectable date across visible months\n const getFirstSelectableDate = (\n startMonth: TDate,\n numberOfMonths: number,\n ) => {\n for (let i = 0; i < numberOfMonths; i++) {\n const currentMonth = dateAdapter.add(startMonth, { months: i });\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n currentMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n }\n\n return null;\n };\n\n return getFirstSelectableDate(\n startVisibleMonth,\n responsiveNumberOfVisibleMonths,\n );\n };\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const dateRange = newDate as DateRangeSelection<TDate> | null;\n select(event, dateRange);\n onSelectionChange?.(event, dateRange);\n },\n [onSelectionChange, select],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setVisibleMonth(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange],\n );\n\n const handleFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (!newFocusedDate) {\n onFocusedDateChange?.(event, newFocusedDate);\n return;\n }\n\n const startOfFocusedMonth = dateAdapter.startOf(\n newFocusedDate,\n \"month\",\n );\n const lastVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const isBeforeVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, visibleMonth) < 0;\n const isAfterLastVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, lastVisibleMonth) > 0;\n\n if (isBeforeVisibleMonth) {\n handleVisibleMonthChange(event, startOfFocusedMonth);\n } else if (isAfterLastVisibleMonth) {\n const newLastVisibleMonth = dateAdapter.subtract(\n startOfFocusedMonth,\n { months: responsiveNumberOfVisibleMonths - 1 },\n );\n handleVisibleMonthChange(event, newLastVisibleMonth);\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n handleVisibleMonthChange,\n onFocusedDateChange,\n responsiveNumberOfVisibleMonths,\n visibleMonth,\n ],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n // Called when the overlay opens or the focus shifts between trigger and overlay\n if (focused && !calendarGridFocused.current) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate();\n }\n return prevFocusedDate;\n });\n }\n calendarGridFocused.current = focused;\n }, [focused]);\n\n const calendarProps = {\n visibleMonth,\n focusedDateRef: initialFocusRef,\n focusedDate: calendarGridFocused?.current ? focusedDate : null,\n hoveredDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n hideOutOfRangeDates: true,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n selectedDate,\n minDate,\n maxDate,\n timezone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar\n selectionVariant={\"range\"}\n {...(calendarProps as Partial<CalendarRangeProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerRangeGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useDatePickerOverlay","useState","useRef","useBreakpoint","resolveResponsiveValue","useControlled","generateDatesForMonth","useCallback","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerRangeGridPanel.js","sources":["../src/date-picker/DatePickerRangeGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n resolveResponsiveValue,\n StackLayout,\n useBreakpoint,\n useControlled,\n} from \"@salt-ds/core\";\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n CalendarNavigation,\n type CalendarRangeProps,\n type DateRangeSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type RangeDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\nimport type { DatePickerPanelBaseProps } from \"./DatePickerSingleGridPanel\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\n/**\n * Props for the DatePickerRangeGridPanel component.\n * @template TDate - The type of the date object.\n */\nexport type DatePickerRangeGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n DateRangeSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"multiselect\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerRangeGridPanel = forwardRef(\n function DatePickerRangeGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerRangeGridPanelProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n CalendarProps,\n CalendarNavigationProps,\n CalendarGridProps,\n className,\n defaultVisibleMonth,\n visibleMonth: visibleMonthProp,\n onFocusedDateChange,\n onHoveredDateChange,\n onVisibleMonthChange,\n helperText,\n onSelectionChange,\n numberOfVisibleMonths = 2,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: RangeDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"range\",\n });\n\n const {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const {\n state: {\n timezone,\n selectedDate = null,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayHighlighted, isDayUnselectable },\n } = stateAndHelpers;\n\n const { matchedBreakpoints } = useBreakpoint();\n\n const responsiveColumns =\n resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;\n const responsiveNumberOfVisibleMonths =\n resolveResponsiveValue(numberOfVisibleMonths, matchedBreakpoints) ?? 1;\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate: TDate =\n selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : dateAdapter.today(timezone);\n\n // Ensure that defaultVisibleMonth is used if provided, otherwise use the start of the valid date\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerRangeGridPanel\",\n state: \"visibleMonth\",\n });\n\n const getNextFocusedDate = () => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n\n const isDaySelectable = (date: TDate) =>\n !(date && (isDayUnselectable?.(date) || isOutsideAllowedDates(date)));\n\n const startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const getVisibleSelectedDate = () => {\n const startDateStartOfMonth = selectedDate?.startDate\n ? dateAdapter.startOf(selectedDate.startDate, \"month\")\n : null;\n const endDateStartOfMonth = selectedDate?.endDate\n ? dateAdapter.startOf(selectedDate.endDate, \"month\")\n : null;\n if (\n selectedDate?.startDate &&\n startDateStartOfMonth &&\n dateAdapter.compare(startDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(startDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.startDate)\n ) {\n return selectedDate?.startDate;\n }\n if (\n selectedDate?.endDate &&\n endDateStartOfMonth &&\n dateAdapter.compare(endDateStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(endDateStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(selectedDate?.endDate)\n ) {\n return selectedDate?.endDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate) {\n return focusSelectedDate;\n }\n\n // Today\n const today = dateAdapter.today(timezone);\n const todayStartOfMonth = dateAdapter.startOf(today, \"month\");\n if (\n dateAdapter.compare(todayStartOfMonth, startVisibleMonth) >= 0 &&\n dateAdapter.compare(todayStartOfMonth, endVisibleMonth) <= 0 &&\n isDaySelectable(today)\n ) {\n return today;\n }\n\n // First selectable date across visible months\n const getFirstSelectableDate = (\n startMonth: TDate,\n numberOfMonths: number,\n ) => {\n for (let i = 0; i < numberOfMonths; i++) {\n const currentMonth = dateAdapter.add(startMonth, { months: i });\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n currentMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n }\n\n return null;\n };\n\n return getFirstSelectableDate(\n startVisibleMonth,\n responsiveNumberOfVisibleMonths,\n );\n };\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const dateRange = newDate as DateRangeSelection<TDate> | null;\n select(event, dateRange);\n onSelectionChange?.(event, dateRange);\n },\n [onSelectionChange, select],\n );\n\n const handleHoveredDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setVisibleMonth(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange],\n );\n\n const handleFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (!newFocusedDate) {\n onFocusedDateChange?.(event, newFocusedDate);\n return;\n }\n\n const startOfFocusedMonth = dateAdapter.startOf(\n newFocusedDate,\n \"month\",\n );\n const lastVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n\n const isBeforeVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, visibleMonth) < 0;\n const isAfterLastVisibleMonth =\n dateAdapter.compare(startOfFocusedMonth, lastVisibleMonth) > 0;\n\n if (isBeforeVisibleMonth) {\n handleVisibleMonthChange(event, startOfFocusedMonth);\n } else if (isAfterLastVisibleMonth) {\n const newLastVisibleMonth = dateAdapter.subtract(\n startOfFocusedMonth,\n { months: responsiveNumberOfVisibleMonths - 1 },\n );\n handleVisibleMonthChange(event, newLastVisibleMonth);\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n handleVisibleMonthChange,\n onFocusedDateChange,\n responsiveNumberOfVisibleMonths,\n visibleMonth,\n ],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n // Called when the overlay opens or the focus shifts between trigger and overlay\n if (focused && !calendarGridFocused.current) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate();\n }\n return prevFocusedDate;\n });\n }\n calendarGridFocused.current = focused;\n }, [focused]);\n\n const calendarProps = {\n visibleMonth,\n focusedDateRef: initialFocusRef,\n focusedDate: calendarGridFocused?.current ? focusedDate : null,\n hoveredDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\n hideOutOfRangeDates: true,\n isDayHighlighted,\n isDayUnselectable,\n selectedDate,\n minDate,\n maxDate,\n timezone,\n ...CalendarProps,\n };\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={ref}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar\n selectionVariant={\"range\"}\n {...(calendarProps as Partial<CalendarRangeProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerRangeGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useDatePickerOverlay","useState","useRef","useBreakpoint","resolveResponsiveValue","useControlled","generateDatesForMonth","useCallback","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
@@ -17,18 +17,32 @@ function defaultRangeValidator(dateAdapter, date, details, minDate, maxDate) {
17
17
  if (!startDate) {
18
18
  details.startDate = details.startDate || {};
19
19
  details.startDate.errors = details.startDate.errors || [];
20
- details.startDate.errors.push({
21
- type: dateAdapters.DateDetailError.UNSET,
22
- message: "no start date defined"
23
- });
20
+ const unsetStartDateError = details.startDate.errors.find(
21
+ (err) => err.type === dateAdapters.DateDetailError.UNSET
22
+ );
23
+ if (unsetStartDateError) {
24
+ unsetStartDateError.message = "no start date defined";
25
+ } else {
26
+ details.startDate.errors.push({
27
+ type: dateAdapters.DateDetailError.UNSET,
28
+ message: "no start date defined"
29
+ });
30
+ }
24
31
  }
25
32
  if (!endDate) {
26
33
  details.endDate = details.endDate || {};
27
34
  details.endDate.errors = details.endDate.errors || [];
28
- details.endDate.errors.push({
29
- type: dateAdapters.DateDetailError.UNSET,
30
- message: "no end date defined"
31
- });
35
+ const unsetEndDateError = details.endDate.errors.find(
36
+ (err) => err.type === dateAdapters.DateDetailError.UNSET
37
+ );
38
+ if (unsetEndDateError) {
39
+ unsetEndDateError.message = "no end date defined";
40
+ } else {
41
+ details.endDate.errors.push({
42
+ type: dateAdapters.DateDetailError.UNSET,
43
+ message: "no end date defined"
44
+ });
45
+ }
32
46
  }
33
47
  if (dateAdapter.isValid(startDate) && dateAdapter.isValid(endDate) && dateAdapter.compare(startDate, endDate) > 0) {
34
48
  details.startDate = details.startDate || {};
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangeInput.js","sources":["../src/date-picker/DatePickerRangeInput.tsx"],"sourcesContent":["import { Button, makePrefixer, useControlled, useIcon } from \"@salt-ds/core\";\nimport {\n DateDetailError,\n type DateFrameworkType,\n type SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type MouseEventHandler,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport type { DateRangeSelection, SingleDateSelection } from \"../calendar\";\nimport {\n DateInputRange,\n type DateInputRangeDetails,\n type DateInputRangeProps,\n type DateInputRangeValue,\n} from \"../date-input\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerRangeInput\");\n\n/**\n * Props for the DatePickerRangeInput component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangeInputProps<TDate extends DateFrameworkType>\n extends DateInputRangeProps<TDate> {\n /**\n * Function to validate the entered date\n * @param date - The selected date\n * @param details - The details of date selection, either a valid date or error\n * @returns updated DateInputRangeDetails details\n */\n validate?: (\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => DateInputRangeDetails;\n}\n\nexport function defaultRangeValidator<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n minDate?: TDate,\n maxDate?: TDate,\n): DateInputRangeDetails {\n const { startDate, endDate } = date || {};\n\n if (!startDate) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no start date defined\",\n });\n }\n if (!endDate) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no end date defined\",\n });\n }\n\n // If startDate is after endDate\n if (\n dateAdapter.isValid(startDate) &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(startDate, endDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"greater-than-end-date\",\n message: \"start date after end date\",\n });\n }\n // If startDate is before minDate\n if (\n minDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, minDate) < 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"min-date\",\n message: \"is before min date\",\n });\n }\n // If startDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, maxDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n if (\n minDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, minDate) < 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is before min date\",\n });\n }\n // If endDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, maxDate) > 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n return details;\n}\n\nexport const DatePickerRangeInput = forwardRef(function DatePickerRangeInput<\n TDate extends DateFrameworkType,\n>(\n props: DatePickerRangeInputProps<SingleDateSelection<TDate>>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const { dateAdapter } = useLocalization<TDate>();\n const {\n className,\n endInputProps,\n startInputProps,\n defaultValue,\n format = \"DD MMM YYYY\",\n value: valueProp,\n validate,\n onChange,\n onDateValueChange,\n ...rest\n } = props;\n\n const { CalendarIcon } = useIcon();\n\n const {\n state: {\n selectedDate,\n disabled,\n readOnly,\n cancelled,\n minDate,\n maxDate,\n timezone,\n },\n helpers: { select },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const previousValue = useRef<typeof valueProp>();\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"DatePickerRangeInput\",\n state: \"dateValue\",\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run when date changes to sync the value\n useEffect(() => {\n setValue({\n startDate: !selectedDate?.startDate\n ? \"\"\n : selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? dateAdapter.format(selectedDate.startDate, format)\n : value?.startDate,\n endDate: !selectedDate?.endDate\n ? \"\"\n : selectedDate?.endDate && dateAdapter.isValid(selectedDate.endDate)\n ? dateAdapter.format(selectedDate.endDate, format)\n : value?.endDate,\n });\n }, [dateAdapter, format, selectedDate]);\n\n const handleCalendarButton: MouseEventHandler<HTMLButtonElement> =\n useCallback(\n (event) => {\n event.persist();\n setOpen(!open, event.nativeEvent, \"click\");\n event.stopPropagation();\n },\n [open, setOpen],\n );\n\n const handleDateChange = useCallback(\n (\n event: SyntheticEvent,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => {\n const validatedDetails = validate\n ? validate(date, details)\n : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);\n select(event, date, validatedDetails);\n },\n [dateAdapter, select, minDate, maxDate, validate],\n );\n\n const handleDateValueChange = useCallback(\n (event: SyntheticEvent | null, newDateValue: DateInputRangeValue) => {\n setValue(newDateValue);\n onDateValueChange?.(event, newDateValue);\n },\n [onDateValueChange],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: should run when open changes and not selected date or value\n useEffect(() => {\n if (open) {\n previousValue.current = value;\n }\n }, [open]);\n\n useEffect(() => {\n if (cancelled) {\n setValue(previousValue.current);\n }\n }, [cancelled]);\n\n return (\n <DateInputRange\n value={\n value ?? {\n startDate: \"\",\n endDate: \"\",\n }\n }\n className={clsx(withBaseName(), className)}\n date={selectedDate ?? null}\n startInputProps={startInputProps}\n endInputProps={endInputProps}\n readOnly={readOnly}\n disabled={disabled}\n ref={ref}\n onDateChange={handleDateChange}\n onDateValueChange={handleDateValueChange}\n onChange={onChange}\n endAdornment={\n !readOnly && (\n <Button\n appearance=\"transparent\"\n sentiment=\"neutral\"\n onClick={handleCalendarButton}\n disabled={disabled}\n aria-label=\"Open Calendar\"\n >\n <CalendarIcon aria-hidden />\n </Button>\n )\n }\n format={format}\n timezone={timezone}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","DateDetailError","forwardRef","DatePickerRangeInput","useLocalization","useIcon","useDatePickerContext","useDatePickerOverlay","useRef","useControlled","useEffect","useCallback","jsx","DateInputRange","clsx","Button"],"mappings":";;;;;;;;;;;;;AA0BA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAoBrD,SAAS,qBACd,CAAA,WAAA,EACA,IACA,EAAA,OAAA,EACA,SACA,OACuB,EAAA;AACvB,EAAA,MAAM,EAAE,SAAA,EAAW,OAAQ,EAAA,GAAI,QAAQ,EAAC;AAExC,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAQ,OAAA,CAAA,SAAA,GAAY,OAAQ,CAAA,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,UAAU,EAAC;AACxD,IAAQ,OAAA,CAAA,SAAA,CAAU,OAAO,IAAK,CAAA;AAAA,MAC5B,MAAMC,4BAAgB,CAAA,KAAA;AAAA,MACtB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEH,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAQ,OAAA,CAAA,OAAA,GAAU,OAAQ,CAAA,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAQ,CAAA,MAAA,GAAS,OAAQ,CAAA,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAQ,OAAA,CAAA,OAAA,CAAQ,OAAO,IAAK,CAAA;AAAA,MAC1B,MAAMA,4BAAgB,CAAA,KAAA;AAAA,MACtB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAIH,EAAA,IACE,WAAY,CAAA,OAAA,CAAQ,SAAS,CAAA,IAC7B,WAAY,CAAA,OAAA,CAAQ,OAAO,CAAA,IAC3B,WAAY,CAAA,OAAA,CAAQ,SAAW,EAAA,OAAO,IAAI,CAC1C,EAAA;AACA,IAAQ,OAAA,CAAA,SAAA,GAAY,OAAQ,CAAA,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,UAAU,EAAC;AACxD,IAAQ,OAAA,CAAA,SAAA,CAAU,OAAO,IAAK,CAAA;AAAA,MAC5B,IAAM,EAAA,uBAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAGH,EACE,IAAA,OAAA,IACA,WAAY,CAAA,OAAA,CAAQ,SAAS,CAAA,IAC7B,YAAY,OAAQ,CAAA,SAAA,EAAW,OAAO,CAAA,GAAI,CAC1C,EAAA;AACA,IAAQ,OAAA,CAAA,SAAA,GAAY,OAAQ,CAAA,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,UAAU,EAAC;AACxD,IAAQ,OAAA,CAAA,SAAA,CAAU,OAAO,IAAK,CAAA;AAAA,MAC5B,IAAM,EAAA,UAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAGH,EACE,IAAA,OAAA,IACA,WAAY,CAAA,OAAA,CAAQ,SAAS,CAAA,IAC7B,YAAY,OAAQ,CAAA,SAAA,EAAW,OAAO,CAAA,GAAI,CAC1C,EAAA;AACA,IAAQ,OAAA,CAAA,SAAA,GAAY,OAAQ,CAAA,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,UAAU,EAAC;AACxD,IAAQ,OAAA,CAAA,SAAA,CAAU,OAAO,IAAK,CAAA;AAAA,MAC5B,IAAM,EAAA,UAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEH,EACE,IAAA,OAAA,IACA,WAAY,CAAA,OAAA,CAAQ,OAAO,CAAA,IAC3B,YAAY,OAAQ,CAAA,OAAA,EAAS,OAAO,CAAA,GAAI,CACxC,EAAA;AACA,IAAQ,OAAA,CAAA,OAAA,GAAU,OAAQ,CAAA,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAQ,CAAA,MAAA,GAAS,OAAQ,CAAA,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAQ,OAAA,CAAA,OAAA,CAAQ,OAAO,IAAK,CAAA;AAAA,MAC1B,IAAM,EAAA,UAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAGH,EACE,IAAA,OAAA,IACA,WAAY,CAAA,OAAA,CAAQ,OAAO,CAAA,IAC3B,YAAY,OAAQ,CAAA,OAAA,EAAS,OAAO,CAAA,GAAI,CACxC,EAAA;AACA,IAAQ,OAAA,CAAA,OAAA,GAAU,OAAQ,CAAA,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAQ,CAAA,MAAA,GAAS,OAAQ,CAAA,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAQ,OAAA,CAAA,OAAA,CAAQ,OAAO,IAAK,CAAA;AAAA,MAC1B,IAAM,EAAA,UAAA;AAAA,MACN,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEH,EAAO,OAAA,OAAA;AACT;AAEO,MAAM,oBAAuB,GAAAC,gBAAA,CAAW,SAASC,qBAAAA,CAGtD,OACA,GACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,oCAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAS,GAAA,aAAA;AAAA,IACT,KAAO,EAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAM,MAAA,EAAE,YAAa,EAAA,GAAIC,YAAQ,EAAA;AAEjC,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA;AAAA,MACL,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,EAAE,MAAO;AAAA,GAChB,GAAAC,sCAAA,CAA4B,EAAE,gBAAA,EAAkB,SAAS,CAAA;AAC7D,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,IAAK,EAAA;AAAA,IACd,OAAA,EAAS,EAAE,OAAQ;AAAA,MACjBC,8CAAqB,EAAA;AAEzB,EAAA,MAAM,gBAAgBC,YAAyB,EAAA;AAE/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,kBAAc,CAAA;AAAA,IACtC,UAAY,EAAA,SAAA;AAAA,IACZ,OAAS,EAAA,YAAA;AAAA,IACT,IAAM,EAAA,sBAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAGD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA;AAAA,MACP,WAAW,EAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,aACtB,EACA,GAAA,CAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,cAAa,WAAY,CAAA,OAAA,CAAQ,YAAa,CAAA,SAAS,IACnE,WAAY,CAAA,MAAA,CAAO,aAAa,SAAW,EAAA,MAAM,IACjD,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,SAAA;AAAA,MACb,SAAS,EAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,WACpB,EACA,GAAA,CAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,YAAW,WAAY,CAAA,OAAA,CAAQ,YAAa,CAAA,OAAO,IAC/D,WAAY,CAAA,MAAA,CAAO,aAAa,OAAS,EAAA,MAAM,IAC/C,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA;AAAA,KACd,CAAA;AAAA,GACA,EAAA,CAAC,WAAa,EAAA,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEtC,EAAA,MAAM,oBACJ,GAAAC,iBAAA;AAAA,IACE,CAAC,KAAU,KAAA;AACT,MAAA,KAAA,CAAM,OAAQ,EAAA;AACd,MAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAM,CAAA,WAAA,EAAa,OAAO,CAAA;AACzC,MAAA,KAAA,CAAM,eAAgB,EAAA;AAAA,KACxB;AAAA,IACA,CAAC,MAAM,OAAO;AAAA,GAChB;AAEF,EAAA,MAAM,gBAAmB,GAAAA,iBAAA;AAAA,IACvB,CACE,KACA,EAAA,IAAA,EACA,OACG,KAAA;AACH,MAAM,MAAA,gBAAA,GAAmB,QACrB,GAAA,QAAA,CAAS,IAAM,EAAA,OAAO,CACtB,GAAA,qBAAA,CAAsB,WAAa,EAAA,IAAA,EAAM,OAAS,EAAA,OAAA,EAAS,OAAO,CAAA;AACtE,MAAO,MAAA,CAAA,KAAA,EAAO,MAAM,gBAAgB,CAAA;AAAA,KACtC;AAAA,IACA,CAAC,WAAA,EAAa,MAAQ,EAAA,OAAA,EAAS,SAAS,QAAQ;AAAA,GAClD;AAEA,EAAA,MAAM,qBAAwB,GAAAA,iBAAA;AAAA,IAC5B,CAAC,OAA8B,YAAsC,KAAA;AACnE,MAAA,QAAA,CAAS,YAAY,CAAA;AACrB,MAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAO,EAAA,YAAA,CAAA;AAAA,KAC7B;AAAA,IACA,CAAC,iBAAiB;AAAA,GACpB;AAGA,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,aAAA,CAAc,OAAU,GAAA,KAAA;AAAA;AAC1B,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,QAAA,CAAS,cAAc,OAAO,CAAA;AAAA;AAChC,GACF,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EACE,uBAAAE,cAAA;AAAA,IAACC,6BAAA;AAAA,IAAA;AAAA,MACC,OACE,KAAS,IAAA;AAAA,QACP,SAAW,EAAA,EAAA;AAAA,QACX,OAAS,EAAA;AAAA,OACX;AAAA,MAEF,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,MAAM,YAAgB,IAAA,IAAA;AAAA,MACtB,eAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,iBAAmB,EAAA,qBAAA;AAAA,MACnB,QAAA;AAAA,MACA,YAAA,EACE,CAAC,QACC,oBAAAF,cAAA;AAAA,QAACG,WAAA;AAAA,QAAA;AAAA,UACC,UAAW,EAAA,aAAA;AAAA,UACX,SAAU,EAAA,SAAA;AAAA,UACV,OAAS,EAAA,oBAAA;AAAA,UACT,QAAA;AAAA,UACA,YAAW,EAAA,eAAA;AAAA,UAEX,QAAA,kBAAAH,cAAA,CAAC,YAAa,EAAA,EAAA,aAAA,EAAW,IAAC,EAAA;AAAA;AAAA,OAC5B;AAAA,MAGJ,MAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;;"}
1
+ {"version":3,"file":"DatePickerRangeInput.js","sources":["../src/date-picker/DatePickerRangeInput.tsx"],"sourcesContent":["import { Button, makePrefixer, useControlled, useIcon } from \"@salt-ds/core\";\nimport {\n DateDetailError,\n type DateFrameworkType,\n type SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type MouseEventHandler,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport type { DateRangeSelection, SingleDateSelection } from \"../calendar\";\nimport {\n DateInputRange,\n type DateInputRangeDetails,\n type DateInputRangeProps,\n type DateInputRangeValue,\n} from \"../date-input\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerRangeInput\");\n\n/**\n * Props for the DatePickerRangeInput component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangeInputProps<TDate extends DateFrameworkType>\n extends DateInputRangeProps<TDate> {\n /**\n * Function to validate the entered date\n * @param date - The selected date\n * @param details - The details of date selection, either a valid date or error\n * @returns updated DateInputRangeDetails details\n */\n validate?: (\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => DateInputRangeDetails;\n}\n\nexport function defaultRangeValidator<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n minDate?: TDate,\n maxDate?: TDate,\n): DateInputRangeDetails {\n const { startDate, endDate } = date || {};\n\n if (!startDate) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n const unsetStartDateError = details.startDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetStartDateError) {\n unsetStartDateError.message = \"no start date defined\";\n } else {\n details.startDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no start date defined\",\n });\n }\n }\n\n if (!endDate) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n const unsetEndDateError = details.endDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetEndDateError) {\n unsetEndDateError.message = \"no end date defined\";\n } else {\n details.endDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no end date defined\",\n });\n }\n }\n\n // If startDate is after endDate\n if (\n dateAdapter.isValid(startDate) &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(startDate, endDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"greater-than-end-date\",\n message: \"start date after end date\",\n });\n }\n // If startDate is before minDate\n if (\n minDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, minDate) < 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"min-date\",\n message: \"is before min date\",\n });\n }\n // If startDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, maxDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n if (\n minDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, minDate) < 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is before min date\",\n });\n }\n // If endDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, maxDate) > 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n return details;\n}\n\nexport const DatePickerRangeInput = forwardRef(function DatePickerRangeInput<\n TDate extends DateFrameworkType,\n>(\n props: DatePickerRangeInputProps<SingleDateSelection<TDate>>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const { dateAdapter } = useLocalization<TDate>();\n const {\n className,\n endInputProps,\n startInputProps,\n defaultValue,\n format = \"DD MMM YYYY\",\n value: valueProp,\n validate,\n onChange,\n onDateValueChange,\n ...rest\n } = props;\n\n const { CalendarIcon } = useIcon();\n\n const {\n state: {\n selectedDate,\n disabled,\n readOnly,\n cancelled,\n minDate,\n maxDate,\n timezone,\n },\n helpers: { select },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const previousValue = useRef<typeof valueProp>();\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"DatePickerRangeInput\",\n state: \"dateValue\",\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run when date changes to sync the value\n useEffect(() => {\n setValue({\n startDate: !selectedDate?.startDate\n ? \"\"\n : selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? dateAdapter.format(selectedDate.startDate, format)\n : value?.startDate,\n endDate: !selectedDate?.endDate\n ? \"\"\n : selectedDate?.endDate && dateAdapter.isValid(selectedDate.endDate)\n ? dateAdapter.format(selectedDate.endDate, format)\n : value?.endDate,\n });\n }, [dateAdapter, format, selectedDate]);\n\n const handleCalendarButton: MouseEventHandler<HTMLButtonElement> =\n useCallback(\n (event) => {\n event.persist();\n setOpen(!open, event.nativeEvent, \"click\");\n event.stopPropagation();\n },\n [open, setOpen],\n );\n\n const handleDateChange = useCallback(\n (\n event: SyntheticEvent,\n date: DateRangeSelection<TDate> | null,\n details: DateInputRangeDetails,\n ) => {\n const validatedDetails = validate\n ? validate(date, details)\n : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);\n select(event, date, validatedDetails);\n },\n [dateAdapter, select, minDate, maxDate, validate],\n );\n\n const handleDateValueChange = useCallback(\n (event: SyntheticEvent | null, newDateValue: DateInputRangeValue) => {\n setValue(newDateValue);\n onDateValueChange?.(event, newDateValue);\n },\n [onDateValueChange],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: should run when open changes and not selected date or value\n useEffect(() => {\n if (open) {\n previousValue.current = value;\n }\n }, [open]);\n\n useEffect(() => {\n if (cancelled) {\n setValue(previousValue.current);\n }\n }, [cancelled]);\n\n return (\n <DateInputRange\n value={\n value ?? {\n startDate: \"\",\n endDate: \"\",\n }\n }\n className={clsx(withBaseName(), className)}\n date={selectedDate ?? null}\n startInputProps={startInputProps}\n endInputProps={endInputProps}\n readOnly={readOnly}\n disabled={disabled}\n ref={ref}\n onDateChange={handleDateChange}\n onDateValueChange={handleDateValueChange}\n onChange={onChange}\n endAdornment={\n !readOnly && (\n <Button\n appearance=\"transparent\"\n sentiment=\"neutral\"\n onClick={handleCalendarButton}\n disabled={disabled}\n aria-label=\"Open Calendar\"\n >\n <CalendarIcon aria-hidden />\n </Button>\n )\n }\n format={format}\n timezone={timezone}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","DateDetailError","forwardRef","DatePickerRangeInput","useLocalization","useIcon","useDatePickerContext","useDatePickerOverlay","useRef","useControlled","useEffect","useCallback","jsx","DateInputRange","clsx","Button"],"mappings":"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"}
@@ -78,7 +78,7 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
78
78
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
79
79
  maxDate = dateAdapter.add(minDate, { months: 1 })
80
80
  },
81
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
81
+ helpers: { select, isDayHighlighted, isDayUnselectable }
82
82
  } = DatePickerContext.useDatePickerContext({ selectionVariant: "range" });
83
83
  const {
84
84
  state: { initialFocusRef, focused }
@@ -190,7 +190,7 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
190
190
  const isOutsideAllowedDates = (date) => {
191
191
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
192
192
  };
193
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
193
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
194
194
  const getVisibleSelectedDate = (visibleMonth) => {
195
195
  if ((selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isSame(visibleMonth, selectedDate.startDate, "month") && isDaySelectable(selectedDate.startDate)) {
196
196
  return selectedDate.startDate;
@@ -268,7 +268,6 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
268
268
  visibleMonth: startVisibleMonth,
269
269
  hoveredDate,
270
270
  selectedDate: calendarSelectedDate,
271
- isDayDisabled,
272
271
  isDayHighlighted,
273
272
  isDayUnselectable,
274
273
  focusedDateRef: initialFocusRef,
@@ -289,7 +288,6 @@ const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(pro
289
288
  const EndCalendarProps = {
290
289
  visibleMonth: endVisibleMonth,
291
290
  hoveredDate,
292
- isDayDisabled,
293
291
  isDayHighlighted,
294
292
  isDayUnselectable,
295
293
  focusedDateRef: initialFocusRef,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerRangePanel.js","sources":["../src/date-picker/DatePickerRangePanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n StackLayout,\n useControlled,\n useForkRef,\n} from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n Calendar,\n CalendarGrid,\n type CalendarGridProps,\n CalendarNavigation,\n type CalendarNavigationProps,\n type CalendarOffsetProps,\n type CalendarProps,\n type CalendarRangeProps,\n type DateRangeSelection,\n type UseCalendarSelectionRangeProps,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useDatePickerContext } from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\n\n/**\n * Props for the DatePickerRangePanel component.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerRangePanelProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Callback fired when a date range is selected.\n * @param event - The synthetic event.\n * @param selectedDate - The selected date range or null.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: DateRangeSelection<TDate> | null,\n ) => void;\n\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n\n /**\n * The currently visible month for the start date.\n */\n startVisibleMonth?: TDate;\n\n /**\n * The default visible month for the start date.\n */\n defaultStartVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the start date changes.\n * @param event - The synthetic event, or null if called by effect.\n * @param visibleMonth - The new visible month for the start date.\n */\n onStartVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * The currently visible month for the end date.\n */\n endVisibleMonth?: TDate;\n\n /**\n * The default visible month for the end date.\n */\n defaultEndVisibleMonth?: TDate;\n\n /**\n * Callback fired when the visible month for the end date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param visibleMonth - The new visible month for the end date.\n */\n onEndVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\n\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param hoveredDate - The new hovered date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n hoveredDate?: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate?: TDate | null,\n ) => void;\n\n /**\n * Props to be passed to the start date CalendarNavigation component.\n */\n StartCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n\n /**\n * Props to be passed to the start date calendar component.\n */\n StartCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate> | CalendarOffsetProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n /**\n * Props to be passed to the start date CalendarGrid component.\n */\n StartCalendarGridProps?: CalendarGridProps<TDate>;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarProps?: Partial<\n Omit<\n CalendarRangeProps<TDate>,\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onFocusedDateChange\"\n | \"onHoveredDateChange\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n\n /**\n * Props to be passed to the end date CalendarNavigation component.\n */\n EndCalendarNavigationProps?: CalendarNavigationProps<TDate>;\n /**\n * Props to be passed to the end date CalendarGrid component.\n */\n EndCalendarGridProps?: CalendarGridProps<TDate>;\n}\n\nfunction getFallbackVisibleMonths<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n selectedDate: DateRangeSelection<TDate> | null,\n timezone: Timezone = \"default\",\n) {\n function createConsecutiveRange(date: TDate) {\n const startDate = dateAdapter.startOf(date, \"month\");\n const endDate = dateAdapter.add(startDate, { months: 1 });\n return [startDate, endDate];\n }\n\n if (selectedDate && dateAdapter.isValid(selectedDate?.startDate)) {\n const { startDate, endDate } = selectedDate;\n if (dateAdapter.isValid(endDate)) {\n return dateAdapter.isSame(startDate, endDate, \"month\")\n ? createConsecutiveRange(startDate)\n : [\n dateAdapter.startOf(startDate, \"month\"),\n dateAdapter.startOf(endDate, \"month\"),\n ];\n }\n return createConsecutiveRange(startDate);\n }\n\n const currentMonth = dateAdapter.startOf(\n dateAdapter.today(timezone),\n \"month\",\n );\n return [currentMonth, dateAdapter.add(currentMonth, { months: 1 })];\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport const DatePickerRangePanel = forwardRef(function DatePickerRangePanel<\n TDate extends DateFrameworkType,\n>(props: DatePickerRangePanelProps<TDate>, ref: React.Ref<HTMLDivElement>) {\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n className,\n defaultStartVisibleMonth: defaultStartVisibleMonthProp,\n startVisibleMonth: startVisibleMonthProp,\n onStartVisibleMonthChange,\n defaultEndVisibleMonth: defaultEndVisibleMonthProp,\n endVisibleMonth: endVisibleMonthProp,\n onEndVisibleMonthChange,\n helperText,\n onFocusedDateChange,\n onHoveredDateChange,\n onSelectionChange,\n StartCalendarProps: StartCalendarPropsProp,\n StartCalendarNavigationProps,\n StartCalendarGridProps,\n EndCalendarProps: EndCalendarPropsProp,\n EndCalendarNavigationProps,\n EndCalendarGridProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-range-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const calendarsRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, calendarsRef);\n\n const {\n state: {\n timezone,\n selectedDate,\n minDate = dateAdapter.startOf(dateAdapter.today(timezone), \"month\"),\n maxDate = dateAdapter.add(minDate, { months: 1 }),\n },\n helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable },\n } = useDatePickerContext<TDate>({ selectionVariant: \"range\" });\n\n const {\n state: { initialFocusRef, focused },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n\n const [[fallbackStartVisibleMonth, fallbackEndVisibleMonth]] = useState(() =>\n getFallbackVisibleMonths<TDate>(dateAdapter, selectedDate, timezone),\n );\n\n const [startVisibleMonth, setStartVisibleMonth] = useControlled({\n controlled: startVisibleMonthProp,\n default: defaultStartVisibleMonthProp || fallbackStartVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"startVisibleMonth\",\n });\n\n const [endVisibleMonth, setEndVisibleMonth] = useControlled({\n controlled: endVisibleMonthProp,\n default: defaultEndVisibleMonthProp || fallbackEndVisibleMonth,\n name: \"DatePickerRangePanel\",\n state: \"endVisibleMonth\",\n });\n\n const handleSelectionChange = useCallback(\n (event: SyntheticEvent, newDate: DateRangeSelection<TDate> | null) => {\n select(event, newDate);\n onSelectionChange?.(event, newDate);\n },\n [select, onSelectionChange],\n );\n\n const handleHoveredStartDateChange: CalendarProps<TDate>[\"onHoveredDateChange\"] =\n useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleHoveredEndDateChange = useCallback(\n (event: SyntheticEvent, newHoveredDate: TDate | null) => {\n setHoveredDate(newHoveredDate);\n onHoveredDateChange?.(event, newHoveredDate);\n },\n [onHoveredDateChange],\n );\n\n const handleStartVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setStartVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, endVisibleMonth) >= 0) {\n setEndVisibleMonth(dateAdapter.add(newVisibleMonth, { months: 1 }));\n }\n onStartVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, endVisibleMonth, onStartVisibleMonthChange],\n );\n\n const handleEndVisibleMonthChange = useCallback(\n (event: SyntheticEvent | null, newVisibleMonth: TDate) => {\n setEndVisibleMonth(newVisibleMonth);\n if (dateAdapter.compare(newVisibleMonth, startVisibleMonth) <= 0) {\n setStartVisibleMonth(\n dateAdapter.startOf(\n dateAdapter.subtract(newVisibleMonth, { months: 1 }),\n \"month\",\n ),\n );\n }\n onEndVisibleMonthChange?.(event, newVisibleMonth);\n },\n [dateAdapter, startVisibleMonth, onEndVisibleMonthChange],\n );\n\n const calendarSelectedDate = {\n startDate:\n selectedDate && dateAdapter.isValid(selectedDate.startDate)\n ? selectedDate.startDate\n : null,\n endDate:\n selectedDate && dateAdapter.isValid(selectedDate.endDate)\n ? selectedDate.endDate\n : null,\n };\n\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n\n const handleStartCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(startVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleStartVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n startVisibleMonth,\n handleStartVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const handleEndCalendarFocusedDateChange = useCallback(\n (event: SyntheticEvent | null, newFocusedDate: TDate) => {\n setFocusedDate(newFocusedDate);\n if (\n newFocusedDate &&\n !dateAdapter.isSame(endVisibleMonth, newFocusedDate, \"month\")\n ) {\n handleEndVisibleMonthChange(\n event,\n dateAdapter.startOf(newFocusedDate, \"month\"),\n );\n }\n onFocusedDateChange?.(event, newFocusedDate);\n },\n [\n dateAdapter,\n endVisibleMonth,\n handleEndVisibleMonthChange,\n onFocusedDateChange,\n ],\n );\n\n const getNextFocusedDate = (\n nextStartVisibleMonth: TDate,\n nextEndVisibleMonth: TDate,\n ) => {\n const isOutsideAllowedDates = (date: TDate) => {\n return (\n dateAdapter.compare(date, minDate) < 0 ||\n dateAdapter.compare(date, maxDate) > 0\n );\n };\n const isDaySelectable = (date: TDate) =>\n !(\n date &&\n (isDayUnselectable?.(date) ||\n isDayDisabled?.(date) ||\n isOutsideAllowedDates(date))\n );\n\n const getVisibleSelectedDate = (visibleMonth: TDate) => {\n if (\n selectedDate?.startDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.startDate, \"month\") &&\n isDaySelectable(selectedDate.startDate)\n ) {\n return selectedDate.startDate;\n }\n if (\n selectedDate?.endDate &&\n dateAdapter.isSame(visibleMonth, selectedDate.endDate, \"month\") &&\n isDaySelectable(selectedDate.endDate)\n ) {\n return selectedDate.endDate;\n }\n return null;\n };\n let focusSelectedDate = getVisibleSelectedDate(nextStartVisibleMonth);\n focusSelectedDate =\n focusSelectedDate ?? getVisibleSelectedDate(nextEndVisibleMonth);\n if (focusSelectedDate && isDaySelectable(focusSelectedDate)) {\n return focusSelectedDate;\n }\n // Today\n const today = dateAdapter.today(timezone);\n if (\n (dateAdapter.isSame(nextStartVisibleMonth, today, \"month\") ||\n dateAdapter.isSame(nextEndVisibleMonth, today, \"month\")) &&\n isDaySelectable(today)\n ) {\n return today;\n }\n // First selectable date in either calendar\n const getFirstSelectableDate = (visibleMonth: TDate) => {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => isDaySelectable(visibleDay));\n return firstSelectableDate ?? null;\n };\n\n return (\n getFirstSelectableDate(nextStartVisibleMonth) ??\n getFirstSelectableDate(nextEndVisibleMonth)\n );\n };\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: only run when focus/min/max date changes\n useLayoutEffect(() => {\n if (!focused) {\n setFocusedDate(null);\n return;\n }\n\n const isStartDateValid =\n selectedDate?.startDate &&\n dateAdapter.isValid(selectedDate.startDate) &&\n dateAdapter.compare(selectedDate.startDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.startDate, maxDate) <= 0;\n\n const isEndDateValid =\n selectedDate?.endDate &&\n dateAdapter.isValid(selectedDate.endDate) &&\n dateAdapter.compare(selectedDate.endDate, minDate) >= 0 &&\n dateAdapter.compare(selectedDate.endDate, maxDate) <= 0;\n\n let nextStartVisibleMonth = startVisibleMonth;\n let nextEndVisibleMonth = endVisibleMonth;\n\n const setVisibleMonths = (\n start: typeof nextStartVisibleMonth,\n end: typeof nextEndVisibleMonth,\n ) => {\n nextStartVisibleMonth = dateAdapter.startOf(start, \"month\");\n nextEndVisibleMonth = dateAdapter.startOf(end, \"month\");\n };\n\n if (\n selectedDate?.startDate &&\n selectedDate?.endDate &&\n isStartDateValid &&\n isEndDateValid\n ) {\n if (\n dateAdapter.isSame(\n selectedDate.startDate,\n startVisibleMonth,\n \"month\",\n ) &&\n dateAdapter.isSame(selectedDate.endDate, startVisibleMonth, \"month\")\n ) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else {\n setVisibleMonths(selectedDate.startDate, selectedDate.endDate);\n }\n } else if (selectedDate?.startDate && isStartDateValid) {\n setVisibleMonths(\n selectedDate.startDate,\n dateAdapter.add(selectedDate.startDate, { months: 1 }),\n );\n } else if (selectedDate?.endDate && isEndDateValid) {\n setVisibleMonths(\n dateAdapter.subtract(selectedDate.endDate, { months: 1 }),\n selectedDate.endDate,\n );\n }\n\n if (!focusedDate) {\n setFocusedDate((prevFocusedDate) => {\n if (!prevFocusedDate) {\n return getNextFocusedDate(nextStartVisibleMonth, nextEndVisibleMonth);\n }\n return prevFocusedDate;\n });\n }\n }, [dateAdapter, minDate, maxDate, focused]);\n\n const StartCalendarProps = {\n visibleMonth: startVisibleMonth,\n hoveredDate,\n selectedDate: calendarSelectedDate,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) < 0\n ? focusedDate\n : null,\n onHoveredDateChange: handleHoveredStartDateChange,\n onFocusedDateChange: handleStartCalendarFocusedDateChange,\n onVisibleMonthChange: handleStartVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...StartCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n const EndCalendarProps = {\n visibleMonth: endVisibleMonth,\n hoveredDate,\n isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n focusedDateRef: initialFocusRef,\n focusedDate:\n focusedDate &&\n dateAdapter.compare(\n focusedDate,\n dateAdapter.startOf(endVisibleMonth, \"month\"),\n ) >= 0\n ? focusedDate\n : null,\n selectedDate: calendarSelectedDate,\n onFocusedDateChange: handleEndCalendarFocusedDateChange,\n onHoveredDateChange: handleHoveredEndDateChange,\n onVisibleMonthChange: handleEndVisibleMonthChange,\n onSelectionChange: handleSelectionChange,\n hideOutOfRangeDates: true,\n minDate,\n maxDate,\n timezone,\n ...EndCalendarPropsProp,\n } as Partial<UseCalendarSelectionRangeProps<TDate>>;\n\n return (\n <StackLayout\n separators\n gap={0}\n className={clsx(className, withBaseName(\"container\"))}\n ref={containerRef}\n {...rest}\n >\n {helperText && (\n <FlexItem className={withBaseName(\"header\")}>\n <FormFieldHelperText>{helperText}</FormFieldHelperText>\n </FlexItem>\n )}\n <FlexLayout gap={0}>\n {/* Avoid Dropdowns in Calendar inheriting the FormField's state */}\n <FormFieldContext.Provider value={{} as FormFieldContextValue}>\n <Calendar selectionVariant={\"range\"} {...StartCalendarProps}>\n <CalendarNavigation\n disableNavigateNext={dateAdapter.isSame(\n startVisibleMonth,\n dateAdapter.subtract(maxDate, { months: 1 }),\n \"month\",\n )}\n {...StartCalendarNavigationProps}\n />\n <CalendarGrid {...StartCalendarGridProps} />\n </Calendar>\n <Calendar selectionVariant={\"range\"} {...EndCalendarProps}>\n <CalendarNavigation\n disableNavigatePrevious={dateAdapter.isSame(\n endVisibleMonth,\n dateAdapter.add(minDate, { months: 1 }),\n \"month\",\n )}\n {...EndCalendarNavigationProps}\n />\n <CalendarGrid {...EndCalendarGridProps} />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n});\n"],"names":["makePrefixer","forwardRef","DatePickerRangePanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useRef","useForkRef","useDatePickerContext","useDatePickerOverlay","useState","useControlled","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":";;;;;;;;;;;;;;;;;;;;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,GAAeA,kBAAa,qBAAqB,CAAA;AAEhD,MAAM,oBAAuB,GAAAC,gBAAA,CAAW,SAASC,qBAAAA,CAEtD,OAAyC,GAAgC,EAAA;AACzE,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,oCAAuB,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,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,8BAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAChD,EAAM,MAAA,YAAA,GAAeC,eAAW,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,GAAAC,sCAAA,CAA4B,EAAE,gBAAA,EAAkB,SAAS,CAAA;AAE7D,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,eAAA,EAAiB,OAAQ;AAAA,MAChCC,8CAAqB,EAAA;AAEzB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,CAAC,CAAC,yBAA2B,EAAA,uBAAuB,CAAC,CAAI,GAAAA,cAAA;AAAA,IAAS,MACtE,wBAAA,CAAgC,WAAa,EAAA,YAAA,EAAc,QAAQ;AAAA,GACrE;AAEA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIC,kBAAc,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,GAAIA,kBAAc,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,GAAAC,iBAAA;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,GAAAA,iBAAA;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,GAAAA,iBAAA;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,GAAAA,iBAAA;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,GAAAA,iBAAA;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,GAAIF,eAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,oCAAuC,GAAAE,iBAAA;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,GAAAA,iBAAA;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,GAAAC,2BAAA;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,EAAAC,qBAAA,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,uBAAAC,eAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,UAAU,EAAA,IAAA;AAAA,MACV,GAAK,EAAA,CAAA;AAAA,MACL,SAAW,EAAAC,SAAA,CAAK,SAAW,EAAA,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,MACpD,GAAK,EAAA,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QACC,UAAA,oBAAAC,cAAA,CAACC,iBAAS,SAAW,EAAA,YAAA,CAAa,QAAQ,CACxC,EAAA,QAAA,kBAAAD,cAAA,CAACE,wBAAqB,EAAA,EAAA,QAAA,EAAA,UAAA,EAAW,CACnC,EAAA,CAAA;AAAA,wBAEFF,cAAA,CAACG,eAAW,EAAA,EAAA,GAAA,EAAK,CAEf,EAAA,QAAA,kBAAAN,eAAA,CAACO,sBAAiB,QAAjB,EAAA,EAA0B,KAAO,EAAA,EAChC,EAAA,QAAA,EAAA;AAAA,0BAAAP,eAAA,CAACQ,iBAAS,EAAA,EAAA,gBAAA,EAAkB,OAAU,EAAA,GAAG,kBACvC,EAAA,QAAA,EAAA;AAAA,4BAAAL,cAAA;AAAA,cAACM,qCAAA;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,4BACAN,cAAA,CAACO,yBAAc,EAAA,EAAA,GAAG,sBAAwB,EAAA;AAAA,WAC5C,EAAA,CAAA;AAAA,0BACCV,eAAA,CAAAQ,iBAAA,EAAA,EAAS,gBAAkB,EAAA,OAAA,EAAU,GAAG,gBACvC,EAAA,QAAA,EAAA;AAAA,4BAAAL,cAAA;AAAA,cAACM,qCAAA;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,4BACAN,cAAA,CAACO,yBAAc,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":["makePrefixer","forwardRef","DatePickerRangePanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useRef","useForkRef","useDatePickerContext","useDatePickerOverlay","useState","useControlled","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":";;;;;;;;;;;;;;;;;;;;AAiLA,SAAS,wBAAA,CACP,WAAA,EACA,YAAA,EACA,QAAA,GAAqB,SAAA,EACrB;AACA,EAAA,SAAS,uBAAuB,IAAA,EAAa;AAC3C,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AACnD,IAAA,MAAM,UAAU,WAAA,CAAY,GAAA,CAAI,WAAW,EAAE,MAAA,EAAQ,GAAG,CAAA;AACxD,IAAA,OAAO,CAAC,WAAW,OAAO,CAAA;AAAA,EAC5B;AAEA,EAAA,IAAI,YAAA,IAAgB,WAAA,CAAY,OAAA,CAAQ,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAS,CAAA,EAAG;AAChE,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,YAAA;AAC/B,IAAA,IAAI,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,EAAG;AAChC,MAAA,OAAO,WAAA,CAAY,OAAO,SAAA,EAAW,OAAA,EAAS,OAAO,CAAA,GACjD,sBAAA,CAAuB,SAAS,CAAA,GAChC;AAAA,QACE,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AAAA,QACtC,WAAA,CAAY,OAAA,CAAQ,OAAA,EAAS,OAAO;AAAA,OACtC;AAAA,IACN;AACA,IAAA,OAAO,uBAAuB,SAAS,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,eAAe,WAAA,CAAY,OAAA;AAAA,IAC/B,WAAA,CAAY,MAAM,QAAQ,CAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAA,OAAO,CAAC,cAAc,WAAA,CAAY,GAAA,CAAI,cAAc,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AACpE;AAEA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAEhD,MAAM,oBAAA,GAAuBC,gBAAA,CAAW,SAASC,qBAAAA,CAEtD,OAAyC,GAAA,EAAgC;AACzE,EAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,oCAAA,EAAuB;AAE/C,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,wBAAA,EAA0B,4BAAA;AAAA,IAC1B,iBAAA,EAAmB,qBAAA;AAAA,IACnB,yBAAA;AAAA,IACA,sBAAA,EAAwB,0BAAA;AAAA,IACxB,eAAA,EAAiB,mBAAA;AAAA,IACjB,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA,EAAoB,sBAAA;AAAA,IACpB,4BAAA;AAAA,IACA,sBAAA;AAAA,IACA,gBAAA,EAAkB,oBAAA;AAAA,IAClB,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,8BAAA;AAAA,IACR,GAAA,EAAKC,eAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,YAAA,GAAeC,eAAA,CAAW,GAAA,EAAK,YAAY,CAAA;AAEjD,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,QAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAU,WAAA,CAAY,OAAA,CAAQ,YAAY,KAAA,CAAM,QAAQ,GAAG,OAAO,CAAA;AAAA,MAClE,UAAU,WAAA,CAAY,GAAA,CAAI,SAAS,EAAE,MAAA,EAAQ,GAAG;AAAA,KAClD;AAAA,IACA,OAAA,EAAS,EAAE,MAAA,EAAQ,gBAAA,EAAkB,iBAAA;AAAkB,GACzD,GAAIC,sCAAA,CAA4B,EAAE,gBAAA,EAAkB,SAAS,CAAA;AAE7D,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,eAAA,EAAiB,OAAA;AAAQ,MAChCC,8CAAA,EAAqB;AAEzB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,CAAC,CAAC,yBAAA,EAA2B,uBAAuB,CAAC,CAAA,GAAIA,cAAA;AAAA,IAAS,MACtE,wBAAA,CAAgC,WAAA,EAAa,YAAA,EAAc,QAAQ;AAAA,GACrE;AAEA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIC,kBAAA,CAAc;AAAA,IAC9D,UAAA,EAAY,qBAAA;AAAA,IACZ,SAAS,4BAAA,IAAgC,yBAAA;AAAA,IACzC,IAAA,EAAM,sBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,kBAAA,CAAc;AAAA,IAC1D,UAAA,EAAY,mBAAA;AAAA,IACZ,SAAS,0BAAA,IAA8B,uBAAA;AAAA,IACvC,IAAA,EAAM,sBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,qBAAA,GAAwBC,iBAAA;AAAA,IAC5B,CAAC,OAAuB,OAAA,KAA8C;AACpE,MAAA,MAAA,CAAO,OAAO,OAAO,CAAA;AACrB,MAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAA,EAAO,OAAA,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,QAAQ,iBAAiB;AAAA,GAC5B;AAEA,EAAA,MAAM,4BAAA,GACJA,iBAAA;AAAA,IACE,CAAC,OAAuB,cAAA,KAAiC;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,mBAAmB;AAAA,GACtB;AAEF,EAAA,MAAM,0BAAA,GAA6BA,iBAAA;AAAA,IACjC,CAAC,OAAuB,cAAA,KAAiC;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,mBAAmB;AAAA,GACtB;AAEA,EAAA,MAAM,6BAAA,GAAgCA,iBAAA;AAAA,IACpC,CAAC,OAA8B,eAAA,KAA2B;AACxD,MAAA,oBAAA,CAAqB,eAAe,CAAA;AACpC,MAAA,IAAI,WAAA,CAAY,OAAA,CAAQ,eAAA,EAAiB,eAAe,KAAK,CAAA,EAAG;AAC9D,QAAA,kBAAA,CAAmB,YAAY,GAAA,CAAI,eAAA,EAAiB,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,MACpE;AACA,MAAA,yBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,yBAAA,CAA4B,KAAA,EAAO,eAAA,CAAA;AAAA,IACrC,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,eAAA,EAAiB,yBAAyB;AAAA,GAC1D;AAEA,EAAA,MAAM,2BAAA,GAA8BA,iBAAA;AAAA,IAClC,CAAC,OAA8B,eAAA,KAA2B;AACxD,MAAA,kBAAA,CAAmB,eAAe,CAAA;AAClC,MAAA,IAAI,WAAA,CAAY,OAAA,CAAQ,eAAA,EAAiB,iBAAiB,KAAK,CAAA,EAAG;AAChE,QAAA,oBAAA;AAAA,UACE,WAAA,CAAY,OAAA;AAAA,YACV,YAAY,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,YACnD;AAAA;AACF,SACF;AAAA,MACF;AACA,MAAA,uBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,uBAAA,CAA0B,KAAA,EAAO,eAAA,CAAA;AAAA,IACnC,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,iBAAA,EAAmB,uBAAuB;AAAA,GAC1D;AAEA,EAAA,MAAM,oBAAA,GAAuB;AAAA,IAC3B,SAAA,EACE,gBAAgB,WAAA,CAAY,OAAA,CAAQ,aAAa,SAAS,CAAA,GACtD,aAAa,SAAA,GACb,IAAA;AAAA,IACN,OAAA,EACE,gBAAgB,WAAA,CAAY,OAAA,CAAQ,aAAa,OAAO,CAAA,GACpD,aAAa,OAAA,GACb;AAAA,GACR;AAEA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIF,eAAuB,IAAI,CAAA;AAEjE,EAAA,MAAM,oCAAA,GAAuCE,iBAAA;AAAA,IAC3C,CAAC,OAA8B,cAAA,KAA0B;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,IACE,kBACA,CAAC,WAAA,CAAY,OAAO,iBAAA,EAAmB,cAAA,EAAgB,OAAO,CAAA,EAC9D;AACA,QAAA,6BAAA;AAAA,UACE,KAAA;AAAA,UACA,WAAA,CAAY,OAAA,CAAQ,cAAA,EAAgB,OAAO;AAAA,SAC7C;AAAA,MACF;AACA,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA;AAAA,MACE,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,6BAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,kCAAA,GAAqCA,iBAAA;AAAA,IACzC,CAAC,OAA8B,cAAA,KAA0B;AACvD,MAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,MAAA,IACE,kBACA,CAAC,WAAA,CAAY,OAAO,eAAA,EAAiB,cAAA,EAAgB,OAAO,CAAA,EAC5D;AACA,QAAA,2BAAA;AAAA,UACE,KAAA;AAAA,UACA,WAAA,CAAY,OAAA,CAAQ,cAAA,EAAgB,OAAO;AAAA,SAC7C;AAAA,MACF;AACA,MAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAA,EAAO,cAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA;AAAA,MACE,WAAA;AAAA,MACA,eAAA;AAAA,MACA,2BAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,kBAAA,GAAqB,CACzB,qBAAA,EACA,mBAAA,KACG;AACH,IAAA,MAAM,qBAAA,GAAwB,CAAC,IAAA,KAAgB;AAC7C,MAAA,OACE,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,GAAI,KACrC,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,GAAI,CAAA;AAAA,IAEzC,CAAA;AACA,IAAA,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,IAAA,MAAM,sBAAA,GAAyB,CAAC,YAAA,KAAwB;AACtD,MAAA,IAAA,CACE,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAA,KACd,WAAA,CAAY,MAAA,CAAO,YAAA,EAAc,YAAA,CAAa,SAAA,EAAW,OAAO,CAAA,IAChE,eAAA,CAAgB,YAAA,CAAa,SAAS,CAAA,EACtC;AACA,QAAA,OAAO,YAAA,CAAa,SAAA;AAAA,MACtB;AACA,MAAA,IAAA,CACE,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAA,KACd,WAAA,CAAY,MAAA,CAAO,YAAA,EAAc,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA,IAC9D,eAAA,CAAgB,YAAA,CAAa,OAAO,CAAA,EACpC;AACA,QAAA,OAAO,YAAA,CAAa,OAAA;AAAA,MACtB;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AACA,IAAA,IAAI,iBAAA,GAAoB,uBAAuB,qBAAqB,CAAA;AACpE,IAAA,iBAAA,GACE,iBAAA,IAAqB,uBAAuB,mBAAmB,CAAA;AACjE,IAAA,IAAI,iBAAA,IAAqB,eAAA,CAAgB,iBAAiB,CAAA,EAAG;AAC3D,MAAA,OAAO,iBAAA;AAAA,IACT;AAEA,IAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA;AACxC,IAAA,IAAA,CACG,WAAA,CAAY,MAAA,CAAO,qBAAA,EAAuB,KAAA,EAAO,OAAO,CAAA,IACvD,WAAA,CAAY,MAAA,CAAO,mBAAA,EAAqB,KAAA,EAAO,OAAO,CAAA,KACxD,eAAA,CAAgB,KAAK,CAAA,EACrB;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,sBAAA,GAAyB,CAAC,YAAA,KAAwB;AACtD,MAAA,MAAM,mBAAA,GAAsBC,2BAAA;AAAA,QAC1B,WAAA;AAAA,QACA;AAAA,QACA,IAAA,CAAK,CAAC,UAAA,KAAe,eAAA,CAAgB,UAAU,CAAC,CAAA;AAClD,MAAA,OAAO,mBAAA,IAAuB,IAAA;AAAA,IAChC,CAAA;AAEA,IAAA,OACE,sBAAA,CAAuB,qBAAqB,CAAA,IAC5C,sBAAA,CAAuB,mBAAmB,CAAA;AAAA,EAE9C,CAAA;AAGA,EAAAC,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,gBAAA,GAAA,CACJ,6CAAc,SAAA,KACd,WAAA,CAAY,QAAQ,YAAA,CAAa,SAAS,KAC1C,WAAA,CAAY,OAAA,CAAQ,aAAa,SAAA,EAAW,OAAO,KAAK,CAAA,IACxD,WAAA,CAAY,QAAQ,YAAA,CAAa,SAAA,EAAW,OAAO,CAAA,IAAK,CAAA;AAE1D,IAAA,MAAM,cAAA,GAAA,CACJ,6CAAc,OAAA,KACd,WAAA,CAAY,QAAQ,YAAA,CAAa,OAAO,KACxC,WAAA,CAAY,OAAA,CAAQ,aAAa,OAAA,EAAS,OAAO,KAAK,CAAA,IACtD,WAAA,CAAY,QAAQ,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA,IAAK,CAAA;AAExD,IAAA,IAAI,qBAAA,GAAwB,iBAAA;AAC5B,IAAA,IAAI,mBAAA,GAAsB,eAAA;AAE1B,IAAA,MAAM,gBAAA,GAAmB,CACvB,KAAA,EACA,GAAA,KACG;AACH,MAAA,qBAAA,GAAwB,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,OAAO,CAAA;AAC1D,MAAA,mBAAA,GAAsB,WAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,OAAO,CAAA;AAAA,IACxD,CAAA;AAEA,IAAA,IAAA,CACE,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAA,MACd,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAA,CAAA,IACd,oBACA,cAAA,EACA;AACA,MAAA,IACE,WAAA,CAAY,MAAA;AAAA,QACV,YAAA,CAAa,SAAA;AAAA,QACb,iBAAA;AAAA,QACA;AAAA,WAEF,WAAA,CAAY,MAAA,CAAO,aAAa,OAAA,EAAS,iBAAA,EAAmB,OAAO,CAAA,EACnE;AACA,QAAA,gBAAA;AAAA,UACE,YAAA,CAAa,SAAA;AAAA,UACb,YAAY,GAAA,CAAI,YAAA,CAAa,WAAW,EAAE,MAAA,EAAQ,GAAG;AAAA,SACvD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,YAAA,CAAa,SAAA,EAAW,YAAA,CAAa,OAAO,CAAA;AAAA,MAC/D;AAAA,IACF,CAAA,MAAA,IAAA,CAAW,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,SAAA,KAAa,gBAAA,EAAkB;AACtD,MAAA,gBAAA;AAAA,QACE,YAAA,CAAa,SAAA;AAAA,QACb,YAAY,GAAA,CAAI,YAAA,CAAa,WAAW,EAAE,MAAA,EAAQ,GAAG;AAAA,OACvD;AAAA,IACF,CAAA,MAAA,IAAA,CAAW,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAA,KAAW,cAAA,EAAgB;AAClD,MAAA,gBAAA;AAAA,QACE,YAAY,QAAA,CAAS,YAAA,CAAa,SAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,QACxD,YAAA,CAAa;AAAA,OACf;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,cAAA,CAAe,CAAC,eAAA,KAAoB;AAClC,QAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,UAAA,OAAO,kBAAA,CAAmB,uBAAuB,mBAAmB,CAAA;AAAA,QACtE;AACA,QAAA,OAAO,eAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,OAAO,CAAC,CAAA;AAE3C,EAAA,MAAM,kBAAA,GAAqB;AAAA,IACzB,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA;AAAA,IACA,YAAA,EAAc,oBAAA;AAAA,IACd,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA,EAAgB,eAAA;AAAA,IAChB,WAAA,EACE,eACA,WAAA,CAAY,OAAA;AAAA,MACV,WAAA;AAAA,MACA,WAAA,CAAY,OAAA,CAAQ,eAAA,EAAiB,OAAO;AAAA,KAC9C,GAAI,IACA,WAAA,GACA,IAAA;AAAA,IACN,mBAAA,EAAqB,4BAAA;AAAA,IACrB,mBAAA,EAAqB,oCAAA;AAAA,IACrB,oBAAA,EAAsB,6BAAA;AAAA,IACtB,iBAAA,EAAmB,qBAAA;AAAA,IACnB,mBAAA,EAAqB,IAAA;AAAA,IACrB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL;AACA,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAA,EAAc,eAAA;AAAA,IACd,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA,EAAgB,eAAA;AAAA,IAChB,WAAA,EACE,eACA,WAAA,CAAY,OAAA;AAAA,MACV,WAAA;AAAA,MACA,WAAA,CAAY,OAAA,CAAQ,eAAA,EAAiB,OAAO;AAAA,KAC9C,IAAK,IACD,WAAA,GACA,IAAA;AAAA,IACN,YAAA,EAAc,oBAAA;AAAA,IACd,mBAAA,EAAqB,kCAAA;AAAA,IACrB,mBAAA,EAAqB,0BAAA;AAAA,IACrB,oBAAA,EAAsB,2BAAA;AAAA,IACtB,iBAAA,EAAmB,qBAAA;AAAA,IACnB,mBAAA,EAAqB,IAAA;AAAA,IACrB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EAAA,uBACEC,eAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,GAAA,EAAK,CAAA;AAAA,MACL,SAAA,EAAWC,SAAA,CAAK,SAAA,EAAW,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,MACpD,GAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCC,cAAA,CAACC,iBAAS,SAAA,EAAW,YAAA,CAAa,QAAQ,CAAA,EACxC,QAAA,kBAAAD,cAAA,CAACE,wBAAA,EAAA,EAAqB,QAAA,EAAA,UAAA,EAAW,CAAA,EACnC,CAAA;AAAA,wBAEFF,cAAA,CAACG,eAAA,EAAA,EAAW,GAAA,EAAK,CAAA,EAEf,QAAA,kBAAAN,eAAA,CAACO,sBAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,EAAC,EACjC,QAAA,EAAA;AAAA,0BAAAP,eAAA,CAACQ,iBAAA,EAAA,EAAS,gBAAA,EAAkB,OAAA,EAAU,GAAG,kBAAA,EACvC,QAAA,EAAA;AAAA,4BAAAL,cAAA;AAAA,cAACM,qCAAA;AAAA,cAAA;AAAA,gBACC,qBAAqB,WAAA,CAAY,MAAA;AAAA,kBAC/B,iBAAA;AAAA,kBACA,YAAY,QAAA,CAAS,OAAA,EAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,kBAC3C;AAAA,iBACF;AAAA,gBACC,GAAG;AAAA;AAAA,aACN;AAAA,4BACAN,cAAA,CAACO,yBAAA,EAAA,EAAc,GAAG,sBAAA,EAAwB;AAAA,WAAA,EAC5C,CAAA;AAAA,0BACAV,eAAA,CAACQ,iBAAA,EAAA,EAAS,gBAAA,EAAkB,OAAA,EAAU,GAAG,gBAAA,EACvC,QAAA,EAAA;AAAA,4BAAAL,cAAA;AAAA,cAACM,qCAAA;AAAA,cAAA;AAAA,gBACC,yBAAyB,WAAA,CAAY,MAAA;AAAA,kBACnC,eAAA;AAAA,kBACA,YAAY,GAAA,CAAI,OAAA,EAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,kBACtC;AAAA,iBACF;AAAA,gBACC,GAAG;AAAA;AAAA,aACN;AAAA,4BACAN,cAAA,CAACO,yBAAA,EAAA,EAAc,GAAG,oBAAA,EAAsB;AAAA,WAAA,EAC1C;AAAA,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;;;;"}
@@ -54,7 +54,7 @@ const DatePickerSingleGridPanel = react.forwardRef(
54
54
  minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
55
55
  maxDate = dateAdapter.add(minDate, { months: 1 })
56
56
  },
57
- helpers: { select, isDayDisabled, isDayHighlighted, isDayUnselectable }
57
+ helpers: { select, isDayHighlighted, isDayUnselectable }
58
58
  } = stateAndHelpers;
59
59
  const { matchedBreakpoints } = core.useBreakpoint();
60
60
  const responsiveColumns = core.resolveResponsiveValue(columns, matchedBreakpoints) ?? 1;
@@ -138,7 +138,7 @@ const DatePickerSingleGridPanel = react.forwardRef(
138
138
  const isOutsideAllowedDates = (date) => {
139
139
  return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
140
140
  };
141
- const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || (isDayDisabled == null ? void 0 : isDayDisabled(date)) || isOutsideAllowedDates(date)));
141
+ const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
142
142
  const startVisibleMonth = dateAdapter.startOf(visibleMonth, "month");
143
143
  const endVisibleMonth = dateAdapter.add(visibleMonth, {
144
144
  months: responsiveNumberOfVisibleMonths - 1
@@ -178,7 +178,6 @@ const DatePickerSingleGridPanel = react.forwardRef(
178
178
  );
179
179
  }, [
180
180
  dateAdapter,
181
- isDayDisabled,
182
181
  isDayUnselectable,
183
182
  minDate,
184
183
  maxDate,
@@ -203,7 +202,6 @@ const DatePickerSingleGridPanel = react.forwardRef(
203
202
  focusedDateRef: initialFocusRef,
204
203
  focusedDate: (calendarGridFocused == null ? void 0 : calendarGridFocused.current) ? focusedDate : null,
205
204
  hoveredDate,
206
- isDayDisabled,
207
205
  isDayHighlighted,
208
206
  isDayUnselectable,
209
207
  hideOutOfRangeDates: true,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerSingleGridPanel.js","sources":["../src/date-picker/DatePickerSingleGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n type ResponsiveProp,\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 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 CalendarSingleProps,\n type DateRangeSelection,\n type SingleDateSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type SingleDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\n\n/**\n * Base props for the DatePickerPanel grid components.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerPanelBaseProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n /**\n * The visible month for the first visible calendar\n */\n visibleMonth?: TDate;\n /**\n * Number of columns.\n */\n columns?: ResponsiveProp<number | string>;\n /**\n * Number of visible months, maximum 12, defaults to 1\n */\n numberOfVisibleMonths?: ResponsiveProp<\n 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n >;\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: TDate;\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\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 * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: Partial<CalendarNavigationProps<TDate>>;\n /**\n * Props to be passed to the CalendarGrid component.\n */\n CalendarGridProps?: Partial<CalendarGridProps<TDate>>;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport type DatePickerSingleGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n SingleDateSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: TDate | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerSingleGridPanel = forwardRef(\n function DatePickerSingleGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerSingleGridPanelProps<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 onVisibleMonthChange,\n helperText,\n onFocusedDateChange,\n onHoveredDateChange,\n onSelectionChange,\n numberOfVisibleMonths = 1,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: SingleDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"single\",\n });\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 {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate = dateAdapter.isValid(selectedDate)\n ? selectedDate\n : dateAdapter.today(timezone);\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSingleGridPanel\",\n state: \"visibleMonth\",\n });\n\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const singleDate = newDate as TDate | null;\n select(event, singleDate);\n onSelectionChange?.(event, singleDate);\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 {\n months: responsiveNumberOfVisibleMonths - 1,\n },\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 const getNextFocusedDate = useCallback(() => {\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 startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n const selectedDateStartOfMonth = selectedDate\n ? dateAdapter.startOf(selectedDate, \"month\")\n : null;\n\n const getVisibleSelectedDate = () => {\n if (\n selectedDateStartOfMonth &&\n dateAdapter.compare(selectedDateStartOfMonth, startVisibleMonth) >=\n 0 &&\n dateAdapter.compare(selectedDateStartOfMonth, endVisibleMonth) <= 0\n ) {\n return selectedDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate && isDaySelectable(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 dateAdapter,\n isDayDisabled,\n isDayUnselectable,\n minDate,\n maxDate,\n responsiveNumberOfVisibleMonths,\n selectedDate,\n visibleMonth,\n timezone,\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 isDayDisabled,\n isDayHighlighted,\n isDayUnselectable,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\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={\"single\"}\n {...(calendarProps as Partial<CalendarSingleProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerSingleGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useBreakpoint","resolveResponsiveValue","useDatePickerOverlay","useState","useControlled","useRef","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8GA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAqBhD,MAAM,yBAA4B,GAAAC,gBAAA;AAAA,EACvC,SAASC,0BACP,CAAA,KAAA,EACA,GACA,EAAA;AACA,IAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,oCAAuB,EAAA;AAE/C,IAAM,MAAA;AAAA,MACJ,aAAA;AAAA,MACA,uBAAA;AAAA,MACA,iBAAA;AAAA,MACA,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,oBAAA;AAAA,MACA,UAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,iBAAA;AAAA,MACA,qBAAwB,GAAA,CAAA;AAAA,MACxB,OAAU,GAAA,qBAAA;AAAA,MACV,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,oCAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,kBAAgDC,sCAAqB,CAAA;AAAA,MACzE,gBAAkB,EAAA;AAAA,KACnB,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,QAAA;AAAA,QACA,YAAe,GAAA,IAAA;AAAA,QACf,UAAU,WAAY,CAAA,OAAA,CAAQ,YAAY,KAAM,CAAA,QAAQ,GAAG,OAAO,CAAA;AAAA,QAClE,UAAU,WAAY,CAAA,GAAA,CAAI,SAAS,EAAE,MAAA,EAAQ,GAAG;AAAA,OAClD;AAAA,MACA,OAAS,EAAA,EAAE,MAAQ,EAAA,aAAA,EAAe,kBAAkB,iBAAkB;AAAA,KACpE,GAAA,eAAA;AAEJ,IAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,kBAAc,EAAA;AAE7C,IAAA,MAAM,iBACJ,GAAAC,2BAAA,CAAuB,OAAS,EAAA,kBAAkB,CAAK,IAAA,CAAA;AACzD,IAAA,MAAM,+BACJ,GAAAA,2BAAA,CAAuB,qBAAuB,EAAA,kBAAkB,CAAK,IAAA,CAAA;AAEvE,IAAM,MAAA;AAAA,MACJ,KAAA,EAAO,EAAE,OAAA,EAAS,eAAgB;AAAA,QAChCC,8CAAqB,EAAA;AAEzB,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAuB,IAAI,CAAA;AAEjE,IAAA,MAAM,CAAC,+BAA+B,CAAI,GAAAA,cAAA,CAAS,MAAM;AACvD,MAAM,MAAA,SAAA,GAAY,YAAY,OAAQ,CAAA,YAAY,IAC9C,YACA,GAAA,WAAA,CAAY,MAAM,QAAQ,CAAA;AAC9B,MAAA,OAAO,mBAAuB,IAAA,WAAA,CAAY,OAAQ,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA,KACrE,CAAA;AACD,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,kBAAc,CAAA;AAAA,MACpD,UAAY,EAAA,gBAAA;AAAA,MACZ,OAAS,EAAA,+BAAA;AAAA,MACT,IAAM,EAAA,2BAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAID,eAAuB,IAAI,CAAA;AACjE,IAAM,MAAA,mBAAA,GAAsBE,aAAO,KAAK,CAAA;AAExC,IAAA,MAAM,qBAAwB,GAAAC,iBAAA;AAAA,MAC5B,CACE,OACA,OACG,KAAA;AACH,QAAA,MAAM,UAAa,GAAA,OAAA;AACnB,QAAA,MAAA,CAAO,OAAO,UAAU,CAAA;AACxB,QAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAO,EAAA,UAAA,CAAA;AAAA,OAC7B;AAAA,MACA,CAAC,mBAAmB,MAAM;AAAA,KAC5B;AAEA,IAAA,MAAM,uBAA0B,GAAAA,iBAAA;AAAA,MAC9B,CAAC,OAAuB,cAAiC,KAAA;AACvD,QAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,QAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,OAC/B;AAAA,MACA,CAAC,mBAAmB;AAAA,KACtB;AAEA,IAAA,MAAM,wBAA2B,GAAAA,iBAAA;AAAA,MAC/B,CAAC,OAA8B,eAA2B,KAAA;AACxD,QAAA,eAAA,CAAgB,eAAe,CAAA;AAC/B,QAAA,oBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,oBAAA,CAAuB,KAAO,EAAA,eAAA,CAAA;AAAA,OAChC;AAAA,MACA,CAAC,oBAAoB;AAAA,KACvB;AAEA,IAAA,MAAM,uBAA0B,GAAAA,iBAAA;AAAA,MAC9B,CAAC,OAA8B,cAA0B,KAAA;AACvD,QAAA,cAAA,CAAe,cAAc,CAAA;AAC7B,QAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,UAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAC7B,UAAA;AAAA;AAGF,QAAA,MAAM,sBAAsB,WAAY,CAAA,OAAA;AAAA,UACtC,cAAA;AAAA,UACA;AAAA,SACF;AACA,QAAM,MAAA,gBAAA,GAAmB,WAAY,CAAA,GAAA,CAAI,YAAc,EAAA;AAAA,UACrD,QAAQ,+BAAkC,GAAA;AAAA,SAC3C,CAAA;AAED,QAAA,MAAM,oBACJ,GAAA,WAAA,CAAY,OAAQ,CAAA,mBAAA,EAAqB,YAAY,CAAI,GAAA,CAAA;AAC3D,QAAA,MAAM,uBACJ,GAAA,WAAA,CAAY,OAAQ,CAAA,mBAAA,EAAqB,gBAAgB,CAAI,GAAA,CAAA;AAE/D,QAAA,IAAI,oBAAsB,EAAA;AACxB,UAAA,wBAAA,CAAyB,OAAO,mBAAmB,CAAA;AAAA,mBAC1C,uBAAyB,EAAA;AAClC,UAAA,MAAM,sBAAsB,WAAY,CAAA,QAAA;AAAA,YACtC,mBAAA;AAAA,YACA;AAAA,cACE,QAAQ,+BAAkC,GAAA;AAAA;AAC5C,WACF;AACA,UAAA,wBAAA,CAAyB,OAAO,mBAAmB,CAAA;AAAA;AAErD,QAAA,mBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,cAAA,CAAA;AAAA,OAC/B;AAAA,MACA;AAAA,QACE,WAAA;AAAA,QACA,wBAAA;AAAA,QACA,mBAAA;AAAA,QACA,+BAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAM,MAAA,kBAAA,GAAqBA,kBAAY,MAAM;AAC3C,MAAM,MAAA,qBAAA,GAAwB,CAAC,IAAgB,KAAA;AAC7C,QACE,OAAA,WAAA,CAAY,OAAQ,CAAA,IAAA,EAAM,OAAO,CAAA,GAAI,KACrC,WAAY,CAAA,OAAA,CAAQ,IAAM,EAAA,OAAO,CAAI,GAAA,CAAA;AAAA,OAEzC;AACA,MAAM,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,MAAA,MAAM,iBAAoB,GAAA,WAAA,CAAY,OAAQ,CAAA,YAAA,EAAc,OAAO,CAAA;AACnE,MAAM,MAAA,eAAA,GAAkB,WAAY,CAAA,GAAA,CAAI,YAAc,EAAA;AAAA,QACpD,QAAQ,+BAAkC,GAAA;AAAA,OAC3C,CAAA;AACD,MAAA,MAAM,2BAA2B,YAC7B,GAAA,WAAA,CAAY,OAAQ,CAAA,YAAA,EAAc,OAAO,CACzC,GAAA,IAAA;AAEJ,MAAA,MAAM,yBAAyB,MAAM;AACnC,QAAA,IACE,wBACA,IAAA,WAAA,CAAY,OAAQ,CAAA,wBAAA,EAA0B,iBAAiB,CAAA,IAC7D,CACF,IAAA,WAAA,CAAY,OAAQ,CAAA,wBAAA,EAA0B,eAAe,CAAA,IAAK,CAClE,EAAA;AACA,UAAO,OAAA,YAAA;AAAA;AAET,QAAO,OAAA,IAAA;AAAA,OACT;AAEA,MAAA,MAAM,oBAAoB,sBAAuB,EAAA;AACjD,MAAI,IAAA,iBAAA,IAAqB,eAAgB,CAAA,iBAAiB,CAAG,EAAA;AAC3D,QAAO,OAAA,iBAAA;AAAA;AAIT,MAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,KAAA,CAAM,QAAQ,CAAA;AACxC,MAAA,MAAM,iBAAoB,GAAA,WAAA,CAAY,OAAQ,CAAA,KAAA,EAAO,OAAO,CAAA;AAC5D,MAAA,IACE,WAAY,CAAA,OAAA,CAAQ,iBAAmB,EAAA,iBAAiB,KAAK,CAC7D,IAAA,WAAA,CAAY,OAAQ,CAAA,iBAAA,EAAmB,eAAe,CAAA,IAAK,CAC3D,IAAA,eAAA,CAAgB,KAAK,CACrB,EAAA;AACA,QAAO,OAAA,KAAA;AAAA;AAIT,MAAM,MAAA,sBAAA,GAAyB,CAC7B,UAAA,EACA,cACG,KAAA;AACH,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,cAAA,EAAgB,CAAK,EAAA,EAAA;AACvC,UAAA,MAAM,eAAe,WAAY,CAAA,GAAA,CAAI,YAAY,EAAE,MAAA,EAAQ,GAAG,CAAA;AAC9D,UAAA,MAAM,mBAAsB,GAAAC,2BAAA;AAAA,YAC1B,WAAA;AAAA,YACA;AAAA,YACA,IAAK,CAAA,CAAC,UAAe,KAAA,eAAA,CAAgB,UAAU,CAAC,CAAA;AAElD,UAAA,IAAI,mBAAqB,EAAA;AACvB,YAAO,OAAA,mBAAA;AAAA;AACT;AAGF,QAAO,OAAA,IAAA;AAAA,OACT;AAEA,MAAO,OAAA,sBAAA;AAAA,QACL,iBAAA;AAAA,QACA;AAAA,OACF;AAAA,KACC,EAAA;AAAA,MACD,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,+BAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACD,CAAA;AAGD,IAAAC,qBAAA,CAAgB,MAAM;AAEpB,MAAI,IAAA,OAAA,IAAW,CAAC,mBAAA,CAAoB,OAAS,EAAA;AAC3C,QAAA,cAAA,CAAe,CAAC,eAAoB,KAAA;AAClC,UAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,YAAA,OAAO,kBAAmB,EAAA;AAAA;AAE5B,UAAO,OAAA,eAAA;AAAA,SACR,CAAA;AAAA;AAEH,MAAA,mBAAA,CAAoB,OAAU,GAAA,OAAA;AAAA,KAChC,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,aAAgB,GAAA;AAAA,MACpB,YAAA;AAAA,MACA,cAAgB,EAAA,eAAA;AAAA,MAChB,WAAA,EAAA,CAAa,mBAAqB,IAAA,IAAA,GAAA,MAAA,GAAA,mBAAA,CAAA,OAAA,IAAU,WAAc,GAAA,IAAA;AAAA,MAC1D,WAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAqB,EAAA,IAAA;AAAA,MACrB,YAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,qBAAuB,EAAA,+BAAA;AAAA,MACvB,mBAAqB,EAAA,uBAAA;AAAA,MACrB,mBAAqB,EAAA,uBAAA;AAAA,MACrB,iBAAmB,EAAA,qBAAA;AAAA,MACnB,oBAAsB,EAAA,wBAAA;AAAA,MACtB,QAAA;AAAA,MACA,GAAG;AAAA,KACL;AAEA,IACE,uBAAAC,eAAA;AAAA,MAACC,gBAAA;AAAA,MAAA;AAAA,QACC,UAAU,EAAA,IAAA;AAAA,QACV,GAAK,EAAA,CAAA;AAAA,QACL,SAAW,EAAAC,SAAA,CAAK,SAAW,EAAA,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,QACpD,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UACC,UAAA,oBAAAC,cAAA,CAACC,iBAAS,SAAW,EAAA,YAAA,CAAa,QAAQ,CACxC,EAAA,QAAA,kBAAAD,cAAA,CAACE,wBAAqB,EAAA,EAAA,QAAA,EAAA,UAAA,EAAW,CACnC,EAAA,CAAA;AAAA,0BAEFF,cAAA,CAACG,eAAW,EAAA,EAAA,GAAA,EAAK,CACf,EAAA,QAAA,kBAAAH,cAAA,CAACI,sBAAiB,QAAjB,EAAA,EAA0B,KAAO,EAAA,EAChC,EAAA,QAAA,kBAAAP,eAAA;AAAA,YAACQ,iBAAA;AAAA,YAAA;AAAA,cACC,gBAAkB,EAAA,QAAA;AAAA,cACjB,GAAI,aAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gCAACL,cAAA,CAAAM,qCAAA,EAAA,EAAoB,GAAG,uBAAyB,EAAA,CAAA;AAAA,gCACjDN,cAAA;AAAA,kBAACO,yBAAA;AAAA,kBAAA;AAAA,oBACC,OAAS,EAAA,iBAAA;AAAA,oBACR,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,aAEJ,CACF,EAAA;AAAA;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"DatePickerSingleGridPanel.js","sources":["../src/date-picker/DatePickerSingleGridPanel.tsx"],"sourcesContent":["import {\n FlexItem,\n FlexLayout,\n FormFieldContext,\n type FormFieldContextValue,\n FormFieldHelperText,\n makePrefixer,\n type ResponsiveProp,\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 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 CalendarSingleProps,\n type DateRangeSelection,\n type SingleDateSelection,\n} from \"../calendar\";\nimport { generateDatesForMonth } from \"../calendar/internal/utils\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type SingleDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\nimport datePickerPanelCss from \"./DatePickerPanel.css\";\n\n/**\n * Base props for the DatePickerPanel grid components.\n * @template TDate - The type of the date object.\n */\nexport interface DatePickerPanelBaseProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Helper text to be displayed below the date picker.\n */\n helperText?: string;\n /**\n * The visible month for the first visible calendar\n */\n visibleMonth?: TDate;\n /**\n * Number of columns.\n */\n columns?: ResponsiveProp<number | string>;\n /**\n * Number of visible months, maximum 12, defaults to 1\n */\n numberOfVisibleMonths?: ResponsiveProp<\n 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n >;\n /**\n * The default visible month.\n */\n defaultVisibleMonth?: TDate;\n /**\n * Callback fired when the visible month changes.\n * @param event - The synthetic event or null if triggered by code.\n * @param visibleMonth - The new visible month.\n */\n onVisibleMonthChange?: (\n event: SyntheticEvent | null,\n visibleMonth: TDate,\n ) => void;\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 hovered 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 * Props to be passed to the CalendarNavigation component.\n */\n CalendarNavigationProps?: Partial<CalendarNavigationProps<TDate>>;\n /**\n * Props to be passed to the CalendarGrid component.\n */\n CalendarGridProps?: Partial<CalendarGridProps<TDate>>;\n}\n\nconst withBaseName = makePrefixer(\"saltDatePickerPanel\");\n\nexport type DatePickerSingleGridPanelProps<TDate extends DateFrameworkType> =\n DatePickerPanelBaseProps<TDate> &\n SingleDateSelection<TDate> & {\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate?: TDate | null,\n ) => void;\n CalendarProps?: Partial<\n Omit<\n CalendarSingleProps<TDate>,\n | \"selectionVariant\"\n | \"selectedDate\"\n | \"defaultSelectedDate\"\n | \"onSelectionChange\"\n | \"onVisibleMonthChange\"\n >\n >;\n };\n\nexport const DatePickerSingleGridPanel = forwardRef(\n function DatePickerSingleGridPanel<TDate extends DateFrameworkType>(\n props: DatePickerSingleGridPanelProps<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 onVisibleMonthChange,\n helperText,\n onFocusedDateChange,\n onHoveredDateChange,\n onSelectionChange,\n numberOfVisibleMonths = 1,\n columns = numberOfVisibleMonths,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-date-picker-single-grid-panel\",\n css: datePickerPanelCss,\n window: targetWindow,\n });\n\n const stateAndHelpers: SingleDatePickerState<TDate> = useDatePickerContext({\n selectionVariant: \"single\",\n });\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 {\n state: { focused, initialFocusRef },\n } = useDatePickerOverlay();\n\n const [hoveredDate, setHoveredDate] = useState<TDate | null>(null);\n\n const [uncontrolledDefaultVisibleMonth] = useState(() => {\n const validDate = dateAdapter.isValid(selectedDate)\n ? selectedDate\n : dateAdapter.today(timezone);\n return defaultVisibleMonth || dateAdapter.startOf(validDate, \"month\");\n });\n const [visibleMonth, setVisibleMonth] = useControlled({\n controlled: visibleMonthProp,\n default: uncontrolledDefaultVisibleMonth,\n name: \"DatePickerSingleGridPanel\",\n state: \"visibleMonth\",\n });\n\n const [focusedDate, setFocusedDate] = useState<TDate | null>(null);\n const calendarGridFocused = useRef(false);\n\n const handleSelectionChange = useCallback(\n (\n event: SyntheticEvent,\n newDate: TDate | DateRangeSelection<TDate> | null,\n ) => {\n const singleDate = newDate as TDate | null;\n select(event, singleDate);\n onSelectionChange?.(event, singleDate);\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 {\n months: responsiveNumberOfVisibleMonths - 1,\n },\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 const getNextFocusedDate = useCallback(() => {\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 startVisibleMonth = dateAdapter.startOf(visibleMonth, \"month\");\n const endVisibleMonth = dateAdapter.add(visibleMonth, {\n months: responsiveNumberOfVisibleMonths - 1,\n });\n const selectedDateStartOfMonth = selectedDate\n ? dateAdapter.startOf(selectedDate, \"month\")\n : null;\n\n const getVisibleSelectedDate = () => {\n if (\n selectedDateStartOfMonth &&\n dateAdapter.compare(selectedDateStartOfMonth, startVisibleMonth) >=\n 0 &&\n dateAdapter.compare(selectedDateStartOfMonth, endVisibleMonth) <= 0\n ) {\n return selectedDate;\n }\n return null;\n };\n\n const focusSelectedDate = getVisibleSelectedDate();\n if (focusSelectedDate && isDaySelectable(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 dateAdapter,\n isDayUnselectable,\n minDate,\n maxDate,\n responsiveNumberOfVisibleMonths,\n selectedDate,\n visibleMonth,\n timezone,\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 isDayHighlighted,\n isDayUnselectable,\n hideOutOfRangeDates: true,\n selectedDate,\n minDate,\n maxDate,\n numberOfVisibleMonths: responsiveNumberOfVisibleMonths,\n onFocusedDateChange: handleFocusedDateChange,\n onHoveredDateChange: handleHoveredDateChange,\n onSelectionChange: handleSelectionChange,\n onVisibleMonthChange: handleVisibleMonthChange,\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={\"single\"}\n {...(calendarProps as Partial<CalendarSingleProps<TDate>>)}\n >\n <CalendarNavigation {...CalendarNavigationProps} />\n <CalendarGrid\n columns={responsiveColumns}\n {...CalendarGridProps}\n />\n </Calendar>\n </FormFieldContext.Provider>\n </FlexLayout>\n </StackLayout>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","DatePickerSingleGridPanel","useLocalization","useWindow","useComponentCssInjection","datePickerPanelCss","useDatePickerContext","useBreakpoint","resolveResponsiveValue","useDatePickerOverlay","useState","useControlled","useRef","useCallback","generateDatesForMonth","useLayoutEffect","jsxs","StackLayout","clsx","jsx","FlexItem","FormFieldHelperText","FlexLayout","FormFieldContext","Calendar","CalendarNavigation","CalendarGrid"],"mappings":"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"}
@@ -14,23 +14,28 @@ var DatePickerOverlayProvider = require('./DatePickerOverlayProvider.js');
14
14
 
15
15
  const withBaseName = core.makePrefixer("saltDatePickerSingleInput");
16
16
  function defaultSingleValidation(dateAdapter, date, details, minDate, maxDate) {
17
- var _a, _b, _c;
17
+ var _a, _b;
18
18
  if (!date) {
19
19
  details.errors = details.errors ?? [];
20
- (_a = details.errors) == null ? void 0 : _a.push({
21
- type: dateAdapters.DateDetailError.UNSET,
22
- message: "no date defined"
23
- });
20
+ const hasUnsetError = details.errors.some(
21
+ (err) => err.type === dateAdapters.DateDetailError.UNSET
22
+ );
23
+ if (!hasUnsetError) {
24
+ details.errors.push({
25
+ type: dateAdapters.DateDetailError.UNSET,
26
+ message: "no date defined"
27
+ });
28
+ }
24
29
  } else {
25
30
  if (minDate && dateAdapter.isValid(date) && dateAdapter.compare(date, minDate) < 0) {
26
31
  details.errors = details.errors ?? [];
27
- (_b = details.errors) == null ? void 0 : _b.push({
32
+ (_a = details.errors) == null ? void 0 : _a.push({
28
33
  type: "min-date",
29
34
  message: "is before min date"
30
35
  });
31
36
  } else if (maxDate && dateAdapter.isValid(date) && dateAdapter.compare(date, maxDate) > 0) {
32
37
  details.errors = details.errors ?? [];
33
- (_c = details.errors) == null ? void 0 : _c.push({
38
+ (_b = details.errors) == null ? void 0 : _b.push({
34
39
  type: "max-date",
35
40
  message: "is after max date"
36
41
  });