@cube-dev/ui-kit 0.206.3 → 0.208.0
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/CHANGELOG.md +18 -0
- 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-sync-ref.js.map +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 +0 -2
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +3 -3
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.d.ts +10 -1
- package/dist/components/actions/Button/Button.js +13 -8
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/Button/index.d.ts +16 -1
- package/dist/components/actions/Button/index.js +13 -0
- package/dist/components/actions/Button/index.js.map +1 -0
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- 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 +2 -2
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +0 -2
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +2 -2
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +3 -3
- package/dist/components/actions/Menu/MenuTrigger.js.map +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 -1
- 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 +6 -18
- package/dist/components/actions/use-action.js +2 -2
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.d.ts +0 -1
- package/dist/components/actions/use-anchored-menu.js +2 -2
- package/dist/components/actions/use-anchored-menu.js.map +1 -1
- package/dist/components/actions/use-context-menu.d.ts +0 -1
- package/dist/components/actions/use-context-menu.js +2 -2
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js.map +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/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.d.ts +0 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +2 -18
- package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.d.ts +0 -1
- package/dist/components/content/Disclosure/Disclosure.js +2 -2
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider/Divider.js +1 -1
- package/dist/components/content/Divider/Divider.js.map +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +1 -2
- package/dist/components/content/Item/Item.js +4 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +2 -2
- package/dist/components/content/Item/index.d.ts +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemBadge/index.d.ts +1 -2
- 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/Layout.js.map +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/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js.map +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/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +2 -2
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +3 -3
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +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/Placeholder/Placeholder.js.map +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 +2 -2
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +0 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Tag/Tag.js.map +1 -1
- 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/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +5 -5
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/checked-keys.js +1 -1
- package/dist/components/content/Tree/rowId.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/Tree/use-load-data.js.map +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/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/item-table-sections.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/ColumnResizer.js.map +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/TableHeaderCell.js.map +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableRowLink.js +1 -1
- package/dist/components/data/TableBase/TableView.js +6 -6
- package/dist/components/data/TableBase/TableView.js.map +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-menu.js.map +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.js +1 -1
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-body-sections.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-cell-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-column-menu.js +2 -2
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js.map +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-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js.map +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/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -3
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +0 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +0 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +0 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -2
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -1
- package/dist/components/fields/ComboBox/ComboBox.js +6 -6
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +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/CalendarPopover.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateInput.js +2 -2
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DatePicker.js +2 -2
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +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/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.d.ts +0 -1
- package/dist/components/fields/DatePicker/TimeInput.js +2 -2
- package/dist/components/fields/DatePicker/TimeInput.js.map +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.d.ts +0 -1
- package/dist/components/fields/FileInput/FileInput.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +3 -3
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterListBox/styled.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +0 -3
- package/dist/components/fields/FilterPicker/FilterPicker.js +8 -8
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +2 -2
- package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -1
- package/dist/components/fields/Input/Input.d.ts +0 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/Input/Input.js.map +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +4 -4
- 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 +2 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +0 -2
- package/dist/components/fields/Picker/Picker.js +8 -8
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
- package/dist/components/fields/RadioGroup/Radio.js +2 -2
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +0 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -6
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +2 -2
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -2
- package/dist/components/fields/Select/Select.js +7 -7
- 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/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -2
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +2 -2
- package/dist/components/fields/Slider/types.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.js +3 -3
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.js +5 -5
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/TagList.js.map +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 +2 -2
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +2 -2
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +0 -1
- package/dist/components/fields/TextInput/TextInputBase.js +3 -3
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +0 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorPanel.js.map +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/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +0 -1
- package/dist/components/form/Form/Field.d.ts +0 -1
- package/dist/components/form/Form/Field.js +3 -3
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.d.ts +1 -26
- package/dist/components/form/Form/Form.js +7 -116
- package/dist/components/form/Form/Form.js.map +1 -1
- package/dist/components/form/Form/FormContext.d.ts +30 -0
- package/dist/components/form/Form/FormContext.js +79 -0
- package/dist/components/form/Form/FormContext.js.map +1 -0
- package/dist/components/form/Form/FormElement.js +49 -0
- package/dist/components/form/Form/FormElement.js.map +1 -0
- package/dist/components/form/Form/ModernFormRoot.js +3 -2
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +2 -2
- package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +2 -2
- package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/dist/components/form/Form/SubmitError.d.ts +0 -1
- package/dist/components/form/Form/SubmitError.js +3 -3
- package/dist/components/form/Form/SubmitError.js.map +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.d.ts +2 -1
- package/dist/components/form/Form/index.js +6 -5
- package/dist/components/form/Form/index.js.map +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/types.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +2 -2
- package/dist/components/form/Form/use-field/use-field-props.js +4 -4
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field.js +2 -2
- package/dist/components/form/Form/use-field/use-field.js.map +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.d.ts +0 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/field-layout.js +1 -1
- package/dist/components/form/field-layout.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.d.ts +0 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
- package/dist/components/form/validation/resolve-validation-props.d.ts +0 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js.map +1 -1
- package/dist/components/form/wrapper.d.ts +0 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/form/wrapper.js.map +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/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +2 -2
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +3 -3
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js.map +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 +4 -4
- package/dist/components/navigation/Tabs/TabButton.js.map +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/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +2 -2
- package/dist/components/navigation/Tabs/Tabs.js.map +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/segmented-styles.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +2 -2
- 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 +2 -2
- package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js.map +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 +2 -2
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/AlertDialog/types.d.ts +0 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +2 -2
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +0 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +5 -5
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +2 -2
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +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/Dialog/use-dialog-container.js.map +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +2 -2
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -2
- package/dist/components/overlays/Modal/Tray.js.map +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/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js.map +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/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +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/PersistentNotificationsList.js.map +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-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +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-persistent-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +2 -2
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
- package/dist/components/overlays/Toast/useToast.js +2 -2
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -3
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +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/LoadingAnimation/LoadingAnimation.js.map +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 +8 -32
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +5 -1
- 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 +4 -4
- package/dist/i18n/instance.js +3 -3
- 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 +29 -27
- package/dist/index.js +69 -69
- 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/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- 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 +23 -11
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +2 -2
- 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/index.d.ts +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.d.ts +3 -3
- package/dist/utils/react/index.js +13 -13
- 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/useOverlayEscapeGuard.js.map +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/components/actions/Button.md +10 -0
- package/docs/components/actions/ButtonSplit.md +1 -1
- package/docs/glaze/contrast.mdx +751 -0
- package/docs/glaze/exporting.mdx +635 -0
- package/docs/glaze/getting-started.mdx +487 -0
- package/docs/glaze/hdr.mdx +523 -0
- package/docs/glaze/methodology.mdx +979 -0
- package/docs/glaze/migration.md +476 -285
- package/docs/glaze/mixes.mdx +348 -0
- package/docs/glaze/okhst.mdx +692 -0
- package/docs/glaze/reference/color-definitions.md +552 -0
- package/docs/glaze/reference/color-tokens.md +421 -0
- package/docs/glaze/reference/configuration.md +532 -0
- package/docs/glaze/reference/contrast.md +279 -0
- package/docs/glaze/reference/index.md +225 -0
- package/docs/glaze/reference/output.md +714 -0
- package/docs/glaze/reference/palette.md +435 -0
- package/docs/glaze/reference/theme.md +332 -0
- package/docs/glaze/reference/utilities.md +646 -0
- package/docs/glaze/schemes.mdx +644 -0
- package/docs/glaze/shadows-and-glows.mdx +550 -0
- package/package.json +4 -4
- package/dist/components/actions/index.js +0 -29
- package/dist/components/actions/index.js.map +0 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -4
- package/dist/components/fields/ListBoxPopover/index.d.ts +0 -5
- package/dist/components/overlays/Modal/Modal.d.ts +0 -3
- package/dist/components/overlays/Modal/Popover.d.ts +0 -7
- package/dist/components/overlays/Modal/Tray.d.ts +0 -5
- package/dist/components/overlays/Modal/Underlay.d.ts +0 -3
- package/dist/components/overlays/Modal/index.d.ts +0 -8
- package/docs/glaze/api.md +0 -2021
- package/docs/glaze/methodology.md +0 -686
- package/docs/glaze/okhst.md +0 -207
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemAction.js","names":["FocusableRef","BaseProps","mergeStyles","Styles","tasty","ComponentProps","forwardRef","HTMLAttributes","ReactNode","RefObject","CURRENT_CLEAR_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","ITEM_ACTION_BASE_STYLES","NOTE_CLEAR_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","CheckIcon","LoadingIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","mergeTooltipFocusProps","TooltipProvider","useItemActionContext","CubeUseActionProps","useAction","CubeItemActionProps","Omit","size","icon","children","isLoading","isSelected","type","theme","tooltip","title","styles","tabIndex","ItemActionVariant","ItemActionElement","qa","recipe","outline","focused","outlineOffset","cursor","disabled","preset","padding","Icon","variants","ItemAction","allProps","ref","$","_c","contextType","disableActionsFocus","menuItemAction","isDisabled","contextIsDisabled","isDisabledProp","mods","rest","t0","t1","t2","t3","undefined","isDisabledInherited","hasCheckmark","t4","finalIcon","t5","t6","t7","t8","checkmark","selected","loading","context","finalMods","ariaLabel","t9","htmlType","actionProps","t10","t11","t12","excludeFromTabOrder","role","Symbol","for","bb0","_isDisabled","finalTabIndex","tooltipContent","t13","tooltipProps","_title","t14","hasTooltip","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","finalType","renderButton","tooltipTriggerProps","tooltipRef","mergedProps","element","current","actionRef","triggerProps","tooltipRef_0","ItemActionProps","_c"],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\n\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n} from '../../../utils/react';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>, Omit<BaseProps, 'as'> {\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | (string & {});\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | (string & {});\n theme?:\n | 'current'\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Inherited-color theme — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.clear'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: mergeStyles(ITEM_ACTION_BASE_STYLES, {\n recipe: 'reset button',\n // Every variant below defines its own ring and overrides this one, which is\n // kept as the floor for a custom `type` that resolves to no variant at all.\n // It uses the same `#primary-accent-text` as every variant in\n // `item-themes.ts`.\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '$ring-width #primary-accent-text',\n },\n outlineOffset: '$outline-offset',\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n }),\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`. The\n // default `clear` flavour is borderless, so an action does not put a resting\n // chip on every row.\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n disableActionsFocus,\n menuItemAction,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n // Borderless by default: an action sits inside a row, where a resting chip\n // on every one of them would read as noise.\n type = 'clear',\n // The `current` theme derives every color from the row's inherited\n // `currentcolor`, so one default covers every host type and theme — no need\n // to mirror the row's own `theme` from context. An action that names a theme\n // is asking to paint itself rather than match its host, and gets it.\n theme = 'current',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override. Loading\n // always disables, as on `Button`: a second press while the first is still\n // running would run the action again, so not even `isDisabled={false}`\n // re-enables a loading action.\n const isDisabled = isLoading || (isDisabledProp ?? contextIsDisabled);\n\n // The host row is disabled too. The `current` theme paints from the inherited\n // color, which a disabled host has already faded, so fading a second time\n // washes the label out (see `CURRENT_ITEM_STYLES.color`). And like a disabled\n // fieldset, a disabled host leaves its button actions out of the tab order.\n const isDisabledInherited = !!contextIsDisabled && isDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = {\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n // The spinner takes the icon slot, so it needs the icon's padding.\n 'has-icon': !!finalIcon,\n 'inherit-disabled': isDisabledInherited,\n ...mods,\n };\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel =\n rest['aria-label'] ||\n (typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && typeof tooltip.title === 'string'\n ? tooltip.title\n : undefined);\n\n // `isDisabled` is dropped from the element: tasty would turn it into the\n // native `disabled` attribute, which `getDisabledElementProps` decides below.\n const {\n actionProps: { isDisabled: _isDisabled, ...actionProps },\n } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context. A loading action keeps focus it already has,\n // but Tab skips it until loading ends, tooltip or not. Otherwise an explicit\n // `tabIndex` wins over `excludeFromTabOrder`, which this prop would reset.\n const finalTabIndex =\n disableActionsFocus || isLoading\n ? -1\n : (rest.tabIndex ?? (rest.excludeFromTabOrder ? -1 : undefined));\n\n // Extract tooltip content and props\n const tooltipContent =\n typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && tooltip.title\n ? tooltip.title\n : undefined;\n\n const { title: _title, ...tooltipProps } =\n typeof tooltip === 'object' ? tooltip : {};\n\n // Only icon-only actions show their tooltip.\n const hasTooltip = !children && !!tooltipContent;\n\n // Native `disabled` drops focus. A loading action keeps it, so a keyboard\n // press doesn't lose its place. So does an action that disables itself while\n // showing a tooltip, often its only label, which keyboard users reach and read\n // as on `Button`. One whose host is disabled too stays native.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled,\n keepEvents: isLoading || (hasTooltip && !isDisabledInherited),\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the action.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n },\n )\n : mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n );\n\n return (\n <ItemActionElement\n {...mergedProps}\n disabled={isNativelyDisabled}\n variant={`${theme}.${finalType}` as ItemActionVariant}\n data-theme={theme}\n data-type={finalType}\n role={menuItemAction ? 'menuitem' : rest.role}\n data-menu-inline-action={menuItemAction || undefined}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (hasTooltip) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemAction.js","names":["FocusableRef","BaseProps","mergeStyles","Styles","tasty","ComponentProps","forwardRef","HTMLAttributes","ReactNode","RefObject","CURRENT_CLEAR_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","ITEM_ACTION_BASE_STYLES","NOTE_CLEAR_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","CheckIcon","LoadingIcon","getDisabledElementProps","omitActivationEventProps","mergeProps","mergeTooltipFocusProps","TooltipProvider","useItemActionContext","CubeUseActionProps","useAction","CubeItemActionProps","Omit","size","icon","children","isLoading","isSelected","type","theme","tooltip","title","styles","tabIndex","ItemActionVariant","ItemActionElement","qa","recipe","outline","focused","outlineOffset","cursor","disabled","preset","padding","Icon","variants","ItemAction","allProps","ref","$","_c","contextType","disableActionsFocus","menuItemAction","isDisabled","contextIsDisabled","isDisabledProp","mods","rest","t0","t1","t2","t3","undefined","isDisabledInherited","hasCheckmark","t4","finalIcon","t5","t6","t7","t8","checkmark","selected","loading","context","finalMods","ariaLabel","t9","htmlType","actionProps","t10","t11","t12","excludeFromTabOrder","role","Symbol","for","bb0","_isDisabled","finalTabIndex","tooltipContent","t13","tooltipProps","_title","t14","hasTooltip","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","finalType","renderButton","tooltipTriggerProps","tooltipRef","mergedProps","element","current","actionRef","triggerProps","tooltipRef_0","ItemActionProps","_c"],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\n\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n getDisabledElementProps,\n omitActivationEventProps,\n} from '../../../utils/react/disabledProps';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>, Omit<BaseProps, 'as'> {\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | (string & {});\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | (string & {});\n theme?:\n | 'current'\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Inherited-color theme — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.clear'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: mergeStyles(ITEM_ACTION_BASE_STYLES, {\n recipe: 'reset button',\n // Every variant below defines its own ring and overrides this one, which is\n // kept as the floor for a custom `type` that resolves to no variant at all.\n // It uses the same `#primary-accent-text` as every variant in\n // `item-themes.ts`.\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '$ring-width #primary-accent-text',\n },\n outlineOffset: '$outline-offset',\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n }),\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`. The\n // default `clear` flavour is borderless, so an action does not put a resting\n // chip on every row.\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n disableActionsFocus,\n menuItemAction,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n // Borderless by default: an action sits inside a row, where a resting chip\n // on every one of them would read as noise.\n type = 'clear',\n // The `current` theme derives every color from the row's inherited\n // `currentcolor`, so one default covers every host type and theme — no need\n // to mirror the row's own `theme` from context. An action that names a theme\n // is asking to paint itself rather than match its host, and gets it.\n theme = 'current',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override. Loading\n // always disables, as on `Button`: a second press while the first is still\n // running would run the action again, so not even `isDisabled={false}`\n // re-enables a loading action.\n const isDisabled = isLoading || (isDisabledProp ?? contextIsDisabled);\n\n // The host row is disabled too. The `current` theme paints from the inherited\n // color, which a disabled host has already faded, so fading a second time\n // washes the label out (see `CURRENT_ITEM_STYLES.color`). And like a disabled\n // fieldset, a disabled host leaves its button actions out of the tab order.\n const isDisabledInherited = !!contextIsDisabled && isDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = {\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n // The spinner takes the icon slot, so it needs the icon's padding.\n 'has-icon': !!finalIcon,\n 'inherit-disabled': isDisabledInherited,\n ...mods,\n };\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel =\n rest['aria-label'] ||\n (typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && typeof tooltip.title === 'string'\n ? tooltip.title\n : undefined);\n\n // `isDisabled` is dropped from the element: tasty would turn it into the\n // native `disabled` attribute, which `getDisabledElementProps` decides below.\n const {\n actionProps: { isDisabled: _isDisabled, ...actionProps },\n } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context. A loading action keeps focus it already has,\n // but Tab skips it until loading ends, tooltip or not. Otherwise an explicit\n // `tabIndex` wins over `excludeFromTabOrder`, which this prop would reset.\n const finalTabIndex =\n disableActionsFocus || isLoading\n ? -1\n : (rest.tabIndex ?? (rest.excludeFromTabOrder ? -1 : undefined));\n\n // Extract tooltip content and props\n const tooltipContent =\n typeof tooltip === 'string'\n ? tooltip\n : typeof tooltip === 'object' && tooltip.title\n ? tooltip.title\n : undefined;\n\n const { title: _title, ...tooltipProps } =\n typeof tooltip === 'object' ? tooltip : {};\n\n // Only icon-only actions show their tooltip.\n const hasTooltip = !children && !!tooltipContent;\n\n // Native `disabled` drops focus. A loading action keeps it, so a keyboard\n // press doesn't lose its place. So does an action that disables itself while\n // showing a tooltip, often its only label, which keyboard users reach and read\n // as on `Button`. One whose host is disabled too stays native.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled,\n keepEvents: isLoading || (hasTooltip && !isDisabledInherited),\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the action.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n },\n )\n : mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n );\n\n return (\n <ItemActionElement\n {...mergedProps}\n disabled={isNativelyDisabled}\n variant={`${theme}.${finalType}` as ItemActionVariant}\n data-theme={theme}\n data-type={finalType}\n role={menuItemAction ? 'menuitem' : rest.role}\n data-menu-inline-action={menuItemAction || undefined}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (hasTooltip) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { DisplayTransition } from "../helpers/DisplayTransition/DisplayTransition.js";
|
|
3
3
|
import { ITEM_RESTING_COLOR_VARIANTS, ROW_STATE_ALIASES, resolveItemVariant } from "../../data/item-themes.js";
|
|
4
4
|
import { ItemActionProvider } from "./ItemActionContext.js";
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { CubeUseActionProps } from "../use-action.js";
|
|
3
3
|
import { CubeItemActionProps } from "../ItemAction/ItemAction.js";
|
|
4
|
-
import "../ItemAction/index.js";
|
|
5
4
|
import { CubeItemBadgeProps } from "../../content/ItemBadge/ItemBadge.js";
|
|
6
|
-
import "../../content/Item/index.js";
|
|
7
5
|
import { CubeItemBaseProps as CubeItemProps } from "../../content/Item/Item.js";
|
|
8
6
|
import "../../../index.js";
|
|
9
7
|
import { Styles } from "@tenphi/tasty";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
|
-
import { useDismissParentPopover } from "../../../utils/react/usePopoverSync.js";
|
|
5
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
6
5
|
import { useAction } from "../use-action.js";
|
|
7
6
|
import { ItemAction } from "../ItemAction/ItemAction.js";
|
|
8
7
|
import { ItemBadge } from "../../content/ItemBadge/ItemBadge.js";
|
|
9
8
|
import { Item as _Item } from "../../content/Item/Item.js";
|
|
9
|
+
import { useDismissParentPopover } from "../../../utils/react/usePopoverSync.js";
|
|
10
10
|
import { ItemActionsWrapper } from "../ItemActionsWrapper.js";
|
|
11
11
|
import { tasty } from "@tenphi/tasty";
|
|
12
12
|
import { forwardRef, useMemo, useRef } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemButton.js","names":["FocusableRef","PressEvent","Styles","tasty","forwardRef","HTMLAttributes","ReactNode","useMemo","useRef","useEvent","mergeProps","mergeRefs","useDismissParentPopover","CubeItemProps","Item","ItemBadge","CubeItemActionProps","ItemAction","ItemActionsWrapper","CubeUseActionProps","useAction","CubeItemButtonProps","Omit","actions","size","wrapperStyles","actionsProps","HTMLDivElement","StyledItem","as","type","theme","styles","recipe","placeContent","ItemButton","allProps","ref","HTMLElement","mods","to","htmlType","onPress","onPressStart","_onPressStart","onPressEnd","_onPressEnd","onPressChange","_onPressChange","onPressUp","_onPressUp","navigationOptions","_navigationOptions","label","_label","autoHideActions","disableActionsFocus","isDisabled","isLoading","rest","finalIsDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","combinedRef","hasHadActions","undefined","withWrapper","ariaPressed","isSelected","role","renderButton","showActions","skipActionsWidthTransition","_ItemButton","Object","assign","Action","Badge","ItemButtonProps","ItemActionProps","Item"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, ReactNode, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport {\n mergeProps,\n mergeRefs,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { ItemBadge } from '../../content/ItemBadge';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction';\nimport { ItemActionsWrapper } from '../ItemActionsWrapper';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends\n Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, keyof CubeItemProps | 'as'> {\n /**\n * The row's trailing controls, rendered beside the button rather than inside\n * it. Pass `null` to keep an empty run — the row reserves no space for it, and\n * the button is not remounted when the actions arrive later.\n */\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n /**\n * Extra props spread on the actions run's container, e.g. event handlers.\n * Only meaningful together with `actions`.\n */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n // Consumed by useAction (it reads `allProps`); kept off the DOM element.\n navigationOptions: _navigationOptions,\n label: _label,\n actions,\n actionsProps,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` or `data-popover-keep-on-press` (presses only, see\n // Button) on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n // Once a row has had actions it keeps the wrapper, even after they go away.\n // Adding or removing a DOM level around the button remounts it — losing focus,\n // any running transition, and the element every ref in the tree is holding —\n // and a row whose actions come and go with a permission or a loading flag\n // would do that on every flip. The empty run reserves nothing: it publishes\n // a width of 0, so the row keeps no space for it, and costs one entry in a\n // shared size observer.\n //\n // `null` is how a caller asks for the run up front — \"there is a run here, it\n // just has nothing in it right now\" — so a row that knows its actions are\n // coming never has to remount to receive them. Only `undefined` means the row\n // has no run at all.\n const hasHadActions = useRef(false);\n\n if (actions !== undefined) {\n hasHadActions.current = true;\n }\n\n const withWrapper = hasHadActions.current;\n\n // `isSelected` on a button is a toggle state, so it reads as `aria-pressed`,\n // as `Button` does. Skipped on a link (`to`), for a call site's own `role` (a\n // tab or option wants `aria-selected`), and on a trigger that reports\n // `aria-expanded`, which is its state instead. An explicit value still wins.\n //\n // Set after the spread: `useButton` always returns an `aria-pressed` key,\n // undefined when the caller passed none, which would overwrite it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (allProps.isSelected != null &&\n actionProps.as !== 'a' &&\n allProps.role == null &&\n allProps['aria-expanded'] == null\n ? allProps.isSelected\n : undefined);\n\n const renderButton = (\n showActions: boolean,\n skipActionsWidthTransition = false,\n ) => (\n <StyledItem\n // Two different questions. `insideWrapper` is \"am I laid out for a\n // sibling run\", which stays true so the DOM does not restructure;\n // `actions` is \"is there anything in that run to reserve width for\",\n // which must go back to false when the run empties — it drives the\n // two-square minimum width and the suffix's padding, and a row that\n // reserved space for nothing would sit wider than it needs to.\n insideWrapper={withWrapper}\n showActions={showActions}\n skipActionsWidthTransition={skipActionsWidthTransition}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n aria-pressed={ariaPressed}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (withWrapper) {\n return (\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size as CubeItemProps['size']}\n mods={mods}\n styles={wrapperStyles}\n actions={actions}\n actionsProps={actionsProps}\n autoHideActions={autoHideActions}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {({ showActions, skipActionsWidthTransition }) =>\n renderButton(showActions, skipActionsWidthTransition)\n }\n </ItemActionsWrapper>\n );\n }\n\n return renderButton(false);\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":";;;;;;;;;;;;;;AAmCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;CAChB;AACF,CAAC;AAED,MAAMC,aAAa/B,WAAW,SAAS+B,WACrCC,UACAC,KACA;CACA,MAAM,EACJE,MACAC,IACAC,UACAZ,IACAC,OAAO,QACPC,QAAQ,WACRW,SAGAC,cAAcC,eACdC,YAAYC,aACZC,eAAeC,gBACfC,WAAWC,YAEXC,mBAAmBC,oBACnBC,OAAOC,QACP/B,SACAG,cACAF,OAAO,UACPC,eACA8B,kBAAkB,OAClBC,sBAAsB,OACtBC,YACAC,YAAY,OACZ,GAAGC,SACDvB;CAKJ,MAAMwB,kBACJH,eAAe,QAASC,aAAaD,eAAe;CAOtD,MAAMI,uBAAuBjD,wBAAwB;CACrD,MAAMkD,mBAAmBtD,OAA2B,IAAI;CAExD,MAAMuD,iBAAiBtD,UAAUuD,MAAkB;EACjDtB,UAAUsB,CAAC;EACX,MAAMC,KAAKH,iBAAiBI;EAC5B,IAAI,CAACD,IAAI;EACT,IAAIA,GAAGE,aAAa,sBAAsB,GAAG;EAC7C,IAAIF,GAAGG,QAAQ,mDAAmD,GAChE;EAEFP,qBAAqBI,EAAE;CACzB,CAAC;CAED,MAAM,EAAEI,gBAAgBjD,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAkB,YAAYG;EACZlB,SAASqB;CACX,GACA1B,GACF;CAIA,MAAMiC,cAAc/D,cACZI,UAAU0D,YAAYhC,KAAYyB,gBAAgB,GACxD,CAACO,YAAYhC,GAAG,CAClB;CAcA,MAAMkC,gBAAgB/D,OAAO,KAAK;CAElC,IAAIe,YAAYiD,KAAAA,GACdD,cAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJtC,SAAS,oBACRA,SAASuC,cAAc,QACxBN,YAAYxC,OAAO,OACnBO,SAASwC,QAAQ,QACjBxC,SAAS,oBAAoB,OACzBA,SAASuC,aACTH,KAAAA;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC,YAAD;EAOE,eAAeN;EACFK;EACeC;EAC5B,SAASxD,UAAU,OAAOiD,KAAAA;EAC1B,GAAK9D,WAAWiD,MAAMU,WAAW;EACjC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYvC;EAChBA;EACCC;EACDP;EACKkC;EACCD;CAAW,CAAA;CAI3B,IAAIgB,aACF,OACE,oBAAC,oBAAD;EACQ3C;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACG6B;EACIC;EACrB,YAAYI;EAEV,WAAA,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,4BAA0B;CAEpC,CAAA;CAIxB,OAAOF,aAAa,KAAK;AAC3B,CAAC;AAED,MAAMG,cAAcC,OAAOC,OAAO/C,YAAY;CAC5CgD,QAAQlE;CACRmE,OAAOrE;AACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"ItemButton.js","names":["FocusableRef","PressEvent","Styles","tasty","forwardRef","HTMLAttributes","ReactNode","useMemo","useRef","useEvent","mergeProps","mergeRefs","useDismissParentPopover","CubeItemProps","Item","ItemBadge","CubeItemActionProps","ItemAction","ItemActionsWrapper","CubeUseActionProps","useAction","CubeItemButtonProps","Omit","actions","size","wrapperStyles","actionsProps","HTMLDivElement","StyledItem","as","type","theme","styles","recipe","placeContent","ItemButton","allProps","ref","HTMLElement","mods","to","htmlType","onPress","onPressStart","_onPressStart","onPressEnd","_onPressEnd","onPressChange","_onPressChange","onPressUp","_onPressUp","navigationOptions","_navigationOptions","label","_label","autoHideActions","disableActionsFocus","isDisabled","isLoading","rest","finalIsDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","combinedRef","hasHadActions","undefined","withWrapper","ariaPressed","isSelected","role","renderButton","showActions","skipActionsWidthTransition","_ItemButton","Object","assign","Action","Badge","ItemButtonProps","ItemActionProps","Item"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, ReactNode, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useDismissParentPopover } from '../../../utils/react/usePopoverSync';\nimport { CubeItemProps, Item } from '../../content/Item/Item';\nimport { ItemBadge } from '../../content/ItemBadge/ItemBadge';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction/ItemAction';\nimport { ItemActionsWrapper } from '../ItemActionsWrapper';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends\n Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, keyof CubeItemProps | 'as'> {\n /**\n * The row's trailing controls, rendered beside the button rather than inside\n * it. Pass `null` to keep an empty run — the row reserves no space for it, and\n * the button is not remounted when the actions arrive later.\n */\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n /**\n * Extra props spread on the actions run's container, e.g. event handlers.\n * Only meaningful together with `actions`.\n */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n // Consumed by useAction (it reads `allProps`); kept off the DOM element.\n navigationOptions: _navigationOptions,\n label: _label,\n actions,\n actionsProps,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` or `data-popover-keep-on-press` (presses only, see\n // Button) on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n // Once a row has had actions it keeps the wrapper, even after they go away.\n // Adding or removing a DOM level around the button remounts it — losing focus,\n // any running transition, and the element every ref in the tree is holding —\n // and a row whose actions come and go with a permission or a loading flag\n // would do that on every flip. The empty run reserves nothing: it publishes\n // a width of 0, so the row keeps no space for it, and costs one entry in a\n // shared size observer.\n //\n // `null` is how a caller asks for the run up front — \"there is a run here, it\n // just has nothing in it right now\" — so a row that knows its actions are\n // coming never has to remount to receive them. Only `undefined` means the row\n // has no run at all.\n const hasHadActions = useRef(false);\n\n if (actions !== undefined) {\n hasHadActions.current = true;\n }\n\n const withWrapper = hasHadActions.current;\n\n // `isSelected` on a button is a toggle state, so it reads as `aria-pressed`,\n // as `Button` does. Skipped on a link (`to`), for a call site's own `role` (a\n // tab or option wants `aria-selected`), and on a trigger that reports\n // `aria-expanded`, which is its state instead. An explicit value still wins.\n //\n // Set after the spread: `useButton` always returns an `aria-pressed` key,\n // undefined when the caller passed none, which would overwrite it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (allProps.isSelected != null &&\n actionProps.as !== 'a' &&\n allProps.role == null &&\n allProps['aria-expanded'] == null\n ? allProps.isSelected\n : undefined);\n\n const renderButton = (\n showActions: boolean,\n skipActionsWidthTransition = false,\n ) => (\n <StyledItem\n // Two different questions. `insideWrapper` is \"am I laid out for a\n // sibling run\", which stays true so the DOM does not restructure;\n // `actions` is \"is there anything in that run to reserve width for\",\n // which must go back to false when the run empties — it drives the\n // two-square minimum width and the suffix's padding, and a row that\n // reserved space for nothing would sit wider than it needs to.\n insideWrapper={withWrapper}\n showActions={showActions}\n skipActionsWidthTransition={skipActionsWidthTransition}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n aria-pressed={ariaPressed}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (withWrapper) {\n return (\n <ItemActionsWrapper\n type={type}\n theme={theme}\n size={size as CubeItemProps['size']}\n mods={mods}\n styles={wrapperStyles}\n actions={actions}\n actionsProps={actionsProps}\n autoHideActions={autoHideActions}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {({ showActions, skipActionsWidthTransition }) =>\n renderButton(showActions, skipActionsWidthTransition)\n }\n </ItemActionsWrapper>\n );\n }\n\n return renderButton(false);\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":";;;;;;;;;;;;;;AAiCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;CAChB;AACF,CAAC;AAED,MAAMC,aAAa/B,WAAW,SAAS+B,WACrCC,UACAC,KACA;CACA,MAAM,EACJE,MACAC,IACAC,UACAZ,IACAC,OAAO,QACPC,QAAQ,WACRW,SAGAC,cAAcC,eACdC,YAAYC,aACZC,eAAeC,gBACfC,WAAWC,YAEXC,mBAAmBC,oBACnBC,OAAOC,QACP/B,SACAG,cACAF,OAAO,UACPC,eACA8B,kBAAkB,OAClBC,sBAAsB,OACtBC,YACAC,YAAY,OACZ,GAAGC,SACDvB;CAKJ,MAAMwB,kBACJH,eAAe,QAASC,aAAaD,eAAe;CAOtD,MAAMI,uBAAuBjD,wBAAwB;CACrD,MAAMkD,mBAAmBtD,OAA2B,IAAI;CAExD,MAAMuD,iBAAiBtD,UAAUuD,MAAkB;EACjDtB,UAAUsB,CAAC;EACX,MAAMC,KAAKH,iBAAiBI;EAC5B,IAAI,CAACD,IAAI;EACT,IAAIA,GAAGE,aAAa,sBAAsB,GAAG;EAC7C,IAAIF,GAAGG,QAAQ,mDAAmD,GAChE;EAEFP,qBAAqBI,EAAE;CACzB,CAAC;CAED,MAAM,EAAEI,gBAAgBjD,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAkB,YAAYG;EACZlB,SAASqB;CACX,GACA1B,GACF;CAIA,MAAMiC,cAAc/D,cACZI,UAAU0D,YAAYhC,KAAYyB,gBAAgB,GACxD,CAACO,YAAYhC,GAAG,CAClB;CAcA,MAAMkC,gBAAgB/D,OAAO,KAAK;CAElC,IAAIe,YAAYiD,KAAAA,GACdD,cAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJtC,SAAS,oBACRA,SAASuC,cAAc,QACxBN,YAAYxC,OAAO,OACnBO,SAASwC,QAAQ,QACjBxC,SAAS,oBAAoB,OACzBA,SAASuC,aACTH,KAAAA;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC,YAAD;EAOE,eAAeN;EACFK;EACeC;EAC5B,SAASxD,UAAU,OAAOiD,KAAAA;EAC1B,GAAK9D,WAAWiD,MAAMU,WAAW;EACjC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYvC;EAChBA;EACCC;EACDP;EACKkC;EACCD;CAAW,CAAA;CAI3B,IAAIgB,aACF,OACE,oBAAC,oBAAD;EACQ3C;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACG6B;EACIC;EACrB,YAAYI;EAEV,WAAA,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,4BAA0B;CAEpC,CAAA;CAIxB,OAAOF,aAAa,KAAK;AAC3B,CAAC;AAED,MAAMG,cAAcC,OAAOC,OAAO/C,YAAY;CAC5CgD,QAAQlE;CACRmE,OAAOrE;AACT,CAAC"}
|
|
@@ -3,8 +3,8 @@ import { ItemAction } from "../ItemAction/ItemAction.js";
|
|
|
3
3
|
import { CubeMenuItemProps, MenuCollectionItem as _MenuCollectionItem } from "./MenuCollectionItem.js";
|
|
4
4
|
import { MenuTrigger as _MenuTrigger } from "./MenuTrigger.js";
|
|
5
5
|
import { SubMenuTrigger } from "./SubMenuTrigger.js";
|
|
6
|
-
import { ItemBadge } from "../../content/ItemBadge/ItemBadge.js";
|
|
7
6
|
import "../index.js";
|
|
7
|
+
import { ItemBadge } from "../../content/ItemBadge/ItemBadge.js";
|
|
8
8
|
import { CubeCollectionItemProps } from "../../CollectionItem.js";
|
|
9
9
|
import "../../../index.js";
|
|
10
10
|
import { BasePropsWithoutChildren, ContainerStyleProps, Styles } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useMenuContext } from "./context.js";
|
|
@@ -1 +1 @@
|
|
|
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","_c","mergeProps","Section","BaseSection","MenuCollectionItem","MenuTrigger"],"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\n 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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"}
|
|
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","_c","mergeProps","Section","BaseSection","MenuCollectionItem","MenuTrigger"],"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/mergeProps';\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\n 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":";;;;;;;;;;;;;;;;;;AAmFA,SAAA2D,KAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAIE,MAAA,EAAArB,QAAAC,QAAAC,YAAAC,cAAAC,cAAAE,YAAAC,eAAAC,sBAAAI,MAAAU,IAAAC,IAAAV,cAAAC,qBAAAC,mBAAAjB,UAAA,GAAA0B,SAgBIN;CAPF,MAAAN,OAAAU,OAAAG,KAAAA,IAAA,WAAAH;CAQF,MAAAI,SAAenE,aAAa4D,GAAG;CAC/B,MAAAQ,eAAqB7C,eAAe;CAGpC,MAAA8C,mBAAyBf,eAAA,IAAmBgB,IAAIhB,YAAwB,IAA/CY,KAAAA;CACzB,MAAAK,0BAAgChB,sBAAA,IACxBe,IAAIf,mBACA,IAFoBW,KAAAA;CAIhC,MAAAM,wBAA8BhB,qBAAAC,SAAA;EAExB,IAAIA,SAAS,OAAK;GAEhB,MAAAgB,UAAgBC,MAAKC,KAAMC,MAAKC,WAAWC,QAAS,CAAC,CAAC,CAAAC,IACpDC,KACF;GACAxB,kBAAkBiB,OAAO;EAAC,OACrB,IAAIhB,gBAAgBa,KACzBd,kBAAkBkB,MAAKC,KAAMlB,IAAI,CAAC,CAAAsB,IAAKE,MAAoB,CAAC;OAE5DzB,kBAAkB,CAAA,CAAE;CACrB,IAZuBU,KAAAA;CAchB,IAAAgB;CAAA,IAAArB,EAAA,OAAAtB,UAAA;EAGF2C,KAAA3C,YAAA4C,UAAyB5C,SAASC,KAAG,IAArC0B,KAAAA;EAAkDL,EAAA,KAAAtB;EAAAsB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAD9D,MAAAuB,gBAAsB/D,aAAW+C,cAAcH,MAAM;EAAA1B,UACzC2C;EAAkD5B,cAC9Ce;EAAgBd,qBACTgB;EAAuBf,mBACzBgB;CACrB,CAAC;CAGD,MAAAI,QAAcxD,aAAa;EAAA,GACtBgE;EAAa9C,UACN8C,cAAa9C;CACzB,CAAC;CACD,MAAA+C,kBAAwB,CAAA,GAAIT,MAAKC,UAAW;CAC5C,MAAAS,cAAoBD,gBAAeE,KAAMC,MAAiC;CAE1E,MAAA,EAAAC,cAAsBxE,QACpB;EAAA,GAAKmE;EAAaM,WAAaxB,KAAAA;CAAU,GACzCU,OACAT,MACF;CACA,MAAAwB,0BAA+BC,UAAA;EAC7B,MAAAC,OAAaD,MAAKE;EAClB,MAAAC,SAAcH,MAAKI,OAAsBE,QACvC,sBACF;EACA,IACEN,MAAKO,oBAAL,CACCC,UACDA,OAAIF,QAAS,iBAAe,MAAML,QAClCD,MAAKS,UACLT,MAAKU,WACLV,MAAKW,WACLX,MAAKY,YAAYC,eANjB,CAOCZ,KAAIa,cAAe,iDAA6C,GAAC;EAGpE,MAAAC,MAAYP,OAAIF,QAAsB,iBAAiB;EAEvD,IACEE,OAAIF,QAAS,4BAGkC,MAF9CN,MAAKpD,QAAS,YACboD,MAAKpD,QAAS,cACboD,MAAKpD,IAAIoE,WAAY,KAAKhB,MAAKpD,QAAS,MAAK;GAEhDmE,KAAGD,cAA6B,4BAAmC,CAAC,EAAAG,MAAC;GAAC;EAAA;EAGxE,IAAIjB,MAAKkB,UAAS;EAClB,MAAAC,QAAcrC,MAAKC,KACjBkB,KAAImB,iBAA+B,sBAAoB,CACzD,CAAC,CAAAC,QACCC,YACEA,QAAOhB,QAAS,iBAAe,MAAML,QAArC,CACCqB,QAAOC,aAAc,UAAU,KAChCD,QAAOE,aAAc,eAAe,MAAM,UAC1CrH,YAAYmH,OAAO,CACvB;EACA,MAAAG,QAAcN,MAAKO,QAASlB,MAAI;EAChC,IAAIiB,QAAQ,GAAC;EACTE,IAAAA;EACJ,IAAI3B,MAAKpD,QAAS,aAChB+E,OACER,MAAMM,QAAQ,OACbjC,cAAalC,oBAAqB,QAAQ6D,MAAK,KAA/C7C,KAAAA;OACA,IAAI0B,MAAKpD,QAAS,WACrB+E,OACER,MAAMM,QAAQ,OACbjC,cAAalC,oBAAqB,QAAQ6D,MAAKS,GAAI,EAAc,IAAjEtD,KAAAA;OACA,IAAI0B,MAAKpD,QAAS,QAAQ+E,OAAOR,MAAK;OACtC,IAAInB,MAAKpD,QAAS,OAAO+E,OAAOR,MAAKS,GAAI,EAAE;OAC3C,KACF5B,MAAKpD,QAAS,gBAAgBoD,MAAKpD,QAAS,gBAA7CmE,OAAA,CAECP,OAAIe,aAAc,eAAe,GAAC;GAEnC,MAAAM,WAAiBV,MAAKE,QACpBS,cAAaR,UAAOhB,QAAS,iBAAiB,MAAMS,GACtD;GACA,MAAAgB,UACE/B,MAAKpD,SACJoF,iBAAiBjB,GAAG,CAAC,CAAAkB,cAAe,QAApC,cAAA;GAGHN,OAAOE,SAASA,SAAQH,QAASlB,MAAI,KAAKuB,UAAA,IAAA;EAAtC;EAEN,IAAIJ,MAAI;GACN3B,MAAKkC,eAAgB;GACrBlC,MAAKmC,gBAAiB;GACtBR,KAAIV,MAAO;GAAC,OACL;EAAI;CACZ;CAEH,MAAA/D,SAAexB,cAAc8D,eAAe7E,gBAAgB;CAK5D,MAAA,EAAAyH,IAAAC,KAAA,cAAAC,YAAA,mBAAAC,iBAAA,oBAAAC,kBAAA,gBAAAC,cAAA,GAAAC,iBAOI7H,gBAAgB2E,aAAa;CAEjC,MAAAoD,cAAoB;EAAAC,SACTrD,cAAasD,MAAcD;EAAA/F,QAC5B,CAAC,CAACA;EAAMD,QACR,CAAC,CAACA;CACZ;CAEA,MAAAkG,WAAiB,EAAAC,UACLtD,YACZ;CAKArF,WAAWmE,cAAcD,MAAM;CAE/B,MAAA0E,gBAAyC,CAAA;CACzC,IAAAC,iBAAqB;CAErBzD,gBAAe0D,SAASC,WAAA;EACtB,MAAAC,WAAiBzH,oBAAoB4E,OAAI5D,GAAI;EAC7C,IAAI4D,OAAI8C,SAAU,WAAS;GACzB,IAAI,CAACJ,gBACHD,cAAaM,KACX,oBAAC,eAAD;IAEO,MAAA;IACY,oBAAA;GAAY,GAFxB,WAAWF,UAEa,CAEjC;GAGFJ,cAAaM,KACX,oBAAC,aAAD;IAEQ/C,MAAAA;IACCxB;IACC5B,QAAAA;IACID;IACGE,eAAAA;IACTI;GAAI,GANL4F,QAMK,CAEd;GAEAH,iBAAiBA;GAAH;EAAA;EAIhB,IAAAM,WACE,oBAAC,UAAD;GAEQhD,MAAAA;GACCxB;GACC7B,QAAAA;GACFM;EAAI,GAJL4F,QAIK;EAQd,IAAI7C,OAAIzC,OAAe0F,SACrBD,WAAWhD,OAAIzC,MAAM0F,QAASD,QAAQ;OACjC,IAAKhD,OAAWiD,SAErBD,WAAYhD,OAAWiD,QAAUD,QAAQ;EAI3CP,cAAaM,KAAMxI,MAAK2I,aAAcF,UAAU,EAAA5G,KAAOyG,SAAS,CAAC,CAAC;CAAC,CACpE;CAAC,IAAAM;CAAA,IAAA1F,EAAA,OAAApB,UAAAoB,EAAA,OAAAjB,gBAAAiB,EAAA,OAAAR,MAAA;EASGkG,KAAA9G,SACC,oBAAC,cAAD;GAAyBY,aAAAA;GAAcT,QAAAA;GACpCH,UAAAA;EADU,CAAA,IAIb,oBAAA,OAAA,EAAU,MAAA,eAAc,CAAA;EACzBoB,EAAA,KAAApB;EAAAoB,EAAA,KAAAjB;EAAAiB,EAAA,KAAAR;EAAAQ,EAAA,KAAA0F;CAAA,OAAAA,KAAA1F,EAAA;CAAA,IAAA2F;CAAA,IAAA3F,EAAA,OAAAuB,iBAAAvB,EAAA,OAAA8B,0BAAA9B,EAAA,OAAA4B,WAAA;EAWY+D,MAAAC,YAAA;GACTrE,cAAaM,YAAaE,OAAK;GAC/B,IAAI,CAACA,QAAKO,oBAAN,CAA4BR,uBAAuBC,OAAK,GAC1DH,UAASC,YAAaE,OAAK;EAAE;EAChC/B,EAAA,KAAAuB;EAAAvB,EAAA,KAAA8B;EAAA9B,EAAA,KAAA4B;EAAA5B,EAAA,KAAA2F;CAAA,OAAAA,KAAA3F,EAAA;CAAA,IAAA6F;CAAA,IAAA7F,EAAA,QAAAnB,UAAAmB,EAAA,QAAAhB,gBAAAgB,EAAA,QAAAR,MAAA;EAKFqG,KAAAhH,SACC,oBAAC,cAAD;GAAyBW,aAAAA;GAAcR,QAAAA;GACpCH,UAAAA;EADU,CAAA,IAIb,oBAAA,OAAA,EAAU,MAAA,eAAc,CAAA;EACzBmB,EAAA,MAAAnB;EAAAmB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAR;EAAAQ,EAAA,MAAA6F;CAAA,OAAAA,KAAA7F,EAAA;CAAA,OAtCH,qBAAC,mBAAD;EACMG;EACIlB;EACF0F,MAAAA;EAAW,GACbF;EAJN,UAAA;GAMGiB;GAOD,oBAAC,YAAD;IAAW,GACLlI,aACF;KAAAyB,QACUH;KAAU,aACLU;KAAIqF,MACXC;IACR,GACAlD,SACF;IACKtB,KAAAA;IACM,WAAAqF;IAKL,MAAA/D,UAASkE,QAAT;IAELd,UAAAA;GAjBQ,CAAA;GAmBVa;EAhCe;;AAuCE;AAxQxB,SAAAlE,OAAAY,MAAA;CAAA,OA2DqDA,KAAI8C,SAAU;AAAS;AA3D5E,SAAAjE,OAAA2E,OAAA;CAAA,OAuC0DC,OAAOrH,KAAG;AAAC;AAvCrE,SAAAwC,MAAAxC,KAAA;CAAA,OAmC0BqH,OAAOrH,GAAG;AAAC;AA2OrC,MAAMsH,QAAQnJ,MAAMoJ,WAAWrG,IAAI;AAMnC,MAAMxC,YAAUiJ,OAAOC,OAAOjJ,SAAa,EACzCkJ,aAAa,UACf,CAAC;AASD,MAAMI,SAASN,OAAOC,OAAON,OAA0B;CACrDS,MAAM9I;CACNP,SAAAA;CACAgB;CACAsI,SAAS5I;CACTyI,aAAa;AACf,CAAC;AAEDI,OAAOJ,cAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { normalizeNavigationUrl } from "../../../providers/navigation-url.js";
|
|
3
3
|
import { parseTo } from "../use-action.js";
|
|
4
4
|
import { COLLECTION_ITEM_CLICK, CollectionItem as _CollectionItem } from "../../CollectionItem.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { isExternalUrl, normalizeNavigationUrl } from "../../../providers/navigation-url.js";
|
|
4
4
|
import { useNavigation } from "../../../providers/use-navigation.js";
|
|
5
5
|
import { parseTo } from "../use-action.js";
|
|
6
6
|
import { COLLECTION_ITEM_CLICK, filterCollectionItemProps } from "../../CollectionItem.js";
|
|
7
|
+
import { RightIcon } from "../../../icons/RightIcon.js";
|
|
7
8
|
import { useMenuContext } from "./context.js";
|
|
8
9
|
import { CURRENT_DOCUMENT_LINK } from "./MenuCollectionItem.js";
|
|
9
|
-
import { RightIcon } from "../../../icons/RightIcon.js";
|
|
10
10
|
import { ItemWithNativeLinks } from "../../content/Item/ItemWithNativeLinks.js";
|
|
11
11
|
import { SubmenuTriggerContext } from "./SubmenuTriggerContext.js";
|
|
12
12
|
import { c } from "react/compiler-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.js","names":["ClearPressResponder","openLink","shouldClientNavigate","useGlobalListeners","FocusableElement","Key","Node","Styles","AnchorHTMLAttributes","KeyboardEvent","MouseEvent","PointerEvent","useContext","useRef","FocusRing","useMenuItem","TreeState","RightIcon","isExternalUrl","normalizeNavigationUrl","useNavigation","mergeProps","COLLECTION_ITEM_CLICK","filterCollectionItemProps","ItemWithNativeLinks","parseTo","useMenuContext","CURRENT_DOCUMENT_LINK","SubmenuTriggerContext","MenuSelectionType","MenuItemProps","item","T","id","state","styles","isVirtualized","isDisabled","onAction","key","size","splitMenuItemProps","props","Record","semanticId","rowProps","semanticProps","value","Object","entries","startsWith","includes","primaryMenuItemProps","ariaProps","consumerProps","isLink","type","role","undefined","MenuItem","$","_c","submenuContext","t0","MenuLinkItem","activatedLink","linkRef","to","href","navigationOptions","cleanTo","parsedTo","nativeRoute","isCurrentDocument","t1","t2","isExternal","t3","relative","t4","navigate","resolvedHref","isDefault","linkHref","String","itemProps","t5","Symbol","for","element","current","onNativeLinkElement","t6","event","target","Element","closest","onClick","t7","event_0","anchor","cloneNode","HTMLAnchorElement","openNative","t8","event_1","anchor_0","hasAttribute","defaultPrevented","button","preventDefault","contains","t9","MenuItemContent","onClose","closeOnSelect","rendered","_to","_navigationOptions","routerOptions","_routerOptions","_href","_target","rel","_rel","download","_download","ping","_ping","referrerPolicy","_referrerPolicy","hrefLang","_hrefLang","filteredItemProps","mods","itemMods","qa","itemQa","isSelectable","selectionManager","selectionMode","isDisabledKey","isLoading","ref","rowRef","restoreFocusRef","elementRef","ownerDocument","activeElement","focus","preventScroll","updateSemanticElement","menuItemProps","labelProps","descriptionProps","keyboardShortcutProps","isFocused","isSelected","isPressed","isOpen","isVirtualFocused","focusedKey","onKeyDown","itemOnKeyDown","onPointerDown","itemOnPointerDown","onPointerUp","itemOnPointerUp","_renderedHref","_renderedTarget","_renderedRel","_renderedDownload","_renderedPing","_renderedPolicy","_renderedHrefLang","itemOwnProps","primaryInCell","actions","rowItemProps","rowConsumerProps","consumerSemanticProps","skippedPointerUp","addGlobalListener","removeAllGlobalListeners","ctrlKey","metaKey","altKey","shiftKey","pointerId","currentTarget","recordSkippedUp","up","clearSkippedUp","cancel","nativeEvent","e","HTMLElement","stopPropagation","isComposing","repeat","dispatchEvent","window","bubbles","cancelable","detail","click","focused","pressed","selected","disabled","submenu","menuitem","nativeLinkHref","event_2","tabIndex","onMouseDown","nativeLinkProps","e_0","setFocused","setFocusedKey","label","labelledBy","t10","element_0","t11","element_1","t12","t13","rightIcon","content","style","as","onNavigate","onMouseEnter","onMouseLeave","event_3","event_4","event_5","triggerRef","mergeProps","_c"],"sources":["../../../../src/components/actions/Menu/MenuItem.tsx"],"sourcesContent":["import { ClearPressResponder } from '@react-aria/interactions';\nimport {\n openLink,\n shouldClientNavigate,\n useGlobalListeners,\n} from '@react-aria/utils';\nimport { FocusableElement, Key, Node } from '@react-types/shared';\nimport { Styles } from '@tenphi/tasty';\nimport {\n AnchorHTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n useContext,\n useRef,\n} from 'react';\nimport { FocusRing, useMenuItem } from 'react-aria';\nimport { TreeState } from 'react-stately';\n\nimport { RightIcon } from '../../../icons/RightIcon';\nimport {\n isExternalUrl,\n normalizeNavigationUrl,\n} from '../../../providers/navigation-url';\nimport { useNavigation } from '../../../providers/use-navigation';\nimport { mergeProps } from '../../../utils/react';\nimport {\n COLLECTION_ITEM_CLICK,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { ItemWithNativeLinks } from '../../content/Item/ItemWithNativeLinks';\nimport { parseTo } from '../use-action';\n\nimport { useMenuContext } from './context';\nimport { CURRENT_DOCUMENT_LINK } from './MenuCollectionItem';\nimport { SubmenuTriggerContext } from './SubmenuTriggerContext';\n\nexport type MenuSelectionType = 'checkbox' | 'radio' | 'checkmark';\n\nexport interface MenuItemProps<T> {\n item: Node<T>;\n /**\n * The item element's id. A menu whose focus stays elsewhere — `CommandMenu`\n * keeps it in its search input — points `aria-activedescendant` at it.\n */\n id?: string;\n state: TreeState<T>;\n styles?: Styles;\n isVirtualized?: boolean;\n isDisabled?: boolean;\n onAction?: (key: Key) => void;\n size?: 'small' | 'medium' | (string & {});\n}\n\n// The primary control owns accessibility; the list row keeps styling and presses.\nfunction splitMenuItemProps(props: Record<string, any>, semanticId = false) {\n const rowProps: Record<string, any> = {};\n const semanticProps: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n if (\n (key.startsWith('aria-') && key !== 'aria-hidden') ||\n (semanticId && key === 'id') ||\n [\n 'role',\n 'tabIndex',\n 'onFocus',\n 'onBlur',\n 'data-key',\n 'data-collection',\n ].includes(key)\n )\n semanticProps[key] = value;\n else rowProps[key] = value;\n }\n return { rowProps, semanticProps };\n}\n\nfunction primaryMenuItemProps(\n ariaProps: Record<string, any>,\n consumerProps: Record<string, any>,\n isLink: boolean,\n id: string | undefined,\n type: string | undefined,\n) {\n const props = mergeProps(ariaProps, consumerProps);\n // Destinations cannot change the menu's checked selection.\n if (isLink) {\n props.role = 'menuitem';\n props['aria-checked'] = undefined;\n }\n if (!('aria-labelledby' in consumerProps)) {\n props['aria-labelledby'] =\n consumerProps['aria-label'] != null\n ? undefined\n : id && type !== 'header' && type !== 'card'\n ? id\n : ariaProps['aria-labelledby'];\n }\n props['aria-hidden'] = undefined;\n props['data-menu-native-primary'] = '';\n return props;\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n const submenuContext = useContext(SubmenuTriggerContext);\n return !submenuContext ? (\n <MenuLinkItem {...props} />\n ) : (\n <MenuItemContent {...props} />\n );\n}\n\nfunction MenuLinkItem<T>(props: MenuItemProps<T>) {\n const activatedLink = useRef<HTMLAnchorElement>(null);\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { to, href, navigationOptions } = props.item.props;\n const { cleanTo: parsedTo, nativeRoute } = parseTo(to);\n const isCurrentDocument = props.item.props[CURRENT_DOCUMENT_LINK];\n const cleanTo =\n to != null\n ? parsedTo\n : isCurrentDocument\n ? ''\n : typeof href === 'string'\n ? normalizeNavigationUrl(href)\n : href;\n const isExternal = typeof cleanTo === 'string' && isExternalUrl(cleanTo);\n const { navigate, resolvedHref, isDefault } = useNavigation(\n isExternal ? '.' : cleanTo || '.',\n { relative: navigationOptions?.relative },\n );\n const linkHref =\n isCurrentDocument || (nativeRoute && cleanTo === '')\n ? ''\n : isExternal\n ? String(cleanTo)\n : resolvedHref;\n const itemProps = props.item.props;\n const onNativeLinkElement = (element: HTMLAnchorElement | null) => {\n linkRef.current = element;\n };\n const onClick = (event: MouseEvent<FocusableElement>) => {\n const target = event.target as Element;\n activatedLink.current =\n target.closest?.<HTMLAnchorElement>('a[data-menu-native-link]') ??\n linkRef.current;\n itemProps[COLLECTION_ITEM_CLICK]?.(event);\n };\n const openNative = (event: MouseEvent<FocusableElement>) => {\n const anchor = activatedLink.current;\n if (!anchor) return;\n openLink(anchor.cloneNode(false) as HTMLAnchorElement, event, false);\n };\n return (\n <MenuItemContent\n {...props}\n nativeLinkHref={linkHref}\n onNativeLinkElement={onNativeLinkElement}\n onClick={onClick}\n onNavigate={(event) => {\n const anchor = activatedLink.current;\n if (\n !anchor?.hasAttribute('href') ||\n event.defaultPrevented ||\n event.button !== 0\n )\n return;\n if (\n shouldClientNavigate(anchor, event) &&\n !isDefault &&\n !isCurrentDocument &&\n !nativeRoute &&\n !isExternal\n ) {\n event.preventDefault();\n if (cleanTo !== undefined) navigate(cleanTo, navigationOptions);\n } else if (\n !(event.target instanceof Element) ||\n !anchor.contains(event.target)\n ) {\n openNative(event);\n }\n }}\n />\n );\n}\n\nfunction MenuItemContent<T>(\n props: MenuItemProps<T> & {\n nativeLinkHref?: string;\n onNativeLinkElement?: (element: HTMLAnchorElement | null) => void;\n onNavigate?: (event: MouseEvent<FocusableElement>) => void;\n onClick?: (event: MouseEvent<FocusableElement>) => void;\n },\n) {\n const { item, state, styles, isVirtualized, onAction, size, id } = props;\n const { onClose, closeOnSelect } = useMenuContext();\n const { rendered, key, props: itemProps } = item;\n\n // Check if this item is wrapped in a SubmenuTriggerContext\n const submenuContext = useContext(SubmenuTriggerContext);\n\n // Filter out service props (react-stately and parent-handled props)\n // All remaining props are safe to pass to Item component\n const {\n to: _to,\n navigationOptions: _navigationOptions,\n routerOptions: _routerOptions,\n href: _href,\n target: _target,\n rel: _rel,\n download: _download,\n ping: _ping,\n referrerPolicy: _referrerPolicy,\n hrefLang: _hrefLang,\n ...filteredItemProps\n } = filterCollectionItemProps(itemProps);\n\n // Extract specific props that need special handling\n const { hotkeys, mods: itemMods, qa: itemQa } = filteredItemProps;\n\n const isSelectable = state.selectionManager.selectionMode !== 'none';\n const isDisabledKey =\n state.selectionManager.isDisabled(key) ||\n submenuContext?.isDisabled ||\n (filteredItemProps.isLoading && filteredItemProps.isDisabled !== false);\n\n const ref = useRef<HTMLElement>(null);\n const rowRef = useRef<HTMLElement>(null);\n const restoreFocusRef = useRef(false);\n const elementRef = ref;\n const updateSemanticElement = (element: HTMLElement | null) => {\n if (!element)\n restoreFocusRef.current =\n ref.current === ref.current?.ownerDocument.activeElement;\n ref.current = element;\n if (element && restoreFocusRef.current) {\n restoreFocusRef.current = false;\n element.focus({ preventScroll: true });\n }\n };\n\n const {\n menuItemProps,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n isFocused,\n isSelected,\n isPressed,\n isDisabled,\n } = useMenuItem(\n {\n id: id ?? itemProps.id,\n isSelected: state.selectionManager.isSelected(key),\n isDisabled: isDisabledKey,\n 'aria-label': item['aria-label'],\n 'aria-haspopup': submenuContext ? 'menu' : undefined,\n 'aria-expanded': submenuContext\n ? submenuContext.isOpen\n ? 'true'\n : 'false'\n : undefined,\n key,\n onClose: submenuContext ? undefined : onClose, // Don't close menu for submenu triggers\n closeOnSelect: submenuContext ? false : closeOnSelect, // Don't close on submenu trigger selection\n isVirtualized,\n onAction,\n onClick: (event) => {\n (props.onClick ?? itemProps[COLLECTION_ITEM_CLICK])?.(event);\n submenuContext?.onAction?.();\n },\n },\n state,\n elementRef,\n );\n\n // Selection indicator will be handled by Item component\n const isVirtualFocused = state.selectionManager.focusedKey === key;\n\n // `mergeProps` chains handlers rather than replacing them, so a handler of\n // the item's own passed to it again runs twice. `onKeyDown` used to be: Enter\n // and Space each click the item, so every keyboard activation fired\n // `onAction` twice. It is taken out here and passed once.\n const {\n onKeyDown: itemOnKeyDown,\n onPointerDown: itemOnPointerDown,\n onPointerUp: itemOnPointerUp,\n href: _renderedHref,\n target: _renderedTarget,\n rel: _renderedRel,\n download: _renderedDownload,\n ping: _renderedPing,\n referrerPolicy: _renderedPolicy,\n hrefLang: _renderedHrefLang,\n ...itemOwnProps\n } = menuItemProps as typeof menuItemProps &\n AnchorHTMLAttributes<HTMLAnchorElement>;\n const isLink = itemProps.href != null && !submenuContext;\n const primaryInCell =\n isLink ||\n (!!filteredItemProps.actions && filteredItemProps.actions !== true);\n const { rowProps: rowItemProps, semanticProps } = splitMenuItemProps(\n itemOwnProps,\n props.id != null,\n );\n const { rowProps: rowConsumerProps, semanticProps: consumerSemanticProps } =\n splitMenuItemProps(filteredItemProps);\n const skippedPointerUp = useRef<globalThis.PointerEvent | null>(null);\n const { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n const onPointerDown = (event: PointerEvent<FocusableElement>) => {\n skippedPointerUp.current = null;\n removeAllGlobalListeners();\n // A modified native gesture must not start Aria's delayed-click fallback.\n if (\n isLink &&\n (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey)\n ) {\n const pointerId = event.pointerId;\n const ownerDocument = event.currentTarget.ownerDocument;\n const recordSkippedUp = (up: globalThis.PointerEvent) => {\n if (up.pointerId !== pointerId) return;\n skippedPointerUp.current = up;\n removeAllGlobalListeners();\n };\n const clearSkippedUp = (cancel: globalThis.PointerEvent) => {\n if (cancel.pointerId !== pointerId) return;\n skippedPointerUp.current = null;\n removeAllGlobalListeners();\n };\n addGlobalListener(ownerDocument, 'pointerup', recordSkippedUp, true);\n addGlobalListener(ownerDocument, 'pointercancel', clearSkippedUp, true);\n return;\n }\n itemOnPointerDown?.(event);\n };\n const onPointerUp = (event: PointerEvent<FocusableElement>) => {\n if (skippedPointerUp.current === event.nativeEvent) {\n skippedPointerUp.current = null;\n return;\n }\n if (\n isLink &&\n (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey)\n )\n return;\n itemOnPointerUp?.(event);\n };\n const onKeyDown = (e: KeyboardEvent<FocusableElement>) => {\n // Inline controls own activation; the menu handles their row navigation.\n if ((e.target as HTMLElement).closest('[data-element=\"Actions\"]')) return;\n if (primaryInCell && (e.key === ' ' || e.key === 'Enter')) {\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (e.nativeEvent.isComposing || (e.key === ' ' && e.repeat)) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (isLink && (e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {\n itemOnKeyDown?.(e);\n e.preventDefault();\n e.stopPropagation();\n e.currentTarget.dispatchEvent(\n new window.MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n detail: 1,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n }),\n );\n return;\n }\n }\n if (submenuContext?.onKeyDown) {\n // The submenu goes first; a key it handles is not the item's too.\n submenuContext.onKeyDown?.(e);\n if (!e.defaultPrevented) itemOnKeyDown?.(e);\n } else itemOnKeyDown?.(e);\n // Aria records Enter but expects an A to have native link activation.\n if (\n primaryInCell &&\n !isLink &&\n !submenuContext &&\n e.key === 'Enter' &&\n !e.repeat &&\n !e.nativeEvent.isComposing\n ) {\n e.preventDefault();\n e.stopPropagation();\n elementRef.current?.click();\n }\n };\n\n const mods = {\n ...itemMods,\n focused: isFocused || isVirtualFocused,\n pressed: isPressed,\n selected: isSelected,\n disabled: isDisabled,\n submenu: !!submenuContext,\n menuitem: true,\n };\n\n const nativeLinkProps: AnchorHTMLAttributes<HTMLAnchorElement> = {\n href: isLink && !isDisabled ? props.nativeLinkHref : undefined,\n target: itemProps.target,\n rel: itemProps.rel,\n download: itemProps.download,\n ping: itemProps.ping,\n referrerPolicy: itemProps.referrerPolicy,\n hrefLang: itemProps.hrefLang,\n tabIndex: -1,\n 'aria-hidden': isLink || undefined,\n role: 'none',\n onMouseDown: (event) => {\n if (!isDisabled && menuItemProps.tabIndex != null)\n elementRef.current?.focus({ preventScroll: true });\n event.preventDefault();\n },\n };\n\n const content = (\n <FocusRing>\n <ItemWithNativeLinks\n {...mergeProps(\n primaryInCell ? rowItemProps : itemOwnProps,\n primaryInCell ? rowConsumerProps : filteredItemProps,\n {\n 'data-popover-trigger': true,\n qa: itemQa ? itemQa : `MenuItem-${key}`,\n mods,\n styles,\n style: filteredItemProps.style,\n 'data-size': size,\n as: 'li',\n onClick: isDisabled ? undefined : props.onNavigate,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n 'data-has-submenu': submenuContext ? true : undefined,\n // Chained after the item's own hover handlers.\n onMouseEnter: submenuContext?.onMouseEnter,\n onMouseLeave: submenuContext?.onMouseLeave,\n },\n )}\n {...{\n onKeyDown: (event: KeyboardEvent<FocusableElement>) => {\n onKeyDown(event);\n filteredItemProps.onKeyDown?.(event);\n },\n onPointerDown: (event: PointerEvent<FocusableElement>) => {\n onPointerDown(event);\n filteredItemProps.onPointerDown?.(event);\n },\n onPointerUp: (event: PointerEvent<FocusableElement>) => {\n onPointerUp(event);\n filteredItemProps.onPointerUp?.(event);\n },\n }}\n role={primaryInCell ? 'none' : itemOwnProps.role}\n ref={submenuContext?.triggerRef ?? rowRef}\n nativeLinkProps={nativeLinkProps}\n onInlineFocus={\n primaryInCell\n ? (e) => {\n state.selectionManager.setFocused(false);\n state.selectionManager.setFocusedKey(key);\n e.stopPropagation();\n }\n : undefined\n }\n nativeMenuItemProps={\n primaryInCell\n ? primaryMenuItemProps(\n semanticProps,\n consumerSemanticProps,\n isLink,\n props.id,\n filteredItemProps.type,\n )\n : undefined\n }\n nativeMenuItemShouldFocus={isFocused && menuItemProps.tabIndex != null}\n nativeMenuItemName={{\n label: consumerSemanticProps['aria-label'],\n labelledBy: consumerSemanticProps['aria-labelledby'],\n }}\n onNativeLinkElement={(element) => {\n if (primaryInCell) updateSemanticElement(element);\n props.onNativeLinkElement?.(element);\n }}\n onNativeElement={(element) => {\n if (!primaryInCell) updateSemanticElement(element);\n }}\n actions={\n primaryInCell &&\n filteredItemProps.actions &&\n filteredItemProps.actions !== true ? (\n <ClearPressResponder>\n {filteredItemProps.actions}\n </ClearPressResponder>\n ) : (\n filteredItemProps.actions\n )\n }\n disableActionsFocus={true}\n rightIcon={submenuContext ? <RightIcon /> : filteredItemProps.rightIcon}\n defaultTooltipPlacement=\"right\"\n isSelected={isSelectable ? isSelected : undefined}\n isDisabled={isDisabled}\n size={size === 'small' ? 'small' : 'medium'}\n >\n {rendered}\n </ItemWithNativeLinks>\n </FocusRing>\n );\n\n return content;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MenuItem.js","names":["ClearPressResponder","openLink","shouldClientNavigate","useGlobalListeners","FocusableElement","Key","Node","Styles","AnchorHTMLAttributes","KeyboardEvent","MouseEvent","PointerEvent","useContext","useRef","FocusRing","useMenuItem","TreeState","RightIcon","isExternalUrl","normalizeNavigationUrl","useNavigation","mergeProps","COLLECTION_ITEM_CLICK","filterCollectionItemProps","ItemWithNativeLinks","parseTo","useMenuContext","CURRENT_DOCUMENT_LINK","SubmenuTriggerContext","MenuSelectionType","MenuItemProps","item","T","id","state","styles","isVirtualized","isDisabled","onAction","key","size","splitMenuItemProps","props","Record","semanticId","rowProps","semanticProps","value","Object","entries","startsWith","includes","primaryMenuItemProps","ariaProps","consumerProps","isLink","type","role","undefined","MenuItem","$","_c","submenuContext","t0","MenuLinkItem","activatedLink","linkRef","to","href","navigationOptions","cleanTo","parsedTo","nativeRoute","isCurrentDocument","t1","t2","isExternal","t3","relative","t4","navigate","resolvedHref","isDefault","linkHref","String","itemProps","t5","Symbol","for","element","current","onNativeLinkElement","t6","event","target","Element","closest","onClick","t7","event_0","anchor","cloneNode","HTMLAnchorElement","openNative","t8","event_1","anchor_0","hasAttribute","defaultPrevented","button","preventDefault","contains","t9","MenuItemContent","onClose","closeOnSelect","rendered","_to","_navigationOptions","routerOptions","_routerOptions","_href","_target","rel","_rel","download","_download","ping","_ping","referrerPolicy","_referrerPolicy","hrefLang","_hrefLang","filteredItemProps","mods","itemMods","qa","itemQa","isSelectable","selectionManager","selectionMode","isDisabledKey","isLoading","ref","rowRef","restoreFocusRef","elementRef","ownerDocument","activeElement","focus","preventScroll","updateSemanticElement","menuItemProps","labelProps","descriptionProps","keyboardShortcutProps","isFocused","isSelected","isPressed","isOpen","isVirtualFocused","focusedKey","onKeyDown","itemOnKeyDown","onPointerDown","itemOnPointerDown","onPointerUp","itemOnPointerUp","_renderedHref","_renderedTarget","_renderedRel","_renderedDownload","_renderedPing","_renderedPolicy","_renderedHrefLang","itemOwnProps","primaryInCell","actions","rowItemProps","rowConsumerProps","consumerSemanticProps","skippedPointerUp","addGlobalListener","removeAllGlobalListeners","ctrlKey","metaKey","altKey","shiftKey","pointerId","currentTarget","recordSkippedUp","up","clearSkippedUp","cancel","nativeEvent","e","HTMLElement","stopPropagation","isComposing","repeat","dispatchEvent","window","bubbles","cancelable","detail","click","focused","pressed","selected","disabled","submenu","menuitem","nativeLinkHref","event_2","tabIndex","onMouseDown","nativeLinkProps","e_0","setFocused","setFocusedKey","label","labelledBy","t10","element_0","t11","element_1","t12","t13","rightIcon","content","style","as","onNavigate","onMouseEnter","onMouseLeave","event_3","event_4","event_5","triggerRef","mergeProps","_c"],"sources":["../../../../src/components/actions/Menu/MenuItem.tsx"],"sourcesContent":["import { ClearPressResponder } from '@react-aria/interactions';\nimport {\n openLink,\n shouldClientNavigate,\n useGlobalListeners,\n} from '@react-aria/utils';\nimport { FocusableElement, Key, Node } from '@react-types/shared';\nimport { Styles } from '@tenphi/tasty';\nimport {\n AnchorHTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n useContext,\n useRef,\n} from 'react';\nimport { FocusRing, useMenuItem } from 'react-aria';\nimport { TreeState } from 'react-stately';\n\nimport { RightIcon } from '../../../icons/RightIcon';\nimport {\n isExternalUrl,\n normalizeNavigationUrl,\n} from '../../../providers/navigation-url';\nimport { useNavigation } from '../../../providers/use-navigation';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n COLLECTION_ITEM_CLICK,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { ItemWithNativeLinks } from '../../content/Item/ItemWithNativeLinks';\nimport { parseTo } from '../use-action';\n\nimport { useMenuContext } from './context';\nimport { CURRENT_DOCUMENT_LINK } from './MenuCollectionItem';\nimport { SubmenuTriggerContext } from './SubmenuTriggerContext';\n\nexport type MenuSelectionType = 'checkbox' | 'radio' | 'checkmark';\n\nexport interface MenuItemProps<T> {\n item: Node<T>;\n /**\n * The item element's id. A menu whose focus stays elsewhere — `CommandMenu`\n * keeps it in its search input — points `aria-activedescendant` at it.\n */\n id?: string;\n state: TreeState<T>;\n styles?: Styles;\n isVirtualized?: boolean;\n isDisabled?: boolean;\n onAction?: (key: Key) => void;\n size?: 'small' | 'medium' | (string & {});\n}\n\n// The primary control owns accessibility; the list row keeps styling and presses.\nfunction splitMenuItemProps(props: Record<string, any>, semanticId = false) {\n const rowProps: Record<string, any> = {};\n const semanticProps: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n if (\n (key.startsWith('aria-') && key !== 'aria-hidden') ||\n (semanticId && key === 'id') ||\n [\n 'role',\n 'tabIndex',\n 'onFocus',\n 'onBlur',\n 'data-key',\n 'data-collection',\n ].includes(key)\n )\n semanticProps[key] = value;\n else rowProps[key] = value;\n }\n return { rowProps, semanticProps };\n}\n\nfunction primaryMenuItemProps(\n ariaProps: Record<string, any>,\n consumerProps: Record<string, any>,\n isLink: boolean,\n id: string | undefined,\n type: string | undefined,\n) {\n const props = mergeProps(ariaProps, consumerProps);\n // Destinations cannot change the menu's checked selection.\n if (isLink) {\n props.role = 'menuitem';\n props['aria-checked'] = undefined;\n }\n if (!('aria-labelledby' in consumerProps)) {\n props['aria-labelledby'] =\n consumerProps['aria-label'] != null\n ? undefined\n : id && type !== 'header' && type !== 'card'\n ? id\n : ariaProps['aria-labelledby'];\n }\n props['aria-hidden'] = undefined;\n props['data-menu-native-primary'] = '';\n return props;\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n const submenuContext = useContext(SubmenuTriggerContext);\n return !submenuContext ? (\n <MenuLinkItem {...props} />\n ) : (\n <MenuItemContent {...props} />\n );\n}\n\nfunction MenuLinkItem<T>(props: MenuItemProps<T>) {\n const activatedLink = useRef<HTMLAnchorElement>(null);\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { to, href, navigationOptions } = props.item.props;\n const { cleanTo: parsedTo, nativeRoute } = parseTo(to);\n const isCurrentDocument = props.item.props[CURRENT_DOCUMENT_LINK];\n const cleanTo =\n to != null\n ? parsedTo\n : isCurrentDocument\n ? ''\n : typeof href === 'string'\n ? normalizeNavigationUrl(href)\n : href;\n const isExternal = typeof cleanTo === 'string' && isExternalUrl(cleanTo);\n const { navigate, resolvedHref, isDefault } = useNavigation(\n isExternal ? '.' : cleanTo || '.',\n { relative: navigationOptions?.relative },\n );\n const linkHref =\n isCurrentDocument || (nativeRoute && cleanTo === '')\n ? ''\n : isExternal\n ? String(cleanTo)\n : resolvedHref;\n const itemProps = props.item.props;\n const onNativeLinkElement = (element: HTMLAnchorElement | null) => {\n linkRef.current = element;\n };\n const onClick = (event: MouseEvent<FocusableElement>) => {\n const target = event.target as Element;\n activatedLink.current =\n target.closest?.<HTMLAnchorElement>('a[data-menu-native-link]') ??\n linkRef.current;\n itemProps[COLLECTION_ITEM_CLICK]?.(event);\n };\n const openNative = (event: MouseEvent<FocusableElement>) => {\n const anchor = activatedLink.current;\n if (!anchor) return;\n openLink(anchor.cloneNode(false) as HTMLAnchorElement, event, false);\n };\n return (\n <MenuItemContent\n {...props}\n nativeLinkHref={linkHref}\n onNativeLinkElement={onNativeLinkElement}\n onClick={onClick}\n onNavigate={(event) => {\n const anchor = activatedLink.current;\n if (\n !anchor?.hasAttribute('href') ||\n event.defaultPrevented ||\n event.button !== 0\n )\n return;\n if (\n shouldClientNavigate(anchor, event) &&\n !isDefault &&\n !isCurrentDocument &&\n !nativeRoute &&\n !isExternal\n ) {\n event.preventDefault();\n if (cleanTo !== undefined) navigate(cleanTo, navigationOptions);\n } else if (\n !(event.target instanceof Element) ||\n !anchor.contains(event.target)\n ) {\n openNative(event);\n }\n }}\n />\n );\n}\n\nfunction MenuItemContent<T>(\n props: MenuItemProps<T> & {\n nativeLinkHref?: string;\n onNativeLinkElement?: (element: HTMLAnchorElement | null) => void;\n onNavigate?: (event: MouseEvent<FocusableElement>) => void;\n onClick?: (event: MouseEvent<FocusableElement>) => void;\n },\n) {\n const { item, state, styles, isVirtualized, onAction, size, id } = props;\n const { onClose, closeOnSelect } = useMenuContext();\n const { rendered, key, props: itemProps } = item;\n\n // Check if this item is wrapped in a SubmenuTriggerContext\n const submenuContext = useContext(SubmenuTriggerContext);\n\n // Filter out service props (react-stately and parent-handled props)\n // All remaining props are safe to pass to Item component\n const {\n to: _to,\n navigationOptions: _navigationOptions,\n routerOptions: _routerOptions,\n href: _href,\n target: _target,\n rel: _rel,\n download: _download,\n ping: _ping,\n referrerPolicy: _referrerPolicy,\n hrefLang: _hrefLang,\n ...filteredItemProps\n } = filterCollectionItemProps(itemProps);\n\n // Extract specific props that need special handling\n const { hotkeys, mods: itemMods, qa: itemQa } = filteredItemProps;\n\n const isSelectable = state.selectionManager.selectionMode !== 'none';\n const isDisabledKey =\n state.selectionManager.isDisabled(key) ||\n submenuContext?.isDisabled ||\n (filteredItemProps.isLoading && filteredItemProps.isDisabled !== false);\n\n const ref = useRef<HTMLElement>(null);\n const rowRef = useRef<HTMLElement>(null);\n const restoreFocusRef = useRef(false);\n const elementRef = ref;\n const updateSemanticElement = (element: HTMLElement | null) => {\n if (!element)\n restoreFocusRef.current =\n ref.current === ref.current?.ownerDocument.activeElement;\n ref.current = element;\n if (element && restoreFocusRef.current) {\n restoreFocusRef.current = false;\n element.focus({ preventScroll: true });\n }\n };\n\n const {\n menuItemProps,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n isFocused,\n isSelected,\n isPressed,\n isDisabled,\n } = useMenuItem(\n {\n id: id ?? itemProps.id,\n isSelected: state.selectionManager.isSelected(key),\n isDisabled: isDisabledKey,\n 'aria-label': item['aria-label'],\n 'aria-haspopup': submenuContext ? 'menu' : undefined,\n 'aria-expanded': submenuContext\n ? submenuContext.isOpen\n ? 'true'\n : 'false'\n : undefined,\n key,\n onClose: submenuContext ? undefined : onClose, // Don't close menu for submenu triggers\n closeOnSelect: submenuContext ? false : closeOnSelect, // Don't close on submenu trigger selection\n isVirtualized,\n onAction,\n onClick: (event) => {\n (props.onClick ?? itemProps[COLLECTION_ITEM_CLICK])?.(event);\n submenuContext?.onAction?.();\n },\n },\n state,\n elementRef,\n );\n\n // Selection indicator will be handled by Item component\n const isVirtualFocused = state.selectionManager.focusedKey === key;\n\n // `mergeProps` chains handlers rather than replacing them, so a handler of\n // the item's own passed to it again runs twice. `onKeyDown` used to be: Enter\n // and Space each click the item, so every keyboard activation fired\n // `onAction` twice. It is taken out here and passed once.\n const {\n onKeyDown: itemOnKeyDown,\n onPointerDown: itemOnPointerDown,\n onPointerUp: itemOnPointerUp,\n href: _renderedHref,\n target: _renderedTarget,\n rel: _renderedRel,\n download: _renderedDownload,\n ping: _renderedPing,\n referrerPolicy: _renderedPolicy,\n hrefLang: _renderedHrefLang,\n ...itemOwnProps\n } = menuItemProps as typeof menuItemProps &\n AnchorHTMLAttributes<HTMLAnchorElement>;\n const isLink = itemProps.href != null && !submenuContext;\n const primaryInCell =\n isLink ||\n (!!filteredItemProps.actions && filteredItemProps.actions !== true);\n const { rowProps: rowItemProps, semanticProps } = splitMenuItemProps(\n itemOwnProps,\n props.id != null,\n );\n const { rowProps: rowConsumerProps, semanticProps: consumerSemanticProps } =\n splitMenuItemProps(filteredItemProps);\n const skippedPointerUp = useRef<globalThis.PointerEvent | null>(null);\n const { addGlobalListener, removeAllGlobalListeners } = useGlobalListeners();\n const onPointerDown = (event: PointerEvent<FocusableElement>) => {\n skippedPointerUp.current = null;\n removeAllGlobalListeners();\n // A modified native gesture must not start Aria's delayed-click fallback.\n if (\n isLink &&\n (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey)\n ) {\n const pointerId = event.pointerId;\n const ownerDocument = event.currentTarget.ownerDocument;\n const recordSkippedUp = (up: globalThis.PointerEvent) => {\n if (up.pointerId !== pointerId) return;\n skippedPointerUp.current = up;\n removeAllGlobalListeners();\n };\n const clearSkippedUp = (cancel: globalThis.PointerEvent) => {\n if (cancel.pointerId !== pointerId) return;\n skippedPointerUp.current = null;\n removeAllGlobalListeners();\n };\n addGlobalListener(ownerDocument, 'pointerup', recordSkippedUp, true);\n addGlobalListener(ownerDocument, 'pointercancel', clearSkippedUp, true);\n return;\n }\n itemOnPointerDown?.(event);\n };\n const onPointerUp = (event: PointerEvent<FocusableElement>) => {\n if (skippedPointerUp.current === event.nativeEvent) {\n skippedPointerUp.current = null;\n return;\n }\n if (\n isLink &&\n (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey)\n )\n return;\n itemOnPointerUp?.(event);\n };\n const onKeyDown = (e: KeyboardEvent<FocusableElement>) => {\n // Inline controls own activation; the menu handles their row navigation.\n if ((e.target as HTMLElement).closest('[data-element=\"Actions\"]')) return;\n if (primaryInCell && (e.key === ' ' || e.key === 'Enter')) {\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (e.nativeEvent.isComposing || (e.key === ' ' && e.repeat)) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (isLink && (e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {\n itemOnKeyDown?.(e);\n e.preventDefault();\n e.stopPropagation();\n e.currentTarget.dispatchEvent(\n new window.MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n detail: 1,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n }),\n );\n return;\n }\n }\n if (submenuContext?.onKeyDown) {\n // The submenu goes first; a key it handles is not the item's too.\n submenuContext.onKeyDown?.(e);\n if (!e.defaultPrevented) itemOnKeyDown?.(e);\n } else itemOnKeyDown?.(e);\n // Aria records Enter but expects an A to have native link activation.\n if (\n primaryInCell &&\n !isLink &&\n !submenuContext &&\n e.key === 'Enter' &&\n !e.repeat &&\n !e.nativeEvent.isComposing\n ) {\n e.preventDefault();\n e.stopPropagation();\n elementRef.current?.click();\n }\n };\n\n const mods = {\n ...itemMods,\n focused: isFocused || isVirtualFocused,\n pressed: isPressed,\n selected: isSelected,\n disabled: isDisabled,\n submenu: !!submenuContext,\n menuitem: true,\n };\n\n const nativeLinkProps: AnchorHTMLAttributes<HTMLAnchorElement> = {\n href: isLink && !isDisabled ? props.nativeLinkHref : undefined,\n target: itemProps.target,\n rel: itemProps.rel,\n download: itemProps.download,\n ping: itemProps.ping,\n referrerPolicy: itemProps.referrerPolicy,\n hrefLang: itemProps.hrefLang,\n tabIndex: -1,\n 'aria-hidden': isLink || undefined,\n role: 'none',\n onMouseDown: (event) => {\n if (!isDisabled && menuItemProps.tabIndex != null)\n elementRef.current?.focus({ preventScroll: true });\n event.preventDefault();\n },\n };\n\n const content = (\n <FocusRing>\n <ItemWithNativeLinks\n {...mergeProps(\n primaryInCell ? rowItemProps : itemOwnProps,\n primaryInCell ? rowConsumerProps : filteredItemProps,\n {\n 'data-popover-trigger': true,\n qa: itemQa ? itemQa : `MenuItem-${key}`,\n mods,\n styles,\n style: filteredItemProps.style,\n 'data-size': size,\n as: 'li',\n onClick: isDisabled ? undefined : props.onNavigate,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n 'data-has-submenu': submenuContext ? true : undefined,\n // Chained after the item's own hover handlers.\n onMouseEnter: submenuContext?.onMouseEnter,\n onMouseLeave: submenuContext?.onMouseLeave,\n },\n )}\n {...{\n onKeyDown: (event: KeyboardEvent<FocusableElement>) => {\n onKeyDown(event);\n filteredItemProps.onKeyDown?.(event);\n },\n onPointerDown: (event: PointerEvent<FocusableElement>) => {\n onPointerDown(event);\n filteredItemProps.onPointerDown?.(event);\n },\n onPointerUp: (event: PointerEvent<FocusableElement>) => {\n onPointerUp(event);\n filteredItemProps.onPointerUp?.(event);\n },\n }}\n role={primaryInCell ? 'none' : itemOwnProps.role}\n ref={submenuContext?.triggerRef ?? rowRef}\n nativeLinkProps={nativeLinkProps}\n onInlineFocus={\n primaryInCell\n ? (e) => {\n state.selectionManager.setFocused(false);\n state.selectionManager.setFocusedKey(key);\n e.stopPropagation();\n }\n : undefined\n }\n nativeMenuItemProps={\n primaryInCell\n ? primaryMenuItemProps(\n semanticProps,\n consumerSemanticProps,\n isLink,\n props.id,\n filteredItemProps.type,\n )\n : undefined\n }\n nativeMenuItemShouldFocus={isFocused && menuItemProps.tabIndex != null}\n nativeMenuItemName={{\n label: consumerSemanticProps['aria-label'],\n labelledBy: consumerSemanticProps['aria-labelledby'],\n }}\n onNativeLinkElement={(element) => {\n if (primaryInCell) updateSemanticElement(element);\n props.onNativeLinkElement?.(element);\n }}\n onNativeElement={(element) => {\n if (!primaryInCell) updateSemanticElement(element);\n }}\n actions={\n primaryInCell &&\n filteredItemProps.actions &&\n filteredItemProps.actions !== true ? (\n <ClearPressResponder>\n {filteredItemProps.actions}\n </ClearPressResponder>\n ) : (\n filteredItemProps.actions\n )\n }\n disableActionsFocus={true}\n rightIcon={submenuContext ? <RightIcon /> : filteredItemProps.rightIcon}\n defaultTooltipPlacement=\"right\"\n isSelected={isSelectable ? isSelected : undefined}\n isDisabled={isDisabled}\n size={size === 'small' ? 'small' : 'medium'}\n >\n {rendered}\n </ItemWithNativeLinks>\n </FocusRing>\n );\n\n return content;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { getMenuItemReactKey } from "./MenuCollectionItem.js";
|
|
3
3
|
import { MenuItem } from "./MenuItem.js";
|
|
4
4
|
import { StyledMenu, StyledSection, StyledSectionHeading } from "./styled.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { SlotProvider } from "../../../utils/react/Slots.js";
|
|
3
|
-
import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
|
|
4
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
|
+
import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
|
|
5
|
+
import { Tray as _Tray } from "../../overlays/Modal/Tray.js";
|
|
5
6
|
import { MenuContext } from "./context.js";
|
|
6
7
|
import { generateRandomId } from "../../../utils/random.js";
|
|
7
|
-
import { Tray as _Tray } from "../../overlays/Modal/Tray.js";
|
|
8
8
|
import { Popover as _Popover } from "../../overlays/Modal/Popover.js";
|
|
9
9
|
import { isOwnActionsPress } from "../actions-run.js";
|
|
10
10
|
import { c } from "react/compiler-runtime";
|