@cube-dev/ui-kit 0.200.1 → 0.202.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/CHANGELOG.md +50 -0
- package/dist/README.md +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +2 -1
- package/dist/components/HiddenInput.js.map +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider/Divider.d.ts +22 -0
- package/dist/components/content/Divider/Divider.js +159 -0
- package/dist/components/content/Divider/Divider.js.map +1 -0
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.d.ts +2 -1
- package/dist/components/content/TextItem/TextItem.js +134 -69
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +39 -14
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +8 -7
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/checked-keys.js +158 -0
- package/dist/components/content/Tree/checked-keys.js.map +1 -0
- package/dist/components/content/Tree/rowId.js +16 -0
- package/dist/components/content/Tree/rowId.js.map +1 -0
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +10 -2
- package/dist/components/content/Tree/tree-index.js.map +1 -1
- package/dist/components/content/Tree/types.d.ts +21 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +17 -123
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/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 +94 -66
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/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/TableRowLink.js +88 -0
- package/dist/components/data/TableBase/TableRowLink.js.map +1 -0
- package/dist/components/data/TableBase/TableView.js +317 -69
- 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.js +33 -22
- 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.d.ts +2 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/types.js.map +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/fields/Checkbox/Checkbox.js +21 -10
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +3 -2
- package/dist/components/fields/Checkbox/CheckboxGroup.js +36 -42
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +3 -2
- package/dist/components/fields/ColorInput/ColorInput.js +5 -3
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +9 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js +182 -200
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +3 -2
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +143 -171
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +6 -4
- package/dist/components/fields/ComboBox/ComboBox.js +601 -574
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +5 -4
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +3 -2
- package/dist/components/fields/DatePicker/DateInput.js +7 -5
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +79 -76
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +3 -2
- package/dist/components/fields/DatePicker/DatePicker.js +85 -173
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +3 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js +117 -204
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +3 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +289 -434
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +3 -2
- package/dist/components/fields/DatePicker/PeriodPicker.js +87 -113
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.d.ts +3 -2
- package/dist/components/fields/DatePicker/TimeInput.js +7 -5
- package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.d.ts +3 -2
- package/dist/components/fields/FileInput/FileInput.js +114 -141
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +10 -65
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterListBox/styled.js +66 -0
- package/dist/components/fields/FilterListBox/styled.js.map +1 -0
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +35 -3
- package/dist/components/fields/FilterPicker/FilterPicker.js +76 -15
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +413 -0
- package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -0
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +3 -2
- package/dist/components/fields/ListBox/ListBox.js +7 -10
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +5 -3
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +5 -3
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +9 -3
- package/dist/components/fields/Picker/Picker.js +12 -11
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +152 -154
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +3 -2
- package/dist/components/fields/RadioGroup/RadioGroup.js +85 -111
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/RadioGroup/context.js.map +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +9 -4
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +16 -23
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +52 -48
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +3 -2
- package/dist/components/fields/Select/Select.js +8 -10
- 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 +19 -26
- package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
- package/dist/components/fields/Slider/Slider.js +51 -58
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +61 -60
- package/dist/components/fields/Slider/SliderBase.js.map +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/Slider/types.d.ts +3 -2
- package/dist/components/fields/Switch/Switch.d.ts +12 -2
- package/dist/components/fields/Switch/Switch.js +97 -165
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.d.ts +5 -2
- package/dist/components/fields/TagInput/TagInput.js +18 -13
- package/dist/components/fields/TagInput/TagInput.js.map +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 +5 -3
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +5 -3
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +15 -4
- package/dist/components/fields/TextInput/TextInputBase.js +200 -104
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/index.d.ts +2 -2
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +120 -57
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/field-chrome.js.map +1 -1
- package/dist/components/form/field-layout.d.ts +10 -0
- package/dist/components/form/field-layout.js +96 -0
- package/dist/components/form/field-layout.js.map +1 -0
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/legacy-tooltip.js +15 -2
- package/dist/components/form/legacy-tooltip.js.map +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 +6 -2
- 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 +2 -1
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/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/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +2 -2
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +116 -116
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -4
- 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.d.ts +5 -0
- package/dist/provider.js +19 -7
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/shared/form.d.ts +3 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +4 -4
- package/dist/tokens/palette.js.map +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 +29 -2
- package/dist/utils/react/disabledProps.js.map +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 +44 -7
- package/dist/utils/react/overlayKeyPropagation.js.map +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 +3 -3
- package/docs/CreateComponent.md +1 -1
- package/docs/FieldProperties.md +17 -7
- package/docs/Usage.md +3 -0
- package/docs/components/content/Divider.md +103 -21
- package/docs/components/content/Tree.md +5 -4
- package/docs/components/data/ItemTable.md +9 -1
- package/docs/components/fields/Checkbox.md +7 -8
- package/docs/components/fields/ColorInput.md +11 -13
- package/docs/components/fields/ColorPicker.md +2 -2
- package/docs/components/fields/ColorSwatchGroup.md +2 -3
- package/docs/components/fields/ComboBox.md +2 -4
- package/docs/components/fields/CommandTextArea.md +3 -5
- package/docs/components/fields/DatePicker.md +1 -4
- package/docs/components/fields/FileInput.md +1 -5
- package/docs/components/fields/FilterListBox.md +0 -3
- package/docs/components/fields/FilterPicker.md +68 -5
- package/docs/components/fields/HueSlider.md +1 -2
- package/docs/components/fields/ListBox.md +0 -3
- package/docs/components/fields/NumberInput.md +5 -6
- package/docs/components/fields/PasswordInput.md +7 -8
- package/docs/components/fields/PeriodPicker.md +0 -4
- package/docs/components/fields/Picker.md +2 -4
- package/docs/components/fields/RadioGroup.md +4 -5
- package/docs/components/fields/SearchComboBox.md +2 -4
- package/docs/components/fields/SearchInput.md +3 -4
- package/docs/components/fields/Select.md +0 -3
- package/docs/components/fields/Slider.md +0 -1
- package/docs/components/fields/Switch.md +16 -3
- package/docs/components/fields/TagInput.md +3 -6
- package/docs/components/fields/TextArea.md +9 -8
- package/docs/components/fields/TextInput.md +39 -10
- package/docs/components/overlays/Tooltip.md +1 -1
- package/docs/tasty/ai-agents.md +1 -1
- package/docs/tasty/react-api.md +1 -1
- package/docs/tasty/styles.md +37 -3
- package/package.json +6 -4
- package/dist/components/content/Divider.d.ts +0 -7
- package/dist/components/content/Divider.js +0 -105
- package/dist/components/content/Divider.js.map +0 -1
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.202.0 | Cube Dev Team */
|
|
2
|
+
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
3
|
+
import { LoadingIcon } from "../../../icons/LoadingIcon.js";
|
|
4
|
+
import { useI18n } from "../../../i18n/useI18n.js";
|
|
5
|
+
import { Item as _Item } from "../../content/Item/Item.js";
|
|
6
|
+
import { StyledFooter } from "../../actions/Menu/styled.js";
|
|
7
|
+
import { buildTreeIndex, getTreeNodeText } from "../../content/Tree/tree-index.js";
|
|
8
|
+
import { deriveCheckedSets, toOrderedKeys, toggleCheckedKey } from "../../content/Tree/checked-keys.js";
|
|
9
|
+
import { Tree } from "../../content/Tree/Tree.js";
|
|
10
|
+
import { FilterListBoxWrapperElement, SearchInputElement, SearchWrapperElement, StyledHeaderWithoutBorder } from "../FilterListBox/styled.js";
|
|
11
|
+
import { getTreeRowId } from "../../content/Tree/rowId.js";
|
|
12
|
+
import { c } from "react/compiler-runtime";
|
|
13
|
+
import { tasty } from "@tenphi/tasty";
|
|
14
|
+
import { useRef, useState } from "react";
|
|
15
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { useFilter, useId as useId$1, useKeyboard } from "react-aria";
|
|
17
|
+
//#region src/components/fields/FilterPicker/FilterTree.tsx
|
|
18
|
+
const FilterTreeListElement = tasty({
|
|
19
|
+
qa: "FilterTreeList",
|
|
20
|
+
styles: {
|
|
21
|
+
display: "grid",
|
|
22
|
+
gridColumns: "1sf",
|
|
23
|
+
gridRows: "1sf",
|
|
24
|
+
height: "min 0"
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
/** With a footer, the frame takes a fourth row for it. */
|
|
28
|
+
const FOOTER_ROWS_STYLES = { gridRows: "max-content max-content 1sf max-content" };
|
|
29
|
+
/**
|
|
30
|
+
* Keep the nodes that match, each with its whole subtree, and the ancestors
|
|
31
|
+
* of deeper matches with only their matching branches. `expandKeys` are the
|
|
32
|
+
* nodes with a match below them, matching or not, so they open to show it.
|
|
33
|
+
*/
|
|
34
|
+
function filterTreeData(nodes, query, match, expandKeys = []) {
|
|
35
|
+
const kept = [];
|
|
36
|
+
for (const node of nodes) {
|
|
37
|
+
if (match(getTreeNodeText(node), query)) {
|
|
38
|
+
kept.push(node);
|
|
39
|
+
if (node.children && filterTreeData(node.children, query, match, expandKeys).nodes.length) expandKeys.push(node.key);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const children = node.children ? filterTreeData(node.children, query, match, expandKeys).nodes : [];
|
|
43
|
+
if (children.length) {
|
|
44
|
+
kept.push({
|
|
45
|
+
...node,
|
|
46
|
+
children
|
|
47
|
+
});
|
|
48
|
+
expandKeys.push(node.key);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
nodes: kept,
|
|
53
|
+
expandKeys
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** The rows a keyboard can reach, top to bottom. */
|
|
57
|
+
function getNavigableRows(nodes, expanded, out = []) {
|
|
58
|
+
for (const node of nodes) {
|
|
59
|
+
if (!node.isDisabled) out.push(node);
|
|
60
|
+
if (node.children && expanded.has(node.key)) getNavigableRows(node.children, expanded, out);
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* FilterPicker's popover in tree mode: FilterListBox's header, search row
|
|
66
|
+
* and footer around a checkable `Tree`.
|
|
67
|
+
*
|
|
68
|
+
* The search input keeps focus and points at the active row with
|
|
69
|
+
* `aria-activedescendant`, as FilterListBox does for its options. The
|
|
70
|
+
* checkbox cascade runs over the whole `treeData`, never only the rows a
|
|
71
|
+
* search left visible.
|
|
72
|
+
*/
|
|
73
|
+
function FilterTree(props) {
|
|
74
|
+
const $ = c(43);
|
|
75
|
+
const { treeData, checkedKeys, onCheckedKeysChange, expandedKeys, onExpand, searchValue: controlledSearchValue, onSearchChange, searchInputStyles, searchInputRef, filter, header, headerStyles, footer, footerStyles, size: t0, isDisabled, isLoadingItems, shouldFocusWrap, autoFocus, onEscape, onCommit } = props;
|
|
76
|
+
const size = t0 === void 0 ? "medium" : t0;
|
|
77
|
+
const { t } = useI18n();
|
|
78
|
+
const { searchPlaceholder: t1, emptyLabel } = props;
|
|
79
|
+
let t2;
|
|
80
|
+
if ($[0] !== t || $[1] !== t1) {
|
|
81
|
+
t2 = t1 === void 0 ? t("filterListBox.searchPlaceholder", "Search...") : t1;
|
|
82
|
+
$[0] = t;
|
|
83
|
+
$[1] = t1;
|
|
84
|
+
$[2] = t2;
|
|
85
|
+
} else t2 = $[2];
|
|
86
|
+
const searchPlaceholder = t2;
|
|
87
|
+
const ariaLabel = props["aria-label"];
|
|
88
|
+
const treeId = useId$1();
|
|
89
|
+
const inputRef = useRef(null);
|
|
90
|
+
let t3;
|
|
91
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
92
|
+
t3 = { sensitivity: "base" };
|
|
93
|
+
$[3] = t3;
|
|
94
|
+
} else t3 = $[3];
|
|
95
|
+
const { contains } = useFilter(t3);
|
|
96
|
+
const [internalSearchValue, setInternalSearchValue] = useState("");
|
|
97
|
+
const searchValue = controlledSearchValue ?? internalSearchValue;
|
|
98
|
+
let t4;
|
|
99
|
+
if ($[4] !== searchValue) {
|
|
100
|
+
t4 = searchValue.trim();
|
|
101
|
+
$[4] = searchValue;
|
|
102
|
+
$[5] = t4;
|
|
103
|
+
} else t4 = $[5];
|
|
104
|
+
const query = t4;
|
|
105
|
+
const isSearching = !!query && filter !== false;
|
|
106
|
+
const [searchExpansion, setSearchExpansion] = useState(null);
|
|
107
|
+
const [expansionQuery, setExpansionQuery] = useState(query);
|
|
108
|
+
if (expansionQuery !== query) {
|
|
109
|
+
setExpansionQuery(query);
|
|
110
|
+
setSearchExpansion(null);
|
|
111
|
+
}
|
|
112
|
+
let t5;
|
|
113
|
+
if ($[6] !== controlledSearchValue || $[7] !== onSearchChange) {
|
|
114
|
+
t5 = (value) => {
|
|
115
|
+
if (controlledSearchValue === void 0) setInternalSearchValue(value);
|
|
116
|
+
onSearchChange?.(value);
|
|
117
|
+
};
|
|
118
|
+
$[6] = controlledSearchValue;
|
|
119
|
+
$[7] = onSearchChange;
|
|
120
|
+
$[8] = t5;
|
|
121
|
+
} else t5 = $[8];
|
|
122
|
+
const setSearchValue = t5;
|
|
123
|
+
const index = buildTreeIndex(treeData);
|
|
124
|
+
const { checked, halfChecked } = deriveCheckedSets(treeData, index, checkedKeys);
|
|
125
|
+
const filtered = isSearching ? filterTreeData(treeData, query, typeof filter === "function" ? filter : contains) : {
|
|
126
|
+
nodes: treeData,
|
|
127
|
+
expandKeys: []
|
|
128
|
+
};
|
|
129
|
+
const expanded = isSearching ? searchExpansion ?? filtered.expandKeys : expandedKeys;
|
|
130
|
+
const expandedSet = new Set(expanded);
|
|
131
|
+
let t6;
|
|
132
|
+
if ($[9] !== isSearching || $[10] !== onExpand) {
|
|
133
|
+
t6 = (keys) => {
|
|
134
|
+
if (isSearching) {
|
|
135
|
+
setSearchExpansion(keys);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
onExpand(keys);
|
|
139
|
+
};
|
|
140
|
+
$[9] = isSearching;
|
|
141
|
+
$[10] = onExpand;
|
|
142
|
+
$[11] = t6;
|
|
143
|
+
} else t6 = $[11];
|
|
144
|
+
const setExpanded = t6;
|
|
145
|
+
const rows = getNavigableRows(filtered.nodes, expandedSet);
|
|
146
|
+
const rowKeys = rows.map(_temp);
|
|
147
|
+
const [storedActiveKey, setActiveKey] = useState(null);
|
|
148
|
+
const activeKey = storedActiveKey != null && rowKeys.includes(storedActiveKey) ? storedActiveKey : rowKeys.find((key) => checked.has(key)) ?? rowKeys[0] ?? null;
|
|
149
|
+
const toggle = (key_0) => {
|
|
150
|
+
const next = toggleCheckedKey(index, checked, key_0);
|
|
151
|
+
if (!next) return false;
|
|
152
|
+
onCheckedKeysChange(toOrderedKeys(index, deriveCheckedSets(treeData, index, next).checked));
|
|
153
|
+
return true;
|
|
154
|
+
};
|
|
155
|
+
const toggleActive = (key_1) => {
|
|
156
|
+
setActiveKey(key_1);
|
|
157
|
+
return toggle(key_1);
|
|
158
|
+
};
|
|
159
|
+
let t7;
|
|
160
|
+
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
161
|
+
t7 = () => {
|
|
162
|
+
setTimeout(() => inputRef.current?.focus(), 0);
|
|
163
|
+
};
|
|
164
|
+
$[12] = t7;
|
|
165
|
+
} else t7 = $[12];
|
|
166
|
+
const refocusSearch = t7;
|
|
167
|
+
let t8;
|
|
168
|
+
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
169
|
+
t8 = (key_2) => {
|
|
170
|
+
if (key_2 != null) setActiveKey(key_2);
|
|
171
|
+
};
|
|
172
|
+
$[13] = t8;
|
|
173
|
+
} else t8 = $[13];
|
|
174
|
+
const moveActive = t8;
|
|
175
|
+
const getActiveRow = () => activeKey == null ? void 0 : rows.find((row_0) => row_0.key === activeKey);
|
|
176
|
+
const handleArrow = (direction) => {
|
|
177
|
+
const position = activeKey == null ? -1 : rowKeys.indexOf(activeKey);
|
|
178
|
+
let next_0 = position + direction;
|
|
179
|
+
if (position < 0) next_0 = direction === 1 ? 0 : rowKeys.length - 1;
|
|
180
|
+
if (next_0 < 0 || next_0 >= rowKeys.length) {
|
|
181
|
+
if (!shouldFocusWrap) return;
|
|
182
|
+
next_0 = (next_0 + rowKeys.length) % rowKeys.length;
|
|
183
|
+
}
|
|
184
|
+
moveActive(rowKeys[next_0]);
|
|
185
|
+
};
|
|
186
|
+
const handleExpandKey = (input, direction_0) => {
|
|
187
|
+
const row_1 = getActiveRow();
|
|
188
|
+
if (!row_1) return false;
|
|
189
|
+
const caret = input.selectionStart ?? 0;
|
|
190
|
+
if (!(input.selectionStart === input.selectionEnd && (direction_0 === "open" ? caret === input.value.length : caret === 0))) return false;
|
|
191
|
+
const hasChildren = !!row_1.children?.length;
|
|
192
|
+
const isExpanded = expandedSet.has(row_1.key);
|
|
193
|
+
if (direction_0 === "open") {
|
|
194
|
+
if (!hasChildren) return false;
|
|
195
|
+
if (!isExpanded) setExpanded([...expanded, row_1.key]);
|
|
196
|
+
else moveActive(row_1.children?.find(_temp2)?.key);
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
if (hasChildren && isExpanded) {
|
|
200
|
+
setExpanded(expanded.filter((key_3) => key_3 !== row_1.key));
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
let parentKey = index.parentOf.get(row_1.key);
|
|
204
|
+
while (parentKey != null && !rowKeys.includes(parentKey)) parentKey = index.parentOf.get(parentKey);
|
|
205
|
+
if (parentKey == null) return false;
|
|
206
|
+
moveActive(parentKey);
|
|
207
|
+
return true;
|
|
208
|
+
};
|
|
209
|
+
const { keyboardProps } = useKeyboard({ onKeyDown: (e) => {
|
|
210
|
+
bb179: switch (e.key) {
|
|
211
|
+
case "ArrowDown":
|
|
212
|
+
case "ArrowUp":
|
|
213
|
+
e.preventDefault();
|
|
214
|
+
handleArrow(e.key === "ArrowDown" ? 1 : -1);
|
|
215
|
+
break bb179;
|
|
216
|
+
case "Home":
|
|
217
|
+
case "End":
|
|
218
|
+
case "PageUp":
|
|
219
|
+
case "PageDown":
|
|
220
|
+
e.preventDefault();
|
|
221
|
+
moveActive(e.key === "Home" || e.key === "PageUp" ? rowKeys[0] : rowKeys[rowKeys.length - 1]);
|
|
222
|
+
break bb179;
|
|
223
|
+
case "ArrowRight":
|
|
224
|
+
case "ArrowLeft":
|
|
225
|
+
if (handleExpandKey(e.target, e.key === "ArrowRight" ? "open" : "close")) e.preventDefault();
|
|
226
|
+
break bb179;
|
|
227
|
+
case "Enter":
|
|
228
|
+
if (activeKey == null) break bb179;
|
|
229
|
+
e.preventDefault();
|
|
230
|
+
if (toggleActive(activeKey)) onCommit?.();
|
|
231
|
+
break bb179;
|
|
232
|
+
case " ":
|
|
233
|
+
if (activeKey == null || searchValue) break bb179;
|
|
234
|
+
e.preventDefault();
|
|
235
|
+
toggleActive(activeKey);
|
|
236
|
+
break bb179;
|
|
237
|
+
case "Escape":
|
|
238
|
+
if (searchValue) {
|
|
239
|
+
e.preventDefault();
|
|
240
|
+
setSearchValue("");
|
|
241
|
+
} else if (onEscape) {
|
|
242
|
+
e.preventDefault();
|
|
243
|
+
onEscape();
|
|
244
|
+
}
|
|
245
|
+
break bb179;
|
|
246
|
+
}
|
|
247
|
+
} });
|
|
248
|
+
const t9 = !!isDisabled;
|
|
249
|
+
const t10 = !!isLoadingItems;
|
|
250
|
+
const t11 = !!isLoadingItems;
|
|
251
|
+
let t12;
|
|
252
|
+
if ($[14] !== t10 || $[15] !== t11 || $[16] !== t9) {
|
|
253
|
+
t12 = {
|
|
254
|
+
disabled: t9,
|
|
255
|
+
"loading-items": t10,
|
|
256
|
+
searchable: true,
|
|
257
|
+
suffix: t11
|
|
258
|
+
};
|
|
259
|
+
$[14] = t10;
|
|
260
|
+
$[15] = t11;
|
|
261
|
+
$[16] = t9;
|
|
262
|
+
$[17] = t12;
|
|
263
|
+
} else t12 = $[17];
|
|
264
|
+
const searchMods = t12;
|
|
265
|
+
let t13;
|
|
266
|
+
if ($[18] !== emptyLabel || $[19] !== query || $[20] !== t) {
|
|
267
|
+
t13 = emptyLabel !== void 0 ? emptyLabel : query ? t("filterListBox.noResults", "No results found") : t("filterListBox.noItems", "No items");
|
|
268
|
+
$[18] = emptyLabel;
|
|
269
|
+
$[19] = query;
|
|
270
|
+
$[20] = t;
|
|
271
|
+
$[21] = t13;
|
|
272
|
+
} else t13 = $[21];
|
|
273
|
+
const resolvedEmptyLabel = t13;
|
|
274
|
+
let t14;
|
|
275
|
+
if ($[22] === Symbol.for("react.memo_cache_sentinel")) {
|
|
276
|
+
t14 = { popover: true };
|
|
277
|
+
$[22] = t14;
|
|
278
|
+
} else t14 = $[22];
|
|
279
|
+
let t15;
|
|
280
|
+
if ($[23] !== header || $[24] !== headerStyles || $[25] !== size) {
|
|
281
|
+
t15 = header ? /* @__PURE__ */ jsx(StyledHeaderWithoutBorder, {
|
|
282
|
+
"data-size": size,
|
|
283
|
+
styles: headerStyles,
|
|
284
|
+
children: header
|
|
285
|
+
}) : /* @__PURE__ */ jsx("div", { role: "presentation" });
|
|
286
|
+
$[23] = header;
|
|
287
|
+
$[24] = headerStyles;
|
|
288
|
+
$[25] = size;
|
|
289
|
+
$[26] = t15;
|
|
290
|
+
} else t15 = $[26];
|
|
291
|
+
let t16;
|
|
292
|
+
if ($[27] !== searchInputRef) {
|
|
293
|
+
t16 = mergeRefs(inputRef, searchInputRef);
|
|
294
|
+
$[27] = searchInputRef;
|
|
295
|
+
$[28] = t16;
|
|
296
|
+
} else t16 = $[28];
|
|
297
|
+
let t17;
|
|
298
|
+
if ($[29] !== autoFocus) {
|
|
299
|
+
t17 = autoFocus ? { "data-autofocus": "" } : void 0;
|
|
300
|
+
$[29] = autoFocus;
|
|
301
|
+
$[30] = t17;
|
|
302
|
+
} else t17 = $[30];
|
|
303
|
+
let t18;
|
|
304
|
+
if ($[31] !== setSearchValue) {
|
|
305
|
+
t18 = (e_0) => setSearchValue(e_0.target.value);
|
|
306
|
+
$[31] = setSearchValue;
|
|
307
|
+
$[32] = t18;
|
|
308
|
+
} else t18 = $[32];
|
|
309
|
+
let t19;
|
|
310
|
+
if ($[33] !== isLoadingItems) {
|
|
311
|
+
t19 = isLoadingItems && /* @__PURE__ */ jsx("div", {
|
|
312
|
+
"data-element": "Suffix",
|
|
313
|
+
children: /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" })
|
|
314
|
+
});
|
|
315
|
+
$[33] = isLoadingItems;
|
|
316
|
+
$[34] = t19;
|
|
317
|
+
} else t19 = $[34];
|
|
318
|
+
const T0 = FilterTreeListElement;
|
|
319
|
+
const t20 = filtered.nodes.length ? refocusSearch : void 0;
|
|
320
|
+
const t21 = filtered.nodes.length ? /* @__PURE__ */ jsx(Tree, {
|
|
321
|
+
id: treeId,
|
|
322
|
+
qa: "FilterTree",
|
|
323
|
+
ariaLabel,
|
|
324
|
+
treeData: filtered.nodes,
|
|
325
|
+
size,
|
|
326
|
+
isCheckable: true,
|
|
327
|
+
isDisabled,
|
|
328
|
+
selectionMode: "none",
|
|
329
|
+
checkedKeys: {
|
|
330
|
+
checked: [...checked],
|
|
331
|
+
halfChecked: [...halfChecked]
|
|
332
|
+
},
|
|
333
|
+
expandedKeys: expanded,
|
|
334
|
+
_activeKey: activeKey,
|
|
335
|
+
onExpand: (keys_0) => setExpanded(keys_0.map(String)),
|
|
336
|
+
onCheck: (_, info) => toggle(info.node.key),
|
|
337
|
+
_onRowAction: toggleActive
|
|
338
|
+
}) : /* @__PURE__ */ jsx(_Item, {
|
|
339
|
+
preset: "t4",
|
|
340
|
+
color: "#dark-03",
|
|
341
|
+
size,
|
|
342
|
+
padding: "(.5x - 1bw)",
|
|
343
|
+
children: resolvedEmptyLabel
|
|
344
|
+
});
|
|
345
|
+
let t22;
|
|
346
|
+
if ($[35] !== T0 || $[36] !== t20 || $[37] !== t21) {
|
|
347
|
+
t22 = /* @__PURE__ */ jsx(T0, {
|
|
348
|
+
onFocus: t20,
|
|
349
|
+
children: t21
|
|
350
|
+
});
|
|
351
|
+
$[35] = T0;
|
|
352
|
+
$[36] = t20;
|
|
353
|
+
$[37] = t21;
|
|
354
|
+
$[38] = t22;
|
|
355
|
+
} else t22 = $[38];
|
|
356
|
+
let t23;
|
|
357
|
+
if ($[39] !== footer || $[40] !== footerStyles || $[41] !== size) {
|
|
358
|
+
t23 = footer ? /* @__PURE__ */ jsx(StyledFooter, {
|
|
359
|
+
styles: footerStyles,
|
|
360
|
+
"data-size": size,
|
|
361
|
+
children: footer
|
|
362
|
+
}) : null;
|
|
363
|
+
$[39] = footer;
|
|
364
|
+
$[40] = footerStyles;
|
|
365
|
+
$[41] = size;
|
|
366
|
+
$[42] = t23;
|
|
367
|
+
} else t23 = $[42];
|
|
368
|
+
return /* @__PURE__ */ jsxs(FilterListBoxWrapperElement, {
|
|
369
|
+
qa: "FilterTreeWrapper",
|
|
370
|
+
mods: t14,
|
|
371
|
+
styles: footer ? FOOTER_ROWS_STYLES : void 0,
|
|
372
|
+
children: [
|
|
373
|
+
t15,
|
|
374
|
+
/* @__PURE__ */ jsxs(SearchWrapperElement, {
|
|
375
|
+
mods: searchMods,
|
|
376
|
+
"data-size": size,
|
|
377
|
+
children: [/* @__PURE__ */ jsx(SearchInputElement, {
|
|
378
|
+
ref: t16,
|
|
379
|
+
qa: "FilterTreeSearch",
|
|
380
|
+
type: "search",
|
|
381
|
+
role: "combobox",
|
|
382
|
+
"aria-expanded": "true",
|
|
383
|
+
"aria-haspopup": "tree",
|
|
384
|
+
"aria-controls": filtered.nodes.length ? treeId : void 0,
|
|
385
|
+
"aria-activedescendant": activeKey == null ? void 0 : getTreeRowId(treeId, activeKey),
|
|
386
|
+
"aria-label": ariaLabel,
|
|
387
|
+
placeholder: searchPlaceholder,
|
|
388
|
+
value: searchValue,
|
|
389
|
+
disabled: isDisabled,
|
|
390
|
+
autoFocus,
|
|
391
|
+
...t17,
|
|
392
|
+
"data-size": size,
|
|
393
|
+
mods: searchMods,
|
|
394
|
+
styles: searchInputStyles,
|
|
395
|
+
onChange: t18,
|
|
396
|
+
...keyboardProps
|
|
397
|
+
}), t19]
|
|
398
|
+
}),
|
|
399
|
+
t22,
|
|
400
|
+
t23
|
|
401
|
+
]
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
function _temp2(child) {
|
|
405
|
+
return !child.isDisabled;
|
|
406
|
+
}
|
|
407
|
+
function _temp(row) {
|
|
408
|
+
return row.key;
|
|
409
|
+
}
|
|
410
|
+
//#endregion
|
|
411
|
+
export { FilterTree };
|
|
412
|
+
|
|
413
|
+
//# sourceMappingURL=FilterTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterTree.js","names":["tasty","useRef","useState","useFilter","useId","useKeyboard","useI18n","LoadingIcon","mergeRefs","StyledFooter","Item","deriveCheckedSets","toggleCheckedKey","toOrderedKeys","getTreeRowId","Tree","buildTreeIndex","getTreeNodeText","FilterListBoxWrapperElement","SearchInputElement","SearchWrapperElement","StyledHeaderWithoutBorder","Styles","ReactNode","RefObject","CubeTreeNodeData","FilterFn","textValue","inputValue","FilterTreeProps","treeData","checkedKeys","onCheckedKeysChange","keys","expandedKeys","onExpand","searchValue","onSearchChange","value","searchPlaceholder","searchInputStyles","searchInputRef","HTMLInputElement","filter","emptyLabel","header","headerStyles","footer","footerStyles","size","isDisabled","isLoadingItems","shouldFocusWrap","autoFocus","onEscape","onCommit","FilterTreeListElement","qa","styles","display","gridColumns","gridRows","height","FOOTER_ROWS_STYLES","filterTreeData","nodes","query","match","expandKeys","kept","node","push","children","length","key","getNavigableRows","expanded","Set","out","has","FilterTree","props","$","_c","controlledSearchValue","t0","undefined","t","t1","t2","ariaLabel","treeId","inputRef","t3","Symbol","for","sensitivity","contains","internalSearchValue","setInternalSearchValue","t4","trim","isSearching","searchExpansion","setSearchExpansion","expansionQuery","setExpansionQuery","t5","setSearchValue","index","checked","halfChecked","filtered","expandedSet","t6","setExpanded","rows","rowKeys","map","_temp","storedActiveKey","setActiveKey","activeKey","includes","find","toggle","key_0","next","toggleActive","key_1","t7","setTimeout","current","focus","refocusSearch","t8","key_2","moveActive","getActiveRow","row_0","row","handleArrow","direction","position","indexOf","next_0","handleExpandKey","input","direction_0","row_1","caret","selectionStart","atEdge","selectionEnd","hasChildren","isExpanded","_temp2","key_3","parentKey","parentOf","get","keyboardProps","onKeyDown","e","bb179","preventDefault","target","t9","t10","t11","t12","disabled","searchable","suffix","searchMods","t13","resolvedEmptyLabel","t14","popover","t15","t16","t17","t18","e_0","t19","T0","t20","t21","keys_0","String","_","info","t22","t23","child","_c","useId","Item"],"sources":["../../../../src/components/fields/FilterPicker/FilterTree.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { useRef, useState } from 'react';\nimport { useFilter, useId, useKeyboard } from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { StyledFooter } from '../../actions/Menu/styled';\nimport { Item } from '../../content/Item/Item';\nimport {\n deriveCheckedSets,\n toggleCheckedKey,\n toOrderedKeys,\n} from '../../content/Tree/checked-keys';\nimport { getTreeRowId } from '../../content/Tree/rowId';\nimport { Tree } from '../../content/Tree/Tree';\nimport { buildTreeIndex, getTreeNodeText } from '../../content/Tree/tree-index';\nimport {\n FilterListBoxWrapperElement,\n SearchInputElement,\n SearchWrapperElement,\n StyledHeaderWithoutBorder,\n} from '../FilterListBox/styled';\n\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode, RefObject } from 'react';\nimport type { CubeTreeNodeData } from '../../content/Tree/types';\n\ntype FilterFn = (textValue: string, inputValue: string) => boolean;\n\nexport interface FilterTreeProps {\n treeData: CubeTreeNodeData[];\n /** The value: checked keys over the whole tree. A parent key checks its subtree. */\n checkedKeys: readonly string[];\n /** Every fully checked key, parents included, in tree order. */\n onCheckedKeysChange: (keys: string[]) => void;\n /** The user's expansion. FilterPicker holds it, so it outlives the popover. */\n expandedKeys: string[];\n onExpand: (keys: string[]) => void;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n searchPlaceholder?: string;\n searchInputStyles?: Styles;\n searchInputRef?: RefObject<HTMLInputElement | null>;\n filter?: FilterFn | false;\n emptyLabel?: ReactNode;\n header?: ReactNode;\n headerStyles?: Styles;\n footer?: ReactNode;\n footerStyles?: Styles;\n size?: 'medium' | 'large';\n isDisabled?: boolean;\n isLoadingItems?: boolean;\n shouldFocusWrap?: boolean;\n autoFocus?: boolean;\n 'aria-label'?: string;\n /** Escape on an empty search. */\n onEscape?: () => void;\n /** Enter toggled the active row. FilterPicker closes the popover, as it does for a checkable list. */\n onCommit?: () => void;\n}\n\nconst FilterTreeListElement = tasty({\n qa: 'FilterTreeList',\n styles: {\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n height: 'min 0',\n },\n});\n\n/** With a footer, the frame takes a fourth row for it. */\nconst FOOTER_ROWS_STYLES: Styles = {\n gridRows: 'max-content max-content 1sf max-content',\n};\n\n/**\n * Keep the nodes that match, each with its whole subtree, and the ancestors\n * of deeper matches with only their matching branches. `expandKeys` are the\n * nodes with a match below them, matching or not, so they open to show it.\n */\nfunction filterTreeData(\n nodes: CubeTreeNodeData[],\n query: string,\n match: FilterFn,\n expandKeys: string[] = [],\n): { nodes: CubeTreeNodeData[]; expandKeys: string[] } {\n const kept: CubeTreeNodeData[] = [];\n\n for (const node of nodes) {\n if (match(getTreeNodeText(node), query)) {\n kept.push(node);\n if (\n node.children &&\n filterTreeData(node.children, query, match, expandKeys).nodes.length\n ) {\n expandKeys.push(node.key);\n }\n continue;\n }\n\n const children = node.children\n ? filterTreeData(node.children, query, match, expandKeys).nodes\n : [];\n\n if (children.length) {\n kept.push({ ...node, children });\n expandKeys.push(node.key);\n }\n }\n\n return { nodes: kept, expandKeys };\n}\n\n/** The rows a keyboard can reach, top to bottom. */\nfunction getNavigableRows(\n nodes: CubeTreeNodeData[],\n expanded: Set<string>,\n out: CubeTreeNodeData[] = [],\n): CubeTreeNodeData[] {\n for (const node of nodes) {\n if (!node.isDisabled) out.push(node);\n if (node.children && expanded.has(node.key)) {\n getNavigableRows(node.children, expanded, out);\n }\n }\n\n return out;\n}\n\n/**\n * FilterPicker's popover in tree mode: FilterListBox's header, search row\n * and footer around a checkable `Tree`.\n *\n * The search input keeps focus and points at the active row with\n * `aria-activedescendant`, as FilterListBox does for its options. The\n * checkbox cascade runs over the whole `treeData`, never only the rows a\n * search left visible.\n */\nexport function FilterTree(props: FilterTreeProps) {\n const {\n treeData,\n checkedKeys,\n onCheckedKeysChange,\n expandedKeys,\n onExpand,\n searchValue: controlledSearchValue,\n onSearchChange,\n searchInputStyles,\n searchInputRef,\n filter,\n header,\n headerStyles,\n footer,\n footerStyles,\n size = 'medium',\n isDisabled,\n isLoadingItems,\n shouldFocusWrap,\n autoFocus,\n onEscape,\n onCommit,\n } = props;\n const { t } = useI18n();\n const {\n searchPlaceholder = t('filterListBox.searchPlaceholder', 'Search...'),\n emptyLabel,\n } = props;\n const ariaLabel = props['aria-label'];\n\n const treeId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const { contains } = useFilter({ sensitivity: 'base' });\n\n const [internalSearchValue, setInternalSearchValue] = useState('');\n const searchValue = controlledSearchValue ?? internalSearchValue;\n const query = searchValue.trim();\n const isSearching = !!query && filter !== false;\n\n // Expansion during a search is its own: it starts from the ancestors of\n // the matches and resets whenever the query changes, typed or controlled.\n // Clearing the search brings back the expansion the user had, untouched.\n const [searchExpansion, setSearchExpansion] = useState<string[] | null>(null);\n const [expansionQuery, setExpansionQuery] = useState(query);\n\n if (expansionQuery !== query) {\n setExpansionQuery(query);\n setSearchExpansion(null);\n }\n\n const setSearchValue = (value: string) => {\n if (controlledSearchValue === undefined) setInternalSearchValue(value);\n onSearchChange?.(value);\n };\n\n const index = buildTreeIndex(treeData);\n const { checked, halfChecked } = deriveCheckedSets(\n treeData,\n index,\n checkedKeys,\n );\n\n const filtered = isSearching\n ? filterTreeData(\n treeData,\n query,\n typeof filter === 'function' ? filter : contains,\n )\n : { nodes: treeData, expandKeys: [] };\n\n const expanded = isSearching\n ? (searchExpansion ?? filtered.expandKeys)\n : expandedKeys;\n const expandedSet = new Set(expanded);\n\n const setExpanded = (keys: string[]) => {\n if (isSearching) {\n setSearchExpansion(keys);\n return;\n }\n onExpand(keys);\n };\n\n const rows = getNavigableRows(filtered.nodes, expandedSet);\n const rowKeys = rows.map((row) => row.key);\n\n // The row the search input points at. One that a search or a collapse\n // hid falls back to the first checked row in view, then the first row.\n const [storedActiveKey, setActiveKey] = useState<string | null>(null);\n const activeKey =\n storedActiveKey != null && rowKeys.includes(storedActiveKey)\n ? storedActiveKey\n : (rowKeys.find((key) => checked.has(key)) ?? rowKeys[0] ?? null);\n\n // Whether the node could be toggled: one with its checkbox disabled or\n // opted out stays as it is.\n const toggle = (key: string): boolean => {\n const next = toggleCheckedKey(index, checked, key);\n if (!next) return false;\n onCheckedKeysChange(\n toOrderedKeys(index, deriveCheckedSets(treeData, index, next).checked),\n );\n return true;\n };\n\n // Toggle the active row and keep it active, though the fallback above\n // would move away from a row that is no longer checked.\n const toggleActive = (key: string) => {\n setActiveKey(key);\n return toggle(key);\n };\n\n // A press on a row, its checkbox or its chevron moves DOM focus into the\n // tree; hand it back so typing and arrow keys keep working.\n const refocusSearch = () => {\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n const moveActive = (key: string | undefined) => {\n if (key != null) setActiveKey(key);\n };\n\n const getActiveRow = () =>\n activeKey == null ? undefined : rows.find((row) => row.key === activeKey);\n\n const handleArrow = (direction: 1 | -1) => {\n const position = activeKey == null ? -1 : rowKeys.indexOf(activeKey);\n let next = position + direction;\n if (position < 0) next = direction === 1 ? 0 : rowKeys.length - 1;\n if (next < 0 || next >= rowKeys.length) {\n if (!shouldFocusWrap) return;\n next = (next + rowKeys.length) % rowKeys.length;\n }\n moveActive(rowKeys[next]);\n };\n\n // Right and Left reach the tree only where they can no longer move the\n // caret: at the end of the text, and at its start.\n const handleExpandKey = (\n input: HTMLInputElement,\n direction: 'open' | 'close',\n ): boolean => {\n const row = getActiveRow();\n if (!row) return false;\n\n const caret = input.selectionStart ?? 0;\n const atEdge =\n input.selectionStart === input.selectionEnd &&\n (direction === 'open' ? caret === input.value.length : caret === 0);\n if (!atEdge) return false;\n\n const hasChildren = !!row.children?.length;\n const isExpanded = expandedSet.has(row.key);\n\n if (direction === 'open') {\n if (!hasChildren) return false;\n if (!isExpanded) {\n setExpanded([...expanded, row.key]);\n } else {\n moveActive(row.children?.find((child) => !child.isDisabled)?.key);\n }\n return true;\n }\n\n if (hasChildren && isExpanded) {\n setExpanded(expanded.filter((key) => key !== row.key));\n return true;\n }\n\n // The nearest ancestor the keyboard can reach; a disabled one is skipped.\n let parentKey = index.parentOf.get(row.key);\n while (parentKey != null && !rowKeys.includes(parentKey)) {\n parentKey = index.parentOf.get(parentKey);\n }\n if (parentKey == null) return false;\n moveActive(parentKey);\n return true;\n };\n\n const { keyboardProps } = useKeyboard({\n onKeyDown: (e) => {\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n e.preventDefault();\n handleArrow(e.key === 'ArrowDown' ? 1 : -1);\n break;\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n e.preventDefault();\n moveActive(\n e.key === 'Home' || e.key === 'PageUp'\n ? rowKeys[0]\n : rowKeys[rowKeys.length - 1],\n );\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n if (\n handleExpandKey(\n e.target as HTMLInputElement,\n e.key === 'ArrowRight' ? 'open' : 'close',\n )\n ) {\n e.preventDefault();\n }\n break;\n case 'Enter':\n if (activeKey == null) break;\n e.preventDefault();\n if (toggleActive(activeKey)) onCommit?.();\n break;\n case ' ':\n if (activeKey == null || searchValue) break;\n e.preventDefault();\n toggleActive(activeKey);\n break;\n case 'Escape':\n if (searchValue) {\n e.preventDefault();\n setSearchValue('');\n } else if (onEscape) {\n e.preventDefault();\n onEscape();\n }\n break;\n default:\n break;\n }\n },\n });\n\n const searchMods = {\n disabled: !!isDisabled,\n 'loading-items': !!isLoadingItems,\n searchable: true,\n suffix: !!isLoadingItems,\n };\n\n const resolvedEmptyLabel =\n emptyLabel !== undefined\n ? emptyLabel\n : query\n ? t('filterListBox.noResults', 'No results found')\n : t('filterListBox.noItems', 'No items');\n\n return (\n <FilterListBoxWrapperElement\n qa=\"FilterTreeWrapper\"\n mods={{ popover: true }}\n styles={footer ? FOOTER_ROWS_STYLES : undefined}\n >\n {header ? (\n <StyledHeaderWithoutBorder data-size={size} styles={headerStyles}>\n {header}\n </StyledHeaderWithoutBorder>\n ) : (\n <div role=\"presentation\" />\n )}\n <SearchWrapperElement mods={searchMods} data-size={size}>\n <SearchInputElement\n ref={mergeRefs(inputRef, searchInputRef)}\n qa=\"FilterTreeSearch\"\n type=\"search\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-haspopup=\"tree\"\n aria-controls={filtered.nodes.length ? treeId : undefined}\n aria-activedescendant={\n activeKey == null ? undefined : getTreeRowId(treeId, activeKey)\n }\n aria-label={ariaLabel}\n placeholder={searchPlaceholder}\n value={searchValue}\n disabled={isDisabled}\n autoFocus={autoFocus}\n {...(autoFocus ? { 'data-autofocus': '' } : undefined)}\n data-size={size}\n mods={searchMods}\n styles={searchInputStyles}\n onChange={(e) => setSearchValue(e.target.value)}\n {...keyboardProps}\n />\n {isLoadingItems && (\n <div data-element=\"Suffix\">\n <LoadingIcon data-element=\"InputIcon\" />\n </div>\n )}\n </SearchWrapperElement>\n <FilterTreeListElement\n // Only the tree's own focus goes back: an empty label may hold a\n // control, such as Retry, that the keyboard has to reach.\n onFocus={filtered.nodes.length ? refocusSearch : undefined}\n >\n {filtered.nodes.length ? (\n <Tree\n id={treeId}\n qa=\"FilterTree\"\n ariaLabel={ariaLabel}\n treeData={filtered.nodes}\n size={size}\n isCheckable\n isDisabled={isDisabled}\n selectionMode=\"none\"\n checkedKeys={{\n checked: [...checked],\n halfChecked: [...halfChecked],\n }}\n expandedKeys={expanded}\n _activeKey={activeKey}\n onExpand={(keys) => setExpanded(keys.map(String))}\n onCheck={(_, info) => toggle(info.node.key)}\n _onRowAction={toggleActive}\n />\n ) : (\n <Item preset=\"t4\" color=\"#dark-03\" size={size} padding=\"(.5x - 1bw)\">\n {resolvedEmptyLabel}\n </Item>\n )}\n </FilterTreeListElement>\n {footer ? (\n <StyledFooter styles={footerStyles} data-size={size}>\n {footer}\n </StyledFooter>\n ) : null}\n </FilterListBoxWrapperElement>\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.202.0 | Cube Dev Team */
|
|
2
2
|
import { FileInput as _FileInput } from "../FileInput/FileInput.js";
|
|
3
3
|
import { NumberInput as _NumberInput } from "../NumberInput/NumberInput.js";
|
|
4
4
|
import { PasswordInput as _PasswordInput } from "../PasswordInput/PasswordInput.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.202.0 | Cube Dev Team */
|
|
2
2
|
import { DraggableCollection } from "../../shared/DraggableCollection.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import { FieldBaseProps } from "../../../shared/form.js";
|
|
3
3
|
import "../../../shared/index.js";
|
|
4
4
|
import { CollectionItem as _CollectionItem, CubeCollectionItemProps } from "../../CollectionItem.js";
|
|
5
|
-
import {
|
|
5
|
+
import { FieldLayoutStyleProps } from "../../form/field-layout.js";
|
|
6
|
+
import { BasePropsWithoutChildren, Styles } from "@tenphi/tasty";
|
|
6
7
|
import { ForwardedRef, ReactElement, ReactNode, RefObject } from "react";
|
|
7
8
|
import { AriaListBoxProps } from "react-aria";
|
|
8
9
|
import { Section } from "react-stately";
|
|
9
10
|
import { CollectionBase, Key as Key$2 } from "@react-types/shared";
|
|
10
11
|
//#region src/components/fields/ListBox/ListBox.d.ts
|
|
11
|
-
export interface CubeListBoxProps<T> extends Omit<AriaListBoxProps<T>, 'autoFocus' | 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'>, CollectionBase<T>, FieldBaseProps<Key$2 | readonly Key$2[] | null | undefined>, BasePropsWithoutChildren,
|
|
12
|
+
export interface CubeListBoxProps<T> extends Omit<AriaListBoxProps<T>, 'autoFocus' | 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'>, CollectionBase<T>, FieldBaseProps<Key$2 | readonly Key$2[] | null | undefined>, BasePropsWithoutChildren, FieldLayoutStyleProps {
|
|
12
13
|
/** Custom styles for the list container */
|
|
13
14
|
listStyles?: Styles;
|
|
14
15
|
/** Custom styles for individual options */
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { extractStyles } from "../../../utils/styles.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.202.0 | Cube Dev Team */
|
|
3
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
5
4
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
@@ -15,12 +14,13 @@ import { allowOverlayKeysToPropagate } from "../../../utils/react/overlayKeyProp
|
|
|
15
14
|
import { getValidationMods, getValidationTheme } from "../../form/validation/resolve-validation-props.js";
|
|
16
15
|
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
17
16
|
import { wrapWithField } from "../../form/wrapper.js";
|
|
17
|
+
import { splitFieldLayout } from "../../form/field-layout.js";
|
|
18
18
|
import { GripVerticalIcon } from "../../../icons/GripVerticalIcon.js";
|
|
19
19
|
import { createMockDragState } from "../../shared/DraggableCollection.js";
|
|
20
20
|
import { useOptionOriginPress } from "../option-origin-press.js";
|
|
21
21
|
import { DraggableListBox } from "./DraggableListBox.js";
|
|
22
22
|
import { c } from "react/compiler-runtime";
|
|
23
|
-
import {
|
|
23
|
+
import { mergeStyles, tasty } from "@tenphi/tasty";
|
|
24
24
|
import { forwardRef, useEffect, useLayoutEffect, useMemo, useRef } from "react";
|
|
25
25
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
26
26
|
import { mergeProps, useDraggableItem, useDropIndicator, useFocusRing, useKeyboard, useListBox, useListBoxSection, useOption } from "react-aria";
|
|
@@ -248,11 +248,6 @@ function renderCheckboxIcon({ isSelected, isDisabled, isFocused, isHovered, isIn
|
|
|
248
248
|
})
|
|
249
249
|
});
|
|
250
250
|
}
|
|
251
|
-
const PROP_STYLES = [
|
|
252
|
-
...BASE_STYLES,
|
|
253
|
-
...OUTER_STYLES,
|
|
254
|
-
...COLOR_STYLES
|
|
255
|
-
];
|
|
256
251
|
/** A collection with no options, for a list state that isn't needed. */
|
|
257
252
|
const NO_OPTIONS = {
|
|
258
253
|
children: [],
|
|
@@ -497,7 +492,7 @@ const ListBox = forwardRef(function ListBox(props, ref) {
|
|
|
497
492
|
return fieldProps;
|
|
498
493
|
} });
|
|
499
494
|
const { t } = useI18n();
|
|
500
|
-
let { qa, label, extra, id, labelStyles, isRequired, necessityIndicator, isInvalid, isValid, isDisabled, listStyles, optionStyles, optionHighlight, sectionStyles, headingStyles, listGap, listRef, message, description, styles, mods: externalMods, size = "medium", labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, isFocusWithin, onSelectionChange, disableSelectionToggle = false, allowDuplicateSelectionEvents, stateRef, focusOnHover, header, footer, headerStyles, footerStyles, onEscape, isCheckable, onOptionClick, showSelectAll, selectAllLabel, allValueProps, filter, emptyLabel = t("listBox.noItems", "No items"), shape = "card", isReorderable = false, onReorder, form
|
|
495
|
+
let { qa, label, extra, id, labelStyles, isRequired, necessityIndicator, isInvalid, isValid, isDisabled, listStyles, optionStyles, optionHighlight, sectionStyles, headingStyles, listGap, listRef, message, description, styles, mods: externalMods, size = "medium", labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, isFocusWithin, onSelectionChange, disableSelectionToggle = false, allowDuplicateSelectionEvents, stateRef, focusOnHover, header, footer, headerStyles, footerStyles, onEscape, isCheckable, onOptionClick, showSelectAll, selectAllLabel, allValueProps, filter, emptyLabel = t("listBox.noItems", "No items"), shape = "card", isReorderable = false, onReorder, form } = props;
|
|
501
496
|
const lastSelectedKeyRef = useRef(null);
|
|
502
497
|
const externalSelectionHandler = onSelectionChange || props.onChange;
|
|
503
498
|
const wrappedOnSelectionChange = useMemo(() => {
|
|
@@ -585,7 +580,8 @@ const ListBox = forwardRef(function ListBox(props, ref) {
|
|
|
585
580
|
if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Home" || e.key === "End" || e.key === "PageUp" || e.key === "PageDown") lastFocusSourceRef.current = "keyboard";
|
|
586
581
|
if (e.key === "Escape") onEscape?.();
|
|
587
582
|
} });
|
|
588
|
-
|
|
583
|
+
const fieldLayout = splitFieldLayout(props, { fillHeightOnFlex: true });
|
|
584
|
+
styles = fieldLayout.styles;
|
|
589
585
|
listRef = useCombinedRefs(listRef);
|
|
590
586
|
const itemsArray = useMemo(() => [...listState.collection], [listState.collection]);
|
|
591
587
|
const hasSections = useMemo(() => itemsArray.some((i) => i.type === "section"), [itemsArray]);
|
|
@@ -840,6 +836,7 @@ const ListBox = forwardRef(function ListBox(props, ref) {
|
|
|
840
836
|
});
|
|
841
837
|
return wrapWithField(listBoxField, {
|
|
842
838
|
...props,
|
|
839
|
+
...fieldLayout.field,
|
|
843
840
|
labelProps: mergeProps(labelProps, props.labelProps)
|
|
844
841
|
});
|
|
845
842
|
});
|