@cube-dev/ui-kit 0.187.1 → 0.188.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 +39 -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-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.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.d.ts +4 -0
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Action/Action.js.map +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +2 -2
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +3 -3
- 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.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +7 -5
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +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/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.d.ts +4 -0
- package/dist/components/actions/use-action.js +6 -1
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.d.ts +7 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +6 -1
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.d.ts +14 -14
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +31 -5
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/DataTable/types.d.ts +3 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +9 -7
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +82 -0
- package/dist/components/data/TableBase/column-styles.js.map +1 -0
- 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/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.d.ts +11 -0
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/types.js.map +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +9 -4
- package/dist/components/fields/ComboBox/ComboBox.js +2 -1
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +20 -23
- 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 +46 -44
- 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/NumberInput/NumberInput.d.ts +2 -2
- 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 +3 -3
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.d.ts +2 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +9 -4
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +2 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +170 -158
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.d.ts +2 -2
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +2 -2
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +470 -407
- 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/Tabs.js +22 -4
- 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/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +78 -116
- 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/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.d.ts +2 -2
- package/dist/components/overlays/Dialog/DialogForm.js +4 -5
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +5 -6
- 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 +30 -0
- package/dist/components/overlays/Dialog/default-button-text.js.map +1 -0
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +2 -2
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +4 -1
- package/dist/i18n/locales/en-US/uikit.js +4 -1
- package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -0
- package/dist/i18n/locales/es-ES/uikit.js +4 -1
- package/dist/i18n/locales/es-MX/uikit.js +4 -1
- package/dist/i18n/locales/fr-FR/uikit.js +4 -1
- package/dist/i18n/locales/it-IT/uikit.js +4 -1
- package/dist/i18n/locales/ja-JP/uikit.js +4 -1
- package/dist/i18n/locales/nb-NO/uikit.js +4 -1
- package/dist/i18n/locales/pt-BR/uikit.js +4 -1
- package/dist/i18n/locales/pt-PT/uikit.js +4 -1
- package/dist/i18n/locales/sv-SE/uikit.js +4 -1
- package/dist/i18n/locales/vi-VN/uikit.js +4 -1
- package/dist/i18n/locales.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 +2 -2
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/shared/form.d.ts +29 -1
- package/dist/shared/index.d.ts +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 +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/escapePropagation.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/CreateComponent.md +1 -1
- package/docs/components/actions/Action.md +1 -1
- package/docs/components/actions/Button.md +4 -2
- package/docs/components/actions/ItemButton.md +1 -0
- package/docs/components/actions/Link.md +1 -1
- package/docs/components/content/InfoBadge.md +1 -1
- package/docs/components/content/Item.md +1 -1
- package/docs/components/data/DataTable.md +18 -0
- package/docs/components/data/ItemTable.md +3 -1
- package/docs/components/fields/ComboBox.md +49 -1
- package/docs/components/fields/FilterPicker.md +3 -3
- package/docs/components/fields/NumberInput.md +27 -0
- package/docs/components/fields/PasswordInput.md +24 -0
- package/docs/components/fields/Picker.md +3 -3
- package/docs/components/fields/SearchComboBox.md +3 -1
- package/docs/components/fields/TagInput.md +4 -2
- package/docs/components/fields/TextArea.md +24 -0
- package/docs/components/fields/TextInput.md +24 -0
- package/docs/components/navigation/Tabs.md +8 -3
- package/docs/components/overlays/AlertDialog.md +3 -3
- package/docs/components/overlays/DialogForm.md +3 -3
- package/docs/components/overlays/UseDialogContainer.md +4 -7
- package/docs/modern-form-migration.md +1 -1
- package/package.json +2 -2
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @cube-dev/ui-kit
|
|
2
2
|
|
|
3
|
+
## 0.188.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - The `label` property of `Button`, `ItemButton`, `ItemAction`, `Action` and `InfoBadge` is deprecated, and passing it logs a one-time warning in development. Use `children` for a button's visible text and `aria-label` for the accessible name of an icon-only control. `label` keeps working where it worked before, but `ItemAction` never applied it, so an icon-only `ItemAction` named only through `label` had no accessible name. Give it an `aria-label` (or a string `tooltip`). For `AlertDialog` actions and `DialogForm`'s `submitProps` / `cancelProps`, set the text with `children`, as in `actions={{ confirm: { children: 'Delete' } }}`. A `label` passed there still wins over the default text. A dialog button given its own `children` and no `label` used to keep the default text as its accessible name (`Submit`, `Ok`, `Cancel`) while showing the consumer's text; its name now matches what it shows, so a test that queried such a button by the default name needs updating. A dialog button whose `icon` is a function (`({ loading }) => …`) now always shows the default text beside it; pass `aria-label` and a static `icon` for an icon-only button.
|
|
8
|
+
|
|
9
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - `DataTable` / `ItemTable`: a column's `cellStyles` now go through tasty instead of the cell's inline `style`. Tokens such as `{ color: '#surface-text-soft-2' }`, units, presets and state maps now take effect where they used to be dropped silently, and the column's styles win over the table's default cell paint, column tints and the table-level `cellStyles`. On a `dataType: 'number'` column, a function-form `cellStyles` is now called per cell and merged over the tabular figures; before, the numeric default replaced it. Values are now read as tasty rather than CSS, so check CSS-shaped ones: a side property such as `paddingLeft: 24` or `marginTop: 8` becomes the full shorthand with the other sides at 0 (use the CSS longhand with a unit, `paddingInlineStart: '24px'`, to set one side); a bare number takes a unit on tasty's own properties (`lineHeight: 1.2` becomes `1.2px`, pass `'1.2'` for a unitless value) but stays unitless, and so invalid, on plain CSS ones (`borderRadius: 4`, pass `'4px'` or use `radius`); a plain color name inside `border` or `outline` is dropped (`'1px solid red'`, write `'1px solid #red'`); a React-style vendor key such as `WebkitLineClamp` is read as a sub-element and dropped, so quote the CSS name (`'-webkit-line-clamp': 2`, `'-webkit-box-orient': 'vertical'`); and `textOverflow: 'ellipsis'` also sets `overflow: hidden` and `white-space: nowrap`.
|
|
10
|
+
|
|
11
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - - `Tabs.List` accepts `qa` and `qaVal`, applied as `data-qa` / `data-qaval` on the `role="tablist"` element, so tests can select the tab list without relying on `[data-element="TabList"]`.
|
|
12
|
+
|
|
13
|
+
- `Tabs` no longer sets `aria-controls` on the selected tab when that tab has no panel (navigation-only tabs, or a tab without content next to tabs that have it). The attribute used to point at a tabpanel id that nothing on the page had.
|
|
14
|
+
- `Tabs` keeps the active tab in view when the strip is mounted with a tab near its end active. The tab was scrolled into view before its actions (such as a `menu` trigger) were measured, so once every tab grew to its final width the active tab could end up past the edge of the strip or under a suffix button. The strip keeps following the active tab's size until the user interacts with the tab bar (wheel, pointer, touch or keyboard, which covers the scrollbar and the scroll arrows); after that a scrolled strip stays where the user left it.
|
|
15
|
+
|
|
16
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - `ComboBox` and `SearchComboBox` now skip their built-in key handling for a key whose `onKeyDown` handler calls `e.preventDefault()`, matching `TagInput` and `CommandTextArea`. A prevented `ArrowDown` no longer opens the popover, and a prevented `Enter` no longer selects an option, commits a custom value or calls `onSubmit`. A handler that called `preventDefault()` but still relied on the built-in handling for that key needs to drop the call.
|
|
17
|
+
|
|
18
|
+
This changes one common pattern. On a `ComboBox` with `allowsCustomValue` inside a form, `onKeyDown={(e) => { if (e.key === 'Enter') e.preventDefault(); }}` used to stop the form submit while `Enter` still committed the typed value. It now stops both, and the value is committed only on blur. To keep committing on `Enter`, commit it in the handler: control `selectedKey` and call `setSelectedKey(e.currentTarget.value.trim() || null)` after `e.preventDefault()`.
|
|
19
|
+
|
|
20
|
+
`onKeyDown` on `ComboBox` and `SearchComboBox` is now typed with React Aria's keyboard event, the one it always received at runtime, so `e.continuePropagation()` type-checks. A handler annotated with React's `KeyboardEvent` still type-checks, but code that calls the prop itself (a wrapper forwarding a native `<input>` event to it) must now pass React Aria's event.
|
|
21
|
+
|
|
22
|
+
`TextInput`, `TextArea`, `PasswordInput` and `NumberInput` now declare `onKeyDown` and `onKeyUp` in their own prop types, with the same signature as React Aria's keyboard handlers.
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - The `no-redundant-default-prop` lint rule no longer flags `disableActionsFocus={true}` on `Item` as redundant. Its registry, like the `Item` docs, listed the default as `true`, while the component defaults to `false`. So the autofix removed a prop that was doing something, and the item's actions became focusable again.
|
|
27
|
+
|
|
28
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - `ItemButton` no longer renders `navigationOptions` (or the deprecated `label`) as an attribute on its element. Navigation still receives the options, but the element also got `navigationOptions="[object Object]"`, and React warned about an unknown prop in development.
|
|
29
|
+
|
|
30
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - A `Menu.SubMenuTrigger` placed inside a `Menu.Section` now opens its submenu on hover and click, and its item shows the submenu arrow, as it does outside a section. Before, the item rendered as a plain item with no submenu.
|
|
31
|
+
|
|
32
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - A popover opened from inside a modern `DialogForm` (one given a `form` controller), such as a `Picker` or `FilterPicker` listbox or a menu, now closes on a click elsewhere in the dialog, instead of staying open until a click outside it. The form now opts out of popover dismissal for presses only, through the new `data-popover-keep-on-press` attribute, which `Button` and `ItemButton` honour like `data-popover-keep` without making a click in the subtree count as inside other popovers.
|
|
33
|
+
|
|
34
|
+
- [#1459](https://github.com/cube-js/cube-ui-kit/pull/1459) [`9ef6bb35`](https://github.com/cube-js/cube-ui-kit/commit/9ef6bb3538b4a9b6333f8ca7b87694695e2d7ed8) Thanks [@tenphi](https://github.com/tenphi)! - `TagInput`: the chips grid, the show-options and clear buttons, and the options listbox are now named after the field when it is named by `aria-label` or `aria-labelledby` instead of a visible `label`. With `aria-labelledby` they read the same elements ("Selected values" followed by the field's name, and the listbox the name alone, no longer "Options"); an `aria-label` is joined in ahead of those, in the input's own order, such as "Selected values, Region" or, with `aria-labelledby` as well, "Selected values, Region Primary key". Fields without a visible label, such as one per table row, no longer all expose the same generic names.
|
|
35
|
+
|
|
36
|
+
## 0.187.2
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- [#1457](https://github.com/cube-js/cube-ui-kit/pull/1457) [`28aa645d`](https://github.com/cube-js/cube-ui-kit/commit/28aa645d8e1a59217e90dacb2f7a344e85b0509e) Thanks [@tenphi](https://github.com/tenphi)! - Fix the options of a virtualized `ListBox` (one without sections that isn't reorderable, including inside `ComboBox`, `SearchComboBox`, `TagInput`, `CommandTextArea`, `Picker`, `FilterPicker` and `FilterListBox`) overlapping for a frame. Options taller than their estimate, such as ones with a wrapped label, overlapped whenever the parent re-rendered with new items or children (even identical ones), or when a re-render made an option taller. A re-render now keeps the measured heights, and options are measured before the browser paints.
|
|
41
|
+
|
|
3
42
|
## 0.187.1
|
|
4
43
|
|
|
5
44
|
### Patch Changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { deprecationWarning } from "../../utils/warnings.js";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import React, { useEffect } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import { useRef } from "react";
|
package/dist/components/Block.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../utils/styles.js";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { ItemAction } from "./actions/ItemAction/ItemAction.js";
|
|
3
3
|
import { ItemBadge } from "./content/ItemBadge/ItemBadge.js";
|
|
4
4
|
import { Item } from "react-stately";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { usePaletteValue } from "../tokens/palette-config.js";
|
|
3
3
|
import { getTokens } from "../tokens/all-tokens.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { useCombinedRefs } from "../utils/react/useCombinedRefs.js";
|
|
3
3
|
import { filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef, useCallback, useEffect, useState } from "react";
|
package/dist/components/Root.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../utils/styles.js";
|
|
3
3
|
import { AMBIENT_PREDEFINED_STATES } from "../utils/react/useScheme.js";
|
|
4
4
|
import { EventBusProvider } from "../utils/react/useEventBus.js";
|
|
@@ -9,6 +9,10 @@ import * as _react_types_shared0 from "@react-types/shared";
|
|
|
9
9
|
//#region src/components/actions/Action/Action.d.ts
|
|
10
10
|
interface CubeActionProps<T extends TagName = 'a' | 'button' | 'span' | 'div'> extends Omit<AllBaseProps<T>, 'htmlType'>, BaseStyleProps, ContainerStyleProps, TextStyleProps, Omit<AriaButtonProps, 'type'> {
|
|
11
11
|
to?: NavigateArg;
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use `aria-label` for the accessible name, and `children` for
|
|
14
|
+
* visible text.
|
|
15
|
+
*/
|
|
12
16
|
label?: string;
|
|
13
17
|
htmlType?: 'button' | 'submit' | 'reset' | undefined;
|
|
14
18
|
download?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useAction } from "../use-action.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Action.js","names":["FocusableRef","AllBaseProps","BaseStyleProps","CONTAINER_STYLES","ContainerStyleProps","TagName","tasty","TEXT_STYLES","TextStyleProps","forwardRef","AriaButtonProps","extractStyles","NavigateArg","useAction","CubeActionProps","Omit","T","to","label","htmlType","download","ActionElement","as","styles","recipe","position","preset","transition","STYLE_PROPS","Action","t0","ref","$","_c","theme","mods","onPress","props","actionProps","t1"],"sources":["../../../../src/components/actions/Action/Action.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport {\n AllBaseProps,\n BaseStyleProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n TagName,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaButtonProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { NavigateArg, useAction } from '../use-action';\n\nexport interface CubeActionProps<\n T extends TagName = 'a' | 'button' | 'span' | 'div',\n> extends Omit<AllBaseProps<T>, 'htmlType'>,\n BaseStyleProps,\n ContainerStyleProps,\n TextStyleProps,\n Omit<AriaButtonProps, 'type'> {\n to?: NavigateArg;\n label?: string;\n htmlType?: 'button' | 'submit' | 'reset' | undefined;\n download?: string;\n}\n\nconst ActionElement = tasty({\n as: 'button',\n styles: {\n recipe: 'reset button',\n position: 'relative',\n preset: 'inherit',\n transition: 'theme',\n },\n});\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nexport const Action = forwardRef(function Action(\n {\n to,\n as,\n download,\n htmlType,\n label,\n theme,\n mods,\n onPress,\n ...props\n }: CubeActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const { actionProps } = useAction(\n { to, as, htmlType, label, onPress, mods, ...props },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n\n return (\n <ActionElement\n data-theme={theme}\n download={download}\n {...actionProps}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Action.js","names":["FocusableRef","AllBaseProps","BaseStyleProps","CONTAINER_STYLES","ContainerStyleProps","TagName","tasty","TEXT_STYLES","TextStyleProps","forwardRef","AriaButtonProps","extractStyles","NavigateArg","useAction","CubeActionProps","Omit","T","to","label","htmlType","download","ActionElement","as","styles","recipe","position","preset","transition","STYLE_PROPS","Action","t0","ref","$","_c","theme","mods","onPress","props","actionProps","t1"],"sources":["../../../../src/components/actions/Action/Action.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport {\n AllBaseProps,\n BaseStyleProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n TagName,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaButtonProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { NavigateArg, useAction } from '../use-action';\n\nexport interface CubeActionProps<\n T extends TagName = 'a' | 'button' | 'span' | 'div',\n> extends Omit<AllBaseProps<T>, 'htmlType'>,\n BaseStyleProps,\n ContainerStyleProps,\n TextStyleProps,\n Omit<AriaButtonProps, 'type'> {\n to?: NavigateArg;\n /**\n * @deprecated Use `aria-label` for the accessible name, and `children` for\n * visible text.\n */\n label?: string;\n htmlType?: 'button' | 'submit' | 'reset' | undefined;\n download?: string;\n}\n\nconst ActionElement = tasty({\n as: 'button',\n styles: {\n recipe: 'reset button',\n position: 'relative',\n preset: 'inherit',\n transition: 'theme',\n },\n});\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nexport const Action = forwardRef(function Action(\n {\n to,\n as,\n download,\n htmlType,\n label,\n theme,\n mods,\n onPress,\n ...props\n }: CubeActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const { actionProps } = useAction(\n { to, as, htmlType, label, onPress, mods, ...props },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n\n return (\n <ActionElement\n data-theme={theme}\n download={download}\n {...actionProps}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;;;AAkCA,MAAMqB,gBAAgBf,MAAM;CAC1BgB,IAAI;CACJC,QAAQ;EACNC,QAAQ;EACRC,UAAU;EACVC,QAAQ;EACRC,YAAY;EACd;CACD,CAAC;AAEF,MAAMC,cAAc,CAAC,GAAGzB,kBAAkB,GAAGI,YAAY;AAEzD,MAAasB,SAASpB,WAAW,SAAAoB,OAAAC,IAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAC/B,MAAA,EAAAhB,IAAAK,IAAAF,UAAAD,UAAAD,OAAAgB,OAAAC,MAAAC,SAAA,GAAAC,UAAAP;CAaA,MAAA,EAAAQ,gBAAwBzB,UACtB;EAAAI;EAAAK;EAAAH;EAAAD;EAAAkB;EAAAD;EAAA,GAA6CE;EAAO,EACpDN,IACD;CAED,MAAAR,SAAeZ,cAAc0B,OAAOT,YAAY;CAAC,IAAAW;AAAA,KAAAP,EAAA,OAAAM,eAAAN,EAAA,OAAAZ,YAAAY,EAAA,OAAAT,UAAAS,EAAA,OAAAE,OAAA;AAG/CK,OAAA,oBAAC;GACaL,cAAAA;GACFd;GAAQ,GACdkB;GACIf;IACR;AAAAS,IAAA,KAAAM;AAAAN,IAAA,KAAAZ;AAAAY,IAAA,KAAAT;AAAAS,IAAA,KAAAE;AAAAF,IAAA,KAAAO;OAAAA,MAAAP,EAAA;AAAA,QALFO;EAOF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { _Item } from "../../content/Item/Item.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { getDisabledElementProps } from "../../../utils/react/disabledProps.js";
|
|
4
4
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
@@ -217,7 +217,7 @@ const Button = forwardRef(function Button(allProps, ref) {
|
|
|
217
217
|
const el = buttonElementRef.current;
|
|
218
218
|
if (!el) return;
|
|
219
219
|
if (el.hasAttribute("data-popover-trigger")) return;
|
|
220
|
-
if (el.closest("[data-popover-keep]")) return;
|
|
220
|
+
if (el.closest("[data-popover-keep], [data-popover-keep-on-press]")) return;
|
|
221
221
|
dismissParentPopover(el);
|
|
222
222
|
});
|
|
223
223
|
const { actionProps, isPressed } = useAction({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","OverlayProps","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","DynamicIcon","getDisabledElementProps","mergeProps","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","undefined","isNativelyDisabled","inertProps","keepEvents","as","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n DynamicIcon,\n getDisabledElementProps,\n mergeProps,\n resolveIcon,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: 1,\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2 | type=primary)':\n '-1bw left',\n },\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n },\n\n // RightIcon sub-element (recommended format)\n RightIcon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n },\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isDisabled =\n splitContext?.isDisabled || props.isDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(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]')) return;\n dismissParentPopover(el);\n });\n\n const { actionProps, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. The attribute is skipped for links too, where it is not\n // valid markup and `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: isTooltipActive,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n {...mergeProps(actionProps, tooltipTriggerProps || {}, inertProps)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","OverlayProps","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","DynamicIcon","getDisabledElementProps","mergeProps","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","undefined","isNativelyDisabled","inertProps","keepEvents","as","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n DynamicIcon,\n getDisabledElementProps,\n mergeProps,\n resolveIcon,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: 1,\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2 | type=primary)':\n '-1bw left',\n },\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n },\n\n // RightIcon sub-element (recommended format)\n RightIcon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n },\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isDisabled =\n splitContext?.isDisabled || props.isDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // - `data-popover-keep-on-press` on self or any ancestor: the same opt-out\n // for presses only. Unlike `data-popover-keep`, it does not stop a click\n // in the subtree from closing a nested popover (a field's listbox).\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(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, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. The attribute is skipped for links too, where it is not\n // valid markup and `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: isTooltipActive,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n {...mergeProps(actionProps, tooltipTriggerProps || {}, inertProps)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\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.188.0 | Cube Dev Team */
|
|
2
2
|
import { useSlotProps } from "../../../utils/react/Slots.js";
|
|
3
3
|
import { Space } from "../../layout/Space.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { ButtonSplitContext } from "./context.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.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 { LoadingIcon } from "../../../icons/LoadingIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
4
4
|
import { 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 } from "../../../data/item-themes.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.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,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useDismissParentPopover } from "../../../utils/react/usePopoverSync.js";
|
|
@@ -23,7 +23,7 @@ const StyledItem = tasty(_Item, {
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
const ItemButton = forwardRef(function ItemButton(allProps, ref) {
|
|
26
|
-
const { mods, to, htmlType, as, type = "item", theme = "default", onPress, onPressStart: _onPressStart, onPressEnd: _onPressEnd, onPressChange: _onPressChange, onPressUp: _onPressUp, actions, actionsProps, size = "medium", wrapperStyles, autoHideActions = false, disableActionsFocus = false, isDisabled, isLoading = false, ...rest } = allProps;
|
|
26
|
+
const { mods, to, htmlType, as, type = "item", theme = "default", onPress, onPressStart: _onPressStart, onPressEnd: _onPressEnd, onPressChange: _onPressChange, onPressUp: _onPressUp, navigationOptions: _navigationOptions, label: _label, actions, actionsProps, size = "medium", wrapperStyles, autoHideActions = false, disableActionsFocus = false, isDisabled, isLoading = false, ...rest } = allProps;
|
|
27
27
|
const finalIsDisabled = isDisabled === true || isLoading && isDisabled !== false;
|
|
28
28
|
const dismissParentPopover = useDismissParentPopover();
|
|
29
29
|
const buttonElementRef = useRef(null);
|
|
@@ -32,7 +32,7 @@ const ItemButton = forwardRef(function ItemButton(allProps, ref) {
|
|
|
32
32
|
const el = buttonElementRef.current;
|
|
33
33
|
if (!el) return;
|
|
34
34
|
if (el.hasAttribute("data-popover-trigger")) return;
|
|
35
|
-
if (el.closest("[data-popover-keep]")) return;
|
|
35
|
+
if (el.closest("[data-popover-keep], [data-popover-keep-on-press]")) return;
|
|
36
36
|
dismissParentPopover(el);
|
|
37
37
|
});
|
|
38
38
|
const { actionProps } = useAction({
|
|
@@ -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","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"],"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 Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, '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 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` 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]')) return;\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 costs nothing: it publishes a\n // width of 0, so the row reserves no space for it.\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":";;;;;;;;;;;;;;;AAkCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;EAChB;CACD,CAAC;AAEF,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,YACX3B,SACAG,cACAF,OAAO,UACPC,eACA0B,kBAAkB,OAClBC,sBAAsB,OACtBC,YACAC,YAAY,OACZ,GAAGC,SACDnB;CAKJ,MAAMoB,kBACJH,eAAe,QAASC,aAAaD,eAAe;CAMtD,MAAMI,uBAAuB7C,yBAAyB;CACtD,MAAM8C,mBAAmBlD,OAA2B,KAAK;CAEzD,MAAMmD,iBAAiBlD,UAAUmD,MAAkB;AACjDlB,YAAUkB,EAAE;EACZ,MAAMC,KAAKH,iBAAiBI;AAC5B,MAAI,CAACD,GAAI;AACT,MAAIA,GAAGE,aAAa,uBAAuB,CAAE;AAC7C,MAAIF,GAAGG,QAAQ,sBAAsB,CAAE;AACvCP,uBAAqBI,GAAG;GACxB;CAEF,MAAM,EAAEI,gBAAgB7C,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAc,YAAYG;EACZd,SAASiB;EACV,EACDtB,IACD;CAID,MAAM6B,cAAc3D,cACZI,UAAUsD,YAAY5B,KAAYqB,iBAAiB,EACzD,CAACO,YAAY5B,IACf,CAAC;CAaD,MAAM8B,gBAAgB3D,OAAO,MAAM;AAEnC,KAAIe,YAAY6C,OACdD,eAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJlC,SAAS,oBACRA,SAASmC,cAAc,QACxBN,YAAYpC,OAAO,OACnBO,SAASoC,QAAQ,QACjBpC,SAAS,oBAAoB,OACzBA,SAASmC,aACTH;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC;EAOC,eAAeN;EACFK;EACeC;EAC5B,SAASpD,UAAU,OAAO6C;EAC1B,GAAK1D,WAAW6C,MAAMU,YAAY;EAClC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYnC;EAChBA;EACCC;EACDP;EACK8B;EACCD;GAEf;AAED,KAAIgB,YACF,QACE,oBAAC;EACOvC;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACGyB;EACIC;EACrB,YAAYI;aAEV,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,6BAC5B;GACmB;AAIzB,QAAOF,aAAa,MAAM;EAC1B;AAEF,MAAMG,cAAcC,OAAOC,OAAO3C,YAAY;CAC5C4C,QAAQ9D;CACR+D,OAAOjE;CACR,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"],"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 Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, '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 costs nothing: it publishes a\n // width of 0, so the row reserves no space for it.\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":";;;;;;;;;;;;;;;AAkCA,MAAM4B,aAAazB,MAAMW,OAAM;CAC7Be,IAAI;CACJC,MAAM;CACNC,OAAO;CACPC,QAAQ;EACNC,QAAQ;EACRC,cAAc;EAChB;CACD,CAAC;AAEF,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,yBAAyB;CACtD,MAAMkD,mBAAmBtD,OAA2B,KAAK;CAEzD,MAAMuD,iBAAiBtD,UAAUuD,MAAkB;AACjDtB,YAAUsB,EAAE;EACZ,MAAMC,KAAKH,iBAAiBI;AAC5B,MAAI,CAACD,GAAI;AACT,MAAIA,GAAGE,aAAa,uBAAuB,CAAE;AAC7C,MAAIF,GAAGG,QAAQ,oDAAoD,CACjE;AAEFP,uBAAqBI,GAAG;GACxB;CAEF,MAAM,EAAEI,gBAAgBjD,UACtB;EACE,GAAIgB;EACJK;EACAD;EACAX;EACAU;EACAkB,YAAYG;EACZlB,SAASqB;EACV,EACD1B,IACD;CAID,MAAMiC,cAAc/D,cACZI,UAAU0D,YAAYhC,KAAYyB,iBAAiB,EACzD,CAACO,YAAYhC,IACf,CAAC;CAaD,MAAMkC,gBAAgB/D,OAAO,MAAM;AAEnC,KAAIe,YAAYiD,OACdD,eAAcL,UAAU;CAG1B,MAAMO,cAAcF,cAAcL;CASlC,MAAMQ,cACJtC,SAAS,oBACRA,SAASuC,cAAc,QACxBN,YAAYxC,OAAO,OACnBO,SAASwC,QAAQ,QACjBxC,SAAS,oBAAoB,OACzBA,SAASuC,aACTH;CAEN,MAAMK,gBACJC,aACAC,6BAA6B,UAE7B,oBAAC;EAOC,eAAeN;EACFK;EACeC;EAC5B,SAASxD,UAAU,OAAOiD;EAC1B,GAAK9D,WAAWiD,MAAMU,YAAY;EAClC,gBAAcK;EACd,KAAKJ;EACL,wBAAqB;EACrB,UAAUD,YAAYvC;EAChBA;EACCC;EACDP;EACKkC;EACCD;GAEf;AAED,KAAIgB,YACF,QACE,oBAAC;EACO3C;EACCC;EACDP;EACAe;EACN,QAAQd;EACCF;EACKG;EACG6B;EACIC;EACrB,YAAYI;aAEV,EAAEkB,aAAAA,eAAaC,4BAAAA,mCACfF,aAAaC,eAAaC,6BAC5B;GACmB;AAIzB,QAAOF,aAAa,MAAM;EAC1B;AAEF,MAAMG,cAAcC,OAAOC,OAAO/C,YAAY;CAC5CgD,QAAQlE;CACRmE,OAAOrE;CACR,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.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 { _CollectionItem } from "../../CollectionItem.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { filterCollectionItemProps } from "../../CollectionItem.js";
|
|
4
4
|
import { _Item } from "../../content/Item/Item.js";
|