@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.
- package/CHANGELOG.md +60 -0
- package/css/salt-lab.css +284 -251
- package/dist-cjs/app-header/AppHeader.js.map +1 -1
- package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
- package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
- package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
- package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
- package/dist-cjs/button-bar/OrderedButton.js.map +1 -1
- package/dist-cjs/button-bar/internal/ButtonBarContext.js.map +1 -1
- package/dist-cjs/button-bar/internal/DescendantContext.js.map +1 -1
- package/dist-cjs/button-bar/internal/useDescendant.js.map +1 -1
- package/dist-cjs/button-bar/internal/useDescendants.js.map +1 -1
- package/dist-cjs/calendar/Calendar.css.js +1 -1
- package/dist-cjs/calendar/Calendar.js +11 -2
- package/dist-cjs/calendar/Calendar.js.map +1 -1
- package/dist-cjs/calendar/CalendarGrid.js +38 -36
- package/dist-cjs/calendar/CalendarGrid.js.map +1 -1
- package/dist-cjs/calendar/CalendarMonthHeader.js +1 -1
- package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -1
- package/dist-cjs/calendar/CalendarNavigation.css.js +1 -1
- package/dist-cjs/calendar/CalendarNavigation.js +20 -13
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
- package/dist-cjs/calendar/CalendarWeekHeader.css.js +1 -1
- package/dist-cjs/calendar/CalendarWeekHeader.js +1 -1
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.js +26 -36
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js +30 -9
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-cjs/calendar/internal/utils.js.map +1 -1
- package/dist-cjs/calendar/useCalendar.js +7 -9
- package/dist-cjs/calendar/useCalendar.js.map +1 -1
- package/dist-cjs/calendar/useCalendarDay.js +7 -11
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
- package/dist-cjs/calendar/useCalendarSelection.js +144 -76
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
- package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/keydownHandlers.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/menuPositioning.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/stateUtils.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useClickAway.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useMountedRef.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useRefsManager.js.map +1 -1
- package/dist-cjs/cascading-menu/internal/useStateReducer.js.map +1 -1
- package/dist-cjs/cascading-menu/stateChangeTypes.js.map +1 -1
- package/dist-cjs/color-chooser/AlphaInputField.js.map +1 -1
- package/dist-cjs/color-chooser/Color.js.map +1 -1
- package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
- package/dist-cjs/color-chooser/ColorHelpers.js.map +1 -1
- package/dist-cjs/color-chooser/ColorPicker.js.map +1 -1
- package/dist-cjs/color-chooser/DictTabs.js.map +1 -1
- package/dist-cjs/color-chooser/GetColorPalettes.js.map +1 -1
- package/dist-cjs/color-chooser/HexInput.js.map +1 -1
- package/dist-cjs/color-chooser/RGBAInput.js.map +1 -1
- package/dist-cjs/color-chooser/RGBAInputField.js.map +1 -1
- package/dist-cjs/color-chooser/Swatch.js.map +1 -1
- package/dist-cjs/color-chooser/Swatches.js.map +1 -1
- package/dist-cjs/color-chooser/SwatchesPicker.js.map +1 -1
- package/dist-cjs/color-chooser/color-utils.js.map +1 -1
- package/dist-cjs/color-chooser/colorMap.js.map +1 -1
- package/dist-cjs/color-chooser/createTabsMapping.js.map +1 -1
- package/dist-cjs/combo-box/ComboBox.js.map +1 -1
- package/dist-cjs/combo-box/useCombobox.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/filterHelpers.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
- package/dist-cjs/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
- package/dist-cjs/common-hooks/calcPreferredHeight.js.map +1 -1
- package/dist-cjs/common-hooks/collectionProvider.js.map +1 -1
- package/dist-cjs/common-hooks/itemToString.js.map +1 -1
- package/dist-cjs/common-hooks/keyUtils.js.map +1 -1
- package/dist-cjs/common-hooks/list-dom-utils.js.map +1 -1
- package/dist-cjs/common-hooks/selectionTypes.js.map +1 -1
- package/dist-cjs/common-hooks/useAutoSizer.js.map +1 -1
- package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
- package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-cjs/common-hooks/useImperativeScrollingAPI.js.map +1 -1
- package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
- package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
- package/dist-cjs/common-hooks/useSelection.js.map +1 -1
- package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
- package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
- package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
- package/dist-cjs/common-hooks/utils/filter-utils.js.map +1 -1
- package/dist-cjs/common-hooks/utils/isSelected.js.map +1 -1
- package/dist-cjs/contact-details/ContactAction.js.map +1 -1
- package/dist-cjs/contact-details/ContactActions.js.map +1 -1
- package/dist-cjs/contact-details/ContactAvatar.js.map +1 -1
- package/dist-cjs/contact-details/ContactDetails.js.map +1 -1
- package/dist-cjs/contact-details/ContactFavoriteToggle.js.map +1 -1
- package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
- package/dist-cjs/contact-details/ContactMetadataItem.js.map +1 -1
- package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
- package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
- package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
- package/dist-cjs/contact-details/MailLinkComponent.js.map +1 -1
- package/dist-cjs/contact-details/internal/ContactDetailsContext.js.map +1 -1
- package/dist-cjs/contact-details/internal/FavoriteToggle.js.map +1 -1
- package/dist-cjs/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
- package/dist-cjs/contact-details/internal/StarIcon.js.map +1 -1
- package/dist-cjs/contact-details/internal/StarIconContainer.js.map +1 -1
- package/dist-cjs/contact-details/internal/useComponentSize.js.map +1 -1
- package/dist-cjs/content-status/ContentStatus.js.map +1 -1
- package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
- package/dist-cjs/date-input/DateInputRange.js +3 -2
- package/dist-cjs/date-input/DateInputRange.js.map +1 -1
- package/dist-cjs/date-input/DateInputSingle.js +5 -2
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
- package/dist-cjs/date-picker/DatePicker.js +0 -2
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerActions.js +1 -1
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +2 -3
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +22 -8
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangePanel.js +2 -4
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +2 -4
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js +12 -7
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -1
- package/dist-cjs/date-picker/useDatePicker.js +0 -17
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
- package/dist-cjs/date-picker/useFocusOut.js.map +1 -1
- package/dist-cjs/date-picker/useKeyboard.js.map +1 -1
- package/dist-cjs/deck-item/DeckItem.js.map +1 -1
- package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
- package/dist-cjs/dropdown/Dropdown.js.map +1 -1
- package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
- package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
- package/dist-cjs/dropdown/useClickAway.js.map +1 -1
- package/dist-cjs/dropdown/useDropdown.js.map +1 -1
- package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
- package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
- package/dist-cjs/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
- package/dist-cjs/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormActivationIndicator.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormFieldLegacy.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormHelperText.js.map +1 -1
- package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-cjs/form-field-legacy/NecessityIndicator.js.map +1 -1
- package/dist-cjs/form-field-legacy/StatusIndicator.js.map +1 -1
- package/dist-cjs/form-field-legacy/constant.js.map +1 -1
- package/dist-cjs/form-group/FormGroup.js.map +1 -1
- package/dist-cjs/formatted-input/FormattedInput.js.map +1 -1
- package/dist-cjs/formatted-input/internal/InputWithMask.js.map +1 -1
- package/dist-cjs/index.js +0 -21
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input-legacy/InputLegacy.js.map +1 -1
- package/dist-cjs/input-legacy/StaticInputAdornment.js.map +1 -1
- package/dist-cjs/input-legacy/useCursorOnFocus.js.map +1 -1
- package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
- package/dist-cjs/list/Highlighter.js.map +1 -1
- package/dist-cjs/list/List.js.map +1 -1
- package/dist-cjs/list/ListItem.js.map +1 -1
- package/dist-cjs/list/ListItemGroup.js.map +1 -1
- package/dist-cjs/list/ListItemHeader.js.map +1 -1
- package/dist-cjs/list/VirtualizedList.js.map +1 -1
- package/dist-cjs/list/keyset.js.map +1 -1
- package/dist-cjs/list/useList.js.map +1 -1
- package/dist-cjs/list/useListHeight.js.map +1 -1
- package/dist-cjs/list/useVirtualization.js.map +1 -1
- package/dist-cjs/list-deprecated/List.js.map +1 -1
- package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
- package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
- package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
- package/dist-cjs/list-deprecated/ListItemContext.js.map +1 -1
- package/dist-cjs/list-deprecated/ListStateContext.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/DescendantContext.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/helpers.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/scrollIntoView.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/useListAutoSizer.js.map +1 -1
- package/dist-cjs/list-deprecated/internal/useWidth.js.map +1 -1
- package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
- package/dist-cjs/list-deprecated/useList.js.map +1 -1
- package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
- package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
- package/dist-cjs/list-next/ListItemNext.js.map +1 -1
- package/dist-cjs/list-next/ListNext.js.map +1 -1
- package/dist-cjs/list-next/ListNextContext.js.map +1 -1
- package/dist-cjs/list-next/useList.js.map +1 -1
- package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -1
- package/dist-cjs/logo/Logo.js.map +1 -1
- package/dist-cjs/logo/LogoImage.js.map +1 -1
- package/dist-cjs/logo/LogoSeparator.js.map +1 -1
- package/dist-cjs/menu-button/MenuButton.js.map +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-cjs/metric/Metric.js.map +1 -1
- package/dist-cjs/metric/MetricContent.js.map +1 -1
- package/dist-cjs/metric/MetricHeader.js.map +1 -1
- package/dist-cjs/metric/internal/MetricContext.js.map +1 -1
- package/dist-cjs/number-input/NumberInput.js.map +1 -1
- package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
- package/dist-cjs/number-input/internal/useCaret.js.map +1 -1
- package/dist-cjs/number-input/internal/useInterval.js.map +1 -1
- package/dist-cjs/number-input/internal/utils.js.map +1 -1
- package/dist-cjs/number-input/useNumberInput.js.map +1 -1
- package/dist-cjs/portal/Portal.js.map +1 -1
- package/dist-cjs/query-input/QueryInput.js.map +1 -1
- package/dist-cjs/query-input/internal/CategoryList.js.map +1 -1
- package/dist-cjs/query-input/internal/CategoryListContext.js.map +1 -1
- package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
- package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
- package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
- package/dist-cjs/query-input/internal/ValueSelector.js.map +1 -1
- package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
- package/dist-cjs/query-input/useQueryInput.js.map +1 -1
- package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
- package/dist-cjs/responsive/overflowUtils.js.map +1 -1
- package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
- package/dist-cjs/responsive/useInstantCollapse.js.map +1 -1
- package/dist-cjs/responsive/useOverflow.js.map +1 -1
- package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
- package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
- package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
- package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
- package/dist-cjs/responsive/useWidth.js.map +1 -1
- package/dist-cjs/responsive/utils.js.map +1 -1
- package/dist-cjs/search-input/SearchInput.js.map +1 -1
- package/dist-cjs/static-list/StaticList.js.map +1 -1
- package/dist-cjs/static-list/StaticListItem.js.map +1 -1
- package/dist-cjs/static-list/StaticListItemContent.js.map +1 -1
- package/dist-cjs/system-status/SystemStatus.js.map +1 -1
- package/dist-cjs/system-status/SystemStatusActions.js.map +1 -1
- package/dist-cjs/system-status/SystemStatusContent.js.map +1 -1
- package/dist-cjs/table/TBody.js.map +1 -1
- package/dist-cjs/table/TD.js +6 -2
- package/dist-cjs/table/TD.js.map +1 -1
- package/dist-cjs/table/TFoot.js.map +1 -1
- package/dist-cjs/table/TH.js +6 -2
- package/dist-cjs/table/TH.js.map +1 -1
- package/dist-cjs/table/THead.js.map +1 -1
- package/dist-cjs/table/TR.js.map +1 -1
- package/dist-cjs/table/Table.css.js +1 -1
- package/dist-cjs/table/Table.js +2 -2
- package/dist-cjs/table/Table.js.map +1 -1
- package/dist-cjs/tabs/Tab.js.map +1 -1
- package/dist-cjs/tabs/TabActivationIndicator.js.map +1 -1
- package/dist-cjs/tabs/TabPanel.js.map +1 -1
- package/dist-cjs/tabs/Tabs.js.map +1 -1
- package/dist-cjs/tabs/Tabstrip.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/Draggable.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/drag-utils.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/dragDropTypes.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/useDragDrop.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
- package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
- package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
- package/dist-cjs/tabs/useEditableItem.js.map +1 -1
- package/dist-cjs/tabs/useItemsWithIds.js.map +1 -1
- package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
- package/dist-cjs/tabs/useSelection.js.map +1 -1
- package/dist-cjs/tabs/useTabs.js.map +1 -1
- package/dist-cjs/tabs/useTabstrip.js.map +1 -1
- package/dist-cjs/tabs-next/TabBar.js.map +1 -1
- package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
- package/dist-cjs/tabs-next/TabListNext.js +3 -3
- package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
- package/dist-cjs/tabs-next/TabNext.css.js +1 -1
- package/dist-cjs/tabs-next/TabNext.js +0 -1
- package/dist-cjs/tabs-next/TabNext.js.map +1 -1
- package/dist-cjs/tabs-next/TabNextAction.js.map +1 -1
- package/dist-cjs/tabs-next/TabNextContext.js.map +1 -1
- package/dist-cjs/tabs-next/TabNextPanel.js.map +1 -1
- package/dist-cjs/tabs-next/TabNextTrigger.css.js +1 -1
- package/dist-cjs/tabs-next/TabNextTrigger.js +24 -23
- package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
- package/dist-cjs/tabs-next/TabOverflowList.css.js +1 -1
- package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
- package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
- package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
- package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
- package/dist-cjs/tabs-next/hooks/useFocusOutside.js.map +1 -1
- package/dist-cjs/tabs-next/hooks/useOverflow.js +1 -1
- package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
- package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js +3 -3
- package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
- package/dist-cjs/toast-group/ToastGroup.js.map +1 -1
- package/dist-cjs/tokenized-input/TokenizedInput.js.map +1 -1
- package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/InputRuler.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/defaultItemToString.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/getCursorPosition.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/isPlainObject.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/useResizeObserver.js.map +1 -1
- package/dist-cjs/tokenized-input/internal/useWidth.js.map +1 -1
- package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
- package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -1
- package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
- package/dist-cjs/toolbar/Toolbar.js.map +1 -1
- package/dist-cjs/toolbar/ToolbarButton.js.map +1 -1
- package/dist-cjs/toolbar/Tooltray.js.map +1 -1
- package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
- package/dist-cjs/toolbar/internal/renderTrayTools.js.map +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
- package/dist-cjs/toolbar/toolbar-field/ToolbarField.js.map +1 -1
- package/dist-cjs/toolbar/toolbar-field/useToolbarField.js.map +1 -1
- package/dist-cjs/tree/Tree.js.map +1 -1
- package/dist-cjs/tree/TreeNode.js.map +1 -1
- package/dist-cjs/tree/use-tree-keyboard-navigation.js.map +1 -1
- package/dist-cjs/tree/useTree.js.map +1 -1
- package/dist-cjs/utils/escapeRegExp.js.map +1 -1
- package/dist-cjs/utils/forwardCallbackProps.js.map +1 -1
- package/dist-cjs/utils/isEmail.js.map +1 -1
- package/dist-cjs/utils/isPlainObject.js.map +1 -1
- package/dist-cjs/utils/partition.js.map +1 -1
- package/dist-cjs/utils/useClickOutside.js.map +1 -1
- package/dist-cjs/utils/useEventCallback.js.map +1 -1
- package/dist-cjs/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
- package/dist-cjs/utils/useLayoutEffectOnce.js.map +1 -1
- package/dist-cjs/utils/useLayoutEffectSkipFirst.js.map +1 -1
- package/dist-cjs/utils/useOverflowDetection.js.map +1 -1
- package/dist-cjs/utils/useSlideSelection.js.map +1 -1
- package/dist-cjs/window/ElectronWindow.js.map +1 -1
- package/dist-cjs/window/WindowContext.js.map +1 -1
- package/dist-cjs/window/desktop-utils.js.map +1 -1
- package/dist-es/app-header/AppHeader.js.map +1 -1
- package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
- package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +1 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +1 -1
- package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +1 -1
- package/dist-es/button-bar/ButtonBar.js.map +1 -1
- package/dist-es/button-bar/OrderedButton.js.map +1 -1
- package/dist-es/button-bar/internal/ButtonBarContext.js.map +1 -1
- package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
- package/dist-es/button-bar/internal/useDescendant.js.map +1 -1
- package/dist-es/button-bar/internal/useDescendants.js.map +1 -1
- package/dist-es/calendar/Calendar.css.js +1 -1
- package/dist-es/calendar/Calendar.js +12 -3
- package/dist-es/calendar/Calendar.js.map +1 -1
- package/dist-es/calendar/CalendarGrid.js +39 -37
- package/dist-es/calendar/CalendarGrid.js.map +1 -1
- package/dist-es/calendar/CalendarMonthHeader.js +1 -1
- package/dist-es/calendar/CalendarMonthHeader.js.map +1 -1
- package/dist-es/calendar/CalendarNavigation.css.js +1 -1
- package/dist-es/calendar/CalendarNavigation.js +21 -14
- package/dist-es/calendar/CalendarNavigation.js.map +1 -1
- package/dist-es/calendar/CalendarWeekHeader.css.js +1 -1
- package/dist-es/calendar/CalendarWeekHeader.js +2 -2
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
- package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
- package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
- package/dist-es/calendar/internal/CalendarDay.js +27 -37
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-es/calendar/internal/CalendarMonth.js +31 -10
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-es/calendar/internal/utils.js.map +1 -1
- package/dist-es/calendar/useCalendar.js +7 -9
- package/dist-es/calendar/useCalendar.js.map +1 -1
- package/dist-es/calendar/useCalendarDay.js +7 -11
- package/dist-es/calendar/useCalendarDay.js.map +1 -1
- package/dist-es/calendar/useCalendarSelection.js +144 -76
- package/dist-es/calendar/useCalendarSelection.js.map +1 -1
- package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
- package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
- package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
- package/dist-es/cascading-menu/internal/CascadingMenuAction.js.map +1 -1
- package/dist-es/cascading-menu/internal/keydownHandlers.js.map +1 -1
- package/dist-es/cascading-menu/internal/menuPositioning.js.map +1 -1
- package/dist-es/cascading-menu/internal/stateUtils.js.map +1 -1
- package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
- package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
- package/dist-es/cascading-menu/internal/useMountedRef.js.map +1 -1
- package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
- package/dist-es/cascading-menu/internal/useRefsManager.js.map +1 -1
- package/dist-es/cascading-menu/internal/useStateReducer.js.map +1 -1
- package/dist-es/cascading-menu/stateChangeTypes.js.map +1 -1
- package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
- package/dist-es/color-chooser/Color.js.map +1 -1
- package/dist-es/color-chooser/ColorChooser.js.map +1 -1
- package/dist-es/color-chooser/ColorHelpers.js.map +1 -1
- package/dist-es/color-chooser/ColorPicker.js.map +1 -1
- package/dist-es/color-chooser/DictTabs.js.map +1 -1
- package/dist-es/color-chooser/GetColorPalettes.js.map +1 -1
- package/dist-es/color-chooser/HexInput.js.map +1 -1
- package/dist-es/color-chooser/RGBAInput.js.map +1 -1
- package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
- package/dist-es/color-chooser/Swatch.js.map +1 -1
- package/dist-es/color-chooser/Swatches.js.map +1 -1
- package/dist-es/color-chooser/SwatchesPicker.js.map +1 -1
- package/dist-es/color-chooser/color-utils.js.map +1 -1
- package/dist-es/color-chooser/colorMap.js.map +1 -1
- package/dist-es/color-chooser/createTabsMapping.js.map +1 -1
- package/dist-es/combo-box/ComboBox.js.map +1 -1
- package/dist-es/combo-box/useCombobox.js.map +1 -1
- package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
- package/dist-es/combo-box-deprecated/filterHelpers.js.map +1 -1
- package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
- package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
- package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
- package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
- package/dist-es/combo-box-deprecated/internal/usePopperStatus.js.map +1 -1
- package/dist-es/common-hooks/calcPreferredHeight.js.map +1 -1
- package/dist-es/common-hooks/collectionProvider.js.map +1 -1
- package/dist-es/common-hooks/itemToString.js.map +1 -1
- package/dist-es/common-hooks/keyUtils.js.map +1 -1
- package/dist-es/common-hooks/list-dom-utils.js.map +1 -1
- package/dist-es/common-hooks/selectionTypes.js.map +1 -1
- package/dist-es/common-hooks/useAutoSizer.js.map +1 -1
- package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
- package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
- package/dist-es/common-hooks/useImperativeScrollingAPI.js.map +1 -1
- package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
- package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
- package/dist-es/common-hooks/useSelection.js.map +1 -1
- package/dist-es/common-hooks/useTypeahead.js.map +1 -1
- package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
- package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
- package/dist-es/common-hooks/utils/filter-utils.js.map +1 -1
- package/dist-es/common-hooks/utils/isSelected.js.map +1 -1
- package/dist-es/contact-details/ContactAction.js.map +1 -1
- package/dist-es/contact-details/ContactActions.js.map +1 -1
- package/dist-es/contact-details/ContactAvatar.js.map +1 -1
- package/dist-es/contact-details/ContactDetails.js.map +1 -1
- package/dist-es/contact-details/ContactFavoriteToggle.js.map +1 -1
- package/dist-es/contact-details/ContactMetadata.js.map +1 -1
- package/dist-es/contact-details/ContactMetadataItem.js.map +1 -1
- package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
- package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
- package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
- package/dist-es/contact-details/MailLinkComponent.js.map +1 -1
- package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
- package/dist-es/contact-details/internal/FavoriteToggle.js.map +1 -1
- package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
- package/dist-es/contact-details/internal/StarIcon.js.map +1 -1
- package/dist-es/contact-details/internal/StarIconContainer.js.map +1 -1
- package/dist-es/contact-details/internal/useComponentSize.js.map +1 -1
- package/dist-es/content-status/ContentStatus.js.map +1 -1
- package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
- package/dist-es/date-input/DateInputRange.js +3 -2
- package/dist-es/date-input/DateInputRange.js.map +1 -1
- package/dist-es/date-input/DateInputSingle.js +5 -2
- package/dist-es/date-input/DateInputSingle.js.map +1 -1
- package/dist-es/date-picker/DatePicker.js +0 -2
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerActions.js +1 -1
- package/dist-es/date-picker/DatePickerActions.js.map +1 -1
- package/dist-es/date-picker/DatePickerContext.js.map +1 -1
- package/dist-es/date-picker/DatePickerHelperText.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangeGridPanel.js +2 -3
- package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +22 -8
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangePanel.js +2 -4
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerSingleGridPanel.js +2 -4
- package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerSingleInput.js +12 -7
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerTrigger.js.map +1 -1
- package/dist-es/date-picker/useDatePicker.js +0 -17
- package/dist-es/date-picker/useDatePicker.js.map +1 -1
- package/dist-es/date-picker/useFocusOut.js.map +1 -1
- package/dist-es/date-picker/useKeyboard.js.map +1 -1
- package/dist-es/deck-item/DeckItem.js.map +1 -1
- package/dist-es/deck-layout/DeckLayout.js.map +1 -1
- package/dist-es/dropdown/Dropdown.js.map +1 -1
- package/dist-es/dropdown/DropdownBase.js.map +1 -1
- package/dist-es/dropdown/DropdownButton.js.map +1 -1
- package/dist-es/dropdown/useClickAway.js.map +1 -1
- package/dist-es/dropdown/useDropdown.js.map +1 -1
- package/dist-es/dropdown/useDropdownBase.js.map +1 -1
- package/dist-es/editable-label/EditableLabel.js.map +1 -1
- package/dist-es/form-field-context-legacy/FormFieldLegacyContext.js.map +1 -1
- package/dist-es/form-field-context-legacy/useFormFieldLegacyProps.js.map +1 -1
- package/dist-es/form-field-legacy/FormActivationIndicator.js.map +1 -1
- package/dist-es/form-field-legacy/FormFieldLegacy.js.map +1 -1
- package/dist-es/form-field-legacy/FormHelperText.js.map +1 -1
- package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
- package/dist-es/form-field-legacy/NecessityIndicator.js.map +1 -1
- package/dist-es/form-field-legacy/StatusIndicator.js.map +1 -1
- package/dist-es/form-field-legacy/constant.js.map +1 -1
- package/dist-es/form-group/FormGroup.js.map +1 -1
- package/dist-es/formatted-input/FormattedInput.js.map +1 -1
- package/dist-es/formatted-input/internal/InputWithMask.js.map +1 -1
- package/dist-es/index.js +0 -10
- package/dist-es/index.js.map +1 -1
- package/dist-es/input-legacy/InputLegacy.js.map +1 -1
- package/dist-es/input-legacy/StaticInputAdornment.js.map +1 -1
- package/dist-es/input-legacy/useCursorOnFocus.js.map +1 -1
- package/dist-es/layer-layout/LayerLayout.js.map +1 -1
- package/dist-es/list/Highlighter.js.map +1 -1
- package/dist-es/list/List.js.map +1 -1
- package/dist-es/list/ListItem.js.map +1 -1
- package/dist-es/list/ListItemGroup.js.map +1 -1
- package/dist-es/list/ListItemHeader.js.map +1 -1
- package/dist-es/list/VirtualizedList.js.map +1 -1
- package/dist-es/list/keyset.js.map +1 -1
- package/dist-es/list/useList.js.map +1 -1
- package/dist-es/list/useListHeight.js.map +1 -1
- package/dist-es/list/useVirtualization.js.map +1 -1
- package/dist-es/list-deprecated/List.js.map +1 -1
- package/dist-es/list-deprecated/ListBase.js.map +1 -1
- package/dist-es/list-deprecated/ListItem.js.map +1 -1
- package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
- package/dist-es/list-deprecated/ListItemContext.js.map +1 -1
- package/dist-es/list-deprecated/ListStateContext.js.map +1 -1
- package/dist-es/list-deprecated/internal/DescendantContext.js.map +1 -1
- package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
- package/dist-es/list-deprecated/internal/calcPreferredListHeight.js.map +1 -1
- package/dist-es/list-deprecated/internal/helpers.js.map +1 -1
- package/dist-es/list-deprecated/internal/scrollIntoView.js.map +1 -1
- package/dist-es/list-deprecated/internal/useListAutoSizer.js.map +1 -1
- package/dist-es/list-deprecated/internal/useWidth.js.map +1 -1
- package/dist-es/list-deprecated/itemToString.js.map +1 -1
- package/dist-es/list-deprecated/useList.js.map +1 -1
- package/dist-es/list-deprecated/useListItem.js.map +1 -1
- package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
- package/dist-es/list-next/ListItemNext.js.map +1 -1
- package/dist-es/list-next/ListNext.js.map +1 -1
- package/dist-es/list-next/ListNextContext.js.map +1 -1
- package/dist-es/list-next/useList.js.map +1 -1
- package/dist-es/localization-provider/LocalizationProvider.js.map +1 -1
- package/dist-es/logo/Logo.js.map +1 -1
- package/dist-es/logo/LogoImage.js.map +1 -1
- package/dist-es/logo/LogoSeparator.js.map +1 -1
- package/dist-es/menu-button/MenuButton.js.map +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
- package/dist-es/metric/Metric.js.map +1 -1
- package/dist-es/metric/MetricContent.js.map +1 -1
- package/dist-es/metric/MetricHeader.js.map +1 -1
- package/dist-es/metric/internal/MetricContext.js.map +1 -1
- package/dist-es/number-input/NumberInput.js.map +1 -1
- package/dist-es/number-input/internal/useActivateWhileMouseDown.js.map +1 -1
- package/dist-es/number-input/internal/useCaret.js.map +1 -1
- package/dist-es/number-input/internal/useInterval.js.map +1 -1
- package/dist-es/number-input/internal/utils.js.map +1 -1
- package/dist-es/number-input/useNumberInput.js.map +1 -1
- package/dist-es/portal/Portal.js.map +1 -1
- package/dist-es/query-input/QueryInput.js.map +1 -1
- package/dist-es/query-input/internal/CategoryList.js.map +1 -1
- package/dist-es/query-input/internal/CategoryListContext.js.map +1 -1
- package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
- package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
- package/dist-es/query-input/internal/SearchList.js.map +1 -1
- package/dist-es/query-input/internal/ValueList.js.map +1 -1
- package/dist-es/query-input/internal/ValueSelector.js.map +1 -1
- package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
- package/dist-es/query-input/useQueryInput.js.map +1 -1
- package/dist-es/responsive/OverflowReducer.js.map +1 -1
- package/dist-es/responsive/overflowUtils.js.map +1 -1
- package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
- package/dist-es/responsive/useInstantCollapse.js.map +1 -1
- package/dist-es/responsive/useOverflow.js.map +1 -1
- package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
- package/dist-es/responsive/useOverflowLayout.js.map +1 -1
- package/dist-es/responsive/useReclaimSpace.js.map +1 -1
- package/dist-es/responsive/useResizeObserver.js.map +1 -1
- package/dist-es/responsive/useWidth.js.map +1 -1
- package/dist-es/responsive/utils.js.map +1 -1
- package/dist-es/search-input/SearchInput.js.map +1 -1
- package/dist-es/static-list/StaticList.js.map +1 -1
- package/dist-es/static-list/StaticListItem.js.map +1 -1
- package/dist-es/static-list/StaticListItemContent.js.map +1 -1
- package/dist-es/system-status/SystemStatus.js.map +1 -1
- package/dist-es/system-status/SystemStatusActions.js.map +1 -1
- package/dist-es/system-status/SystemStatusContent.js.map +1 -1
- package/dist-es/table/TBody.js.map +1 -1
- package/dist-es/table/TD.js +6 -2
- package/dist-es/table/TD.js.map +1 -1
- package/dist-es/table/TFoot.js.map +1 -1
- package/dist-es/table/TH.js +6 -2
- package/dist-es/table/TH.js.map +1 -1
- package/dist-es/table/THead.js.map +1 -1
- package/dist-es/table/TR.js.map +1 -1
- package/dist-es/table/Table.css.js +1 -1
- package/dist-es/table/Table.js +2 -2
- package/dist-es/table/Table.js.map +1 -1
- package/dist-es/tabs/Tab.js.map +1 -1
- package/dist-es/tabs/TabActivationIndicator.js.map +1 -1
- package/dist-es/tabs/TabPanel.js.map +1 -1
- package/dist-es/tabs/Tabs.js.map +1 -1
- package/dist-es/tabs/Tabstrip.js.map +1 -1
- package/dist-es/tabs/drag-drop/Draggable.js.map +1 -1
- package/dist-es/tabs/drag-drop/drag-utils.js.map +1 -1
- package/dist-es/tabs/drag-drop/dragDropTypes.js.map +1 -1
- package/dist-es/tabs/drag-drop/useDragDrop.js.map +1 -1
- package/dist-es/tabs/drag-drop/useDragDropNaturalMovement.js.map +1 -1
- package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
- package/dist-es/tabs/useActivationIndicator.js.map +1 -1
- package/dist-es/tabs/useEditableItem.js.map +1 -1
- package/dist-es/tabs/useItemsWithIds.js.map +1 -1
- package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
- package/dist-es/tabs/useSelection.js.map +1 -1
- package/dist-es/tabs/useTabs.js.map +1 -1
- package/dist-es/tabs/useTabstrip.js.map +1 -1
- package/dist-es/tabs-next/TabBar.js.map +1 -1
- package/dist-es/tabs-next/TabListNext.css.js +1 -1
- package/dist-es/tabs-next/TabListNext.js +3 -3
- package/dist-es/tabs-next/TabListNext.js.map +1 -1
- package/dist-es/tabs-next/TabNext.css.js +1 -1
- package/dist-es/tabs-next/TabNext.js +0 -1
- package/dist-es/tabs-next/TabNext.js.map +1 -1
- package/dist-es/tabs-next/TabNextAction.js.map +1 -1
- package/dist-es/tabs-next/TabNextContext.js.map +1 -1
- package/dist-es/tabs-next/TabNextPanel.js.map +1 -1
- package/dist-es/tabs-next/TabNextTrigger.css.js +1 -1
- package/dist-es/tabs-next/TabNextTrigger.js +24 -23
- package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
- package/dist-es/tabs-next/TabOverflowList.css.js +1 -1
- package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
- package/dist-es/tabs-next/TabsNext.js.map +1 -1
- package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
- package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
- package/dist-es/tabs-next/hooks/useFocusOutside.js.map +1 -1
- package/dist-es/tabs-next/hooks/useOverflow.js +1 -1
- package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
- package/dist-es/tabs-next/hooks/useRestoreActiveTab.js +3 -3
- package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -1
- package/dist-es/toast-group/ToastGroup.js.map +1 -1
- package/dist-es/tokenized-input/TokenizedInput.js.map +1 -1
- package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
- package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-es/tokenized-input/internal/InputRuler.js.map +1 -1
- package/dist-es/tokenized-input/internal/calcFirstHiddenIndex.js.map +1 -1
- package/dist-es/tokenized-input/internal/defaultItemToString.js.map +1 -1
- package/dist-es/tokenized-input/internal/getCursorPosition.js.map +1 -1
- package/dist-es/tokenized-input/internal/isPlainObject.js.map +1 -1
- package/dist-es/tokenized-input/internal/useResizeObserver.js.map +1 -1
- package/dist-es/tokenized-input/internal/useWidth.js.map +1 -1
- package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -1
- package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -1
- package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -1
- package/dist-es/toolbar/Toolbar.js.map +1 -1
- package/dist-es/toolbar/ToolbarButton.js.map +1 -1
- package/dist-es/toolbar/Tooltray.js.map +1 -1
- package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
- package/dist-es/toolbar/internal/renderTrayTools.js.map +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowSeparator.js.map +1 -1
- package/dist-es/toolbar/toolbar-field/ToolbarField.js.map +1 -1
- package/dist-es/toolbar/toolbar-field/useToolbarField.js.map +1 -1
- package/dist-es/tree/Tree.js.map +1 -1
- package/dist-es/tree/TreeNode.js.map +1 -1
- package/dist-es/tree/use-tree-keyboard-navigation.js.map +1 -1
- package/dist-es/tree/useTree.js.map +1 -1
- package/dist-es/utils/escapeRegExp.js.map +1 -1
- package/dist-es/utils/forwardCallbackProps.js.map +1 -1
- package/dist-es/utils/isEmail.js.map +1 -1
- package/dist-es/utils/isPlainObject.js.map +1 -1
- package/dist-es/utils/partition.js.map +1 -1
- package/dist-es/utils/useClickOutside.js.map +1 -1
- package/dist-es/utils/useEventCallback.js.map +1 -1
- package/dist-es/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
- package/dist-es/utils/useLayoutEffectOnce.js.map +1 -1
- package/dist-es/utils/useLayoutEffectSkipFirst.js.map +1 -1
- package/dist-es/utils/useOverflowDetection.js.map +1 -1
- package/dist-es/utils/useSlideSelection.js.map +1 -1
- package/dist-es/window/ElectronWindow.js.map +1 -1
- package/dist-es/window/WindowContext.js.map +1 -1
- package/dist-es/window/desktop-utils.js.map +1 -1
- package/dist-types/calendar/useCalendar.d.ts +26 -25
- package/dist-types/calendar/useCalendarDay.d.ts +1 -5
- package/dist-types/calendar/useCalendarSelection.d.ts +14 -11
- package/dist-types/date-picker/DatePickerContext.d.ts +0 -6
- package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +2 -2
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +4 -4
- package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +2 -2
- package/dist-types/date-picker/useDatePicker.d.ts +0 -6
- package/dist-types/index.d.ts +0 -2
- package/dist-types/table/TD.d.ts +6 -0
- package/dist-types/table/TH.d.ts +6 -0
- package/dist-types/table/Table.d.ts +3 -3
- package/dist-types/tabs-next/TabNextTrigger.d.ts +1 -1
- package/package.json +2 -2
- package/dist-cjs/collapsible/Collapsible.js +0 -47
- package/dist-cjs/collapsible/Collapsible.js.map +0 -1
- package/dist-cjs/collapsible/CollapsibleContext.js +0 -23
- package/dist-cjs/collapsible/CollapsibleContext.js.map +0 -1
- package/dist-cjs/collapsible/CollapsiblePanel.css.js +0 -6
- package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +0 -1
- package/dist-cjs/collapsible/CollapsiblePanel.js +0 -42
- package/dist-cjs/collapsible/CollapsiblePanel.js.map +0 -1
- package/dist-cjs/collapsible/CollapsibleTrigger.js +0 -35
- package/dist-cjs/collapsible/CollapsibleTrigger.js.map +0 -1
- package/dist-cjs/vertical-navigation/SubMenuContext.js +0 -34
- package/dist-cjs/vertical-navigation/SubMenuContext.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +0 -6
- package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigation.js +0 -34
- package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +0 -48
- package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +0 -6
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +0 -83
- package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -29
- package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -6
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +0 -24
- package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -6
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +0 -69
- package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -6
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +0 -35
- package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
- package/dist-es/collapsible/Collapsible.js +0 -45
- package/dist-es/collapsible/Collapsible.js.map +0 -1
- package/dist-es/collapsible/CollapsibleContext.js +0 -20
- package/dist-es/collapsible/CollapsibleContext.js.map +0 -1
- package/dist-es/collapsible/CollapsiblePanel.css.js +0 -4
- package/dist-es/collapsible/CollapsiblePanel.css.js.map +0 -1
- package/dist-es/collapsible/CollapsiblePanel.js +0 -40
- package/dist-es/collapsible/CollapsiblePanel.js.map +0 -1
- package/dist-es/collapsible/CollapsibleTrigger.js +0 -33
- package/dist-es/collapsible/CollapsibleTrigger.js.map +0 -1
- package/dist-es/vertical-navigation/SubMenuContext.js +0 -30
- package/dist-es/vertical-navigation/SubMenuContext.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigation.css.js +0 -4
- package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigation.js +0 -32
- package/dist-es/vertical-navigation/VerticalNavigation.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItem.js +0 -45
- package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +0 -4
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +0 -81
- package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +0 -27
- package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +0 -4
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +0 -22
- package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +0 -4
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +0 -67
- package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +0 -4
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +0 -1
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +0 -33
- package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +0 -1
- package/dist-types/collapsible/Collapsible.d.ts +0 -16
- package/dist-types/collapsible/CollapsibleContext.d.ts +0 -9
- package/dist-types/collapsible/CollapsiblePanel.d.ts +0 -4
- package/dist-types/collapsible/CollapsibleTrigger.d.ts +0 -5
- package/dist-types/collapsible/index.d.ts +0 -3
- package/dist-types/vertical-navigation/SubMenuContext.d.ts +0 -14
- package/dist-types/vertical-navigation/VerticalNavigation.d.ts +0 -5
- package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +0 -12
- package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +0 -4
- package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +0 -2
- package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +0 -4
- package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +0 -6
- package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +0 -4
- package/dist-types/vertical-navigation/index.d.ts +0 -7
|
@@ -189,24 +189,13 @@ function useCalendarSelection(props) {
|
|
|
189
189
|
if (!selectedDate) {
|
|
190
190
|
return false;
|
|
191
191
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
(element) => isDateRangeSelection(element) ? isDateRangeSelected(element) : isSingleDateSelected(element)
|
|
192
|
+
if (selectionVariant === "single") {
|
|
193
|
+
const singleDates = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
194
|
+
return singleDates.some(
|
|
195
|
+
(singleDate) => dateAdapter.isSame(singleDate, date, "day")
|
|
197
196
|
);
|
|
198
197
|
}
|
|
199
|
-
|
|
200
|
-
case "single":
|
|
201
|
-
return isSingleDateSelected(
|
|
202
|
-
selectedDate
|
|
203
|
-
);
|
|
204
|
-
case "range":
|
|
205
|
-
case "offset":
|
|
206
|
-
return isDateRangeSelected(selectedDate);
|
|
207
|
-
default:
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
198
|
+
return false;
|
|
210
199
|
},
|
|
211
200
|
[dateAdapter, selectedDate, selectionVariant]
|
|
212
201
|
);
|
|
@@ -344,29 +333,56 @@ function useCalendarSelection(props) {
|
|
|
344
333
|
timezone,
|
|
345
334
|
visibleMonth
|
|
346
335
|
]);
|
|
347
|
-
const
|
|
336
|
+
const isHoveredStart = react.useCallback(
|
|
348
337
|
(date) => {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
338
|
+
if (selectionVariant === "range" && hoveredDate && dateAdapter.isSame(date, hoveredDate, "day")) {
|
|
339
|
+
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
340
|
+
const allDatesPopulated = dateRanges.every(
|
|
341
|
+
(range) => (range == null ? void 0 : range.startDate) && (range == null ? void 0 : range.endDate)
|
|
342
|
+
);
|
|
343
|
+
const startDateMatches = dateRanges.some(
|
|
344
|
+
(range) => (range == null ? void 0 : range.startDate) && dateAdapter.isSame(date, range.startDate, "day")
|
|
345
|
+
);
|
|
346
|
+
const firstIncompleteRange = dateRanges.find(
|
|
347
|
+
(range) => (range == null ? void 0 : range.startDate) && !(range == null ? void 0 : range.endDate)
|
|
348
|
+
);
|
|
349
|
+
const newDateRangeRequired = (firstIncompleteRange == null ? void 0 : firstIncompleteRange.startDate) && dateAdapter.compare(date, firstIncompleteRange.startDate) < 0;
|
|
350
|
+
return allDatesPopulated || startDateMatches || newDateRangeRequired;
|
|
351
|
+
}
|
|
352
|
+
if (selectionVariant === "offset" && hoveredDate) {
|
|
353
|
+
const startDate = getStartDateOffset(hoveredDate);
|
|
354
|
+
return dateAdapter.isSame(date, startDate, "day") && (!isDaySelectable || isDaySelectable(date));
|
|
355
|
+
}
|
|
356
|
+
return false;
|
|
356
357
|
},
|
|
357
|
-
[
|
|
358
|
+
[
|
|
359
|
+
dateAdapter,
|
|
360
|
+
getStartDateOffset,
|
|
361
|
+
selectionVariant,
|
|
362
|
+
selectedDate,
|
|
363
|
+
hoveredDate,
|
|
364
|
+
isDaySelectable
|
|
365
|
+
]
|
|
358
366
|
);
|
|
359
367
|
const isHoveredSpan = react.useCallback(
|
|
360
368
|
(date) => {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
369
|
+
if (selectionVariant === "range") {
|
|
370
|
+
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
371
|
+
return dateRanges.some((range) => {
|
|
372
|
+
if (isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && !dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && hoveredDate) {
|
|
373
|
+
const isForwardRange = dateAdapter.compare(hoveredDate, range.startDate) > 0 && dateAdapter.compare(date, range.startDate) > 0 && dateAdapter.compare(date, hoveredDate) < 0;
|
|
374
|
+
const isValidDayHovered = !isDaySelectable || isDaySelectable(hoveredDate);
|
|
375
|
+
return isForwardRange && isValidDayHovered;
|
|
376
|
+
}
|
|
377
|
+
return false;
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
if (selectionVariant === "offset" && hoveredDate) {
|
|
381
|
+
const startDate = getStartDateOffset(hoveredDate);
|
|
382
|
+
const endDate = getEndDateOffset(hoveredDate);
|
|
383
|
+
return dateAdapter.compare(date, startDate) > 0 && dateAdapter.compare(date, endDate) < 0 && (!isDaySelectable || isDaySelectable(date));
|
|
384
|
+
}
|
|
385
|
+
return false;
|
|
370
386
|
},
|
|
371
387
|
[
|
|
372
388
|
dateAdapter,
|
|
@@ -377,8 +393,50 @@ function useCalendarSelection(props) {
|
|
|
377
393
|
isDaySelectable
|
|
378
394
|
]
|
|
379
395
|
);
|
|
396
|
+
const isHoveredEnd = react.useCallback(
|
|
397
|
+
(date) => {
|
|
398
|
+
if (selectionVariant === "range" && hoveredDate && dateAdapter.isSame(date, hoveredDate, "day")) {
|
|
399
|
+
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
400
|
+
const isIncompleteRange = dateRanges.some(
|
|
401
|
+
(range) => (range == null ? void 0 : range.startDate) && !(range == null ? void 0 : range.endDate) && hoveredDate && dateAdapter.compare(hoveredDate, range.startDate) >= 0
|
|
402
|
+
);
|
|
403
|
+
const endDateMatches = dateRanges.some(
|
|
404
|
+
(range) => (range == null ? void 0 : range.endDate) && dateAdapter.isSame(range.endDate, date, "day")
|
|
405
|
+
);
|
|
406
|
+
return endDateMatches || isIncompleteRange;
|
|
407
|
+
}
|
|
408
|
+
if (selectionVariant === "offset" && hoveredDate) {
|
|
409
|
+
const endDate = getEndDateOffset(hoveredDate);
|
|
410
|
+
return dateAdapter.isSame(date, endDate, "day") && (!isDaySelectable || isDaySelectable(date));
|
|
411
|
+
}
|
|
412
|
+
return false;
|
|
413
|
+
},
|
|
414
|
+
[
|
|
415
|
+
dateAdapter,
|
|
416
|
+
getEndDateOffset,
|
|
417
|
+
selectionVariant,
|
|
418
|
+
selectedDate,
|
|
419
|
+
hoveredDate,
|
|
420
|
+
isDaySelectable
|
|
421
|
+
]
|
|
422
|
+
);
|
|
423
|
+
const isSameDay = react.useCallback(
|
|
424
|
+
(date) => {
|
|
425
|
+
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
426
|
+
return dateRanges.some((range) => {
|
|
427
|
+
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && (range == null ? void 0 : range.startDate) && (range == null ? void 0 : range.endDate) && dateAdapter.isSame(range == null ? void 0 : range.startDate, date, "day")) {
|
|
428
|
+
return dateAdapter.isSame(range == null ? void 0 : range.startDate, range == null ? void 0 : range.endDate, "day");
|
|
429
|
+
}
|
|
430
|
+
return false;
|
|
431
|
+
});
|
|
432
|
+
},
|
|
433
|
+
[dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
|
|
434
|
+
);
|
|
380
435
|
const isSelectedStart = react.useCallback(
|
|
381
436
|
(date) => {
|
|
437
|
+
if (selectionVariant === "single") {
|
|
438
|
+
return false;
|
|
439
|
+
}
|
|
382
440
|
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
383
441
|
return dateRanges.some((range) => {
|
|
384
442
|
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && !isOutsideAllowedDates(range.startDate)) {
|
|
@@ -389,35 +447,35 @@ function useCalendarSelection(props) {
|
|
|
389
447
|
},
|
|
390
448
|
[dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
|
|
391
449
|
);
|
|
392
|
-
const
|
|
450
|
+
const isSelectedSpan = react.useCallback(
|
|
393
451
|
(date) => {
|
|
452
|
+
if (selectionVariant === "single") {
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
394
455
|
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
395
456
|
return dateRanges.some((range) => {
|
|
396
|
-
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.endDate)) {
|
|
397
|
-
return dateAdapter.
|
|
457
|
+
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.startDate) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.startDate) && !isOutsideAllowedDates(range.endDate)) {
|
|
458
|
+
return dateAdapter.compare(date, range.startDate) > 0 && dateAdapter.compare(date, range.endDate) < 0;
|
|
398
459
|
}
|
|
399
460
|
return false;
|
|
400
461
|
});
|
|
401
462
|
},
|
|
402
463
|
[dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
|
|
403
464
|
);
|
|
404
|
-
const
|
|
465
|
+
const isSelectedEnd = react.useCallback(
|
|
405
466
|
(date) => {
|
|
406
|
-
if (
|
|
407
|
-
|
|
408
|
-
const endDate = getEndDateOffset(hoveredDate);
|
|
409
|
-
return dateAdapter.compare(date, startDate) >= 0 && dateAdapter.compare(date, endDate) <= 0 && (!isDaySelectable || isDaySelectable(date));
|
|
467
|
+
if (selectionVariant === "single") {
|
|
468
|
+
return false;
|
|
410
469
|
}
|
|
411
|
-
|
|
470
|
+
const dateRanges = Array.isArray(selectedDate) ? selectedDate : [selectedDate];
|
|
471
|
+
return dateRanges.some((range) => {
|
|
472
|
+
if ((selectionVariant === "range" || selectionVariant === "offset") && isDateRangeSelection(range) && dateAdapter.isValid(range.endDate) && !isOutsideAllowedDates(range.endDate)) {
|
|
473
|
+
return dateAdapter.isSame(range.endDate, date, "day");
|
|
474
|
+
}
|
|
475
|
+
return false;
|
|
476
|
+
});
|
|
412
477
|
},
|
|
413
|
-
[
|
|
414
|
-
dateAdapter,
|
|
415
|
-
getStartDateOffset,
|
|
416
|
-
getEndDateOffset,
|
|
417
|
-
hoveredDate,
|
|
418
|
-
isDaySelectable,
|
|
419
|
-
selectionVariant
|
|
420
|
-
]
|
|
478
|
+
[dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate]
|
|
421
479
|
);
|
|
422
480
|
return react.useMemo(
|
|
423
481
|
() => ({
|
|
@@ -429,15 +487,17 @@ function useCalendarSelection(props) {
|
|
|
429
487
|
focusableDates: getFocusableDates()
|
|
430
488
|
},
|
|
431
489
|
helpers: {
|
|
432
|
-
isSelected,
|
|
433
|
-
setSelectedDate,
|
|
434
490
|
isHovered,
|
|
491
|
+
isSelected,
|
|
435
492
|
setHoveredDate,
|
|
436
|
-
|
|
437
|
-
|
|
493
|
+
isSameDay,
|
|
494
|
+
setSelectedDate,
|
|
438
495
|
isSelectedStart,
|
|
496
|
+
isSelectedSpan,
|
|
439
497
|
isSelectedEnd,
|
|
440
|
-
|
|
498
|
+
isHoveredStart,
|
|
499
|
+
isHoveredSpan,
|
|
500
|
+
isHoveredEnd,
|
|
441
501
|
isDaySelectable,
|
|
442
502
|
setFocusedDate
|
|
443
503
|
}
|
|
@@ -449,12 +509,13 @@ function useCalendarSelection(props) {
|
|
|
449
509
|
getFocusableDates,
|
|
450
510
|
hoveredDate,
|
|
451
511
|
isSelected,
|
|
452
|
-
|
|
453
|
-
isSelectedSpan,
|
|
512
|
+
isHoveredStart,
|
|
454
513
|
isHoveredSpan,
|
|
514
|
+
isHoveredEnd,
|
|
515
|
+
isSameDay,
|
|
455
516
|
isSelectedStart,
|
|
517
|
+
isSelectedSpan,
|
|
456
518
|
isSelectedEnd,
|
|
457
|
-
isHoveredOffset,
|
|
458
519
|
isDaySelectable,
|
|
459
520
|
setFocusedDate,
|
|
460
521
|
setHoveredDate,
|
|
@@ -466,15 +527,18 @@ function useCalendarSelectionDay({
|
|
|
466
527
|
date
|
|
467
528
|
}) {
|
|
468
529
|
const {
|
|
530
|
+
state: { selectionVariant },
|
|
469
531
|
helpers: {
|
|
470
532
|
setSelectedDate,
|
|
533
|
+
isSameDay,
|
|
471
534
|
isSelected,
|
|
472
|
-
isSelectedSpan,
|
|
473
|
-
isHoveredSpan,
|
|
474
535
|
isSelectedStart,
|
|
536
|
+
isSelectedSpan,
|
|
475
537
|
isSelectedEnd,
|
|
476
538
|
isHovered,
|
|
477
|
-
|
|
539
|
+
isHoveredStart,
|
|
540
|
+
isHoveredSpan,
|
|
541
|
+
isHoveredEnd,
|
|
478
542
|
isDaySelectable
|
|
479
543
|
}
|
|
480
544
|
} = CalendarContext.useCalendarContext();
|
|
@@ -496,33 +560,37 @@ function useCalendarSelectionDay({
|
|
|
496
560
|
[date, setSelectedDate]
|
|
497
561
|
);
|
|
498
562
|
const selected = isSelected(date);
|
|
499
|
-
const selectedSpan = isSelectedSpan(date);
|
|
500
|
-
const hoveredSpan = isHoveredSpan(date);
|
|
501
563
|
const selectedStart = isSelectedStart(date);
|
|
564
|
+
const selectedSpan = isSelectedSpan(date);
|
|
502
565
|
const selectedEnd = isSelectedEnd(date);
|
|
566
|
+
const selectedOnSameDay = isSameDay(date);
|
|
503
567
|
const hovered = isHovered(date);
|
|
504
|
-
const
|
|
568
|
+
const hoveredStart = isHoveredStart(date);
|
|
569
|
+
const hoveredSpan = isHoveredSpan(date);
|
|
570
|
+
const hoveredEnd = isHoveredEnd(date);
|
|
505
571
|
return {
|
|
506
572
|
handleClick,
|
|
507
573
|
handleKeyDown,
|
|
508
574
|
status: {
|
|
575
|
+
hovered,
|
|
509
576
|
selected,
|
|
510
|
-
selectedSpan,
|
|
511
|
-
hoveredSpan,
|
|
512
577
|
selectedStart,
|
|
578
|
+
selectedSpan,
|
|
513
579
|
selectedEnd,
|
|
514
|
-
|
|
515
|
-
|
|
580
|
+
hoveredStart,
|
|
581
|
+
hoveredSpan,
|
|
582
|
+
hoveredEnd
|
|
516
583
|
},
|
|
517
584
|
dayProps: {
|
|
518
585
|
className: clsx.clsx({
|
|
519
|
-
[withBaseName("selected")]: selected,
|
|
520
|
-
[withBaseName("
|
|
521
|
-
[withBaseName("
|
|
522
|
-
[withBaseName("
|
|
523
|
-
[withBaseName("
|
|
524
|
-
[withBaseName("
|
|
525
|
-
[withBaseName("
|
|
586
|
+
[withBaseName("selected")]: selectionVariant === "single" ? selected : void 0,
|
|
587
|
+
[withBaseName("selectedStart")]: selectionVariant !== "single" ? selectedStart : void 0,
|
|
588
|
+
[withBaseName("selectedSpan")]: selectionVariant !== "single" ? selectedSpan : void 0,
|
|
589
|
+
[withBaseName("selectedEnd")]: selectionVariant !== "single" ? selectedEnd : void 0,
|
|
590
|
+
[withBaseName("selectedSameDay")]: selectionVariant !== "single" && selectedOnSameDay,
|
|
591
|
+
[withBaseName("hoveredStart")]: selectionVariant !== "single" && hoveredStart,
|
|
592
|
+
[withBaseName("hoveredSpan")]: selectionVariant !== "single" && hoveredSpan,
|
|
593
|
+
[withBaseName("hoveredEnd")]: selectionVariant !== "single" && hoveredEnd
|
|
526
594
|
}),
|
|
527
595
|
"aria-pressed": selected || selectedEnd || selectedStart || selectedSpan ? "true" : void 0,
|
|
528
596
|
"aria-disabled": isDaySelectable && !isDaySelectable(date) ? "true" : void 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { generateDatesForMonth } from \"./internal/utils\";\n\n/**\n * Type representing a single date selection.\n * @template TDate - The type of the date object.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing a date range selection.\n * @template TDate - The type of the date object.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range.\n */\n startDate?: TDate | null;\n /**\n * The end date of the range.\n */\n endDate?: TDate | null;\n};\n\n/**\n * Checks if a value is a date range selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionBaseProps<\n TDate extends DateFrameworkType,\n> {\n /**\n * The currently focused date in the calendar, or null if no date is focused.\n */\n focusedDate?: TDate | null;\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Determines if a date is outside the allowed date range.\n * @param date - The date to check.\n * @returns `true` if the date is outside the allowed range, otherwise `false`.\n */\n isOutsideAllowedDates?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is visible.\n * @param date - The date to check.\n * @returns `true` if the day is visible, otherwise `false`.\n */\n isDayVisible?: (date: TDate) => boolean;\n /**\n * Ref to attach to the focused element, enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event, if user event triggered focus or null.\n * @param date - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n date: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * The currently visible month.\n */\n visibleMonth?: TDate;\n /**\n * If `true`, the calendar will be multiselect.\n */\n multiselect?: boolean;\n}\n\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: SingleDateSelection<TDate> | null,\n newDate: SingleDateSelection<TDate> | null,\n ) => SingleDateSelection<TDate> | null;\n}\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<SingleDateSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n @param newDate\n */\n select?: (\n previousSelectedDate: Array<SingleDateSelection<TDate>>,\n newDate: TDate,\n ) => Array<SingleDateSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectRangeProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDat\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n * @template TDate - The type of the date object.\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate>;\n\nfunction isMultiselect<TDate>(\n props: UseCalendarSelectionProps<TDate>,\n): props is\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate> {\n return props.multiselect === true;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction selectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<DateFrameworkType>,\n newDate: DateFrameworkType,\n) {\n if (previousSelectedDate?.startDate && previousSelectedDate?.endDate) {\n return {\n startDate: newDate,\n };\n }\n if (\n previousSelectedDate?.startDate &&\n dateAdapter.compare(newDate, previousSelectedDate?.startDate) >= 0\n ) {\n return {\n ...previousSelectedDate,\n endDate: newDate,\n };\n }\n return {\n startDate: newDate,\n };\n}\n\nfunction selectMultiselectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<TDate>[],\n newDate: TDate,\n): DateRangeSelection<TDate>[] {\n const lastRange = previousSelectedDate.length\n ? previousSelectedDate[previousSelectedDate.length - 1]\n : undefined;\n const isIncompleteRange = !lastRange?.endDate;\n\n if (isIncompleteRange) {\n const isNewSelection = previousSelectedDate.length === 0;\n if (isNewSelection) {\n return [{ startDate: newDate }];\n }\n const completeDateRange = selectDateRange(\n dateAdapter,\n previousSelectedDate[previousSelectedDate.length - 1],\n newDate,\n );\n return [...previousSelectedDate.slice(0, -1), completeDateRange];\n }\n return [...previousSelectedDate, { startDate: newDate }];\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n multiselect,\n focusedDate: focusedDateProp,\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable = () => true,\n isDayVisible = () => true,\n isOutsideAllowedDates = () => true,\n focusedDateRef,\n onFocusedDateChange,\n select: selectProp,\n selectionVariant,\n timezone,\n visibleMonth,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n const handleSelectionChange = <\n U extends\n | (TDate | null)\n | TDate[]\n | (DateRangeSelection<TDate> | null)\n | DateRangeSelection<TDate>[],\n >(\n updatedSelection: U,\n changeHandler:\n | ((event: SyntheticEvent, updatedSelection: U) => void)\n | undefined,\n ) => {\n changeHandler?.(event, updatedSelection);\n setSelectedDateState(updatedSelection);\n };\n\n switch (selectionVariant) {\n case \"single\": {\n if (isMultiselect(props)) {\n const multipleSingleSelectedDate = selectedDate as Array<\n SingleDateSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectSingleProps<TDate>[\"select\"];\n const updatedSelection: Array<SingleDateSelection<TDate>> = select\n ? select(multipleSingleSelectedDate ?? [], newSelectedDate)\n : [...(multipleSingleSelectedDate ?? []), newSelectedDate];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const singleSelectedDate =\n selectedDate as SingleDateSelection<TDate> | null;\n const select =\n selectProp as UseCalendarSelectionSingleProps<TDate>[\"select\"];\n const updatedSelection: SingleDateSelection<TDate> | null = select\n ? select(singleSelectedDate, newSelectedDate)\n : newSelectedDate;\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"range\": {\n if (isMultiselect(props)) {\n const multipleRangeSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleRangeSelectedDate ?? [], newSelectedDate)\n : selectMultiselectDateRange(\n dateAdapter,\n multipleRangeSelectedDate ?? [],\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const rangeSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(rangeSelectedDate, newSelectedDate)\n : selectDateRange(\n dateAdapter,\n rangeSelectedDate,\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"offset\": {\n if (isMultiselect(props)) {\n const multipleOffsetSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleOffsetSelectedDate ?? [], newSelectedDate)\n : [\n ...(multipleOffsetSelectedDate ?? []),\n {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n },\n ];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const offsetSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(offsetSelectedDate, newSelectedDate)\n : {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n }\n }\n },\n [\n dateAdapter,\n getEndDateOffset,\n getStartDateOffset,\n isDaySelectable,\n selectProp,\n selectedDate,\n selectionVariant,\n onSelectionChange,\n props, // Ensure props is included in the dependency array\n ],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n\n const isSingleDateSelected = (element: SingleDateSelection<TDate>) =>\n dateAdapter.isSame(element, date, \"day\");\n\n const isDateRangeSelected = (range: DateRangeSelection<TDate>) =>\n range.startDate &&\n range.endDate &&\n dateAdapter.compare(date, range.startDate) >= 0 &&\n dateAdapter.compare(date, range.endDate) <= 0;\n\n if (Array.isArray(selectedDate)) {\n return selectedDate.some((element) =>\n isDateRangeSelection(element)\n ? isDateRangeSelected(element)\n : isSingleDateSelected(element as SingleDateSelection<TDate>),\n );\n }\n\n switch (selectionVariant) {\n case \"single\":\n return isSingleDateSelected(\n selectedDate as SingleDateSelection<TDate>,\n );\n case \"range\":\n case \"offset\":\n return isDateRangeSelected(selectedDate as DateRangeSelection<TDate>);\n default:\n return false;\n }\n },\n [dateAdapter, selectedDate, selectionVariant],\n );\n\n const getDefaultFocusedDate = () => {\n if (\n selectedDate &&\n (selectionVariant === \"range\" || selectionVariant === \"offset\")\n ) {\n const getFocusableDate = (\n result: TDate[],\n selection: DateRangeSelection<TDate>,\n ) => {\n if (selection?.startDate && isDayVisible(selection.startDate)) {\n return [...result, selection.startDate];\n }\n if (selection?.endDate && isDayVisible(selection.endDate)) {\n return [...result, selection.endDate];\n }\n return result;\n };\n let focusableSelectedDates:\n | DateRangeSelection<TDate>\n | DateRangeSelection<TDate>[];\n if (!multiselect) {\n focusableSelectedDates = [selectedDate as DateRangeSelection<TDate>];\n } else {\n focusableSelectedDates = selectedDate as DateRangeSelection<TDate>[];\n }\n const selectionInMonth = focusableSelectedDates\n .reduce(getFocusableDate, [])\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (selectedDate && selectionVariant === \"single\") {\n const focusableSelectedDate = multiselect\n ? (selectedDate as SingleDateSelection<TDate>[])?.[0]\n : (selectedDate as SingleDateSelection<TDate>);\n if (focusableSelectedDate && isDayVisible(focusableSelectedDate)) {\n return focusableSelectedDate;\n }\n }\n\n // Defaults\n if (\n isDaySelectable?.(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n return dateAdapter.today(timezone);\n }\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable?.(visibleDay));\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n };\n\n const [focusedDate, setFocusedDateState] = useControlled({\n controlled: focusedDateProp,\n default: useMemo(getDefaultFocusedDate, []),\n name: \"Calendar\",\n state: \"focusedDate\",\n });\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent | null, date: TDate | null) => {\n if (focusedDateRef && event?.target instanceof HTMLElement) {\n focusedDateRef.current = event.target;\n }\n if (\n date &&\n ((focusedDate && dateAdapter.isSame(date, focusedDate, \"day\")) ||\n isOutsideAllowedDates(date))\n ) {\n return;\n }\n setFocusedDateState(date);\n onFocusedDateChange?.(event, date);\n },\n [\n dateAdapter,\n focusedDate,\n focusedDateRef,\n isOutsideAllowedDates,\n onFocusedDateChange,\n ],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [dateAdapter, hoveredDate],\n );\n\n const getFocusableDates = useCallback(() => {\n const focusableDates: TDate[] = [];\n\n if (Array.isArray(selectedDate)) {\n // Handle array of selections\n for (const selection of selectedDate) {\n if (isDateRangeSelection(selection)) {\n if (selection.startDate && isDayVisible(selection.startDate)) {\n focusableDates.push(selection.startDate);\n } else if (selection.endDate && isDayVisible(selection.endDate)) {\n focusableDates.push(selection.endDate);\n }\n } else if (isDayVisible(selection as TDate)) {\n focusableDates.push(selection as TDate);\n }\n }\n } else if (selectedDate) {\n // Handle single selection\n if (isDateRangeSelection(selectedDate)) {\n if (selectedDate.startDate && isDayVisible(selectedDate.startDate)) {\n focusableDates.push(selectedDate.startDate);\n } else if (selectedDate.endDate && isDayVisible(selectedDate.endDate)) {\n focusableDates.push(selectedDate.endDate);\n }\n } else if (isDayVisible(selectedDate)) {\n focusableDates.push(selectedDate);\n }\n }\n\n if (\n focusedDate &&\n visibleMonth &&\n dateAdapter.isSame(focusedDate, visibleMonth, \"month\")\n ) {\n focusableDates.push(focusedDate);\n return focusableDates;\n }\n\n // Defaults\n if (\n focusableDates.length === 0 &&\n isDaySelectable(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n focusableDates.push(dateAdapter.today(timezone));\n }\n if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));\n if (firstSelectableDate) {\n focusableDates.push(firstSelectableDate);\n }\n }\n\n return focusableDates;\n }, [\n dateAdapter,\n focusedDate,\n isDaySelectable,\n isDayVisible,\n selectedDate,\n timezone,\n visibleMonth,\n ]);\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return (\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, range.endDate) < 0\n );\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, range.startDate) >= 0 &&\n ((dateAdapter.compare(date, range.startDate) >= 0 &&\n dateAdapter.compare(date, hoveredDate) <= 0) ||\n dateAdapter.isSame(date, hoveredDate, \"day\"));\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n });\n },\n [\n dateAdapter,\n isOutsideAllowedDates,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !isOutsideAllowedDates(range.startDate)\n ) {\n return dateAdapter.isSame(range.startDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return dateAdapter.isSame(range.endDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isHoveredOffset = useCallback(\n (date: TDate) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n dateAdapter.compare(date, startDate) >= 0 &&\n dateAdapter.compare(date, endDate) <= 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n\n return false;\n },\n [\n dateAdapter,\n getStartDateOffset,\n getEndDateOffset,\n hoveredDate,\n isDaySelectable,\n selectionVariant,\n ],\n );\n\n return useMemo(\n () => ({\n state: {\n focusedDate,\n focusedDateRef,\n hoveredDate,\n selectedDate,\n focusableDates: getFocusableDates(),\n },\n helpers: {\n isSelected,\n setSelectedDate,\n isHovered,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n },\n }),\n [\n selectedDate,\n focusedDate,\n focusedDateRef,\n getFocusableDates,\n hoveredDate,\n isSelected,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n isDaySelectable,\n setFocusedDate,\n setHoveredDate,\n setSelectedDate,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: {\n date: TDate;\n}) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","generateDatesForMonth","useMemo","useCalendarContext","clsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCalendarSelection.js","sources":["../src/calendar/useCalendarSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport type {\n DateFrameworkType,\n SaltDateAdapter,\n Timezone,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport type {\n KeyboardEventHandler,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { useCallback, useMemo } from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { generateDatesForMonth } from \"./internal/utils\";\n\n/**\n * Type representing a single date selection.\n * @template TDate - The type of the date object.\n */\nexport type SingleDateSelection<TDate extends DateFrameworkType> = TDate;\n\n/**\n * Type representing a date range selection.\n * @template TDate - The type of the date object.\n */\nexport type DateRangeSelection<TDate extends DateFrameworkType> = {\n /**\n * The start date of the range, or null if empty\n */\n startDate?: TDate | null;\n /**\n * The end date of the range, or null if empty\n */\n endDate?: TDate | null;\n};\n\n/**\n * Checks if a value is a date range selection.\n * @template TDate - The type of the date object.\n * @param value - The value to check.\n * @returns `true` if the value is a date range selection, otherwise `false`.\n */\nexport function isDateRangeSelection<TDate extends DateFrameworkType>(\n // biome-ignore lint/suspicious/noExplicitAny: date framework dependent\n value: any,\n): value is DateRangeSelection<TDate> {\n return (\n value &&\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n (\"startDate\" in value || \"endDate\" in value)\n );\n}\n\n/**\n * Base properties for calendar UseCalendarSelection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionBaseProps<\n TDate extends DateFrameworkType,\n> {\n /**\n * The currently focused date in the calendar, or null if no date is focused.\n */\n focusedDate?: TDate | null;\n /**\n * The currently hovered date.\n */\n hoveredDate?: TDate | null;\n /**\n * Determines if a date is outside the allowed date range.\n * @param date - The date to check.\n * @returns `true` if the date is outside the allowed range, otherwise `false`.\n */\n isOutsideAllowedDates?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is selectable.\n * @param date - The date to check.\n * @returns `true` if the day is selectable, otherwise `false`.\n */\n isDaySelectable?: (date: TDate) => boolean;\n /**\n * Function to determine if a day is visible.\n * @param date - The date to check.\n * @returns `true` if the day is visible, otherwise `false`.\n */\n isDayVisible?: (date: TDate) => boolean;\n /**\n * Ref to attach to the focused element, enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Callback fired when the focused date changes.\n * @param event - The synthetic event, if user event triggered focus or null.\n * @param date - The new focused date.\n */\n onFocusedDateChange?: (\n event: SyntheticEvent | null,\n date: TDate | null,\n ) => void;\n /**\n * Callback fired when the hovered date changes.\n * @param event - The synthetic event.\n * @param hoveredDate - The new hovered date.\n */\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: TDate | null,\n ) => void;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * The currently visible month.\n */\n visibleMonth?: TDate;\n /**\n * If `true`, the calendar will be multiselect.\n */\n multiselect?: boolean;\n}\n\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * The currently selected date.\n */\n selectedDate?: SingleDateSelection<TDate> | null;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: SingleDateSelection<TDate> | null;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: SingleDateSelection<TDate> | null,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: SingleDateSelection<TDate> | null,\n newDate: SingleDateSelection<TDate> | null,\n ) => SingleDateSelection<TDate> | null;\n}\n/**\n * Properties for the single date selection hook.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectSingleProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<SingleDateSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<SingleDateSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n @param newDate\n */\n select?: (\n previousSelectedDate: Array<SingleDateSelection<TDate>>,\n newDate: TDate,\n ) => Array<SingleDateSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionRangeProps<TDate extends DateFrameworkType>\n extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectRangeProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for single offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * The currently selected date.\n */\n selectedDate?: DateRangeSelection<TDate>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: DateRangeSelection<TDate>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: DateRangeSelection<TDate>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDate\n * @param newDate\n */\n select?: (\n previousSelectedDate: DateRangeSelection<TDate>,\n newDate: TDate,\n ) => DateRangeSelection<TDate>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendar hook props to return a calendar day's status for multiselect offset selection.\n * @template TDate - The type of the date object.\n */\nexport interface UseCalendarSelectionMultiselectOffsetProps<\n TDate extends DateFrameworkType,\n> extends UseCalendarSelectionBaseProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * Multiple selection\n */\n multiselect: true;\n /**\n * The currently selected date.\n */\n selectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * The default selected date.\n */\n defaultSelectedDate?: Array<DateRangeSelection<TDate>>;\n /**\n * Callback fired when the selected date changes.\n * @param event - The synthetic event.\n * @param selectedDate - The new selected date.\n */\n onSelectionChange?: (\n event: SyntheticEvent,\n selectedDate: Array<DateRangeSelection<TDate>>,\n ) => void;\n /**\n * A pure function to manage the selected date for uncontrolled use-cases.\n * Return the selection based on the previous selection and the new date.\n * @param previousSelectedDat\n * @param newDate\n */\n select?: (\n previousSelectedDate: Array<DateRangeSelection<TDate>>,\n newDate: TDate,\n ) => Array<DateRangeSelection<TDate>>;\n /**\n * Function to calculate the start date offset.\n * @param date - The date to offset.\n * @returns The offset start date.\n */\n startDateOffset?: (date: TDate) => TDate;\n /**\n * Function to calculate the end date offset.\n * @param date - The date to offset.\n * @returns The offset end date.\n */\n endDateOffset?: (date: TDate) => TDate;\n}\n\n/**\n * UseCalendarSelection hook props, wth the selection variant determining the return type of the date selection\n * @template TDate - The type of the date object.\n */\nexport type UseCalendarSelectionProps<TDate extends DateFrameworkType> =\n | UseCalendarSelectionSingleProps<TDate>\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionRangeProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionOffsetProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate>;\n\nfunction isMultiselect<TDate>(\n props: UseCalendarSelectionProps<TDate>,\n): props is\n | UseCalendarSelectionMultiselectSingleProps<TDate>\n | UseCalendarSelectionMultiselectRangeProps<TDate>\n | UseCalendarSelectionMultiselectOffsetProps<TDate> {\n return props.multiselect === true;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nfunction selectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<DateFrameworkType>,\n newDate: DateFrameworkType,\n) {\n if (previousSelectedDate?.startDate && previousSelectedDate?.endDate) {\n return {\n startDate: newDate,\n };\n }\n if (\n previousSelectedDate?.startDate &&\n dateAdapter.compare(newDate, previousSelectedDate?.startDate) >= 0\n ) {\n return {\n ...previousSelectedDate,\n endDate: newDate,\n };\n }\n return {\n startDate: newDate,\n };\n}\n\nfunction selectMultiselectDateRange<TDate extends DateFrameworkType>(\n dateAdapter: SaltDateAdapter<TDate>,\n previousSelectedDate: DateRangeSelection<TDate>[],\n newDate: TDate,\n): DateRangeSelection<TDate>[] {\n const lastRange = previousSelectedDate.length\n ? previousSelectedDate[previousSelectedDate.length - 1]\n : undefined;\n const isIncompleteRange = !lastRange?.endDate;\n\n if (isIncompleteRange) {\n const isNewSelection = previousSelectedDate.length === 0;\n if (isNewSelection) {\n return [{ startDate: newDate }];\n }\n const completeDateRange = selectDateRange(\n dateAdapter,\n previousSelectedDate[previousSelectedDate.length - 1],\n newDate,\n );\n return [...previousSelectedDate.slice(0, -1), completeDateRange];\n }\n return [...previousSelectedDate, { startDate: newDate }];\n}\n\nexport function useCalendarSelection<TDate extends DateFrameworkType>(\n props: UseCalendarSelectionProps<TDate>,\n) {\n const {\n multiselect,\n focusedDate: focusedDateProp,\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n onSelectionChange,\n onHoveredDateChange,\n isDaySelectable = () => true,\n isDayVisible = () => true,\n isOutsideAllowedDates = () => true,\n focusedDateRef,\n onFocusedDateChange,\n select: selectProp,\n selectionVariant,\n timezone,\n visibleMonth,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const { dateAdapter } = useLocalization<TDate>();\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const startDateOffset =\n selectionVariant === \"offset\" ? props.startDateOffset : undefined;\n const endDateOffset =\n selectionVariant === \"offset\" ? props.endDateOffset : undefined;\n\n const getStartDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && startDateOffset) {\n return startDateOffset(date);\n }\n return date;\n },\n [selectionVariant, startDateOffset],\n );\n\n const getEndDateOffset = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"offset\" && endDateOffset) {\n return endDateOffset(date);\n }\n return date;\n },\n [selectionVariant, endDateOffset],\n );\n\n const setSelectedDate = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newSelectedDate: TDate) => {\n if (!isDaySelectable || isDaySelectable(newSelectedDate)) {\n const handleSelectionChange = <\n U extends\n | (TDate | null)\n | TDate[]\n | (DateRangeSelection<TDate> | null)\n | DateRangeSelection<TDate>[],\n >(\n updatedSelection: U,\n changeHandler:\n | ((event: SyntheticEvent, updatedSelection: U) => void)\n | undefined,\n ) => {\n changeHandler?.(event, updatedSelection);\n setSelectedDateState(updatedSelection);\n };\n\n switch (selectionVariant) {\n case \"single\": {\n if (isMultiselect(props)) {\n const multipleSingleSelectedDate = selectedDate as Array<\n SingleDateSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectSingleProps<TDate>[\"select\"];\n const updatedSelection: Array<SingleDateSelection<TDate>> = select\n ? select(multipleSingleSelectedDate ?? [], newSelectedDate)\n : [...(multipleSingleSelectedDate ?? []), newSelectedDate];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const singleSelectedDate =\n selectedDate as SingleDateSelection<TDate> | null;\n const select =\n selectProp as UseCalendarSelectionSingleProps<TDate>[\"select\"];\n const updatedSelection: SingleDateSelection<TDate> | null = select\n ? select(singleSelectedDate, newSelectedDate)\n : newSelectedDate;\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionSingleProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"range\": {\n if (isMultiselect(props)) {\n const multipleRangeSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleRangeSelectedDate ?? [], newSelectedDate)\n : selectMultiselectDateRange(\n dateAdapter,\n multipleRangeSelectedDate ?? [],\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const rangeSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionRangeProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(rangeSelectedDate, newSelectedDate)\n : selectDateRange(\n dateAdapter,\n rangeSelectedDate,\n newSelectedDate,\n );\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionRangeProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n case \"offset\": {\n if (isMultiselect(props)) {\n const multipleOffsetSelectedDate = selectedDate as Array<\n DateRangeSelection<TDate>\n >;\n const select =\n selectProp as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate>[] = select\n ? select(multipleOffsetSelectedDate ?? [], newSelectedDate)\n : [\n ...(multipleOffsetSelectedDate ?? []),\n {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n },\n ];\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionMultiselectOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n } else {\n const offsetSelectedDate =\n selectedDate as DateRangeSelection<TDate>;\n const select =\n selectProp as UseCalendarSelectionOffsetProps<TDate>[\"select\"];\n const updatedSelection: DateRangeSelection<TDate> = select\n ? select(offsetSelectedDate, newSelectedDate)\n : {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n\n const changeHandler =\n onSelectionChange as UseCalendarSelectionOffsetProps<TDate>[\"onSelectionChange\"];\n handleSelectionChange(updatedSelection, changeHandler);\n }\n break;\n }\n }\n }\n },\n [\n dateAdapter,\n getEndDateOffset,\n getStartDateOffset,\n isDaySelectable,\n selectProp,\n selectedDate,\n selectionVariant,\n onSelectionChange,\n props, // Ensure props is included in the dependency array\n ],\n );\n\n const isSelected = useCallback(\n (date: TDate) => {\n if (!selectedDate) {\n return false;\n }\n if (selectionVariant === \"single\") {\n const singleDates = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as TDate[];\n return singleDates.some((singleDate) =>\n dateAdapter.isSame(singleDate, date, \"day\"),\n );\n }\n return false;\n },\n [dateAdapter, selectedDate, selectionVariant],\n );\n\n const getDefaultFocusedDate = () => {\n if (\n selectedDate &&\n (selectionVariant === \"range\" || selectionVariant === \"offset\")\n ) {\n const getFocusableDate = (\n result: TDate[],\n selection: DateRangeSelection<TDate>,\n ) => {\n if (selection?.startDate && isDayVisible(selection.startDate)) {\n return [...result, selection.startDate];\n }\n if (selection?.endDate && isDayVisible(selection.endDate)) {\n return [...result, selection.endDate];\n }\n return result;\n };\n let focusableSelectedDates:\n | DateRangeSelection<TDate>\n | DateRangeSelection<TDate>[];\n if (!multiselect) {\n focusableSelectedDates = [selectedDate as DateRangeSelection<TDate>];\n } else {\n focusableSelectedDates = selectedDate as DateRangeSelection<TDate>[];\n }\n const selectionInMonth = focusableSelectedDates\n .reduce(getFocusableDate, [])\n .sort((a, b) => dateAdapter.compare(a, b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n } else if (selectedDate && selectionVariant === \"single\") {\n const focusableSelectedDate = multiselect\n ? (selectedDate as SingleDateSelection<TDate>[])?.[0]\n : (selectedDate as SingleDateSelection<TDate>);\n if (focusableSelectedDate && isDayVisible(focusableSelectedDate)) {\n return focusableSelectedDate;\n }\n }\n\n // Defaults\n if (\n isDaySelectable?.(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n return dateAdapter.today(timezone);\n }\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable?.(visibleDay));\n if (firstSelectableDate) {\n return firstSelectableDate;\n }\n return null;\n };\n\n const [focusedDate, setFocusedDateState] = useControlled({\n controlled: focusedDateProp,\n default: useMemo(getDefaultFocusedDate, []),\n name: \"Calendar\",\n state: \"focusedDate\",\n });\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent | null, date: TDate | null) => {\n if (focusedDateRef && event?.target instanceof HTMLElement) {\n focusedDateRef.current = event.target;\n }\n if (\n date &&\n ((focusedDate && dateAdapter.isSame(date, focusedDate, \"day\")) ||\n isOutsideAllowedDates(date))\n ) {\n return;\n }\n setFocusedDateState(date);\n onFocusedDateChange?.(event, date);\n },\n [\n dateAdapter,\n focusedDate,\n focusedDateRef,\n isOutsideAllowedDates,\n onFocusedDateChange,\n ],\n );\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = useCallback(\n (event: SyntheticEvent, date: TDate | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n },\n [onHoveredDateChange],\n );\n\n const isHovered = useCallback(\n (date: TDate) => {\n return !!hoveredDate && dateAdapter.isSame(date, hoveredDate, \"day\");\n },\n [dateAdapter, hoveredDate],\n );\n\n const getFocusableDates = useCallback(() => {\n const focusableDates: TDate[] = [];\n\n if (Array.isArray(selectedDate)) {\n // Handle array of selections\n for (const selection of selectedDate) {\n if (isDateRangeSelection(selection)) {\n if (selection.startDate && isDayVisible(selection.startDate)) {\n focusableDates.push(selection.startDate);\n } else if (selection.endDate && isDayVisible(selection.endDate)) {\n focusableDates.push(selection.endDate);\n }\n } else if (isDayVisible(selection as TDate)) {\n focusableDates.push(selection as TDate);\n }\n }\n } else if (selectedDate) {\n // Handle single selection\n if (isDateRangeSelection(selectedDate)) {\n if (selectedDate.startDate && isDayVisible(selectedDate.startDate)) {\n focusableDates.push(selectedDate.startDate);\n } else if (selectedDate.endDate && isDayVisible(selectedDate.endDate)) {\n focusableDates.push(selectedDate.endDate);\n }\n } else if (isDayVisible(selectedDate)) {\n focusableDates.push(selectedDate);\n }\n }\n\n if (\n focusedDate &&\n visibleMonth &&\n dateAdapter.isSame(focusedDate, visibleMonth, \"month\")\n ) {\n focusableDates.push(focusedDate);\n return focusableDates;\n }\n\n // Defaults\n if (\n focusableDates.length === 0 &&\n isDaySelectable(dateAdapter.today(timezone)) &&\n isDayVisible(dateAdapter.today(timezone))\n ) {\n focusableDates.push(dateAdapter.today(timezone));\n }\n if (focusableDates.length === 0 || !focusableDates.some(isDayVisible)) {\n const firstSelectableDate = generateDatesForMonth(\n dateAdapter,\n visibleMonth,\n ).find((visibleDay) => visibleDay && isDaySelectable(visibleDay));\n if (firstSelectableDate) {\n focusableDates.push(firstSelectableDate);\n }\n }\n\n return focusableDates;\n }, [\n dateAdapter,\n focusedDate,\n isDaySelectable,\n isDayVisible,\n selectedDate,\n timezone,\n visibleMonth,\n ]);\n\n const isHoveredStart = useCallback(\n (date: TDate) => {\n if (\n selectionVariant === \"range\" &&\n hoveredDate &&\n dateAdapter.isSame(date, hoveredDate, \"day\")\n ) {\n const dateRanges = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as DateRangeSelection<TDate>[];\n const allDatesPopulated = dateRanges.every(\n (range) => range?.startDate && range?.endDate,\n );\n const startDateMatches = dateRanges.some(\n (range) =>\n range?.startDate &&\n dateAdapter.isSame(date, range.startDate, \"day\"),\n );\n const firstIncompleteRange = dateRanges.find(\n (range) => range?.startDate && !range?.endDate,\n );\n const newDateRangeRequired =\n firstIncompleteRange?.startDate &&\n dateAdapter.compare(date, firstIncompleteRange.startDate) < 0;\n return allDatesPopulated || startDateMatches || newDateRangeRequired;\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const startDate = getStartDateOffset(hoveredDate);\n return (\n dateAdapter.isSame(date, startDate, \"day\") &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n getStartDateOffset,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isHoveredSpan = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"range\") {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n hoveredDate\n ) {\n const isForwardRange =\n dateAdapter.compare(hoveredDate, range.startDate) > 0 &&\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, hoveredDate) < 0;\n\n const isValidDayHovered =\n !isDaySelectable || isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n });\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n return (\n dateAdapter.compare(date, startDate) > 0 &&\n dateAdapter.compare(date, endDate) < 0 &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n isOutsideAllowedDates,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isHoveredEnd = useCallback(\n (date: TDate) => {\n if (\n selectionVariant === \"range\" &&\n hoveredDate &&\n dateAdapter.isSame(date, hoveredDate, \"day\")\n ) {\n const dateRanges = (\n Array.isArray(selectedDate) ? selectedDate : [selectedDate]\n ) as DateRangeSelection<TDate>[];\n const isIncompleteRange = dateRanges.some(\n (range) =>\n range?.startDate &&\n !range?.endDate &&\n hoveredDate &&\n dateAdapter.compare(hoveredDate, range.startDate) >= 0,\n );\n const endDateMatches = dateRanges.some(\n (range) =>\n range?.endDate && dateAdapter.isSame(range.endDate, date, \"day\"),\n );\n return endDateMatches || isIncompleteRange;\n }\n if (selectionVariant === \"offset\" && hoveredDate) {\n const endDate = getEndDateOffset(hoveredDate);\n return (\n dateAdapter.isSame(date, endDate, \"day\") &&\n (!isDaySelectable || isDaySelectable(date))\n );\n }\n return false;\n },\n [\n dateAdapter,\n getEndDateOffset,\n selectionVariant,\n selectedDate,\n hoveredDate,\n isDaySelectable,\n ],\n );\n\n const isSameDay = useCallback(\n (date: TDate) => {\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n range?.startDate &&\n range?.endDate &&\n dateAdapter.isSame(range?.startDate, date, \"day\")\n ) {\n return dateAdapter.isSame(range?.startDate, range?.endDate, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedStart = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n !isOutsideAllowedDates(range.startDate)\n ) {\n return dateAdapter.isSame(range.startDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedSpan = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.startDate) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.startDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return (\n dateAdapter.compare(date, range.startDate) > 0 &&\n dateAdapter.compare(date, range.endDate) < 0\n );\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n const isSelectedEnd = useCallback(\n (date: TDate) => {\n if (selectionVariant === \"single\") {\n return false;\n }\n const dateRanges = Array.isArray(selectedDate)\n ? selectedDate\n : [selectedDate];\n return dateRanges.some((range) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isDateRangeSelection(range) &&\n dateAdapter.isValid(range.endDate) &&\n !isOutsideAllowedDates(range.endDate)\n ) {\n return dateAdapter.isSame(range.endDate, date, \"day\");\n }\n return false;\n });\n },\n [dateAdapter, isOutsideAllowedDates, selectionVariant, selectedDate],\n );\n\n return useMemo(\n () => ({\n state: {\n focusedDate,\n focusedDateRef,\n hoveredDate,\n selectedDate,\n focusableDates: getFocusableDates(),\n },\n helpers: {\n isHovered,\n isSelected,\n setHoveredDate,\n isSameDay,\n setSelectedDate,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isDaySelectable,\n setFocusedDate,\n },\n }),\n [\n selectedDate,\n focusedDate,\n focusedDateRef,\n getFocusableDates,\n hoveredDate,\n isSelected,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isSameDay,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isDaySelectable,\n setFocusedDate,\n setHoveredDate,\n setSelectedDate,\n ],\n );\n}\n\nexport function useCalendarSelectionDay<TDate extends DateFrameworkType>({\n date,\n}: {\n date: TDate;\n}) {\n const {\n state: { selectionVariant },\n helpers: {\n setSelectedDate,\n isSameDay,\n isSelected,\n isSelectedStart,\n isSelectedSpan,\n isSelectedEnd,\n isHovered,\n isHoveredStart,\n isHoveredSpan,\n isHoveredEnd,\n isDaySelectable,\n },\n } = useCalendarContext<TDate>();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n setSelectedDate(event, date);\n },\n [date, setSelectedDate],\n );\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n },\n [date, setSelectedDate],\n );\n\n const selected = isSelected(date);\n const selectedStart = isSelectedStart(date);\n const selectedSpan = isSelectedSpan(date);\n const selectedEnd = isSelectedEnd(date);\n const selectedOnSameDay = isSameDay(date);\n\n const hovered = isHovered(date);\n const hoveredStart = isHoveredStart(date);\n const hoveredSpan = isHoveredSpan(date);\n const hoveredEnd = isHoveredEnd(date);\n\n return {\n handleClick,\n handleKeyDown,\n status: {\n hovered,\n selected,\n selectedStart,\n selectedSpan,\n selectedEnd,\n hoveredStart,\n hoveredSpan,\n hoveredEnd,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]:\n selectionVariant === \"single\" ? selected : undefined,\n [withBaseName(\"selectedStart\")]:\n selectionVariant !== \"single\" ? selectedStart : undefined,\n [withBaseName(\"selectedSpan\")]:\n selectionVariant !== \"single\" ? selectedSpan : undefined,\n [withBaseName(\"selectedEnd\")]:\n selectionVariant !== \"single\" ? selectedEnd : undefined,\n [withBaseName(\"selectedSameDay\")]:\n selectionVariant !== \"single\" && selectedOnSameDay,\n [withBaseName(\"hoveredStart\")]:\n selectionVariant !== \"single\" && hoveredStart,\n [withBaseName(\"hoveredSpan\")]:\n selectionVariant !== \"single\" && hoveredSpan,\n [withBaseName(\"hoveredEnd\")]:\n selectionVariant !== \"single\" && hoveredEnd,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\":\n isDaySelectable && !isDaySelectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["makePrefixer","useLocalization","useControlled","useCallback","generateDatesForMonth","useMemo","useCalendarContext","clsx"],"mappings":"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"}
|