@cube-dev/ui-kit 0.188.0 → 0.190.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/README.md +4 -0
- package/dist/CHANGELOG.md +20 -0
- package/dist/README.md +4 -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 +3 -6
- package/dist/components/GlobalStyles.js.map +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.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +40 -19
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +4 -7
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +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 +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 +4 -6
- package/dist/components/actions/Menu/styled.js.map +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.js +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/Alert.js.map +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/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +53 -78
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +11 -10
- package/dist/components/content/Item/Item.js.map +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 +13 -22
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.d.ts +34 -4
- package/dist/components/content/Result/Result.js +199 -95
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +3 -5
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.d.ts +2 -0
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/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 +3 -6
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +3 -6
- package/dist/components/data/ItemTable/ItemTable.js.map +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 +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +8 -10
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-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.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +3 -5
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +119 -129
- package/dist/components/fields/DatePicker/DatePicker.js.map +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 +128 -138
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +321 -331
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +163 -179
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.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/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +5 -6
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +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 +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +5 -6
- package/dist/components/fields/Picker/Picker.js.map +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.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +68 -66
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +33 -43
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/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 +2 -2
- package/dist/components/layout/Board/Board.js.map +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 +4 -4
- package/dist/components/layout/Board/WidgetHost.js.map +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 +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js.map +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/PeriodGrid.js.map +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/CubeLogo/CubeLogo.js.map +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.d.ts +45 -50
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +137 -70
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.d.ts +1 -0
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +123 -109
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/AlertDialog/index.d.ts +2 -1
- package/dist/components/overlays/AlertDialog/types.d.ts +30 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Tray.js.map +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 +17 -1
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/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 +4 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +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/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 +51 -6
- package/dist/utils/styles.js.map +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/components/content/Result.md +202 -12
- package/docs/components/content/Title.md +1 -0
- package/docs/components/overlays/AlertDialog.md +130 -0
- package/docs/tasty/dsl.md +28 -6
- package/docs/tasty/styles.md +20 -0
- package/package.json +3 -3
package/dist/utils/styles.js
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.0 | Cube Dev Team */
|
|
2
|
+
import { isSelector, mergeStyles } from "@tenphi/tasty";
|
|
3
|
+
|
|
2
4
|
//#region src/utils/styles.ts
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The keys whose last explicit value across `layers` is a reset: `null`, or
|
|
10
|
+
* `false` too where `allowFalse` (a sub-element key, which tasty drops for
|
|
11
|
+
* either).
|
|
12
|
+
*/
|
|
13
|
+
function finalResets(layers, allowFalse) {
|
|
14
|
+
const last = /* @__PURE__ */ new Map();
|
|
15
|
+
for (const layer of layers) for (const key of Object.keys(layer)) if (layer[key] !== void 0) last.set(key, layer[key]);
|
|
16
|
+
return [...last].filter(([key, value]) => value === null || value === false && allowFalse && isSelector(key));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Merge runtime style layers with tasty's `mergeStyles`, later layers winning.
|
|
20
|
+
* This is the algorithm tasty applies between an element's own styles and its
|
|
21
|
+
* `styles` prop: a state map without a `''` key extends the one below it,
|
|
22
|
+
* sub-elements merge key by key, and `undefined` keeps the lower value.
|
|
23
|
+
*
|
|
24
|
+
* Resets are the one difference. The result is not final: it is passed on as
|
|
25
|
+
* some element's `styles`, which tasty merges over that element's own styles
|
|
26
|
+
* once more. `mergeStyles` applies a `null` by deleting the key, so a consumer's
|
|
27
|
+
* `{ padding: null }` would vanish here, before it reached the element whose
|
|
28
|
+
* padding it was meant to remove. Every reset that is the last word on its key,
|
|
29
|
+
* top-level or inside a sub-element, is therefore written back into the result.
|
|
30
|
+
*/
|
|
31
|
+
function mergeStyleLayers(...layers) {
|
|
32
|
+
const present = layers.filter(isRecord);
|
|
33
|
+
const merged = mergeStyles(...present);
|
|
34
|
+
for (const [key, value] of finalResets(present, true)) merged[key] = value;
|
|
35
|
+
for (const key of Object.keys(merged)) {
|
|
36
|
+
if (!isSelector(key) || !isRecord(merged[key])) continue;
|
|
37
|
+
let subLayers = [];
|
|
38
|
+
for (const layer of present) {
|
|
39
|
+
const sub = layer[key];
|
|
40
|
+
if (sub === null || sub === false) subLayers = [];
|
|
41
|
+
else if (isRecord(sub)) subLayers.push(sub);
|
|
42
|
+
}
|
|
43
|
+
const resets = finalResets(subLayers, false);
|
|
44
|
+
if (resets.length) merged[key] = {
|
|
45
|
+
...merged[key],
|
|
46
|
+
...Object.fromEntries(resets)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return merged;
|
|
50
|
+
}
|
|
3
51
|
/**
|
|
4
52
|
* Split properties into style and non-style properties.
|
|
5
53
|
* Collects style-related props from `props` (based on `styleList`)
|
|
@@ -15,10 +63,7 @@ function extractStyles(props, styleList = [], defaultStyles, propMap, ignoreList
|
|
|
15
63
|
const ignoreSet = new Set(ignoreList);
|
|
16
64
|
const styleSet = new Set(styleList);
|
|
17
65
|
const record = props;
|
|
18
|
-
const styles =
|
|
19
|
-
...defaultStyles,
|
|
20
|
-
...!ignoreSet.has("styles") && record.styles && typeof record.styles === "object" ? record.styles : void 0
|
|
21
|
-
};
|
|
66
|
+
const styles = mergeStyleLayers(defaultStyles, !ignoreSet.has("styles") && record.styles && typeof record.styles === "object" ? record.styles : void 0);
|
|
22
67
|
for (const prop of Object.keys(record)) {
|
|
23
68
|
if (ignoreSet.has(prop)) continue;
|
|
24
69
|
const styleName = propMap?.[prop] ?? prop;
|
|
@@ -28,5 +73,5 @@ function extractStyles(props, styleList = [], defaultStyles, propMap, ignoreList
|
|
|
28
73
|
}
|
|
29
74
|
|
|
30
75
|
//#endregion
|
|
31
|
-
export { extractStyles };
|
|
76
|
+
export { extractStyles, mergeStyleLayers };
|
|
32
77
|
//# sourceMappingURL=styles.js.map
|
package/dist/utils/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":["Styles","extractStyles","props","styleList","defaultStyles","propMap","
|
|
1
|
+
{"version":3,"file":"styles.js","names":["isSelector","mergeStyles","Styles","StyleLayer","StyleRecord","Record","isRecord","value","Array","isArray","finalResets","layers","allowFalse","last","Map","layer","key","Object","keys","undefined","set","filter","mergeStyleLayers","present","merged","subLayers","sub","push","resets","length","fromEntries","extractStyles","props","styleList","defaultStyles","propMap","ignoreList","ignoreSet","Set","styleSet","record","styles","has","prop","styleName"],"sources":["../../src/utils/styles.ts"],"sourcesContent":["import { isSelector, mergeStyles } from '@tenphi/tasty';\n\nimport type { Styles } from '@tenphi/tasty';\n\ntype StyleLayer = Styles | null | undefined;\ntype StyleRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is StyleRecord {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * The keys whose last explicit value across `layers` is a reset: `null`, or\n * `false` too where `allowFalse` (a sub-element key, which tasty drops for\n * either).\n */\nfunction finalResets(layers: StyleRecord[], allowFalse: boolean) {\n const last = new Map<string, unknown>();\n\n for (const layer of layers) {\n for (const key of Object.keys(layer)) {\n if (layer[key] !== undefined) last.set(key, layer[key]);\n }\n }\n\n return [...last].filter(\n ([key, value]) =>\n value === null || (value === false && allowFalse && isSelector(key)),\n );\n}\n\n/**\n * Merge runtime style layers with tasty's `mergeStyles`, later layers winning.\n * This is the algorithm tasty applies between an element's own styles and its\n * `styles` prop: a state map without a `''` key extends the one below it,\n * sub-elements merge key by key, and `undefined` keeps the lower value.\n *\n * Resets are the one difference. The result is not final: it is passed on as\n * some element's `styles`, which tasty merges over that element's own styles\n * once more. `mergeStyles` applies a `null` by deleting the key, so a consumer's\n * `{ padding: null }` would vanish here, before it reached the element whose\n * padding it was meant to remove. Every reset that is the last word on its key,\n * top-level or inside a sub-element, is therefore written back into the result.\n */\nexport function mergeStyleLayers(...layers: StyleLayer[]): Styles {\n const present = layers.filter(isRecord) as StyleRecord[];\n const merged = mergeStyles(...(present as Styles[])) as StyleRecord;\n\n for (const [key, value] of finalResets(present, true)) merged[key] = value;\n\n for (const key of Object.keys(merged)) {\n if (!isSelector(key) || !isRecord(merged[key])) continue;\n\n // The sub-element's layers since its last wholesale reset.\n let subLayers: StyleRecord[] = [];\n\n for (const layer of present) {\n const sub = layer[key];\n\n if (sub === null || sub === false) subLayers = [];\n else if (isRecord(sub)) subLayers.push(sub);\n }\n\n const resets = finalResets(subLayers, false);\n\n // Copied first: a sub-element present in one layer is that layer's object.\n if (resets.length)\n merged[key] = { ...merged[key], ...Object.fromEntries(resets) };\n }\n\n return merged as Styles;\n}\n\n/**\n * Split properties into style and non-style properties.\n * Collects style-related props from `props` (based on `styleList`)\n * and merges them with `defaultStyles` and `props.styles`.\n *\n * @param props - Component prop map.\n * @param styleList - List of style property names to extract.\n * @param defaultStyles - Default style map of the component.\n * @param propMap - Props-to-style alias map (e.g. `{ bg: 'fill' }`).\n * @param ignoreList - Properties to skip during extraction.\n */\nexport function extractStyles(\n props: object,\n styleList: readonly string[] = [],\n defaultStyles?: Styles,\n propMap?: Record<string, string>,\n ignoreList: readonly string[] = [],\n): Styles {\n const ignoreSet = new Set(ignoreList);\n const styleSet = new Set(styleList);\n const record = props as Record<string, unknown>;\n\n // `props.styles` over the component defaults. The result is always a fresh\n // object, so the style props below can be assigned onto it.\n const styles = mergeStyleLayers(\n defaultStyles,\n !ignoreSet.has('styles') &&\n record.styles &&\n typeof record.styles === 'object'\n ? (record.styles as Styles)\n : undefined,\n );\n\n for (const prop of Object.keys(record)) {\n if (ignoreSet.has(prop)) continue;\n\n const styleName = propMap?.[prop] ?? prop;\n\n if (styleSet.has(styleName)) {\n styles[styleName] = record[prop] as Styles[keyof Styles];\n }\n }\n\n return styles;\n}\n"],"mappings":";;;;AAOA,SAASM,SAASC,OAAsC;AACtD,QAAO,CAAC,CAACA,SAAS,OAAOA,UAAU,YAAY,CAACC,MAAMC,QAAQF,MAAM;;;;;;;AAQtE,SAASG,YAAYC,QAAuBC,YAAqB;CAC/D,MAAMC,uBAAO,IAAIC,KAAsB;AAEvC,MAAK,MAAMC,SAASJ,OAClB,MAAK,MAAMK,OAAOC,OAAOC,KAAKH,MAAM,CAClC,KAAIA,MAAMC,SAASG,OAAWN,MAAKO,IAAIJ,KAAKD,MAAMC,KAAK;AAI3D,QAAO,CAAC,GAAGH,KAAK,CAACQ,QACd,CAACL,KAAKT,WACLA,UAAU,QAASA,UAAU,SAASK,cAAcZ,WAAWgB,IACnE,CAAC;;;;;;;;;;;;;;;AAgBH,SAAgBM,iBAAiB,GAAGX,QAA8B;CAChE,MAAMY,UAAUZ,OAAOU,OAAOf,SAAS;CACvC,MAAMkB,SAASvB,YAAY,GAAIsB,QAAqB;AAEpD,MAAK,MAAM,CAACP,KAAKT,UAAUG,YAAYa,SAAS,KAAK,CAAEC,QAAOR,OAAOT;AAErE,MAAK,MAAMS,OAAOC,OAAOC,KAAKM,OAAO,EAAE;AACrC,MAAI,CAACxB,WAAWgB,IAAI,IAAI,CAACV,SAASkB,OAAOR,KAAK,CAAE;EAGhD,IAAIS,YAA2B,EAAE;AAEjC,OAAK,MAAMV,SAASQ,SAAS;GAC3B,MAAMG,MAAMX,MAAMC;AAElB,OAAIU,QAAQ,QAAQA,QAAQ,MAAOD,aAAY,EAAE;YACxCnB,SAASoB,IAAI,CAAED,WAAUE,KAAKD,IAAI;;EAG7C,MAAME,SAASlB,YAAYe,WAAW,MAAM;AAG5C,MAAIG,OAAOC,OACTL,QAAOR,OAAO;GAAE,GAAGQ,OAAOR;GAAM,GAAGC,OAAOa,YAAYF,OAAM;GAAG;;AAGnE,QAAOJ;;;;;;;;;;;;;AAcT,SAAgBO,cACdC,OACAC,YAA+B,EAAE,EACjCC,eACAC,SACAC,aAAgC,EAAE,EAC1B;CACR,MAAMC,YAAY,IAAIC,IAAIF,WAAW;CACrC,MAAMG,WAAW,IAAID,IAAIL,UAAU;CACnC,MAAMO,SAASR;CAIf,MAAMS,SAASnB,iBACbY,eACA,CAACG,UAAUK,IAAI,SAAS,IACtBF,OAAOC,UACP,OAAOD,OAAOC,WAAW,WACtBD,OAAOC,SACRtB,OACL;AAED,MAAK,MAAMwB,QAAQ1B,OAAOC,KAAKsB,OAAO,EAAE;AACtC,MAAIH,UAAUK,IAAIC,KAAK,CAAE;EAEzB,MAAMC,YAAYT,UAAUQ,SAASA;AAErC,MAAIJ,SAASG,IAAIE,UAAU,CACzBH,QAAOG,aAAaJ,OAAOG;;AAI/B,QAAOF"}
|
package/dist/utils/tree.js
CHANGED
package/dist/utils/warnings.js
CHANGED
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.0 | Cube Dev Team */
|
|
2
2
|
//#region src/version.ts
|
|
3
|
-
const VERSION = "0.
|
|
4
|
-
const TASTY_VERSION = "3.9.
|
|
3
|
+
const VERSION = "0.190.0";
|
|
4
|
+
const TASTY_VERSION = "3.9.6";
|
|
5
5
|
if (typeof window !== "undefined") {
|
|
6
6
|
const version = VERSION;
|
|
7
7
|
const tastyVersion = TASTY_VERSION;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Result
|
|
2
2
|
|
|
3
|
-
An empty state or result display with icon, title, and optional content. Supports status presets with built-in icons.
|
|
3
|
+
An empty state or result display with icon, title, and optional content. Supports status presets with built-in icons and an actions slot. The `large` size with the `stacked` layout is the vertical card used as the body of a confirmation or result dialog.
|
|
4
4
|
|
|
5
5
|
## When to Use
|
|
6
6
|
|
|
7
7
|
- Empty states (no data, no results)
|
|
8
8
|
- Success/error feedback after actions
|
|
9
|
+
- Confirmation and result dialogs (payment complete, action failed)
|
|
9
10
|
- 404, 403, 500 error pages
|
|
10
11
|
- Informational messages
|
|
11
12
|
|
|
@@ -19,9 +20,35 @@ An empty state or result display with icon, title, and optional content. Support
|
|
|
19
20
|
- **`title`** `ReactNode` — Main title text
|
|
20
21
|
- **`subtitle`** `ReactNode` — Secondary text below the title
|
|
21
22
|
- **`subTitle`** `ReactNode` — Deprecated: use `subtitle` instead
|
|
22
|
-
- **`icon`** `ReactNode` — Custom icon
|
|
23
|
-
- **`
|
|
24
|
-
- **`
|
|
23
|
+
- **`icon`** `ReactNode` — Custom icon that replaces the status icon
|
|
24
|
+
- **`size`** `'medium' | 'large'` (default: `'medium'`) — Visual scale: the icon size and the title and subtitle presets. Does not change the layout. Ignored when `isCompact` is set
|
|
25
|
+
- **`layout`** `'default' | 'stacked'` (default: `'default'`) — Arrangement of the block. `stacked` fills the container and stacks the actions to the full width, as in a confirmation or result dialog. Ignored when `isCompact` is set
|
|
26
|
+
- **`isCompact`** `boolean` (default: `false`) — Compact horizontal layout. Overrides `size` and `layout`
|
|
27
|
+
- **`actions`** `ReactNode` — Action buttons as `Result.Action` elements: a centered row by default, a full-width column in the `stacked` layout
|
|
28
|
+
- **`children`** `ReactNode` — Free content between the text and the actions
|
|
29
|
+
|
|
30
|
+
The elements render in this order: icon, title, subtitle, children, actions.
|
|
31
|
+
|
|
32
|
+
### Result.Action
|
|
33
|
+
|
|
34
|
+
A `Button` for the `actions` slot. It takes every `Button` prop, and its `size` follows the Result's `size` unless you set one: `medium` buttons in a medium Result, `large` in a large one, `medium` when `isCompact`. A `type="link"` action keeps the `inline` size of a link `Button`. Set `type` on each action as on any `Button`.
|
|
35
|
+
|
|
36
|
+
### Base Properties
|
|
37
|
+
|
|
38
|
+
Supports [Base properties](../../BaseProperties.md).
|
|
39
|
+
|
|
40
|
+
### Styling Properties
|
|
41
|
+
|
|
42
|
+
#### styles
|
|
43
|
+
|
|
44
|
+
Customizes the root element of the component.
|
|
45
|
+
|
|
46
|
+
**Sub-elements:**
|
|
47
|
+
|
|
48
|
+
- `Icon` - The status icon wrapper. Colored by the `status` modifier, padded on every side by `3x`, or a quarter of `--icon-size` when that is larger (an icon above `12x`), so the room never drops below the spacing between the other blocks, and that room is the whole distance to the title (no padding when `isCompact`). Wraps a custom `icon` too, with the same room and without a status color. Not rendered for a status without an icon (`404`, `403`, `500`)
|
|
49
|
+
- `Title` - The text block holding the title and the subtitle
|
|
50
|
+
- `Content` - The free `children` block
|
|
51
|
+
- `Actions` - The `actions` block
|
|
25
52
|
|
|
26
53
|
### Style Defaults
|
|
27
54
|
|
|
@@ -29,15 +56,13 @@ An empty state or result display with icon, title, and optional content. Support
|
|
|
29
56
|
- `flow` — `column`
|
|
30
57
|
- `placeContent` — `center` (switches to `start` when `isCompact`)
|
|
31
58
|
- `placeItems` — `center` (switches to `start` when `isCompact`)
|
|
32
|
-
- `gap` — `3x`
|
|
33
|
-
- `padding` — `6x 4x` (
|
|
59
|
+
- `gap` — `0`; `Content` and `Actions` keep `3x` from the block above with a top margin (`2x 1x` and no margins when `isCompact`)
|
|
60
|
+
- `padding` — `6x 4x` (`0` when `isCompact`; `1.5x` when `layout="stacked"`, and `0` for a stacked Result inside a `Dialog`, whose `Content` already pads it. The `@in-dialog` state is the Result's own, so `styles={{ padding: { 'layout=stacked & @in-dialog': '1x' } }}` sets it and keeps the rest of the default padding)
|
|
34
61
|
- `textAlign` — `center` (switches to `left` when `isCompact`)
|
|
35
|
-
- `
|
|
62
|
+
- `boxSizing` — `border-box`
|
|
63
|
+
- `width` — `max 80ch` (caps the readable line length; override via the `width` prop). `100%` up to `80ch` when `layout="stacked"`, so the stacked actions share one width wherever the card sits
|
|
36
64
|
- `margin` — `0 auto` (centers Result horizontally within its parent; switches to `0` when `isCompact`)
|
|
37
|
-
|
|
38
|
-
### Base Properties
|
|
39
|
-
|
|
40
|
-
Supports [Base properties](../../BaseProperties.md).
|
|
65
|
+
- `--icon-size` — `6x` (`10x` when `size="large"`)
|
|
41
66
|
|
|
42
67
|
### Style Properties
|
|
43
68
|
|
|
@@ -50,8 +75,51 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
50
75
|
- **Color:** `color`, `fill`, `fade`, `image`
|
|
51
76
|
- **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
|
|
52
77
|
|
|
78
|
+
### Modifiers
|
|
79
|
+
|
|
80
|
+
The root element exposes these modifiers as `data-*` attributes:
|
|
81
|
+
|
|
82
|
+
| Modifier | Type | Description |
|
|
83
|
+
| --- | --- | --- |
|
|
84
|
+
| `compact` | `boolean` | Set by `isCompact`: horizontal icon + title layout |
|
|
85
|
+
| `size` | `'medium' \| 'large'` | Set by `size`; `medium` when `isCompact` |
|
|
86
|
+
| `layout` | `'default' \| 'stacked'` | Set by `layout`; `default` when `isCompact` |
|
|
87
|
+
| `status` | `CubeResultStatus` | Set by `status`, `info` by default; drives the icon color. Not set when a custom `icon` is passed |
|
|
88
|
+
|
|
89
|
+
## Variants
|
|
90
|
+
|
|
91
|
+
### Sizes
|
|
92
|
+
|
|
93
|
+
The size scales the content and never changes the arrangement. `isCompact` has its own scale and ignores it.
|
|
94
|
+
|
|
95
|
+
- `medium` - Default. Icon `6x`, title `h4`, subtitle `t2m`
|
|
96
|
+
- `large` - Icon `10x`, title `h2`, subtitle `t2`, `Result.Action` buttons `large`
|
|
97
|
+
|
|
98
|
+
### Layouts
|
|
99
|
+
|
|
100
|
+
The layout arranges the block and never changes the scale. `isCompact` has its own arrangement and ignores it.
|
|
101
|
+
|
|
102
|
+
- `default` - A centered column capped at `80ch`, actions in a centered row that wraps
|
|
103
|
+
- `stacked` - Fills the container up to `80ch` with a `1.5x` padding of its own (none inside a `Dialog`), actions stacked to the full width, free `children` stretched. Combine with `size="large"` for the vertical card of a confirmation or result dialog
|
|
104
|
+
|
|
53
105
|
## Examples
|
|
54
106
|
|
|
107
|
+
### Basic Usage
|
|
108
|
+
|
|
109
|
+
```jsx
|
|
110
|
+
<Result
|
|
111
|
+
status="success"
|
|
112
|
+
title="Successfully Purchased Cloud Server ECS!"
|
|
113
|
+
subtitle="Cloud server configuration takes 1-5 minutes, please wait."
|
|
114
|
+
actions={
|
|
115
|
+
<>
|
|
116
|
+
<Result.Action type="primary">Go Console</Result.Action>
|
|
117
|
+
<Result.Action>Buy Again</Result.Action>
|
|
118
|
+
</>
|
|
119
|
+
}
|
|
120
|
+
/>
|
|
121
|
+
```
|
|
122
|
+
|
|
55
123
|
### Info
|
|
56
124
|
|
|
57
125
|
### Warning
|
|
@@ -60,14 +128,136 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
60
128
|
|
|
61
129
|
### Custom Icon
|
|
62
130
|
|
|
131
|
+
```jsx
|
|
132
|
+
<Result
|
|
133
|
+
title="Access is denied!"
|
|
134
|
+
subtitle="Request access from the administrator."
|
|
135
|
+
icon={
|
|
136
|
+
<Icon color="#warning">
|
|
137
|
+
<IconLock />
|
|
138
|
+
</Icon>
|
|
139
|
+
}
|
|
140
|
+
actions={<Result.Action>Request</Result.Action>}
|
|
141
|
+
/>
|
|
142
|
+
```
|
|
143
|
+
|
|
63
144
|
### Custom Title
|
|
64
145
|
|
|
65
146
|
### Compact
|
|
66
147
|
|
|
148
|
+
### Large
|
|
149
|
+
|
|
150
|
+
The `large` size scales the icon and the text. The actions stay in a centered row.
|
|
151
|
+
|
|
152
|
+
```jsx
|
|
153
|
+
<Result
|
|
154
|
+
size="large"
|
|
155
|
+
status="success"
|
|
156
|
+
title="Payment complete"
|
|
157
|
+
subtitle="Charged $1,234.00 to Visa **** 4242"
|
|
158
|
+
actions={
|
|
159
|
+
<>
|
|
160
|
+
<Result.Action type="primary">
|
|
161
|
+
Done
|
|
162
|
+
</Result.Action>
|
|
163
|
+
<Result.Action>
|
|
164
|
+
View invoice
|
|
165
|
+
</Result.Action>
|
|
166
|
+
</>
|
|
167
|
+
}
|
|
168
|
+
/>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Stacked
|
|
172
|
+
|
|
173
|
+
The `stacked` layout fills the container and stacks the actions to the full width. With `size="large"` it is the vertical card for confirmation and result dialogs.
|
|
174
|
+
|
|
175
|
+
```jsx
|
|
176
|
+
<Result
|
|
177
|
+
size="large"
|
|
178
|
+
layout="stacked"
|
|
179
|
+
status="success"
|
|
180
|
+
title="Payment complete"
|
|
181
|
+
subtitle="Charged $1,234.00 to Visa **** 4242"
|
|
182
|
+
actions={
|
|
183
|
+
<Result.Action type="primary">
|
|
184
|
+
Done
|
|
185
|
+
</Result.Action>
|
|
186
|
+
}
|
|
187
|
+
/>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Free `children` (an alert, details) stretch to the full width in this layout.
|
|
191
|
+
|
|
192
|
+
### In a Dialog
|
|
193
|
+
|
|
194
|
+
Inside a `Dialog` the stacked large Result is the whole body: no `Header` and no `Footer`. Its title takes the dialog `title` slot, so the dialog is labelled by it automatically.
|
|
195
|
+
|
|
196
|
+
```jsx
|
|
197
|
+
<DialogContainer isOpen={isOpen} onDismiss={close}>
|
|
198
|
+
<Dialog size="S">
|
|
199
|
+
<Content>
|
|
200
|
+
<Result
|
|
201
|
+
size="large"
|
|
202
|
+
layout="stacked"
|
|
203
|
+
status="success"
|
|
204
|
+
title="Payment complete"
|
|
205
|
+
subtitle="Charged $1,234.00 to Visa **** 4242"
|
|
206
|
+
actions={
|
|
207
|
+
<Result.Action type="primary" onPress={close}>
|
|
208
|
+
Done
|
|
209
|
+
</Result.Action>
|
|
210
|
+
}
|
|
211
|
+
/>
|
|
212
|
+
</Content>
|
|
213
|
+
</Dialog>
|
|
214
|
+
</DialogContainer>
|
|
215
|
+
```
|
|
216
|
+
|
|
67
217
|
### Width Limit
|
|
68
218
|
|
|
69
219
|
The default `width: max 80ch` keeps long copy in a comfortable reading column even inside a much wider parent. Override the cap by passing your own `width`.
|
|
70
220
|
|
|
221
|
+
## Accessibility
|
|
222
|
+
|
|
223
|
+
### Keyboard Navigation
|
|
224
|
+
|
|
225
|
+
- The component itself is not focusable; the `Result.Action` buttons keep the keyboard behavior of `Button`
|
|
226
|
+
|
|
227
|
+
### Screen Reader Support
|
|
228
|
+
|
|
229
|
+
- The title renders as an `h2` heading and the subtitle as an `h3`, so the result is reachable through heading navigation
|
|
230
|
+
- Inside a `Dialog` without a `Header`, the title takes the dialog's `title` slot and becomes its accessible name
|
|
231
|
+
|
|
232
|
+
## Best Practices
|
|
233
|
+
|
|
234
|
+
1. **Do**: Put `Result.Action` buttons in `actions` and keep `children` for content
|
|
235
|
+
|
|
236
|
+
```jsx
|
|
237
|
+
<Result title="Payment failed" actions={<Result.Action>Update card</Result.Action>}>
|
|
238
|
+
<Alert>Nothing was charged.</Alert>
|
|
239
|
+
</Result>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
2. **Don't**: Combine a Result with a dialog `Header`. Both titles would take the dialog `title` slot and share one id
|
|
243
|
+
|
|
244
|
+
```jsx
|
|
245
|
+
<Dialog>
|
|
246
|
+
<Header>
|
|
247
|
+
<Title>Payment</Title>
|
|
248
|
+
</Header>
|
|
249
|
+
<Content>
|
|
250
|
+
<Result size="large" layout="stacked" title="Payment complete" />
|
|
251
|
+
</Content>
|
|
252
|
+
</Dialog>
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Related Components
|
|
256
|
+
|
|
257
|
+
- [Dialog](../overlays/Dialog.md) - Host for the stacked large Result card
|
|
258
|
+
- [AlertDialog](../overlays/AlertDialog.md) - Confirmation with a header and footer instead of a result card
|
|
259
|
+
- [Alert](./Alert.md) - Inline status message for the `children` slot
|
|
260
|
+
|
|
71
261
|
## Differences from Ant Design
|
|
72
262
|
|
|
73
263
|
| There are differences | Ant Design property | Cube UIKit property |
|
|
@@ -76,4 +266,4 @@ The default `width: max 80ch` keeps long copy in a comfortable reading column ev
|
|
|
76
266
|
| No | `title` | `title` |
|
|
77
267
|
| Yes | `subTitle` | `subtitle` |
|
|
78
268
|
| No | `icon` | `icon` |
|
|
79
|
-
| Yes | `extra` |
|
|
269
|
+
| Yes | `extra` | `actions` |
|
|
@@ -11,6 +11,7 @@ A heading component for section titles. Renders as `h1`–`h6` based on the `lev
|
|
|
11
11
|
## Properties
|
|
12
12
|
|
|
13
13
|
- **`level`** `1 | 2 | 3 | 4 | 5 | 6` (default: `1`) — Heading level (maps to `h1`–`h6` tag and corresponding preset `h1`–`h6`)
|
|
14
|
+
- **`slot`** `string` (default: `'title'`) — The slot to read provided props from, e.g. the `title` slot a `Dialog` labels itself with. Pass another name to opt out
|
|
14
15
|
- **`ellipsis`** `boolean` — Truncate overflow with ellipsis
|
|
15
16
|
- **`nowrap`** `boolean` — Prevent text wrapping
|
|
16
17
|
- **`monospace`** `boolean` — Use monospace font
|
|
@@ -65,3 +65,133 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
65
65
|
content="A new version is available. Please refresh to update."
|
|
66
66
|
/>
|
|
67
67
|
```
|
|
68
|
+
|
|
69
|
+
## Imperative API
|
|
70
|
+
|
|
71
|
+
`useAlertDialogAPI()` opens an alert dialog from code, such as an event handler, with no `DialogTrigger` to render. It works anywhere under `<Root>`.
|
|
72
|
+
|
|
73
|
+
- **`open(props, params?)`** `Promise<'confirm' | 'secondary'>` — Opens the dialog. Resolves with the action the user picked, and rejects when the dialog closes without one or cannot open.
|
|
74
|
+
|
|
75
|
+
`props` takes the properties above, plus:
|
|
76
|
+
|
|
77
|
+
- **`onConfirm`** `() => unknown` — Runs when the confirm button is pressed. If it returns a promise, the dialog stays open until it settles (see below)
|
|
78
|
+
- **`onSecondary`** `() => unknown` — The same, for the secondary button
|
|
79
|
+
- **`onCancel`** `() => void` — Runs when the dialog settles as a cancel: the Cancel button, Escape, a click outside, an aborted `cancelToken`, or `content` calling `reject()`
|
|
80
|
+
- **`type`** — The dialog container type, as on `DialogContainer`
|
|
81
|
+
- **`isDismissable`** `boolean` (default: `true`) — Whether Escape and a click outside close the dialog
|
|
82
|
+
- **`onDismiss`** `(action?: string) => void` — Called when an action button, Escape or a click outside closes the dialog. An action button passes its name: `'confirm'`, `'secondary'` or `'cancel'`
|
|
83
|
+
- **`content`** can also be a function `({ resolve, reject }) => ReactNode`, for content that closes the dialog itself
|
|
84
|
+
|
|
85
|
+
`params` takes:
|
|
86
|
+
|
|
87
|
+
- **`cancelToken`** `AbortSignal` — Closes the dialog when aborted
|
|
88
|
+
|
|
89
|
+
The confirm button resolves `'confirm'` whether you configure `actions.confirm` or leave the default Ok button. Set it to `false` to hide it.
|
|
90
|
+
|
|
91
|
+
### Running the action
|
|
92
|
+
|
|
93
|
+
Pass the action as `onConfirm` and ignore the returned promise. A cancel then needs no handling: an ignored cancel is not reported as an unhandled rejection.
|
|
94
|
+
|
|
95
|
+
```jsx
|
|
96
|
+
const { open } = useAlertDialogAPI();
|
|
97
|
+
|
|
98
|
+
const onDelete = () => {
|
|
99
|
+
open({
|
|
100
|
+
title: 'Delete the item?',
|
|
101
|
+
content: 'This cannot be undone.',
|
|
102
|
+
danger: true,
|
|
103
|
+
actions: { confirm: { children: 'Delete' }, cancel: true },
|
|
104
|
+
onConfirm: () => deleteItem(),
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
<Button onPress={onDelete}>Delete</Button>;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
When `onConfirm` or `onSecondary` returns a promise, the dialog waits for it:
|
|
112
|
+
|
|
113
|
+
- The pressed button shows a loading state, the other buttons are disabled, and Escape and a click outside are ignored.
|
|
114
|
+
- When the promise resolves, the dialog closes and `open` resolves with the button's status.
|
|
115
|
+
- When it rejects, or the handler throws, the dialog stays open with its buttons enabled again, so the user can retry or cancel. The error is passed to `reportError`, which reaches error reporting such as Sentry. To show it to the user, catch it inside the handler, for example with a toast.
|
|
116
|
+
|
|
117
|
+
`actions.confirm.onPress` and `actions.secondary.onPress` behave the same way, but they are deprecated: put the action in `onConfirm` or `onSecondary`. If both are set, both run and the dialog waits for both.
|
|
118
|
+
|
|
119
|
+
A choice between two actions needs no promise either:
|
|
120
|
+
|
|
121
|
+
```jsx
|
|
122
|
+
open({
|
|
123
|
+
title: 'Unsaved changes',
|
|
124
|
+
actions: {
|
|
125
|
+
confirm: { children: 'Save' },
|
|
126
|
+
secondary: { children: 'Discard' },
|
|
127
|
+
cancel: true,
|
|
128
|
+
},
|
|
129
|
+
onConfirm: async () => {
|
|
130
|
+
await save();
|
|
131
|
+
navigate('/');
|
|
132
|
+
},
|
|
133
|
+
onSecondary: () => navigate('/'),
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### How the promise settles
|
|
138
|
+
|
|
139
|
+
| Event | Promise |
|
|
140
|
+
| --- | --- |
|
|
141
|
+
| Confirm or secondary action | resolves `'confirm'` / `'secondary'`, once its handler has finished |
|
|
142
|
+
| Cancel action | rejects with `undefined` |
|
|
143
|
+
| Escape or a click outside | rejects with `undefined` |
|
|
144
|
+
| `cancelToken` aborted, before or while the dialog is open | rejects with `undefined` |
|
|
145
|
+
| `content` calls `resolve(status)` | resolves `status` |
|
|
146
|
+
| `content` calls `reject(reason)` | rejects with `reason` (`undefined` for `reject()`) |
|
|
147
|
+
| Another alert dialog is open | rejects with an `Error` |
|
|
148
|
+
|
|
149
|
+
A rejection with `undefined` is a cancel: the user chose not to act. Anything else is a real failure. An ignored promise stays quiet on a cancel and still reports a real failure as an unhandled rejection. Once you `await` the promise or chain `.then`, the cancel reaches your code, so handle it there.
|
|
150
|
+
|
|
151
|
+
### Waiting for the result
|
|
152
|
+
|
|
153
|
+
Await the promise only when the caller itself needs the answer, such as a guard that returns whether the user agreed:
|
|
154
|
+
|
|
155
|
+
```jsx
|
|
156
|
+
const confirmLeave = async () => {
|
|
157
|
+
try {
|
|
158
|
+
return (await open({ title: 'Leave the page?', actions: { cancel: true } })) === 'confirm';
|
|
159
|
+
} catch (reason) {
|
|
160
|
+
// Cancel, Escape or a click outside
|
|
161
|
+
if (reason === undefined) return false;
|
|
162
|
+
|
|
163
|
+
// A real failure, such as another dialog being open
|
|
164
|
+
throw reason;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Closing the dialog from code
|
|
170
|
+
|
|
171
|
+
```jsx
|
|
172
|
+
const { open } = useAlertDialogAPI();
|
|
173
|
+
const controllerRef = useRef(null);
|
|
174
|
+
|
|
175
|
+
const onRequestApproval = () => {
|
|
176
|
+
// A signal stays aborted, so each dialog needs a fresh controller.
|
|
177
|
+
controllerRef.current = new AbortController();
|
|
178
|
+
|
|
179
|
+
open(
|
|
180
|
+
{
|
|
181
|
+
title: 'Waiting for approval',
|
|
182
|
+
content: 'The dialog closes when the approval arrives.',
|
|
183
|
+
actions: { confirm: { children: 'Hide' } },
|
|
184
|
+
},
|
|
185
|
+
{ cancelToken: controllerRef.current.signal },
|
|
186
|
+
);
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
// Later, for example when the approval arrives:
|
|
190
|
+
controllerRef.current?.abort();
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Aborting settles the dialog as a cancel. A signal that is already aborted settles it right away, without showing the dialog.
|
|
194
|
+
|
|
195
|
+
### One dialog at a time
|
|
196
|
+
|
|
197
|
+
Only one alert dialog can be open: while one is, `open` rejects with an `Error`. A dialog that is already closing gives way to the new one, so a follow-up dialog opened from the previous one's result, such as a second confirmation, shows normally. The dialog is still open while its `onConfirm` runs, so open a follow-up after the handler, not from inside it.
|
package/docs/tasty/dsl.md
CHANGED
|
@@ -538,13 +538,16 @@ Container style queries use `$prop` (boolean) or `$prop=value` syntax, which map
|
|
|
538
538
|
|
|
539
539
|
### `@supports(...)` — Feature Queries
|
|
540
540
|
|
|
541
|
-
Feature queries test CSS property support
|
|
541
|
+
Feature queries test CSS property support and accept CSS support functions such
|
|
542
|
+
as `at-rule()`. Use `$` as the first argument to test selector support:
|
|
542
543
|
|
|
543
|
-
| Tasty syntax
|
|
544
|
-
|
|
|
545
|
-
| `@supports(display: grid)`
|
|
546
|
-
| `@supports($, :has(*))`
|
|
547
|
-
|
|
|
544
|
+
| Tasty syntax | CSS output |
|
|
545
|
+
| ---------------------------- | ---------------------------------- |
|
|
546
|
+
| `@supports(display: grid)` | `@supports (display: grid)` |
|
|
547
|
+
| `@supports($, :has(*))` | `@supports selector(:has(*))` |
|
|
548
|
+
| `@supports(at-rule(@scope))` | `@supports (at-rule(@scope))` |
|
|
549
|
+
| `!@supports(display: grid)` | `@supports (not (display: grid))` |
|
|
550
|
+
| `!@supports(at-rule(@scope))` | `@supports (not (at-rule(@scope)))` |
|
|
548
551
|
|
|
549
552
|
```jsx
|
|
550
553
|
display: {
|
|
@@ -553,6 +556,25 @@ display: {
|
|
|
553
556
|
}
|
|
554
557
|
```
|
|
555
558
|
|
|
559
|
+
`at-rule()` tests whether the browser supports the named at-rule. Its surrounding
|
|
560
|
+
parentheses in Tasty's CSS output are valid CSS. Negation and combinations with
|
|
561
|
+
other states use the same syntax as property queries:
|
|
562
|
+
|
|
563
|
+
```jsx
|
|
564
|
+
color: {
|
|
565
|
+
_: 'red',
|
|
566
|
+
'@supports(at-rule(@scope)) & @supports(display: grid)': 'blue',
|
|
567
|
+
}
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
Use `_` to keep a base value when a browser cannot evaluate a query. A support
|
|
571
|
+
query only detects a browser feature; it does not add an API for authoring the
|
|
572
|
+
queried at-rule in a Tasty style object. For conditional stylesheet imports such
|
|
573
|
+
as `@import url("scoped.css") supports(at-rule(@scope));`, use an ordinary CSS
|
|
574
|
+
stylesheet or document-level `useRawCSS()`. Put imports before other rules in
|
|
575
|
+
that stylesheet. Imports cannot be used in constructable stylesheets, including
|
|
576
|
+
Tasty's adopted-sheet mode for Shadow DOM.
|
|
577
|
+
|
|
556
578
|
### `_` — Fallback Floor
|
|
557
579
|
|
|
558
580
|
By default Tasty makes states **mutually exclusive**: a higher-priority state
|
package/docs/tasty/styles.md
CHANGED
|
@@ -37,6 +37,24 @@ Use these instead of their raw CSS counterparts:
|
|
|
37
37
|
|
|
38
38
|
## Layout
|
|
39
39
|
|
|
40
|
+
### `overscrollBehavior`
|
|
41
|
+
|
|
42
|
+
The native `overscrollBehavior` shorthand and its `overscrollBehaviorBlock`,
|
|
43
|
+
`overscrollBehaviorInline`, `overscrollBehaviorX`, and `overscrollBehaviorY`
|
|
44
|
+
longhands support `auto`, `contain`, `none`, and `chain`. The shorthand can set
|
|
45
|
+
separate X and Y values, for example `overscrollBehavior: 'chain contain'`.
|
|
46
|
+
|
|
47
|
+
`chain` allows scroll chaining to another scrollable area while suppressing
|
|
48
|
+
boundary effects such as bounce. It requires browser support; use a feature
|
|
49
|
+
query and a fallback floor when targeting browsers without it:
|
|
50
|
+
|
|
51
|
+
```jsx
|
|
52
|
+
overscrollBehaviorBlock: {
|
|
53
|
+
_: 'auto',
|
|
54
|
+
'@supports(overscroll-behavior-block: chain)': 'chain',
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
40
58
|
### `display`
|
|
41
59
|
|
|
42
60
|
Standard CSS display values. Handled together with `hide`, `textOverflow`, `overflow`, and `whiteSpace` for priority resolution.
|
|
@@ -566,6 +584,8 @@ When easing is provided without a duration, the default timing variable is used
|
|
|
566
584
|
| `zIndex` | `z-index` |
|
|
567
585
|
| `inset` | `inset`, `top`, `right`, `bottom`, `left` |
|
|
568
586
|
|
|
587
|
+
When two entries cover the same property, an entry that names that one property wins over a group such as `theme`, in either order: `opacity 120ms ease-in-out, theme` keeps the opacity timing. Otherwise the later entry wins, as in CSS.
|
|
588
|
+
|
|
569
589
|
Default timing: `$transition` (or `${name}-transition` with `$transition` fallback per semantic name). Prefer omitting the duration or using a duration token instead of repeating raw time values across components. Explicit zero can disable motion.
|
|
570
590
|
|
|
571
591
|
```jsx
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cube-dev/ui-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.190.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "UIKit for Cube Projects",
|
|
6
6
|
"repository": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"@tabler/icons-react": "^3.31.0",
|
|
60
60
|
"@tanstack/react-virtual": "^3.13.12",
|
|
61
61
|
"@tenphi/glaze": "2.0.0",
|
|
62
|
-
"@tenphi/tasty": "^3.9.
|
|
62
|
+
"@tenphi/tasty": "^3.9.6",
|
|
63
63
|
"clipboard-copy": "^4.0.1",
|
|
64
64
|
"clsx": "^1.1.1",
|
|
65
65
|
"diff": "^8.0.3",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"@statoscope/cli": "^5.20.1",
|
|
99
99
|
"@storybook/addon-docs": "^10.3.6",
|
|
100
100
|
"@storybook/react-vite": "^10.3.6",
|
|
101
|
-
"@tenphi/eslint-plugin-tasty": "^1.
|
|
101
|
+
"@tenphi/eslint-plugin-tasty": "^1.5.1",
|
|
102
102
|
"@testing-library/dom": "^10.4.1",
|
|
103
103
|
"@testing-library/jest-dom": "^6.7.0",
|
|
104
104
|
"@testing-library/react": "^16.3.0",
|