@cube-dev/ui-kit 0.0.0-canary-8531f8b → 0.0.0-canary-1b26a89
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/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.d.ts +25 -12
- package/dist/components/CollectionItem.js +59 -4
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +2 -2
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.d.ts +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +7 -7
- package/dist/components/actions/CommandMenu/CommandMenu.js +246 -280
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +26 -22
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.d.ts +3 -0
- package/dist/components/actions/ItemActionContext.js +15 -13
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +9 -9
- package/dist/components/actions/Menu/Menu.js +87 -71
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.d.ts +18 -0
- package/dist/components/actions/Menu/MenuCollectionItem.js +36 -0
- package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -0
- package/dist/components/actions/Menu/MenuItem.js +395 -78
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.d.ts +1 -2
- package/dist/components/actions/Menu/MenuSection.js +12 -10
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.d.ts +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/index.d.ts +1 -0
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.d.ts +3 -2
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +60 -36
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +21 -21
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.d.ts +7 -7
- package/dist/components/content/Item/Item.js +205 -67
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +314 -0
- package/dist/components/content/Item/ItemWithNativeLinks.js.map +1 -0
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.d.ts +14 -14
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +2 -2
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.d.ts +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +5 -5
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +2 -2
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +20 -20
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +4 -4
- package/dist/components/fields/Select/Select.js +6 -6
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +3 -3
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +2 -2
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +2 -2
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +11 -0
- package/dist/providers/navigation-url.js.map +1 -0
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +19 -0
- package/dist/providers/use-navigation.js.map +1 -0
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/Usage.md +4 -0
- package/docs/components/CollectionItem.md +5 -1
- package/docs/components/actions/CommandMenu.md +46 -18
- package/docs/components/actions/Menu.md +124 -19
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-1b26a89 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
|
-
import { _CollectionItem } from "../../CollectionItem.js";
|
|
5
4
|
import { useMenuContext } from "./context.js";
|
|
5
|
+
import { _MenuCollectionItem, getMenuItemReactKey } from "./MenuCollectionItem.js";
|
|
6
6
|
import { MenuItem } from "./MenuItem.js";
|
|
7
7
|
import { StyledDivider, StyledFooter, StyledHeader, StyledMenu, StyledMenuWrapper } from "./styled.js";
|
|
8
8
|
import { MenuSection } from "./MenuSection.js";
|
|
@@ -14,11 +14,11 @@ import React from "react";
|
|
|
14
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
15
|
import { useMenu } from "react-aria";
|
|
16
16
|
import { Section, useTreeState } from "react-stately";
|
|
17
|
-
import { useObjectRef, useSyncRef } from "@react-aria/utils";
|
|
17
|
+
import { isFocusable, useObjectRef, useSyncRef } from "@react-aria/utils";
|
|
18
18
|
|
|
19
19
|
//#region src/components/actions/Menu/Menu.tsx
|
|
20
20
|
function Menu(props, ref) {
|
|
21
|
-
const $ = c(
|
|
21
|
+
const $ = c(14);
|
|
22
22
|
const { header, footer, menuStyles, headerStyles, footerStyles, itemStyles, sectionStyles, sectionHeadingStyles, size: t0, qa, selectedKeys, defaultSelectedKeys, onSelectionChange, onAction, ...rest } = props;
|
|
23
23
|
const size = t0 === void 0 ? "medium" : t0;
|
|
24
24
|
const domRef = useObjectRef(ref);
|
|
@@ -48,106 +48,121 @@ function Menu(props, ref) {
|
|
|
48
48
|
});
|
|
49
49
|
const collectionItems = [...state.collection];
|
|
50
50
|
const hasSections = collectionItems.some(_temp3);
|
|
51
|
-
const { menuProps } = useMenu(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
51
|
+
const { menuProps } = useMenu({
|
|
52
|
+
...completeProps,
|
|
53
|
+
onKeyDown: void 0
|
|
54
|
+
}, state, domRef);
|
|
55
|
+
const handleInlineNavigation = (event) => {
|
|
56
|
+
const menu = event.currentTarget;
|
|
57
|
+
const item_0 = event.target.closest("[role^=\"menuitem\"]");
|
|
58
|
+
if (event.defaultPrevented || !item_0 || item_0.closest("[role=\"menu\"]") !== menu || event.altKey || event.ctrlKey || event.metaKey || event.nativeEvent.isComposing || !menu.querySelector("[data-element=\"Actions\"] [role^=\"menuitem\"]")) return;
|
|
59
|
+
const row = item_0.closest("[data-menuitem]");
|
|
60
|
+
if (item_0.closest("[data-element=\"Actions\"]") && (event.key === "PageUp" || event.key === "PageDown" || event.key.length === 1 && event.key !== " ")) {
|
|
61
|
+
row?.querySelector("[data-menu-native-primary]")?.focus();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (event.shiftKey) return;
|
|
65
|
+
const items = Array.from(menu.querySelectorAll("[role^=\"menuitem\"]")).filter((element) => element.closest("[role=\"menu\"]") === menu && !element.hasAttribute("disabled") && element.getAttribute("aria-disabled") !== "true" && isFocusable(element));
|
|
66
|
+
const index = items.indexOf(item_0);
|
|
67
|
+
if (index < 0) return;
|
|
68
|
+
let next;
|
|
69
|
+
if (event.key === "ArrowDown") next = items[index + 1] ?? (completeProps.shouldFocusWrap !== false ? items[0] : void 0);
|
|
70
|
+
else if (event.key === "ArrowUp") next = items[index - 1] ?? (completeProps.shouldFocusWrap !== false ? items.at(-1) : void 0);
|
|
71
|
+
else if (event.key === "Home") next = items[0];
|
|
72
|
+
else if (event.key === "End") next = items.at(-1);
|
|
73
|
+
else if ((event.key === "ArrowRight" || event.key === "ArrowLeft") && row && !item_0.hasAttribute("aria-haspopup")) {
|
|
74
|
+
const rowItems = items.filter((element_0) => element_0.closest("[data-menuitem]") === row);
|
|
75
|
+
const forward = event.key === (getComputedStyle(row).direction === "rtl" ? "ArrowLeft" : "ArrowRight");
|
|
76
|
+
next = rowItems[rowItems.indexOf(item_0) + (forward ? 1 : -1)];
|
|
77
|
+
}
|
|
78
|
+
if (next) {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
event.stopPropagation();
|
|
81
|
+
next.focus();
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const styles = extractStyles(completeProps, CONTAINER_STYLES);
|
|
86
|
+
const { id: _id, "aria-label": _ariaLabel, "aria-labelledby": _ariaLabelledBy, "aria-describedby": _ariaDescribedBy, "aria-details": _ariaDetails, ...wrapperProps } = filterBaseProps(completeProps);
|
|
87
|
+
const wrapperMods = {
|
|
88
|
+
popover: completeProps.mods?.popover,
|
|
89
|
+
footer: !!footer,
|
|
90
|
+
header: !!header
|
|
91
|
+
};
|
|
89
92
|
const menuMods = { sections: hasSections };
|
|
90
93
|
useSyncRef(contextProps, domRef);
|
|
91
94
|
const renderedItems = [];
|
|
92
95
|
let isFirstSection = true;
|
|
93
|
-
collectionItems.forEach((
|
|
94
|
-
|
|
96
|
+
collectionItems.forEach((item_1) => {
|
|
97
|
+
const reactKey = getMenuItemReactKey(item_1.key);
|
|
98
|
+
if (item_1.type === "section") {
|
|
95
99
|
if (!isFirstSection) renderedItems.push(/* @__PURE__ */ jsx(StyledDivider, {
|
|
96
100
|
role: "separator",
|
|
97
101
|
"aria-orientation": "horizontal"
|
|
98
|
-
}, `divider-${
|
|
102
|
+
}, `divider-${reactKey}`));
|
|
99
103
|
renderedItems.push(/* @__PURE__ */ jsx(MenuSection, {
|
|
100
|
-
item:
|
|
104
|
+
item: item_1,
|
|
101
105
|
state,
|
|
102
106
|
styles: sectionStyles,
|
|
103
107
|
itemStyles,
|
|
104
108
|
headingStyles: sectionHeadingStyles,
|
|
105
109
|
size
|
|
106
|
-
},
|
|
110
|
+
}, reactKey));
|
|
107
111
|
isFirstSection = false;
|
|
108
112
|
return;
|
|
109
113
|
}
|
|
110
114
|
let menuItem = /* @__PURE__ */ jsx(MenuItem, {
|
|
111
|
-
item:
|
|
115
|
+
item: item_1,
|
|
112
116
|
state,
|
|
113
117
|
styles: itemStyles,
|
|
114
118
|
size
|
|
115
|
-
},
|
|
116
|
-
if (
|
|
117
|
-
else if (
|
|
118
|
-
renderedItems.push(React.cloneElement(menuItem, { key:
|
|
119
|
+
}, reactKey);
|
|
120
|
+
if (item_1.props?.wrapper) menuItem = item_1.props.wrapper(menuItem);
|
|
121
|
+
else if (item_1.wrapper) menuItem = item_1.wrapper(menuItem);
|
|
122
|
+
renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));
|
|
119
123
|
});
|
|
120
|
-
let
|
|
121
|
-
if ($[
|
|
122
|
-
|
|
124
|
+
let t2;
|
|
125
|
+
if ($[2] !== header || $[3] !== headerStyles || $[4] !== size) {
|
|
126
|
+
t2 = header ? /* @__PURE__ */ jsx(StyledHeader, {
|
|
123
127
|
"data-size": size,
|
|
124
128
|
styles: headerStyles,
|
|
125
129
|
children: header
|
|
126
130
|
}) : /* @__PURE__ */ jsx("div", { role: "presentation" });
|
|
127
|
-
$[
|
|
128
|
-
$[
|
|
129
|
-
$[
|
|
130
|
-
$[
|
|
131
|
-
} else
|
|
132
|
-
let
|
|
133
|
-
if ($[
|
|
134
|
-
|
|
131
|
+
$[2] = header;
|
|
132
|
+
$[3] = headerStyles;
|
|
133
|
+
$[4] = size;
|
|
134
|
+
$[5] = t2;
|
|
135
|
+
} else t2 = $[5];
|
|
136
|
+
let t3;
|
|
137
|
+
if ($[6] !== completeProps || $[7] !== handleInlineNavigation || $[8] !== menuProps) {
|
|
138
|
+
t3 = (event_0) => {
|
|
139
|
+
completeProps.onKeyDown?.(event_0);
|
|
140
|
+
if (!event_0.defaultPrevented && !handleInlineNavigation(event_0)) menuProps.onKeyDown?.(event_0);
|
|
141
|
+
};
|
|
142
|
+
$[6] = completeProps;
|
|
143
|
+
$[7] = handleInlineNavigation;
|
|
144
|
+
$[8] = menuProps;
|
|
145
|
+
$[9] = t3;
|
|
146
|
+
} else t3 = $[9];
|
|
147
|
+
let t4;
|
|
148
|
+
if ($[10] !== footer || $[11] !== footerStyles || $[12] !== size) {
|
|
149
|
+
t4 = footer ? /* @__PURE__ */ jsx(StyledFooter, {
|
|
135
150
|
"data-size": size,
|
|
136
151
|
styles: footerStyles,
|
|
137
152
|
children: footer
|
|
138
153
|
}) : /* @__PURE__ */ jsx("div", { role: "presentation" });
|
|
139
|
-
$[
|
|
140
|
-
$[
|
|
141
|
-
$[
|
|
142
|
-
$[
|
|
143
|
-
} else
|
|
154
|
+
$[10] = footer;
|
|
155
|
+
$[11] = footerStyles;
|
|
156
|
+
$[12] = size;
|
|
157
|
+
$[13] = t4;
|
|
158
|
+
} else t4 = $[13];
|
|
144
159
|
return /* @__PURE__ */ jsxs(StyledMenuWrapper, {
|
|
145
160
|
qa,
|
|
146
161
|
styles,
|
|
147
162
|
mods: wrapperMods,
|
|
148
163
|
...wrapperProps,
|
|
149
164
|
children: [
|
|
150
|
-
|
|
165
|
+
t2,
|
|
151
166
|
/* @__PURE__ */ jsx(StyledMenu, {
|
|
152
167
|
...mergeProps$1({
|
|
153
168
|
styles: menuStyles,
|
|
@@ -155,10 +170,11 @@ function Menu(props, ref) {
|
|
|
155
170
|
mods: menuMods
|
|
156
171
|
}, menuProps),
|
|
157
172
|
ref: domRef,
|
|
173
|
+
onKeyDown: t3,
|
|
158
174
|
role: menuProps.role ?? "menu",
|
|
159
175
|
children: renderedItems
|
|
160
176
|
}),
|
|
161
|
-
|
|
177
|
+
t4
|
|
162
178
|
]
|
|
163
179
|
});
|
|
164
180
|
}
|
|
@@ -174,7 +190,7 @@ function _temp(key) {
|
|
|
174
190
|
const _Menu = React.forwardRef(Menu);
|
|
175
191
|
const Section$1 = Object.assign(Section, { displayName: "Section" });
|
|
176
192
|
const __Menu = Object.assign(_Menu, {
|
|
177
|
-
Item:
|
|
193
|
+
Item: _MenuCollectionItem,
|
|
178
194
|
Section: Section$1,
|
|
179
195
|
SubMenuTrigger,
|
|
180
196
|
Trigger: _MenuTrigger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","ItemProps","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","ReactElement","ReactNode","Ref","AriaMenuProps","useMenu","Section","BaseSection","useTreeState","mergeProps","extractStyles","CollectionItem","useMenuContext","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledMenuWrapper","SubMenuTrigger","CubeMenuProps","Omit","T","children","onAction","key","header","footer","menuStyles","headerStyles","footerStyles","styles","itemStyles","sectionStyles","sectionHeadingStyles","shouldFocusWrap","autoFocus","shouldUseVirtualFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Menu","props","ref","$","_c","t0","qa","rest","undefined","domRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","state","collection","getKeys","map","_temp","_temp2","t1","key_1","completeProps","collectionItems","hasSections","some","_temp3","menuProps","t2","t3","t4","Record","wrapperProps","id","_id","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","t5","mods","popover","t6","t7","t8","wrapperMods","menuMods","sections","renderedItems","isFirstSection","forEach","item_0","item","type","push","String","menuItem","wrapper","cloneElement","t9","t10","role","key_0","_Menu","forwardRef","RefAttributes","HTMLUListElement","SectionComponent","Object","assign","displayName","__MenuComponent","Item","Trigger","__Menu"],"sources":["../../../../src/components/actions/Menu/Menu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport {\n CollectionChildren,\n FocusStrategy,\n ItemProps,\n Key,\n} from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, { ReactElement, ReactNode, Ref } from 'react';\nimport { AriaMenuProps, useMenu } from 'react-aria';\nimport { Section as BaseSection, useTreeState } from 'react-stately';\n\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { CollectionItem } from '../../CollectionItem';\n\nimport { useMenuContext } from './context';\nimport { MenuItem } from './MenuItem';\nimport { MenuSection } from './MenuSection';\nimport { MenuTrigger } from './MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n StyledMenuWrapper,\n} from './styled';\nimport { SubMenuTrigger } from './SubMenuTrigger';\n\nexport interface CubeMenuProps<T>\n extends BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n AriaMenuProps<T>,\n | 'children'\n | 'onAction'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'onSelectionChange'\n > {\n children?: ReactNode | CollectionChildren<T>;\n onAction?: (key: Key) => void;\n // @deprecated\n header?: ReactNode;\n footer?: ReactNode;\n menuStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n styles?: Styles;\n itemStyles?: Styles;\n sectionStyles?: Styles;\n sectionHeadingStyles?: Styles;\n /**\n * Whether keyboard navigation should wrap around when reaching the start/end of the collection.\n * This directly maps to the `shouldFocusWrap` option supported by React-Aria's `useMenu` hook.\n */\n shouldFocusWrap?: boolean;\n\n /**\n * Whether the menu should automatically receive focus when it mounts.\n * This directly maps to the `autoFocus` option supported by React-Aria's `useMenu` hook.\n */\n autoFocus?: boolean | FocusStrategy;\n shouldUseVirtualFocus?: boolean;\n\n /** Size of the menu items */\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction Menu<T extends object>(\n props: CubeMenuProps<T>,\n ref: Ref<HTMLUListElement>,\n) {\n const {\n header,\n footer,\n menuStyles,\n headerStyles,\n footerStyles,\n itemStyles,\n sectionStyles,\n sectionHeadingStyles,\n size = 'medium',\n qa,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n ...rest\n } = props;\n const domRef = useObjectRef(ref);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: any) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(state.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, rest, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Props used for collection building.\n const state = useTreeState({\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n });\n const collectionItems = [...state.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const { menuProps } = useMenu(completeProps, state, domRef);\n const styles = extractStyles(completeProps, CONTAINER_STYLES);\n\n // `useMenu` already put the id and the name on the `menu` list. Repeated on\n // the wrapper, the id is a duplicate — a trigger's `aria-controls` finds the\n // wrapper first — and the name labels a plain `div`.\n const {\n id: _id,\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(completeProps) as Record<string, unknown>;\n\n const wrapperMods = {\n popover: completeProps.mods?.popover,\n footer: !!footer,\n header: !!header,\n };\n\n const menuMods = {\n sections: hasSections,\n };\n\n // Sync the ref stored in the context object with the menu's DOM ref.\n // `useSyncRef` from @react-aria/utils expects the context object as the\n // first argument to keep it up-to-date, and a ref object as the second.\n useSyncRef(contextProps, domRef);\n\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n collectionItems.forEach((item) => {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${String(item.key)}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={item.key}\n item={item}\n state={state}\n styles={sectionStyles}\n itemStyles={itemStyles}\n headingStyles={sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={state}\n styles={itemStyles}\n size={size}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself — wrapping it in a\n // second provider makes the two tooltips close each other.\n\n // Apply custom wrapper if provided\n if (item.props?.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n } else if ((item as any).wrapper) {\n // Handle wrapper from collection nodes (e.g., SubMenuTrigger)\n menuItem = (item as any).wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: item.key }));\n });\n\n return (\n <StyledMenuWrapper\n qa={qa}\n styles={styles}\n mods={wrapperMods}\n {...wrapperProps}\n >\n {header ? (\n <StyledHeader data-size={size} styles={headerStyles}>\n {header}\n </StyledHeader>\n ) : (\n <div role=\"presentation\" />\n )}\n <StyledMenu\n {...mergeProps(\n {\n styles: menuStyles,\n 'data-size': size,\n mods: menuMods,\n },\n menuProps,\n )}\n ref={domRef}\n role={menuProps.role ?? 'menu'}\n >\n {renderedItems}\n </StyledMenu>\n {footer ? (\n <StyledFooter data-size={size} styles={footerStyles}>\n {footer}\n </StyledFooter>\n ) : (\n <div role=\"presentation\" />\n )}\n </StyledMenuWrapper>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(\n props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>,\n) => ReactElement;\n\ntype SectionComponent = typeof BaseSection;\n\nconst Section = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\ntype __MenuComponent = typeof _Menu & {\n Item: typeof CollectionItem;\n Section: typeof Section;\n SubMenuTrigger: typeof SubMenuTrigger;\n Trigger: typeof MenuTrigger;\n};\n\nconst __Menu = Object.assign(_Menu as __MenuComponent, {\n Item: CollectionItem,\n Section,\n SubMenuTrigger,\n Trigger: MenuTrigger,\n displayName: 'Menu',\n});\n\n__Menu.displayName = 'Menu';\n\nexport { __Menu as Menu };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["isFocusable","useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","ItemProps","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","KeyboardEvent","ReactElement","ReactNode","Ref","AriaMenuProps","useMenu","Section","BaseSection","useTreeState","mergeProps","extractStyles","useMenuContext","getMenuItemReactKey","MenuCollectionItem","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledMenuWrapper","SubMenuTrigger","CubeMenuProps","Omit","T","children","onAction","key","header","footer","menuStyles","headerStyles","footerStyles","styles","itemStyles","sectionStyles","sectionHeadingStyles","shouldFocusWrap","autoFocus","shouldUseVirtualFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Menu","props","ref","$","_c","t0","qa","rest","undefined","domRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","state","collection","getKeys","map","_temp","_temp2","t1","key_1","completeProps","collectionItems","hasSections","some","_temp3","menuProps","onKeyDown","handleInlineNavigation","event","menu","currentTarget","item_0","target","HTMLElement","closest","defaultPrevented","item","altKey","ctrlKey","metaKey","nativeEvent","isComposing","querySelector","row","length","focus","shiftKey","items","querySelectorAll","filter","element","hasAttribute","getAttribute","index","indexOf","next","at","rowItems","element_0","forward","getComputedStyle","direction","preventDefault","stopPropagation","id","_id","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","wrapperProps","Record","wrapperMods","popover","mods","menuMods","sections","renderedItems","isFirstSection","forEach","item_1","reactKey","type","push","menuItem","wrapper","cloneElement","t2","t3","event_0","t4","role","key_0","String","_Menu","forwardRef","RefAttributes","HTMLUListElement","SectionComponent","Object","assign","displayName","__MenuComponent","Item","Trigger","__Menu"],"sources":["../../../../src/components/actions/Menu/Menu.tsx"],"sourcesContent":["import { isFocusable, useObjectRef, useSyncRef } from '@react-aria/utils';\nimport {\n CollectionChildren,\n FocusStrategy,\n ItemProps,\n Key,\n} from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, { KeyboardEvent, ReactElement, ReactNode, Ref } from 'react';\nimport { AriaMenuProps, useMenu } from 'react-aria';\nimport { Section as BaseSection, useTreeState } from 'react-stately';\n\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useMenuContext } from './context';\nimport { getMenuItemReactKey, MenuCollectionItem } from './MenuCollectionItem';\nimport { MenuItem } from './MenuItem';\nimport { MenuSection } from './MenuSection';\nimport { MenuTrigger } from './MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n StyledMenuWrapper,\n} from './styled';\nimport { SubMenuTrigger } from './SubMenuTrigger';\n\nexport interface CubeMenuProps<T>\n extends BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n AriaMenuProps<T>,\n | 'children'\n | 'onAction'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'onSelectionChange'\n > {\n children?: ReactNode | CollectionChildren<T>;\n onAction?: (key: Key) => void;\n // @deprecated\n header?: ReactNode;\n footer?: ReactNode;\n menuStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n styles?: Styles;\n itemStyles?: Styles;\n sectionStyles?: Styles;\n sectionHeadingStyles?: Styles;\n /**\n * Whether keyboard navigation should wrap around when reaching the start/end of the collection.\n * This directly maps to the `shouldFocusWrap` option supported by React-Aria's `useMenu` hook.\n */\n shouldFocusWrap?: boolean;\n\n /**\n * Whether the menu should automatically receive focus when it mounts.\n * This directly maps to the `autoFocus` option supported by React-Aria's `useMenu` hook.\n */\n autoFocus?: boolean | FocusStrategy;\n shouldUseVirtualFocus?: boolean;\n\n /** Size of the menu items */\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction Menu<T extends object>(\n props: CubeMenuProps<T>,\n ref: Ref<HTMLUListElement>,\n) {\n const {\n header,\n footer,\n menuStyles,\n headerStyles,\n footerStyles,\n itemStyles,\n sectionStyles,\n sectionHeadingStyles,\n size = 'medium',\n qa,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n ...rest\n } = props;\n const domRef = useObjectRef(ref);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: any) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(state.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, rest, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Props used for collection building.\n const state = useTreeState({\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n });\n const collectionItems = [...state.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const { menuProps } = useMenu(\n { ...completeProps, onKeyDown: undefined },\n state,\n domRef,\n );\n const handleInlineNavigation = (event: KeyboardEvent<HTMLUListElement>) => {\n const menu = event.currentTarget;\n const item = (event.target as HTMLElement).closest<HTMLElement>(\n '[role^=\"menuitem\"]',\n );\n if (\n event.defaultPrevented ||\n !item ||\n item.closest('[role=\"menu\"]') !== menu ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.nativeEvent.isComposing ||\n !menu.querySelector('[data-element=\"Actions\"] [role^=\"menuitem\"]')\n )\n return;\n const row = item.closest<HTMLElement>('[data-menuitem]');\n // Search and page navigation remain owned by the Aria collection of rows.\n if (\n item.closest('[data-element=\"Actions\"]') &&\n (event.key === 'PageUp' ||\n event.key === 'PageDown' ||\n (event.key.length === 1 && event.key !== ' '))\n ) {\n row?.querySelector<HTMLElement>('[data-menu-native-primary]')?.focus();\n return;\n }\n if (event.shiftKey) return;\n const items = Array.from(\n menu.querySelectorAll<HTMLElement>('[role^=\"menuitem\"]'),\n ).filter(\n (element) =>\n element.closest('[role=\"menu\"]') === menu &&\n !element.hasAttribute('disabled') &&\n element.getAttribute('aria-disabled') !== 'true' &&\n isFocusable(element),\n );\n const index = items.indexOf(item);\n if (index < 0) return;\n let next: HTMLElement | undefined;\n if (event.key === 'ArrowDown')\n next =\n items[index + 1] ??\n (completeProps.shouldFocusWrap !== false ? items[0] : undefined);\n else if (event.key === 'ArrowUp')\n next =\n items[index - 1] ??\n (completeProps.shouldFocusWrap !== false ? items.at(-1) : undefined);\n else if (event.key === 'Home') next = items[0];\n else if (event.key === 'End') next = items.at(-1);\n else if (\n (event.key === 'ArrowRight' || event.key === 'ArrowLeft') &&\n row &&\n !item.hasAttribute('aria-haspopup')\n ) {\n const rowItems = items.filter(\n (element) => element.closest('[data-menuitem]') === row,\n );\n const forward =\n event.key ===\n (getComputedStyle(row).direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight');\n next = rowItems[rowItems.indexOf(item) + (forward ? 1 : -1)];\n }\n if (next) {\n event.preventDefault();\n event.stopPropagation();\n next.focus();\n return true;\n }\n };\n const styles = extractStyles(completeProps, CONTAINER_STYLES);\n\n // `useMenu` already put the id and the name on the `menu` list. Repeated on\n // the wrapper, the id is a duplicate — a trigger's `aria-controls` finds the\n // wrapper first — and the name labels a plain `div`.\n const {\n id: _id,\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(completeProps) as Record<string, unknown>;\n\n const wrapperMods = {\n popover: completeProps.mods?.popover,\n footer: !!footer,\n header: !!header,\n };\n\n const menuMods = {\n sections: hasSections,\n };\n\n // Sync the ref stored in the context object with the menu's DOM ref.\n // `useSyncRef` from @react-aria/utils expects the context object as the\n // first argument to keep it up-to-date, and a ref object as the second.\n useSyncRef(contextProps, domRef);\n\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n collectionItems.forEach((item) => {\n const reactKey = getMenuItemReactKey(item.key);\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${reactKey}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={reactKey}\n item={item}\n state={state}\n styles={sectionStyles}\n itemStyles={itemStyles}\n headingStyles={sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={reactKey}\n item={item}\n state={state}\n styles={itemStyles}\n size={size}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself — wrapping it in a\n // second provider makes the two tooltips close each other.\n\n // Apply custom wrapper if provided\n if (item.props?.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n } else if ((item as any).wrapper) {\n // Handle wrapper from collection nodes (e.g., SubMenuTrigger)\n menuItem = (item as any).wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));\n });\n\n return (\n <StyledMenuWrapper\n qa={qa}\n styles={styles}\n mods={wrapperMods}\n {...wrapperProps}\n >\n {header ? (\n <StyledHeader data-size={size} styles={headerStyles}>\n {header}\n </StyledHeader>\n ) : (\n <div role=\"presentation\" />\n )}\n <StyledMenu\n {...mergeProps(\n {\n styles: menuStyles,\n 'data-size': size,\n mods: menuMods,\n },\n menuProps,\n )}\n ref={domRef}\n onKeyDown={(event) => {\n completeProps.onKeyDown?.(event);\n if (!event.defaultPrevented && !handleInlineNavigation(event))\n menuProps.onKeyDown?.(event);\n }}\n role={menuProps.role ?? 'menu'}\n >\n {renderedItems}\n </StyledMenu>\n {footer ? (\n <StyledFooter data-size={size} styles={footerStyles}>\n {footer}\n </StyledFooter>\n ) : (\n <div role=\"presentation\" />\n )}\n </StyledMenuWrapper>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(\n props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>,\n) => ReactElement;\n\ntype SectionComponent = typeof BaseSection;\n\nconst Section = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\ntype __MenuComponent = typeof _Menu & {\n Item: typeof MenuCollectionItem;\n Section: typeof Section;\n SubMenuTrigger: typeof SubMenuTrigger;\n Trigger: typeof MenuTrigger;\n};\n\nconst __Menu = Object.assign(_Menu as __MenuComponent, {\n Item: MenuCollectionItem,\n Section,\n SubMenuTrigger,\n Trigger: MenuTrigger,\n displayName: 'Menu',\n});\n\n__Menu.displayName = 'Menu';\n\nexport { __Menu as Menu };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
import { NavigateOptions, To } from "../../../providers/navigation.types.js";
|
|
3
|
+
import { CubeCollectionItemBaseProps, _CollectionItem } from "../../CollectionItem.js";
|
|
4
|
+
import { ReactElement } from "react";
|
|
5
|
+
import { Key as Key$1, LinkDOMProps } from "@react-types/shared";
|
|
6
|
+
|
|
7
|
+
//#region src/components/actions/Menu/MenuCollectionItem.d.ts
|
|
8
|
+
interface CubeMenuItemProps<T> extends CubeCollectionItemBaseProps<T>, LinkDOMProps {
|
|
9
|
+
/** Application destination. Takes precedence over href. */
|
|
10
|
+
to?: To;
|
|
11
|
+
navigationOptions?: NavigateOptions;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}
|
|
14
|
+
declare function MenuCollectionItem<T>(_props: CubeMenuItemProps<T>): ReactElement | null;
|
|
15
|
+
declare const _MenuCollectionItem: typeof MenuCollectionItem & Pick<typeof _CollectionItem, 'Action' | 'Badge'>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { CubeMenuItemProps, _MenuCollectionItem };
|
|
18
|
+
//# sourceMappingURL=MenuCollectionItem.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-1b26a89 | Cube Dev Team */
|
|
2
|
+
import { parseTo } from "../use-action.js";
|
|
3
|
+
import { COLLECTION_ITEM_CLICK, _CollectionItem } from "../../CollectionItem.js";
|
|
4
|
+
import { Item } from "react-stately";
|
|
5
|
+
|
|
6
|
+
//#region src/components/actions/Menu/MenuCollectionItem.tsx
|
|
7
|
+
const CURRENT_DOCUMENT_LINK = Symbol("Menu.Item current document");
|
|
8
|
+
function getMenuItemReactKey(key) {
|
|
9
|
+
return `${typeof key}:${String(key)}`;
|
|
10
|
+
}
|
|
11
|
+
function MenuCollectionItem(_props) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const _MenuCollectionItem = Object.assign(MenuCollectionItem, {
|
|
15
|
+
Action: _CollectionItem.Action,
|
|
16
|
+
Badge: _CollectionItem.Badge,
|
|
17
|
+
getCollectionNode(props, context) {
|
|
18
|
+
const { newTab } = parseTo(props.to);
|
|
19
|
+
const isCurrentDocument = props.to == null && props.href === "";
|
|
20
|
+
const isLink = props.to !== "" && (props.to != null || props.href != null);
|
|
21
|
+
return Item.getCollectionNode({
|
|
22
|
+
...props,
|
|
23
|
+
isDisabled: props.isDisabled ?? (props.isLoading ? true : void 0),
|
|
24
|
+
href: props.to === "" ? void 0 : props.to != null ? "." : isCurrentDocument ? "." : props.href,
|
|
25
|
+
[CURRENT_DOCUMENT_LINK]: isCurrentDocument,
|
|
26
|
+
onClick: isLink ? void 0 : props.onClick,
|
|
27
|
+
[COLLECTION_ITEM_CLICK]: isLink ? props.onClick : void 0,
|
|
28
|
+
target: newTab ? "_blank" : props.target,
|
|
29
|
+
rel: newTab ? props.rel ?? "noopener noreferrer" : props.rel
|
|
30
|
+
}, context);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
export { CURRENT_DOCUMENT_LINK, _MenuCollectionItem, getMenuItemReactKey };
|
|
36
|
+
//# sourceMappingURL=MenuCollectionItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuCollectionItem.js","names":["ReactElement","Item","NavigateOptions","To","COLLECTION_ITEM_CLICK","CollectionItem","CubeCollectionItemBaseProps","parseTo","Key","LinkDOMProps","CubeMenuItemProps","T","to","navigationOptions","key","CURRENT_DOCUMENT_LINK","Symbol","getMenuItemReactKey","String","MenuCollectionItem","_props","_MenuCollectionItem","Pick","Object","assign","Action","Badge","getCollectionNode","props","context","newTab","isCurrentDocument","href","isLink","isDisabled","isLoading","undefined","onClick","target","rel"],"sources":["../../../../src/components/actions/Menu/MenuCollectionItem.tsx"],"sourcesContent":["import { ReactElement } from 'react';\nimport { Item } from 'react-stately';\n\nimport { NavigateOptions, To } from '../../../providers/navigation.types';\nimport {\n COLLECTION_ITEM_CLICK,\n CollectionItem,\n CubeCollectionItemBaseProps,\n} from '../../CollectionItem';\nimport { parseTo } from '../use-action';\n\nimport type { Key, LinkDOMProps } from '@react-types/shared';\n\nexport interface CubeMenuItemProps<T>\n extends CubeCollectionItemBaseProps<T>,\n LinkDOMProps {\n /** Application destination. Takes precedence over href. */\n to?: To;\n navigationOptions?: NavigateOptions;\n [key: string]: any;\n}\n\n// Aria recognizes links by a truthy collection href; preserve the native empty URL.\nexport const CURRENT_DOCUMENT_LINK = Symbol('Menu.Item current document');\n\nexport function getMenuItemReactKey(key: Key): string {\n return `${typeof key}:${String(key)}`;\n}\n\nfunction MenuCollectionItem<T>(\n _props: CubeMenuItemProps<T>,\n): ReactElement | null {\n return null;\n}\n\nconst _MenuCollectionItem: typeof MenuCollectionItem &\n Pick<typeof CollectionItem, 'Action' | 'Badge'> = Object.assign(\n MenuCollectionItem,\n {\n Action: CollectionItem.Action,\n Badge: CollectionItem.Badge,\n getCollectionNode<T>(props: CubeMenuItemProps<T>, context: unknown) {\n const { newTab } = parseTo(props.to);\n const isCurrentDocument = props.to == null && props.href === '';\n const isLink =\n props.to !== '' && (props.to != null || props.href != null);\n\n // A private href marks links for Aria; the row resolves the actual `to`.\n return (Item as any).getCollectionNode(\n {\n ...props,\n isDisabled: props.isDisabled ?? (props.isLoading ? true : undefined),\n href:\n props.to === ''\n ? undefined\n : props.to != null\n ? '.'\n : isCurrentDocument\n ? '.'\n : props.href,\n [CURRENT_DOCUMENT_LINK]: isCurrentDocument,\n // Selectable items also consume collection onClick; let Menu own it once.\n onClick: isLink ? undefined : props.onClick,\n [COLLECTION_ITEM_CLICK]: isLink ? props.onClick : undefined,\n target: newTab ? '_blank' : props.target,\n rel: newTab ? props.rel ?? 'noopener noreferrer' : props.rel,\n },\n context,\n );\n },\n },\n);\n\nexport { _MenuCollectionItem as MenuCollectionItem };\n"],"mappings":";;;;;;AAuBA,MAAae,wBAAwBC,OAAO,6BAA6B;AAEzE,SAAgBC,oBAAoBH,KAAkB;AACpD,QAAO,GAAG,OAAOA,IAAG,GAAII,OAAOJ,IAAI;;AAGrC,SAASK,mBACPC,QACqB;AACrB,QAAO;;AAGT,MAAMC,sBAC8CE,OAAOC,OACzDL,oBACA;CACEM,QAAQpB,gBAAeoB;CACvBC,OAAOrB,gBAAeqB;CACtBC,kBAAqBC,OAA6BC,SAAkB;EAClE,MAAM,EAAEC,WAAWvB,QAAQqB,MAAMhB,GAAG;EACpC,MAAMmB,oBAAoBH,MAAMhB,MAAM,QAAQgB,MAAMI,SAAS;EAC7D,MAAMC,SACJL,MAAMhB,OAAO,OAAOgB,MAAMhB,MAAM,QAAQgB,MAAMI,QAAQ;AAGxD,SAAQ/B,KAAa0B,kBACnB;GACE,GAAGC;GACHM,YAAYN,MAAMM,eAAeN,MAAMO,YAAY,OAAOC;GAC1DJ,MACEJ,MAAMhB,OAAO,KACTwB,SACAR,MAAMhB,MAAM,OACV,MACAmB,oBACE,MACAH,MAAMI;IACfjB,wBAAwBgB;GAEzBM,SAASJ,SAASG,SAAYR,MAAMS;IACnCjC,wBAAwB6B,SAASL,MAAMS,UAAUD;GAClDE,QAAQR,SAAS,WAAWF,MAAMU;GAClCC,KAAKT,SAASF,MAAMW,OAAO,wBAAwBX,MAAMW;GAC1D,EACDV,QACD;;CAGP,CAAC"}
|