@cube-dev/ui-kit 0.193.1 → 0.194.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 +28 -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.d.ts +25 -12
- package/dist/components/CollectionItem.js +59 -4
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +2 -2
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.d.ts +1 -1
- package/dist/components/actions/Banner/Banner.js +6 -6
- package/dist/components/actions/Banner/Banner.js.map +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 +28 -25
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +7 -7
- package/dist/components/actions/CommandMenu/CommandMenu.js +232 -239
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +26 -22
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.d.ts +3 -0
- package/dist/components/actions/ItemActionContext.js +15 -13
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +9 -9
- package/dist/components/actions/Menu/Menu.js +88 -64
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.d.ts +18 -0
- package/dist/components/actions/Menu/MenuCollectionItem.js +36 -0
- package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -0
- package/dist/components/actions/Menu/MenuItem.d.ts +5 -0
- package/dist/components/actions/Menu/MenuItem.js +402 -116
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.d.ts +3 -1
- package/dist/components/actions/Menu/MenuSection.js +31 -33
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.d.ts +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/index.d.ts +1 -0
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.d.ts +3 -2
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +60 -36
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +19 -19
- 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 +44 -33
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.d.ts +7 -7
- package/dist/components/content/Item/Item.js +205 -67
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +314 -0
- package/dist/components/content/Item/ItemWithNativeLinks.js.map +1 -0
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +18 -15
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +41 -46
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +2 -2
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +77 -70
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +5 -5
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +18 -19
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.js +2 -2
- 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 +66 -48
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +6 -3
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +2 -2
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +39 -19
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.d.ts +1 -1
- package/dist/components/data/TableBase/styled.js +14 -1
- 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-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +219 -0
- package/dist/components/data/TableBase/use-column-window.js.map +1 -0
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +32 -19
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js.map +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -1
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +13 -13
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +32 -29
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +2 -0
- package/dist/components/fields/ColorPicker/ColorPicker.js +8 -5
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +6 -3
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +41 -30
- 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 +2 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +246 -238
- 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 +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 +22 -2
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +5 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +4 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
- 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 +8 -7
- 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 +36 -32
- 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.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +4 -2
- package/dist/components/fields/Picker/Picker.js +3 -2
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +24 -24
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +4 -4
- package/dist/components/fields/Select/Select.js +35 -32
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +13 -5
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +62 -53
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -0
- package/dist/components/form/FieldWrapper/FieldWrapper.js +133 -109
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +102 -0
- package/dist/components/form/FieldWrapper/field-description.js.map +1 -0
- package/dist/components/form/FieldWrapper/types.d.ts +6 -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 +17 -4
- package/dist/components/form/Form/use-field/use-field-props.js.map +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 +27 -24
- package/dist/components/form/Label.js.map +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 +2 -1
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +3 -3
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +44 -24
- package/dist/components/overlays/Modal/Modal.js.map +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 +34 -24
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +45 -25
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +145 -0
- package/dist/components/overlays/Modal/modal-containment.js.map +1 -0
- 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 +2 -2
- 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 +50 -47
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +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 +3 -2
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.d.ts +2 -1
- package/dist/i18n/index.js +3 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/instance.d.ts +2 -3
- package/dist/i18n/instance.js +3 -4
- package/dist/i18n/instance.js.map +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +36 -5
- package/dist/i18n/locales/en-US/uikit.js +36 -5
- package/dist/i18n/locales/en-US/uikit.json.d.ts +41 -4
- package/dist/i18n/locales/es-ES/uikit.js +36 -5
- package/dist/i18n/locales/es-MX/uikit.js +36 -5
- package/dist/i18n/locales/fr-FR/uikit.js +36 -5
- package/dist/i18n/locales/it-IT/uikit.js +36 -5
- package/dist/i18n/locales/ja-JP/uikit.js +36 -5
- package/dist/i18n/locales/nb-NO/uikit.js +36 -5
- package/dist/i18n/locales/pt-BR/uikit.js +36 -5
- package/dist/i18n/locales/pt-PT/uikit.js +36 -5
- package/dist/i18n/locales/sv-SE/uikit.js +36 -5
- package/dist/i18n/locales/vi-VN/uikit.js +36 -5
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.d.ts +11 -0
- package/dist/i18n/namespace.js +12 -0
- package/dist/i18n/namespace.js.map +1 -0
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +5 -3
- package/dist/i18n/useI18n.js.map +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 +9 -7
- package/dist/index.js +7 -6
- 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 +2 -2
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +11 -0
- package/dist/providers/navigation-url.js.map +1 -0
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +19 -0
- package/dist/providers/use-navigation.js.map +1 -0
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/Usage.md +4 -0
- package/docs/components/CollectionItem.md +5 -1
- package/docs/components/actions/CommandMenu.md +46 -18
- package/docs/components/actions/Menu.md +124 -19
- package/docs/components/content/Placeholder.md +2 -0
- package/docs/components/content/Skeleton.md +2 -0
- package/docs/components/data/DataTable.md +3 -0
- package/docs/components/data/ItemTable.md +11 -1
- package/docs/components/overlays/Dialog.md +1 -1
- package/docs/components/overlays/DialogContainer.md +1 -2
- package/docs/components/overlays/DialogTrigger.md +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
|
|
2
|
+
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
|
+
import { c } from "react/compiler-runtime";
|
|
4
|
+
import { CONTAINER_STYLES } from "@tenphi/tasty";
|
|
5
|
+
import { useLayoutEffect, useState } from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/components/data/TableBase/use-column-window.ts
|
|
8
|
+
const COLUMN_OVERSCAN = 300;
|
|
9
|
+
const MAX_REFILL_COLUMNS = 1;
|
|
10
|
+
const SAFE_FRAME_STYLES = new Set(CONTAINER_STYLES.filter((key) => ![
|
|
11
|
+
"font",
|
|
12
|
+
"preset",
|
|
13
|
+
"whiteSpace"
|
|
14
|
+
].includes(key)));
|
|
15
|
+
function sameRange(left, right) {
|
|
16
|
+
if (left == null || right == null) return left === right;
|
|
17
|
+
return left.first === right.first && left.last === right.last;
|
|
18
|
+
}
|
|
19
|
+
/** Arbitrary body styling and DOM spans need the complete intrinsic layout. */
|
|
20
|
+
function canWindowColumns(columns, styles) {
|
|
21
|
+
return columns.every((column) => column.width != null && column.width > 0 && Number.isFinite(column.width) && !column.cellProps) && Object.keys(styles ?? {}).every((key) => SAFE_FRAME_STYLES.has(key));
|
|
22
|
+
}
|
|
23
|
+
function getColumnWindowRange(layout, offset, viewportWidth, overscanStart = COLUMN_OVERSCAN, overscanEnd = COLUMN_OVERSCAN) {
|
|
24
|
+
const start = Math.max(0, offset + layout.pinnedStartWidth - overscanStart);
|
|
25
|
+
const end = offset + viewportWidth - layout.pinnedEndWidth + overscanEnd;
|
|
26
|
+
let position = 0;
|
|
27
|
+
let first = layout.columns.length;
|
|
28
|
+
let last = -1;
|
|
29
|
+
for (const column of layout.columns) {
|
|
30
|
+
const next = position + column.width;
|
|
31
|
+
if (next > start && position < end) {
|
|
32
|
+
first = Math.min(first, column.index);
|
|
33
|
+
last = column.index;
|
|
34
|
+
}
|
|
35
|
+
position = next;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
first,
|
|
39
|
+
last
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Refill the moving edge without rebuilding rows at every column boundary. */
|
|
43
|
+
function getBufferedColumnWindowRange(layout, previous, offset, viewportWidth) {
|
|
44
|
+
const required = getColumnWindowRange(layout, offset, viewportWidth);
|
|
45
|
+
if (!previous) return required;
|
|
46
|
+
if (offset <= 0 || offset >= layout.totalWidth - viewportWidth - 1) return required;
|
|
47
|
+
const extendsStart = required.first < previous.first;
|
|
48
|
+
const extendsEnd = required.last > previous.last;
|
|
49
|
+
if (!extendsStart && !extendsEnd) {
|
|
50
|
+
const first = Math.max(previous.first, required.first - MAX_REFILL_COLUMNS);
|
|
51
|
+
const last = Math.min(previous.last, required.last + MAX_REFILL_COLUMNS);
|
|
52
|
+
return first === previous.first && last === previous.last ? previous : {
|
|
53
|
+
first,
|
|
54
|
+
last
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (extendsStart && extendsEnd) return required;
|
|
58
|
+
const refilled = getColumnWindowRange(layout, offset, viewportWidth, extendsStart ? COLUMN_OVERSCAN * 2 : COLUMN_OVERSCAN, extendsEnd ? COLUMN_OVERSCAN * 2 : COLUMN_OVERSCAN);
|
|
59
|
+
return {
|
|
60
|
+
first: Math.max(refilled.first, required.first - MAX_REFILL_COLUMNS),
|
|
61
|
+
last: Math.min(refilled.last, required.last + MAX_REFILL_COLUMNS)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** Preserve height-bearing cells, native controls and row naming offscreen. */
|
|
65
|
+
function retainColumn(column, treeColumnKey) {
|
|
66
|
+
return column.pin != null || column.isStructural || column.isRowHeader || column.key === treeColumnKey || column.autoHeight || column.render != null || column.cellStyles != null;
|
|
67
|
+
}
|
|
68
|
+
function getColumnWindowSegments(columns, range, treeColumnKey) {
|
|
69
|
+
const segments = [];
|
|
70
|
+
let omitted = 0;
|
|
71
|
+
let firstOmittedKey = "";
|
|
72
|
+
function flushGap() {
|
|
73
|
+
if (!omitted) return;
|
|
74
|
+
segments.push({
|
|
75
|
+
key: `column-gap:${firstOmittedKey}`,
|
|
76
|
+
span: omitted
|
|
77
|
+
});
|
|
78
|
+
omitted = 0;
|
|
79
|
+
}
|
|
80
|
+
for (const column of columns) if (range == null || column.index >= range.first && column.index <= range.last || retainColumn(column, treeColumnKey)) {
|
|
81
|
+
flushGap();
|
|
82
|
+
segments.push({
|
|
83
|
+
key: `column-cell:${column.key}`,
|
|
84
|
+
column
|
|
85
|
+
});
|
|
86
|
+
} else {
|
|
87
|
+
if (!omitted) firstOmittedKey = column.key;
|
|
88
|
+
omitted++;
|
|
89
|
+
if (omitted === 1e3) flushGap();
|
|
90
|
+
}
|
|
91
|
+
flushGap();
|
|
92
|
+
return segments;
|
|
93
|
+
}
|
|
94
|
+
function useColumnWindow(layout, scroller, isEnabled, treeColumnKey) {
|
|
95
|
+
const $ = c(26);
|
|
96
|
+
let t0;
|
|
97
|
+
if ($[0] !== isEnabled || $[1] !== layout.columns || $[2] !== treeColumnKey) {
|
|
98
|
+
t0 = isEnabled && layout.columns.some((column) => !retainColumn(column, treeColumnKey));
|
|
99
|
+
$[0] = isEnabled;
|
|
100
|
+
$[1] = layout.columns;
|
|
101
|
+
$[2] = treeColumnKey;
|
|
102
|
+
$[3] = t0;
|
|
103
|
+
} else t0 = $[3];
|
|
104
|
+
const isWindowEnabled = t0;
|
|
105
|
+
const [range, setRange] = useState(null);
|
|
106
|
+
const [fitsRow, setFitsRow] = useState(false);
|
|
107
|
+
let t1;
|
|
108
|
+
if ($[4] !== isWindowEnabled || $[5] !== layout || $[6] !== scroller) {
|
|
109
|
+
t1 = () => {
|
|
110
|
+
const width = scroller?.clientWidth ?? 0;
|
|
111
|
+
const next = isWindowEnabled && scroller && width > 0 && layout.totalWidth > width ? getColumnWindowRange(layout, Math.abs(scroller.scrollLeft), width) : null;
|
|
112
|
+
setRange((previous) => sameRange(previous, next) ? previous : next);
|
|
113
|
+
};
|
|
114
|
+
$[4] = isWindowEnabled;
|
|
115
|
+
$[5] = layout;
|
|
116
|
+
$[6] = scroller;
|
|
117
|
+
$[7] = t1;
|
|
118
|
+
} else t1 = $[7];
|
|
119
|
+
const resetRange = t1;
|
|
120
|
+
let t2;
|
|
121
|
+
if ($[8] !== isWindowEnabled || $[9] !== layout.totalWidth || $[10] !== scroller) {
|
|
122
|
+
t2 = () => {
|
|
123
|
+
if (!isWindowEnabled || !scroller || scroller.clientWidth <= 0 || layout.totalWidth <= scroller.clientWidth) return;
|
|
124
|
+
const table = scroller?.querySelector("table");
|
|
125
|
+
if (!table) return;
|
|
126
|
+
const computed = getComputedStyle(table);
|
|
127
|
+
const rowHeight = computed.getPropertyValue("--row-height").trim();
|
|
128
|
+
const height = parseFloat(rowHeight);
|
|
129
|
+
const lineHeight = parseFloat(computed.lineHeight);
|
|
130
|
+
setFitsRow(rowHeight === `${height}px` && Number.isFinite(height) && height >= lineHeight);
|
|
131
|
+
};
|
|
132
|
+
$[8] = isWindowEnabled;
|
|
133
|
+
$[9] = layout.totalWidth;
|
|
134
|
+
$[10] = scroller;
|
|
135
|
+
$[11] = t2;
|
|
136
|
+
} else t2 = $[11];
|
|
137
|
+
const refreshAppearance = useEvent(t2);
|
|
138
|
+
let t3;
|
|
139
|
+
let t4;
|
|
140
|
+
if ($[12] !== isWindowEnabled || $[13] !== layout || $[14] !== refreshAppearance || $[15] !== scroller) {
|
|
141
|
+
t3 = () => {
|
|
142
|
+
if (!isWindowEnabled || !scroller) return;
|
|
143
|
+
const update = (t5) => {
|
|
144
|
+
const reset = t5 === void 0 ? false : t5;
|
|
145
|
+
const width_0 = scroller.clientWidth;
|
|
146
|
+
const offset = Math.abs(scroller.scrollLeft);
|
|
147
|
+
setRange((previous_0) => {
|
|
148
|
+
const next_0 = width_0 > 0 && layout.totalWidth > width_0 ? getBufferedColumnWindowRange(layout, reset ? null : previous_0, offset, width_0) : null;
|
|
149
|
+
return sameRange(previous_0, next_0) ? previous_0 : next_0;
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
let lastOffset = Math.abs(scroller.scrollLeft);
|
|
153
|
+
let lastVerticalOffset = scroller.scrollTop;
|
|
154
|
+
const onScroll = () => {
|
|
155
|
+
const offset_0 = Math.abs(scroller.scrollLeft);
|
|
156
|
+
const verticalOffset = scroller.scrollTop;
|
|
157
|
+
const reset_0 = verticalOffset !== lastVerticalOffset;
|
|
158
|
+
lastVerticalOffset = verticalOffset;
|
|
159
|
+
if (offset_0 === lastOffset && !reset_0) return;
|
|
160
|
+
lastOffset = offset_0;
|
|
161
|
+
update(reset_0);
|
|
162
|
+
};
|
|
163
|
+
refreshAppearance();
|
|
164
|
+
update(true);
|
|
165
|
+
const observer = new ResizeObserver(() => {
|
|
166
|
+
refreshAppearance();
|
|
167
|
+
update(true);
|
|
168
|
+
});
|
|
169
|
+
observer.observe(scroller);
|
|
170
|
+
scroller.addEventListener("scroll", onScroll, { passive: true });
|
|
171
|
+
return () => {
|
|
172
|
+
observer.disconnect();
|
|
173
|
+
scroller.removeEventListener("scroll", onScroll);
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
t4 = [
|
|
177
|
+
isWindowEnabled,
|
|
178
|
+
layout,
|
|
179
|
+
refreshAppearance,
|
|
180
|
+
scroller
|
|
181
|
+
];
|
|
182
|
+
$[12] = isWindowEnabled;
|
|
183
|
+
$[13] = layout;
|
|
184
|
+
$[14] = refreshAppearance;
|
|
185
|
+
$[15] = scroller;
|
|
186
|
+
$[16] = t3;
|
|
187
|
+
$[17] = t4;
|
|
188
|
+
} else {
|
|
189
|
+
t3 = $[16];
|
|
190
|
+
t4 = $[17];
|
|
191
|
+
}
|
|
192
|
+
useLayoutEffect(t3, t4);
|
|
193
|
+
const t5 = isWindowEnabled && fitsRow ? range : null;
|
|
194
|
+
let t6;
|
|
195
|
+
if ($[18] !== layout.columns || $[19] !== t5 || $[20] !== treeColumnKey) {
|
|
196
|
+
t6 = getColumnWindowSegments(layout.columns, t5, treeColumnKey);
|
|
197
|
+
$[18] = layout.columns;
|
|
198
|
+
$[19] = t5;
|
|
199
|
+
$[20] = treeColumnKey;
|
|
200
|
+
$[21] = t6;
|
|
201
|
+
} else t6 = $[21];
|
|
202
|
+
let t7;
|
|
203
|
+
if ($[22] !== refreshAppearance || $[23] !== resetRange || $[24] !== t6) {
|
|
204
|
+
t7 = {
|
|
205
|
+
resetRange,
|
|
206
|
+
segments: t6,
|
|
207
|
+
refreshAppearance
|
|
208
|
+
};
|
|
209
|
+
$[22] = refreshAppearance;
|
|
210
|
+
$[23] = resetRange;
|
|
211
|
+
$[24] = t6;
|
|
212
|
+
$[25] = t7;
|
|
213
|
+
} else t7 = $[25];
|
|
214
|
+
return t7;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
//#endregion
|
|
218
|
+
export { canWindowColumns, useColumnWindow };
|
|
219
|
+
//# sourceMappingURL=use-column-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-column-window.js","names":["CONTAINER_STYLES","useLayoutEffect","useState","useEvent","Styles","CubeResolvedColumn","CubeTableColumnLayout","COLUMN_OVERSCAN","MAX_REFILL_COLUMNS","SAFE_FRAME_STYLES","Set","filter","key","includes","ColumnWindowRange","first","last","sameRange","left","right","ColumnWindowSegment","column","T","span","canWindowColumns","columns","styles","every","width","Number","isFinite","cellProps","Object","keys","has","getColumnWindowRange","layout","offset","viewportWidth","overscanStart","overscanEnd","start","Math","max","pinnedStartWidth","end","pinnedEndWidth","position","length","next","min","index","getBufferedColumnWindowRange","previous","required","totalWidth","extendsStart","extendsEnd","refilled","retainColumn","treeColumnKey","pin","isStructural","isRowHeader","autoHeight","render","cellStyles","getColumnWindowSegments","range","segments","omitted","firstOmittedKey","flushGap","push","useColumnWindow","scroller","isEnabled","$","_c","t0","some","isWindowEnabled","setRange","fitsRow","setFitsRow","t1","clientWidth","abs","scrollLeft","resetRange","t2","table","querySelector","computed","getComputedStyle","rowHeight","getPropertyValue","trim","height","parseFloat","lineHeight","refreshAppearance","t3","t4","update","t5","reset","undefined","width_0","previous_0","next_0","lastOffset","lastVerticalOffset","scrollTop","onScroll","offset_0","verticalOffset","reset_0","observer","ResizeObserver","observe","addEventListener","passive","disconnect","removeEventListener","t6","t7"],"sources":["../../../../src/components/data/TableBase/use-column-window.ts"],"sourcesContent":["import { CONTAINER_STYLES } from '@tenphi/tasty';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\n\nimport type { Styles } from '@tenphi/tasty';\nimport type { CubeResolvedColumn, CubeTableColumnLayout } from './types';\n\n// Keep nearby cells ready for a horizontal flick without multiplying the\n// mounted row window by the entire column collection.\nconst COLUMN_OVERSCAN = 300;\nconst MAX_REFILL_COLUMNS = 1;\nconst SAFE_FRAME_STYLES = new Set<string>(\n CONTAINER_STYLES.filter(\n (key) => !['font', 'preset', 'whiteSpace'].includes(key),\n ),\n);\n\nexport interface ColumnWindowRange {\n first: number;\n last: number;\n}\n\nfunction sameRange(\n left: ColumnWindowRange | null,\n right: ColumnWindowRange | null,\n) {\n if (left == null || right == null) return left === right;\n return left.first === right.first && left.last === right.last;\n}\n\nexport type ColumnWindowSegment<T> =\n | { column: CubeResolvedColumn<T>; key: string }\n | { column?: undefined; key: string; span: number };\n\n/** Arbitrary body styling and DOM spans need the complete intrinsic layout. */\nexport function canWindowColumns<T>(\n columns: readonly CubeResolvedColumn<T>[],\n styles?: Styles,\n) {\n return (\n columns.every(\n (column) =>\n column.width != null &&\n column.width > 0 &&\n Number.isFinite(column.width) &&\n !column.cellProps,\n ) && Object.keys(styles ?? {}).every((key) => SAFE_FRAME_STYLES.has(key))\n );\n}\n\nexport function getColumnWindowRange<T>(\n layout: CubeTableColumnLayout<T>,\n offset: number,\n viewportWidth: number,\n overscanStart = COLUMN_OVERSCAN,\n overscanEnd = COLUMN_OVERSCAN,\n): ColumnWindowRange {\n const start = Math.max(0, offset + layout.pinnedStartWidth - overscanStart);\n const end = offset + viewportWidth - layout.pinnedEndWidth + overscanEnd;\n let position = 0;\n let first = layout.columns.length;\n let last = -1;\n\n for (const column of layout.columns) {\n const next = position + column.width!;\n if (next > start && position < end) {\n first = Math.min(first, column.index);\n last = column.index;\n }\n position = next;\n }\n\n return { first, last };\n}\n\n/** Refill the moving edge without rebuilding rows at every column boundary. */\nexport function getBufferedColumnWindowRange<T>(\n layout: CubeTableColumnLayout<T>,\n previous: ColumnWindowRange | null,\n offset: number,\n viewportWidth: number,\n): ColumnWindowRange {\n const required = getColumnWindowRange(layout, offset, viewportWidth);\n if (!previous) return required;\n // Native scroll extents round fractional widths; no ahead buffer is\n // needed within a pixel of either endpoint.\n if (offset <= 0 || offset >= layout.totalWidth! - viewportWidth - 1)\n return required;\n const extendsStart = required.first < previous.first;\n const extendsEnd = required.last > previous.last;\n if (!extendsStart && !extendsEnd) {\n const first = Math.max(previous.first, required.first - MAX_REFILL_COLUMNS);\n const last = Math.min(previous.last, required.last + MAX_REFILL_COLUMNS);\n return first === previous.first && last === previous.last\n ? previous\n : { first, last };\n }\n // Both edges moving means the viewport/layout changed, not one scroll edge.\n if (extendsStart && extendsEnd) return required;\n const refilled = getColumnWindowRange(\n layout,\n offset,\n viewportWidth,\n extendsStart ? COLUMN_OVERSCAN * 2 : COLUMN_OVERSCAN,\n extendsEnd ? COLUMN_OVERSCAN * 2 : COLUMN_OVERSCAN,\n );\n // A pixel-only refill retains too many narrow cells during diagonal scroll.\n return {\n first: Math.max(refilled.first, required.first - MAX_REFILL_COLUMNS),\n last: Math.min(refilled.last, required.last + MAX_REFILL_COLUMNS),\n };\n}\n\n/** Preserve height-bearing cells, native controls and row naming offscreen. */\nfunction retainColumn<T>(\n column: CubeResolvedColumn<T>,\n treeColumnKey?: string,\n) {\n return (\n column.pin != null ||\n column.isStructural ||\n column.isRowHeader ||\n column.key === treeColumnKey ||\n column.autoHeight ||\n column.render != null ||\n column.cellStyles != null\n );\n}\n\nexport function getColumnWindowSegments<T>(\n columns: readonly CubeResolvedColumn<T>[],\n range: ColumnWindowRange | null,\n treeColumnKey?: string,\n): ColumnWindowSegment<T>[] {\n const segments: ColumnWindowSegment<T>[] = [];\n let omitted = 0;\n let firstOmittedKey = '';\n\n function flushGap() {\n if (!omitted) return;\n segments.push({ key: `column-gap:${firstOmittedKey}`, span: omitted });\n omitted = 0;\n }\n\n for (const column of columns) {\n if (\n range == null ||\n (column.index >= range.first && column.index <= range.last) ||\n retainColumn(column, treeColumnKey)\n ) {\n flushGap();\n segments.push({ key: `column-cell:${column.key}`, column });\n } else {\n if (!omitted) firstOmittedKey = column.key;\n omitted++;\n // Native table cells clamp colSpan to 1000.\n if (omitted === 1000) flushGap();\n }\n }\n flushGap();\n return segments;\n}\n\nexport function useColumnWindow<T>(\n layout: CubeTableColumnLayout<T>,\n scroller: HTMLDivElement | null,\n isEnabled: boolean,\n treeColumnKey?: string,\n) {\n const isWindowEnabled =\n isEnabled &&\n layout.columns.some((column) => !retainColumn(column, treeColumnKey));\n const [range, setRange] = useState<ColumnWindowRange | null>(null);\n const [fitsRow, setFitsRow] = useState(false);\n const resetRange = () => {\n const width = scroller?.clientWidth ?? 0;\n const next =\n isWindowEnabled && scroller && width > 0 && layout.totalWidth! > width\n ? getColumnWindowRange(layout, Math.abs(scroller.scrollLeft), width)\n : null;\n setRange((previous) => (sameRange(previous, next) ? previous : next));\n };\n const refreshAppearance = useEvent(() => {\n if (\n !isWindowEnabled ||\n !scroller ||\n scroller.clientWidth <= 0 ||\n layout.totalWidth! <= scroller.clientWidth\n ) {\n return;\n }\n const table = scroller?.querySelector('table');\n if (!table) return;\n const computed = getComputedStyle(table);\n const rowHeight = computed.getPropertyValue('--row-height').trim();\n const height = parseFloat(rowHeight);\n const lineHeight = parseFloat(computed.lineHeight);\n // Empty default cells can be shorter than text. Measure the inherited\n // tokens, since Root can override both typography and the size scale.\n setFitsRow(\n rowHeight === `${height}px` &&\n Number.isFinite(height) &&\n height >= lineHeight,\n );\n });\n\n useLayoutEffect(() => {\n if (!isWindowEnabled || !scroller) {\n return;\n }\n\n const update = (reset = false) => {\n const width = scroller.clientWidth;\n const offset = Math.abs(scroller.scrollLeft);\n // Only changed bands add a render. New rows use the ordinary band,\n // so diagonal scrolling does not multiply the extra refill cells.\n setRange((previous) => {\n const next =\n width > 0 && layout.totalWidth! > width\n ? getBufferedColumnWindowRange(\n layout,\n reset ? null : previous,\n offset,\n width,\n )\n : null;\n return sameRange(previous, next) ? previous : next;\n });\n };\n let lastOffset = Math.abs(scroller.scrollLeft);\n let lastVerticalOffset = scroller.scrollTop;\n const onScroll = () => {\n const offset = Math.abs(scroller.scrollLeft);\n const verticalOffset = scroller.scrollTop;\n const reset = verticalOffset !== lastVerticalOffset;\n lastVerticalOffset = verticalOffset;\n if (offset === lastOffset && !reset) return;\n lastOffset = offset;\n update(reset);\n };\n refreshAppearance();\n update(true);\n const observer = new ResizeObserver(() => {\n refreshAppearance();\n update(true);\n });\n observer.observe(scroller);\n scroller.addEventListener('scroll', onScroll, { passive: true });\n return () => {\n observer.disconnect();\n scroller.removeEventListener('scroll', onScroll);\n };\n }, [isWindowEnabled, layout, refreshAppearance, scroller]);\n\n return {\n resetRange,\n segments: getColumnWindowSegments(\n layout.columns,\n isWindowEnabled && fitsRow ? range : null,\n treeColumnKey,\n ),\n refreshAppearance,\n };\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.194.0 | Cube Dev Team */
|
|
2
2
|
import { useDebouncedValue } from "../../../_internal/hooks/use-debounced-value.js";
|
|
3
3
|
import { getColumnText } from "./use-table-columns.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.194.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { RowCollection } from "./RowCollection.js";
|
|
4
4
|
import { useCallback, useMemo, useRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { getColumnText, getColumnValue } from "./use-table-columns.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.194.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { sortRows } from "./use-table-sort.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.194.0 | Cube Dev Team */
|
|
2
2
|
import { refreshAutoTooltipsWithin } from "../../content/use-auto-tooltip.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useEffect } from "react";
|
|
@@ -15,31 +15,41 @@ const APPEARANCE_ELEMENTS = new Set([
|
|
|
15
15
|
"Row",
|
|
16
16
|
"Cell"
|
|
17
17
|
]);
|
|
18
|
-
function useTableTooltipRefresh(scroller, isScrolling) {
|
|
19
|
-
const $ = c(
|
|
18
|
+
function useTableTooltipRefresh(scroller, isScrolling, onAppearanceChange, onRest) {
|
|
19
|
+
const $ = c(11);
|
|
20
20
|
let t0;
|
|
21
|
-
if ($[0] !== isScrolling || $[1] !== scroller?.parentElement) {
|
|
21
|
+
if ($[0] !== isScrolling || $[1] !== onAppearanceChange || $[2] !== onRest || $[3] !== scroller?.parentElement) {
|
|
22
22
|
t0 = () => {
|
|
23
23
|
const root = scroller?.parentElement;
|
|
24
|
-
if (root && !isScrolling)
|
|
24
|
+
if (root && !isScrolling) {
|
|
25
|
+
onAppearanceChange?.();
|
|
26
|
+
onRest?.();
|
|
27
|
+
refreshAutoTooltipsWithin(root);
|
|
28
|
+
}
|
|
25
29
|
};
|
|
26
30
|
$[0] = isScrolling;
|
|
27
|
-
$[1] =
|
|
28
|
-
$[2] =
|
|
29
|
-
|
|
31
|
+
$[1] = onAppearanceChange;
|
|
32
|
+
$[2] = onRest;
|
|
33
|
+
$[3] = scroller?.parentElement;
|
|
34
|
+
$[4] = t0;
|
|
35
|
+
} else t0 = $[4];
|
|
30
36
|
useEffect(t0);
|
|
31
37
|
let t1;
|
|
32
|
-
if ($[
|
|
38
|
+
if ($[5] !== onAppearanceChange || $[6] !== scroller?.parentElement) {
|
|
33
39
|
t1 = () => {
|
|
34
40
|
const root_0 = scroller?.parentElement;
|
|
35
41
|
if (!root_0) return;
|
|
42
|
+
const refresh = () => {
|
|
43
|
+
onAppearanceChange?.();
|
|
44
|
+
refreshAutoTooltipsWithin(root_0);
|
|
45
|
+
};
|
|
46
|
+
window.addEventListener("resize", refresh, { passive: true });
|
|
36
47
|
const observer = new MutationObserver((records) => {
|
|
37
48
|
if (records.some((t2) => {
|
|
38
49
|
const { target } = t2;
|
|
39
50
|
return target === root_0 || !root_0.contains(target) || target instanceof HTMLElement && APPEARANCE_ELEMENTS.has(target.dataset.element ?? "");
|
|
40
|
-
}))
|
|
51
|
+
})) refresh();
|
|
41
52
|
});
|
|
42
|
-
const refresh = () => refreshAutoTooltipsWithin(root_0);
|
|
43
53
|
document.fonts?.addEventListener("loadingdone", refresh);
|
|
44
54
|
observer.observe(root_0, {
|
|
45
55
|
attributes: true,
|
|
@@ -48,18 +58,21 @@ function useTableTooltipRefresh(scroller, isScrolling) {
|
|
|
48
58
|
for (let parent = root_0.parentElement; parent; parent = parent.parentElement) observer.observe(parent, { attributes: true });
|
|
49
59
|
return () => {
|
|
50
60
|
observer.disconnect();
|
|
61
|
+
window.removeEventListener("resize", refresh);
|
|
51
62
|
document.fonts?.removeEventListener("loadingdone", refresh);
|
|
52
63
|
};
|
|
53
64
|
};
|
|
54
|
-
$[
|
|
55
|
-
$[
|
|
56
|
-
|
|
65
|
+
$[5] = onAppearanceChange;
|
|
66
|
+
$[6] = scroller?.parentElement;
|
|
67
|
+
$[7] = t1;
|
|
68
|
+
} else t1 = $[7];
|
|
57
69
|
let t2;
|
|
58
|
-
if ($[
|
|
59
|
-
t2 = [scroller];
|
|
60
|
-
$[
|
|
61
|
-
$[
|
|
62
|
-
|
|
70
|
+
if ($[8] !== onAppearanceChange || $[9] !== scroller) {
|
|
71
|
+
t2 = [onAppearanceChange, scroller];
|
|
72
|
+
$[8] = onAppearanceChange;
|
|
73
|
+
$[9] = scroller;
|
|
74
|
+
$[10] = t2;
|
|
75
|
+
} else t2 = $[10];
|
|
63
76
|
useEffect(t1, t2);
|
|
64
77
|
}
|
|
65
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-tooltip-refresh.js","names":["useEffect","refreshAutoTooltipsWithin","APPEARANCE_ELEMENTS","Set","useTableTooltipRefresh","scroller","isScrolling","$","_c","t0","parentElement","root","t1","root_0","observer","MutationObserver","records","some","t2","target","contains","HTMLElement","has","dataset","element","
|
|
1
|
+
{"version":3,"file":"use-table-tooltip-refresh.js","names":["useEffect","refreshAutoTooltipsWithin","APPEARANCE_ELEMENTS","Set","useTableTooltipRefresh","scroller","isScrolling","onAppearanceChange","onRest","$","_c","t0","parentElement","root","t1","root_0","refresh","window","addEventListener","passive","observer","MutationObserver","records","some","t2","target","contains","HTMLElement","has","dataset","element","document","fonts","observe","attributes","subtree","parent","disconnect","removeEventListener"],"sources":["../../../../src/components/data/TableBase/use-table-tooltip-refresh.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { refreshAutoTooltipsWithin } from '../../content/use-auto-tooltip';\n\n// These elements own inherited table typography and its state selectors.\nconst APPEARANCE_ELEMENTS = new Set([\n 'Scroller',\n 'Table',\n 'Head',\n 'HeadRow',\n 'HeaderCell',\n 'HeaderGroupCell',\n 'Body',\n 'Row',\n 'Cell',\n]);\n\nexport function useTableTooltipRefresh(\n scroller: HTMLDivElement | null,\n isScrolling: boolean,\n onAppearanceChange?: () => void,\n onRest?: () => void,\n) {\n // A commit can change inherited appearance without changing the box or\n // font-set size. Refresh at rest, including the commit that settles scroll.\n useEffect(() => {\n const root = scroller?.parentElement;\n if (root && !isScrolling) {\n onAppearanceChange?.();\n // Range buffers settle here, separately from mid-gesture appearance.\n onRest?.();\n refreshAutoTooltipsWithin(root);\n }\n });\n\n useEffect(() => {\n const root = scroller?.parentElement;\n if (!root) return;\n\n const refresh = () => {\n onAppearanceChange?.();\n refreshAutoTooltipsWithin(root);\n };\n window.addEventListener('resize', refresh, { passive: true });\n const observer = new MutationObserver((records) => {\n if (\n records.some(\n ({ target }) =>\n target === root ||\n !root.contains(target) ||\n (target instanceof HTMLElement &&\n APPEARANCE_ELEMENTS.has(target.dataset.element ?? '')),\n )\n ) {\n // One scan per delivery also covers sibling/state selector changes.\n // Spacer height and tooltip-trigger mutations need no refresh.\n refresh();\n }\n });\n document.fonts?.addEventListener('loadingdone', refresh);\n observer.observe(root, { attributes: true, subtree: true });\n for (\n let parent = root.parentElement;\n parent;\n parent = parent.parentElement\n ) {\n observer.observe(parent, { attributes: true });\n }\n return () => {\n observer.disconnect();\n window.removeEventListener('resize', refresh);\n document.fonts?.removeEventListener('loadingdone', refresh);\n };\n }, [onAppearanceChange, scroller]);\n}\n"],"mappings":";;;;;;AAKA,MAAME,sBAAsB,IAAIC,IAAI;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAOC,uBAAAC,UAAAC,aAAAC,oBAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAH,eAAAG,EAAA,OAAAF,sBAAAE,EAAA,OAAAD,UAAAC,EAAA,OAAAJ,UAAAO,eAAA;AAQKD,aAAA;GACR,MAAAE,OAAaR,UAAQO;AACrB,OAAIC,QAAA,CAASP,aAAW;AACtBC,0BAAsB;AAEtBC,cAAU;AACVP,8BAA0BY,KAAK;;;AAElCJ,IAAA,KAAAH;AAAAG,IAAA,KAAAF;AAAAE,IAAA,KAAAD;AAAAC,IAAA,KAAAJ,UAAAO;AAAAH,IAAA,KAAAE;OAAAA,MAAAF,EAAA;AARDT,WAAUW,GAQR;CAAA,IAAAG;AAAA,KAAAL,EAAA,OAAAF,sBAAAE,EAAA,OAAAJ,UAAAO,eAAA;AAEQE,aAAA;GACR,MAAAC,SAAaV,UAAQO;AACrB,OAAI,CAACC,OAAI;GAET,MAAAG,gBAAgB;AACdT,0BAAsB;AACtBN,8BAA0BY,OAAK;;AAEjCI,UAAMC,iBAAkB,UAAUF,SAAS,EAAAG,SAAW,MAAM,CAAC;GAC7D,MAAAC,WAAiB,IAAIC,kBAAiBC,YAAA;AACpC,QACEA,QAAOC,MACLC,OAAA;KAAC,MAAA,EAAAC,WAAAD;AAAU,YACTC,WAAWZ,UAAX,CACCA,OAAIa,SAAUD,OAEyC,IADvDA,kBAAkBE,eACjBzB,oBAAmB0B,IAAKH,OAAMI,QAAQC,WAAd,GAA8B;MAC3D,CAIDd,UAAS;KAEX;AACFe,YAAQC,OAAwBd,iBAAC,eAAeF,QAAQ;AACxDI,YAAQa,QAASpB,QAAM;IAAAqB,YAAc;IAAIC,SAAW;IAAM,CAAC;AAC3D,QAAA,IAAAC,SACevB,OAAID,eACjBwB,QAFFA,SAGWA,OAAMxB,cAEfQ,UAAQa,QAASG,QAAQ,EAAAF,YAAc,MAAM,CAAC;AAC/C,gBACM;AACLd,aAAQiB,YAAa;AACrBpB,WAAMqB,oBAAqB,UAAUtB,QAAQ;AAC7Ce,aAAQC,OAA2BM,oBAAC,eAAetB,QAAQ;;;AAE9DP,IAAA,KAAAF;AAAAE,IAAA,KAAAJ,UAAAO;AAAAH,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CAAA,IAAAe;AAAA,KAAAf,EAAA,OAAAF,sBAAAE,EAAA,OAAAJ,UAAA;AAAEmB,OAAA,CAACjB,oBAAoBF,SAAS;AAAAI,IAAA,KAAAF;AAAAE,IAAA,KAAAJ;AAAAI,IAAA,MAAAe;OAAAA,MAAAf,EAAA;AAtCjCT,WAAUc,IAsCPU,GAA+B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.194.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useI18n } from "../../../i18n/useI18n.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.194.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 { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
|
|
@@ -111,10 +111,12 @@ function Checkbox(allProps, ref) {
|
|
|
111
111
|
let markIcon = isIndeterminate ? /* @__PURE__ */ jsx(Icon, {
|
|
112
112
|
size: 12,
|
|
113
113
|
stroke: 3,
|
|
114
|
+
"aria-hidden": "true",
|
|
114
115
|
children: /* @__PURE__ */ jsx(IconMinus, {})
|
|
115
116
|
}) : /* @__PURE__ */ jsx(Icon, {
|
|
116
117
|
size: 12,
|
|
117
118
|
stroke: 3,
|
|
119
|
+
"aria-hidden": "true",
|
|
118
120
|
children: /* @__PURE__ */ jsx(IconCheck, {})
|
|
119
121
|
});
|
|
120
122
|
if (groupState) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","names":["useFocusableRef","IconCheck","IconMinus","BaseProps","CONTAINER_STYLES","ContainerStyleProps","Element","filterBaseProps","Styles","tasty","forwardRef","ReactElement","useContext","useMemo","useRef","AriaCheckboxProps","useCheckbox","useCheckboxGroupItem","useHover","useToggleState","Icon","FieldBaseProps","ToggleSelectionProps","mergeProps","useFocus","castNullableIsSelected","WithNullableSelected","extractStyles","useAutoTooltip","getValidationMods","INLINE_LABEL_STYLES","LABEL_STYLES","resolveValidationProps","useFieldProps","wrapWithField","HiddenInput","mergeTooltipFocusProps","splitTooltipTriggerProps","TooltipFocusProps","CheckboxGroup","CheckboxGroupContext","FocusableRef","CubeTooltipProviderProps","CubeCheckboxProps","Omit","inputStyles","isIndeterminate","value","tooltip","CheckboxWrapperElement","as","qa","styles","position","display","placeItems","placeContent","gap","flow","preset","cursor","width","color","CheckboxElement","radius","fill","disabled","border","invalid","valid","height","outline","focused","outlineOffset","transition","Checkbox","allProps","ref","groupState","originalProps","props","defaultValidationTrigger","valuePropsMapper","onChange","isSelected","unsafe__isDisabled","isDisabled","insideForm","isRequired","children","label","isInvalid","isValid","labelProps","labelStyles","labelPosition","isHidden","form","otherProps","isFocused","focusProps","hoverProps","isHovered","inputRef","domRef","renderWithTooltip","toggleState","inputProps","undefined","trim","markIcon","key","console","warn","mods","checked","indeterminate","hovered","renderCheckbox","tooltipFocusProps","checkboxField","tooltipTriggerProps","tooltipRef","pointerProps","element","HTMLLabelElement","current","HTMLElement","_Checkbox","cubeInputType","__Checkbox","Object","assign","Group","displayName"],"sources":["../../../../src/components/fields/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { IconCheck, IconMinus } from '@tabler/icons-react';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Element,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useContext, useMemo, useRef } from 'react';\nimport {\n AriaCheckboxProps,\n useCheckbox,\n useCheckboxGroupItem,\n useHover,\n} from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { Icon } from '../../../icons/Icon';\nimport { FieldBaseProps, ToggleSelectionProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport {\n getValidationMods,\n INLINE_LABEL_STYLES,\n LABEL_STYLES,\n resolveValidationProps,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\nimport {\n mergeTooltipFocusProps,\n splitTooltipTriggerProps,\n TooltipFocusProps,\n} from '../../overlays/Tooltip/split-trigger-props';\n\nimport { CheckboxGroup } from './CheckboxGroup';\nimport { CheckboxGroupContext } from './context';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\n\nexport interface CubeCheckboxProps\n extends BaseProps,\n ContainerStyleProps,\n Omit<AriaCheckboxProps, 'form' | 'name'>,\n ToggleSelectionProps,\n FieldBaseProps<boolean | null | undefined> {\n inputStyles?: Styles;\n isIndeterminate?: boolean;\n value?: string;\n /**\n * The checkbox's own tooltip, shown on hover over the box and its inline\n * label — also while the checkbox is disabled — and on keyboard focus. A string, or `TooltipProvider` props\n * (`title`, `placement`, …). The info badge next to a field label is\n * `labelTooltip`.\n */\n tooltip?: string | Omit<CubeTooltipProviderProps, 'children'>;\n}\n\nconst CheckboxWrapperElement = tasty({\n as: 'label',\n qa: 'CheckboxWrapper',\n styles: {\n position: 'relative',\n display: 'flex',\n placeItems: 'center start',\n placeContent: 'baseline',\n gap: '1x',\n flow: 'row',\n preset: 'default',\n cursor: '$pointer',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst CheckboxElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n radius: '.5r',\n fill: {\n '': '#surface',\n 'checked | indeterminate': '#primary',\n 'invalid & !checked': '#surface',\n 'invalid & checked': '#danger',\n 'valid & !checked': '#surface',\n 'valid & checked': '#success',\n disabled: '#dark.12',\n },\n // The check / minus icon is always rendered inside the box, so the\n // default color must be transparent when the checkbox is neither\n // checked nor indeterminate — otherwise the white stroke shows through\n // the dark `#surface` fill in dark schemes (it used to be hidden\n // accidentally by the legacy white-on-white `fill: '#white'`).\n color: {\n '': '#clear',\n 'checked | indeterminate': '#white',\n },\n border: {\n '': '#dark.30',\n invalid: '#danger',\n valid: '#success',\n 'disabled | ((indeterminate | checked) & !invalid & !valid)': '#clear',\n },\n width: '(2x - 2bw)',\n height: '(2x - 2bw)',\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n },\n});\n\nfunction Checkbox(\n allProps: WithNullableSelected<CubeCheckboxProps>,\n ref: FocusableRef,\n) {\n // Swap hooks depending on whether this checkbox is inside a CheckboxGroup.\n // This is a bit unorthodox. Typically, hooks cannot be called in a conditional,\n // but since the checkbox won't move in and out of a group, it should be safe.\n let groupState = useContext(CheckboxGroupContext);\n\n const originalProps = castNullableIsSelected(allProps);\n\n const props = useFieldProps(originalProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value ?? false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n unsafe__isDisabled: !!groupState,\n });\n\n let {\n qa,\n isIndeterminate = false,\n isDisabled = false,\n insideForm,\n isRequired,\n children,\n label,\n isInvalid,\n isValid,\n labelProps,\n labelStyles,\n labelPosition,\n inputStyles,\n isHidden,\n form,\n tooltip,\n // Pulled out so it stays off the `<label>` spread below. The Aria hooks read\n // it from `props` directly; `filterBaseProps` already dropped it at runtime,\n // but it typed as a DOM `FormEventHandler` there, which it is not.\n onChange,\n ...otherProps\n } = props;\n\n let styles: Styles = extractStyles(props, CONTAINER_STYLES);\n\n labelStyles = useMemo(\n () => ({\n ...(!groupState ? LABEL_STYLES : INLINE_LABEL_STYLES),\n ...labelStyles,\n }),\n [groupState, labelStyles],\n );\n\n let { isFocused, focusProps } = useFocus(true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n let inputRef = useRef(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n // Triggered by the wrapper rather than the input, so a disabled checkbox —\n // whose input ignores the pointer — still shows it.\n let { renderWithTooltip } = useAutoTooltip({ tooltip, children: null });\n\n const toggleState = useToggleState(props);\n\n // React Aria writes `form` onto the input as the id of its `<form>`, so the\n // form instance would render as `form=\"[object Object]\"` and detach it.\n let { inputProps } = groupState\n ? useCheckboxGroupItem(\n {\n ...props,\n form: undefined,\n // Value is optional for standalone checkboxes, but required for CheckboxGroup items;\n // it's passed explicitly here to avoid typescript error (requires strictNullChecks disabled).\n value: props.value || '',\n // Only pass isRequired and the validation state to react-aria if they came from\n // the props for this individual checkbox, and not from the group via context.\n isRequired: originalProps.isRequired,\n isInvalid: resolveValidationProps(originalProps).isInvalid,\n },\n groupState,\n inputRef,\n )\n : useCheckbox(\n {\n ...props,\n form: undefined,\n ...(typeof label === 'string' && label.trim()\n ? { 'aria-label': label }\n : {}),\n },\n toggleState,\n inputRef,\n );\n\n let markIcon = isIndeterminate ? (\n <Icon size={12} stroke={3}>\n <IconMinus />\n </Icon>\n ) : (\n <Icon size={12} stroke={3}>\n <IconCheck />\n </Icon>\n );\n\n if (groupState) {\n for (let key of ['isSelected', 'defaultSelected', 'isEmphasized']) {\n if (originalProps[key] != null) {\n console.warn(\n `CubeUIKit: ${key} is unsupported on individual <Checkbox> elements within a <CheckboxGroup>. Please apply these props to the group instead.`,\n );\n }\n }\n if (props.value == null) {\n console.warn(\n 'CubeUIKit: A <Checkbox> element within a <CheckboxGroup> requires a `value` property.',\n );\n }\n }\n\n const mods = {\n checked: inputProps.checked,\n indeterminate: isIndeterminate,\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n 'side-label': labelPosition === 'side',\n 'inside-form': insideForm,\n };\n\n // The input, where keyboard focus lands, takes the tooltip's focus-side\n // trigger props; the wrapper keeps the hover side and positions the tooltip.\n const renderCheckbox = (tooltipFocusProps?: TooltipFocusProps) => (\n <>\n <HiddenInput\n qa={qa || 'Checkbox'}\n data-input-type=\"checkbox\"\n {...mergeTooltipFocusProps(\n mergeProps(inputProps, focusProps),\n tooltipFocusProps,\n )}\n ref={inputRef}\n />\n <CheckboxElement data-element=\"Input\" mods={mods} styles={inputStyles}>\n {markIcon}\n </CheckboxElement>\n </>\n );\n\n if (!groupState) {\n const checkboxField = renderWithTooltip(\n (tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n // `styles` is forwarded here as well as in the in-group branch\n // below — it used to be extracted from props and then dropped on\n // this path, so `<Checkbox styles={{ … }}>` outside a group was a\n // silent no-op.\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n mods={mods}\n {...pointerProps}\n ref={tooltipRef}\n >\n {renderCheckbox(tooltipFocusProps)}\n {children ? (\n // Same element and preset as the in-group branch. This path used\n // to force children through `<Text nowrap>`: `white-space:\n // nowrap` inherits, so a label longer than a few words — or any\n // custom node with two lines in it — could not wrap at all, and\n // the label also missed the preset a grouped one picks up.\n <Element\n styles={INLINE_LABEL_STYLES}\n mods={{\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n }}\n >\n {children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n },\n 'top',\n );\n\n // `tooltip` is the checkbox's own here, not a legacy label badge.\n // `renderWithTooltip` is typed for any node; here it returns an element.\n return wrapWithField(checkboxField as ReactElement, domRef, {\n ...props,\n tooltip: undefined,\n });\n }\n\n return renderWithTooltip((tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n {...mergeProps(hoverProps, pointerProps)}\n {...filterBaseProps(otherProps)}\n ref={\n tooltipRef\n ? // Written only when React attaches the node, never during render.\n (element: HTMLLabelElement | null) => {\n (domRef as { current: HTMLElement | null }).current = element;\n (tooltipRef as { current: HTMLElement | null }).current =\n element;\n }\n : domRef\n }\n >\n {renderCheckbox(tooltipFocusProps)}\n {label ?? children ? (\n <Element\n styles={labelStyles}\n mods={{\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n }}\n {...(labelProps ? filterBaseProps(labelProps) : undefined)}\n >\n {label ?? children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n }, 'top');\n}\n\n/**\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n */\nlet _Checkbox = forwardRef(Checkbox);\n\n(_Checkbox as any).cubeInputType = 'Checkbox';\nlet __Checkbox = Object.assign(\n _Checkbox as typeof _Checkbox & { Group: typeof CheckboxGroup },\n { Group: CheckboxGroup },\n);\n\n__Checkbox.displayName = 'Checkbox';\n\nexport { __Checkbox as Checkbox };\nexport type { AriaCheckboxProps };\nexport { useCheckbox };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAMiD,yBAAyBxC,MAAM;CACnCyC,IAAI;CACJC,IAAI;CACJC,QAAQ;EACNC,UAAU;EACVC,SAAS;EACTC,YAAY;EACZC,cAAc;EACdC,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC,QAAQ;EACRC,OAAO;EACPC,OAAO;EACT;CACD,CAAC;AAEF,MAAMC,kBAAkBtD,MAAM,EAC5B2C,QAAQ;CACNE,SAAS;CACTC,YAAY;CACZS,QAAQ;CACRC,MAAM;EACJ,IAAI;EACJ,2BAA2B;EAC3B,sBAAsB;EACtB,qBAAqB;EACrB,oBAAoB;EACpB,mBAAmB;EACnBC,UAAU;EACX;CAMDJ,OAAO;EACL,IAAI;EACJ,2BAA2B;EAC5B;CACDK,QAAQ;EACN,IAAI;EACJC,SAAS;EACTC,OAAO;EACP,8DAA8D;EAC/D;CACDR,OAAO;CACPS,QAAQ;CACRC,SAAS;EACP,IAAI;EACJC,SAAS;EACV;CACDC,eAAe;CACfC,YAAY;CACd,EACD,CAAC;AAEF,SAASC,SACPC,UACAC,KACA;CAIA,IAAIC,aAAalE,WAAW4B,qBAAqB;CAEjD,MAAMuC,gBAAgBtD,uBAAuBmD,SAAS;CAEtD,MAAMI,QAAQ/C,cAAc8C,eAAe;EACzCE,0BAA0B;EAC1BC,mBAAmB,EAAEnC,OAAOoC,gBAAgB;GAC1CC,YAAYrC,SAAS;GACrBD,iBAAiB;GACPqC;GACX;EACDE,oBAAoB,CAAC,CAACP;EACvB,CAAC;CAEF,IAAI,EACF3B,IACAL,kBAAkB,OAClBwC,aAAa,OACbC,YACAC,YACAC,UACAC,OACAC,WACAC,SACAC,YACAC,aACAC,eACAlD,aACAmD,UACAC,MACAjD,SAIAmC,UAAAA,YACA,GAAGe,eACDlB;CAEJ,IAAI5B,SAAiBzB,cAAcqD,OAAO5E,iBAAiB;AAE3D0F,eAAcjF,eACL;EACL,GAAI,CAACiE,aAAa/C,eAAeD;EACjC,GAAGgE;EACJ,GACD,CAAChB,YAAYgB,YACf,CAAC;CAED,IAAI,EAAEK,WAAWC,eAAe5E,WAAS,KAAK;CAC9C,IAAI,EAAE6E,YAAYC,cAAcpF,SAAS,EAAEoE,YAAY,CAAC;CAExD,IAAIiB,WAAWzF,OAAO,KAAK;CAC3B,IAAI0F,SAASxG,gBAAgB6E,KAAK0B,SAAS;CAI3C,IAAI,EAAEE,sBAAsB7E,eAAe;EAAEoB;EAASyC,UAAU;EAAM,CAAC;CAEvE,MAAMiB,cAAcvF,eAAe6D,MAAM;CAIzC,IAAI,EAAE2B,eAAe7B,aACjB7D,qBACE;EACE,GAAG+D;EACHiB,MAAMW;EAGN7D,OAAOiC,MAAMjC,SAAS;EAGtByC,YAAYT,cAAcS;EAC1BG,WAAW3D,uBAAuB+C,cAAc,CAACY;EAClD,EACDb,YACAyB,SACD,GACDvF,YACE;EACE,GAAGgE;EACHiB,MAAMW;EACN,GAAI,OAAOlB,UAAU,YAAYA,MAAMmB,MAAM,GACzC,EAAE,cAAcnB,OAAO,GACvB,EAAE;EACP,EACDgB,aACAH,SACD;CAEL,IAAIO,WAAWhE,kBACb,oBAAC;EAAK,MAAM;EAAI,QAAQ;YACtB,oBAAC,cAAS;GACL,GAEP,oBAAC;EAAK,MAAM;EAAI,QAAQ;YACtB,oBAAC,cAAS;GAEb;AAED,KAAIgC,YAAY;AACd,OAAK,IAAIiC,OAAO;GAAC;GAAc;GAAmB;GAAe,CAC/D,KAAIhC,cAAcgC,QAAQ,KACxBC,SAAQC,KACN,cAAcF,IAAG,4HAClB;AAGL,MAAI/B,MAAMjC,SAAS,KACjBiE,SAAQC,KACN,wFACD;;CAIL,MAAMC,OAAO;EACXC,SAASR,WAAWQ;EACpBC,eAAetE;EACf,GAAGjB,kBAAkB;GAAE8D;GAAWC;GAAS,CAAC;EAC5C1B,UAAUoB;EACV+B,SAASf;EACT9B,SAAS2B;EACT,cAAcJ,kBAAkB;EAChC,eAAeR;EAChB;CAID,MAAM+B,kBAAkBC,sBACtB,8CACE,oBAAC;EACC,IAAIpE,MAAM;EACV,mBAAgB;EAChB,GAAIf,uBACFb,aAAWoF,YAAYP,WAAW,EAClCmB,kBACD;EACD,KAAKhB;GAAS,EAEhB,oBAAC;EAAgB,gBAAa;EAAcW;EAAM,QAAQrE;YACvDiE;GACc,IAEpB;AAED,KAAI,CAAChC,WA2CH,QAAO5C,cA1CeuE,mBACnBgB,qBAAqBC,eAAe;EACnC,MAAM,EAAEC,cAAcvB,YAAYmB,wBAChClF,yBAAyBoF,oBAAoB;AAE/C,SAKE,qBAAC;GACSrE;GACE4C;GACJkB;GACN,GAAIS;GACJ,KAAKD;cAEJJ,eAAeC,oBAAkB,EACjC9B,WAMC,oBAAC;IACC,QAAQ3D;IACR,MAAM;KACJ,GAAGD,kBAAkB;MAAE8D;MAAWC;MAAS,CAAC;KAC5C1B,UAAUoB;KACX;IAEAG;KACO,GACR;IACkB;IAG5B,MACD,EAImDe,QAAQ;EAC1D,GAAGxB;EACHhC,SAAS4D;EACV,CAAC;AAGJ,QAAOH,mBAAmBgB,uBAAqBC,iBAAe;EAC5D,MAAM,EAAEC,cAAAA,gBAAcvB,YAAYmB,wBAChClF,yBAAyBoF,sBAAoB;AAE/C,SACE,qBAAC;GACSrE;GACE4C;GACV,GAAIzE,aAAW8E,YAAYsB,eAAa;GACxC,GAAIpH,gBAAgB2F,WAAW;GAC/B,KACEwB,gBAEKE,YAAqC;AACpC,IAACpB,OAA2CsB,UAAUF;AACtD,IAACF,aAA+CI,UAC9CF;OAEJpB;cAGLc,eAAeC,oBAAkB,EACjC7B,SAASD,WACR,oBAAC;IACC,QAAQK;IACR,MAAM;KACJ,GAAGjE,kBAAkB;MAAE8D;MAAWC;MAAS,CAAC;KAC5C1B,UAAUoB;KACX;IACD,GAAKO,aAAatF,gBAAgBsF,WAAW,GAAGe;cAE/ClB,SAASD;KACF,GACR;IACmB;IAE1B,MAAM;;;;;;AAOX,IAAIuC,YAAYtH,WAAWiE,SAAS;AAEpC,AAACqD,UAAkBC,gBAAgB;AACnC,IAAIC,aAAaC,OAAOC,OACtBJ,WACA,EAAEK,OAAO9F,gBACX,CAAC;AAED2F,WAAWI,cAAc"}
|
|
1
|
+
{"version":3,"file":"Checkbox.js","names":["useFocusableRef","IconCheck","IconMinus","BaseProps","CONTAINER_STYLES","ContainerStyleProps","Element","filterBaseProps","Styles","tasty","forwardRef","ReactElement","useContext","useMemo","useRef","AriaCheckboxProps","useCheckbox","useCheckboxGroupItem","useHover","useToggleState","Icon","FieldBaseProps","ToggleSelectionProps","mergeProps","useFocus","castNullableIsSelected","WithNullableSelected","extractStyles","useAutoTooltip","getValidationMods","INLINE_LABEL_STYLES","LABEL_STYLES","resolveValidationProps","useFieldProps","wrapWithField","HiddenInput","mergeTooltipFocusProps","splitTooltipTriggerProps","TooltipFocusProps","CheckboxGroup","CheckboxGroupContext","FocusableRef","CubeTooltipProviderProps","CubeCheckboxProps","Omit","inputStyles","isIndeterminate","value","tooltip","CheckboxWrapperElement","as","qa","styles","position","display","placeItems","placeContent","gap","flow","preset","cursor","width","color","CheckboxElement","radius","fill","disabled","border","invalid","valid","height","outline","focused","outlineOffset","transition","Checkbox","allProps","ref","groupState","originalProps","props","defaultValidationTrigger","valuePropsMapper","onChange","isSelected","unsafe__isDisabled","isDisabled","insideForm","isRequired","children","label","isInvalid","isValid","labelProps","labelStyles","labelPosition","isHidden","form","otherProps","isFocused","focusProps","hoverProps","isHovered","inputRef","domRef","renderWithTooltip","toggleState","inputProps","undefined","trim","markIcon","key","console","warn","mods","checked","indeterminate","hovered","renderCheckbox","tooltipFocusProps","checkboxField","tooltipTriggerProps","tooltipRef","pointerProps","element","HTMLLabelElement","current","HTMLElement","_Checkbox","cubeInputType","__Checkbox","Object","assign","Group","displayName"],"sources":["../../../../src/components/fields/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { IconCheck, IconMinus } from '@tabler/icons-react';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Element,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useContext, useMemo, useRef } from 'react';\nimport {\n AriaCheckboxProps,\n useCheckbox,\n useCheckboxGroupItem,\n useHover,\n} from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { Icon } from '../../../icons/Icon';\nimport { FieldBaseProps, ToggleSelectionProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport {\n getValidationMods,\n INLINE_LABEL_STYLES,\n LABEL_STYLES,\n resolveValidationProps,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\nimport {\n mergeTooltipFocusProps,\n splitTooltipTriggerProps,\n TooltipFocusProps,\n} from '../../overlays/Tooltip/split-trigger-props';\n\nimport { CheckboxGroup } from './CheckboxGroup';\nimport { CheckboxGroupContext } from './context';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\n\nexport interface CubeCheckboxProps\n extends BaseProps,\n ContainerStyleProps,\n Omit<AriaCheckboxProps, 'form' | 'name'>,\n ToggleSelectionProps,\n FieldBaseProps<boolean | null | undefined> {\n inputStyles?: Styles;\n isIndeterminate?: boolean;\n value?: string;\n /**\n * The checkbox's own tooltip, shown on hover over the box and its inline\n * label — also while the checkbox is disabled — and on keyboard focus. A string, or `TooltipProvider` props\n * (`title`, `placement`, …). The info badge next to a field label is\n * `labelTooltip`.\n */\n tooltip?: string | Omit<CubeTooltipProviderProps, 'children'>;\n}\n\nconst CheckboxWrapperElement = tasty({\n as: 'label',\n qa: 'CheckboxWrapper',\n styles: {\n position: 'relative',\n display: 'flex',\n placeItems: 'center start',\n placeContent: 'baseline',\n gap: '1x',\n flow: 'row',\n preset: 'default',\n cursor: '$pointer',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst CheckboxElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n radius: '.5r',\n fill: {\n '': '#surface',\n 'checked | indeterminate': '#primary',\n 'invalid & !checked': '#surface',\n 'invalid & checked': '#danger',\n 'valid & !checked': '#surface',\n 'valid & checked': '#success',\n disabled: '#dark.12',\n },\n // The check / minus icon is always rendered inside the box, so the\n // default color must be transparent when the checkbox is neither\n // checked nor indeterminate — otherwise the white stroke shows through\n // the dark `#surface` fill in dark schemes (it used to be hidden\n // accidentally by the legacy white-on-white `fill: '#white'`).\n color: {\n '': '#clear',\n 'checked | indeterminate': '#white',\n },\n border: {\n '': '#dark.30',\n invalid: '#danger',\n valid: '#success',\n 'disabled | ((indeterminate | checked) & !invalid & !valid)': '#clear',\n },\n width: '(2x - 2bw)',\n height: '(2x - 2bw)',\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n },\n});\n\nfunction Checkbox(\n allProps: WithNullableSelected<CubeCheckboxProps>,\n ref: FocusableRef,\n) {\n // Swap hooks depending on whether this checkbox is inside a CheckboxGroup.\n // This is a bit unorthodox. Typically, hooks cannot be called in a conditional,\n // but since the checkbox won't move in and out of a group, it should be safe.\n let groupState = useContext(CheckboxGroupContext);\n\n const originalProps = castNullableIsSelected(allProps);\n\n const props = useFieldProps(originalProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value ?? false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n unsafe__isDisabled: !!groupState,\n });\n\n let {\n qa,\n isIndeterminate = false,\n isDisabled = false,\n insideForm,\n isRequired,\n children,\n label,\n isInvalid,\n isValid,\n labelProps,\n labelStyles,\n labelPosition,\n inputStyles,\n isHidden,\n form,\n tooltip,\n // Pulled out so it stays off the `<label>` spread below. The Aria hooks read\n // it from `props` directly; `filterBaseProps` already dropped it at runtime,\n // but it typed as a DOM `FormEventHandler` there, which it is not.\n onChange,\n ...otherProps\n } = props;\n\n let styles: Styles = extractStyles(props, CONTAINER_STYLES);\n\n labelStyles = useMemo(\n () => ({\n ...(!groupState ? LABEL_STYLES : INLINE_LABEL_STYLES),\n ...labelStyles,\n }),\n [groupState, labelStyles],\n );\n\n let { isFocused, focusProps } = useFocus(true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n let inputRef = useRef(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n // Triggered by the wrapper rather than the input, so a disabled checkbox —\n // whose input ignores the pointer — still shows it.\n let { renderWithTooltip } = useAutoTooltip({ tooltip, children: null });\n\n const toggleState = useToggleState(props);\n\n // React Aria writes `form` onto the input as the id of its `<form>`, so the\n // form instance would render as `form=\"[object Object]\"` and detach it.\n let { inputProps } = groupState\n ? useCheckboxGroupItem(\n {\n ...props,\n form: undefined,\n // Value is optional for standalone checkboxes, but required for CheckboxGroup items;\n // it's passed explicitly here to avoid typescript error (requires strictNullChecks disabled).\n value: props.value || '',\n // Only pass isRequired and the validation state to react-aria if they came from\n // the props for this individual checkbox, and not from the group via context.\n isRequired: originalProps.isRequired,\n isInvalid: resolveValidationProps(originalProps).isInvalid,\n },\n groupState,\n inputRef,\n )\n : useCheckbox(\n {\n ...props,\n form: undefined,\n ...(typeof label === 'string' && label.trim()\n ? { 'aria-label': label }\n : {}),\n },\n toggleState,\n inputRef,\n );\n\n // Decorative: the input already announces checked, unchecked and mixed.\n let markIcon = isIndeterminate ? (\n <Icon size={12} stroke={3} aria-hidden=\"true\">\n <IconMinus />\n </Icon>\n ) : (\n <Icon size={12} stroke={3} aria-hidden=\"true\">\n <IconCheck />\n </Icon>\n );\n\n if (groupState) {\n for (let key of ['isSelected', 'defaultSelected', 'isEmphasized']) {\n if (originalProps[key] != null) {\n console.warn(\n `CubeUIKit: ${key} is unsupported on individual <Checkbox> elements within a <CheckboxGroup>. Please apply these props to the group instead.`,\n );\n }\n }\n if (props.value == null) {\n console.warn(\n 'CubeUIKit: A <Checkbox> element within a <CheckboxGroup> requires a `value` property.',\n );\n }\n }\n\n const mods = {\n checked: inputProps.checked,\n indeterminate: isIndeterminate,\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n 'side-label': labelPosition === 'side',\n 'inside-form': insideForm,\n };\n\n // The input, where keyboard focus lands, takes the tooltip's focus-side\n // trigger props; the wrapper keeps the hover side and positions the tooltip.\n const renderCheckbox = (tooltipFocusProps?: TooltipFocusProps) => (\n <>\n <HiddenInput\n qa={qa || 'Checkbox'}\n data-input-type=\"checkbox\"\n {...mergeTooltipFocusProps(\n mergeProps(inputProps, focusProps),\n tooltipFocusProps,\n )}\n ref={inputRef}\n />\n <CheckboxElement data-element=\"Input\" mods={mods} styles={inputStyles}>\n {markIcon}\n </CheckboxElement>\n </>\n );\n\n if (!groupState) {\n const checkboxField = renderWithTooltip(\n (tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n // `styles` is forwarded here as well as in the in-group branch\n // below — it used to be extracted from props and then dropped on\n // this path, so `<Checkbox styles={{ … }}>` outside a group was a\n // silent no-op.\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n mods={mods}\n {...pointerProps}\n ref={tooltipRef}\n >\n {renderCheckbox(tooltipFocusProps)}\n {children ? (\n // Same element and preset as the in-group branch. This path used\n // to force children through `<Text nowrap>`: `white-space:\n // nowrap` inherits, so a label longer than a few words — or any\n // custom node with two lines in it — could not wrap at all, and\n // the label also missed the preset a grouped one picks up.\n <Element\n styles={INLINE_LABEL_STYLES}\n mods={{\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n }}\n >\n {children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n },\n 'top',\n );\n\n // `tooltip` is the checkbox's own here, not a legacy label badge.\n // `renderWithTooltip` is typed for any node; here it returns an element.\n return wrapWithField(checkboxField as ReactElement, domRef, {\n ...props,\n tooltip: undefined,\n });\n }\n\n return renderWithTooltip((tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n {...mergeProps(hoverProps, pointerProps)}\n {...filterBaseProps(otherProps)}\n ref={\n tooltipRef\n ? // Written only when React attaches the node, never during render.\n (element: HTMLLabelElement | null) => {\n (domRef as { current: HTMLElement | null }).current = element;\n (tooltipRef as { current: HTMLElement | null }).current =\n element;\n }\n : domRef\n }\n >\n {renderCheckbox(tooltipFocusProps)}\n {label ?? children ? (\n <Element\n styles={labelStyles}\n mods={{\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n }}\n {...(labelProps ? filterBaseProps(labelProps) : undefined)}\n >\n {label ?? children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n }, 'top');\n}\n\n/**\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n */\nlet _Checkbox = forwardRef(Checkbox);\n\n(_Checkbox as any).cubeInputType = 'Checkbox';\nlet __Checkbox = Object.assign(\n _Checkbox as typeof _Checkbox & { Group: typeof CheckboxGroup },\n { Group: CheckboxGroup },\n);\n\n__Checkbox.displayName = 'Checkbox';\n\nexport { __Checkbox as Checkbox };\nexport type { AriaCheckboxProps };\nexport { useCheckbox };\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.194.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 { castNullableArrayValue } from "../../../utils/react/nullableValue.js";
|
|
@@ -104,30 +104,30 @@ function CheckboxGroup(rawProps, ref) {
|
|
|
104
104
|
$[16] = t8;
|
|
105
105
|
} else t8 = $[16];
|
|
106
106
|
let t9;
|
|
107
|
-
if ($[17] !==
|
|
107
|
+
if ($[17] !== groupProps || $[18] !== id || $[19] !== inputStyles || $[20] !== t5 || $[21] !== t8) {
|
|
108
108
|
t9 = /* @__PURE__ */ jsx(CheckGroupElement, {
|
|
109
|
+
...groupProps,
|
|
109
110
|
id,
|
|
110
111
|
styles: inputStyles,
|
|
111
112
|
mods: t5,
|
|
112
113
|
children: t8
|
|
113
114
|
});
|
|
114
|
-
$[17] =
|
|
115
|
-
$[18] =
|
|
116
|
-
$[19] =
|
|
117
|
-
$[20] =
|
|
118
|
-
$[21] =
|
|
119
|
-
|
|
115
|
+
$[17] = groupProps;
|
|
116
|
+
$[18] = id;
|
|
117
|
+
$[19] = inputStyles;
|
|
118
|
+
$[20] = t5;
|
|
119
|
+
$[21] = t8;
|
|
120
|
+
$[22] = t9;
|
|
121
|
+
} else t9 = $[22];
|
|
120
122
|
const radioGroup = t9;
|
|
121
123
|
let t10;
|
|
122
|
-
if ($[
|
|
124
|
+
if ($[23] !== baseLabelProps || $[24] !== domRef || $[25] !== labelProps || $[26] !== props || $[27] !== radioGroup) {
|
|
123
125
|
t10 = wrapWithField(radioGroup, domRef, {
|
|
124
126
|
...props,
|
|
125
|
-
fieldProps: groupProps,
|
|
126
127
|
labelProps: mergeProps$1(baseLabelProps, labelProps)
|
|
127
128
|
});
|
|
128
|
-
$[
|
|
129
|
-
$[
|
|
130
|
-
$[24] = groupProps;
|
|
129
|
+
$[23] = baseLabelProps;
|
|
130
|
+
$[24] = domRef;
|
|
131
131
|
$[25] = labelProps;
|
|
132
132
|
$[26] = props;
|
|
133
133
|
$[27] = radioGroup;
|