@cube-dev/ui-kit 0.206.3 → 0.208.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +18 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.d.ts +0 -2
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +3 -3
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.d.ts +10 -1
- package/dist/components/actions/Button/Button.js +13 -8
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/Button/index.d.ts +16 -1
- package/dist/components/actions/Button/index.js +13 -0
- package/dist/components/actions/Button/index.js.map +1 -0
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +2 -2
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +0 -2
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +2 -2
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +3 -3
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/index.d.ts +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.d.ts +6 -18
- package/dist/components/actions/use-action.js +2 -2
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.d.ts +0 -1
- package/dist/components/actions/use-anchored-menu.js +2 -2
- package/dist/components/actions/use-anchored-menu.js.map +1 -1
- package/dist/components/actions/use-context-menu.d.ts +0 -1
- package/dist/components/actions/use-context-menu.js +2 -2
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.d.ts +0 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +2 -18
- package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.d.ts +0 -1
- package/dist/components/content/Disclosure/Disclosure.js +2 -2
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider/Divider.js +1 -1
- package/dist/components/content/Divider/Divider.js.map +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +1 -2
- package/dist/components/content/Item/Item.js +4 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +2 -2
- package/dist/components/content/Item/index.d.ts +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemBadge/index.d.ts +1 -2
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +2 -2
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +3 -3
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +2 -2
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +0 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +5 -5
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/checked-keys.js +1 -1
- package/dist/components/content/Tree/rowId.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/Tree/use-load-data.js.map +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/item-table-sections.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableRowLink.js +1 -1
- package/dist/components/data/TableBase/TableView.js +6 -6
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-menu.js.map +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-body-sections.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-column-menu.js +2 -2
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -3
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +0 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +0 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +0 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -2
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -1
- package/dist/components/fields/ComboBox/ComboBox.js +6 -6
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/CalendarPopover.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateInput.js +2 -2
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DatePicker.js +2 -2
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.d.ts +0 -1
- package/dist/components/fields/DatePicker/TimeInput.js +2 -2
- package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.d.ts +0 -1
- package/dist/components/fields/FileInput/FileInput.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +3 -3
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterListBox/styled.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +0 -3
- package/dist/components/fields/FilterPicker/FilterPicker.js +8 -8
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +2 -2
- package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -1
- package/dist/components/fields/Input/Input.d.ts +0 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/Input/Input.js.map +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +4 -4
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +0 -2
- package/dist/components/fields/Picker/Picker.js +8 -8
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
- package/dist/components/fields/RadioGroup/Radio.js +2 -2
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +0 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -6
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +2 -2
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -2
- package/dist/components/fields/Select/Select.js +7 -7
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -2
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +2 -2
- package/dist/components/fields/Slider/types.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.js +3 -3
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.js +5 -5
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/TagList.js.map +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +2 -2
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +2 -2
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +0 -1
- package/dist/components/fields/TextInput/TextInputBase.js +3 -3
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +0 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +0 -1
- package/dist/components/form/Form/Field.d.ts +0 -1
- package/dist/components/form/Form/Field.js +3 -3
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.d.ts +1 -26
- package/dist/components/form/Form/Form.js +7 -116
- package/dist/components/form/Form/Form.js.map +1 -1
- package/dist/components/form/Form/FormContext.d.ts +30 -0
- package/dist/components/form/Form/FormContext.js +79 -0
- package/dist/components/form/Form/FormContext.js.map +1 -0
- package/dist/components/form/Form/FormElement.js +49 -0
- package/dist/components/form/Form/FormElement.js.map +1 -0
- package/dist/components/form/Form/ModernFormRoot.js +3 -2
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +2 -2
- package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +2 -2
- package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/dist/components/form/Form/SubmitError.d.ts +0 -1
- package/dist/components/form/Form/SubmitError.js +3 -3
- package/dist/components/form/Form/SubmitError.js.map +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.d.ts +2 -1
- package/dist/components/form/Form/index.js +6 -5
- package/dist/components/form/Form/index.js.map +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/types.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +2 -2
- package/dist/components/form/Form/use-field/use-field-props.js +4 -4
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field.js +2 -2
- package/dist/components/form/Form/use-field/use-field.js.map +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.d.ts +0 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/field-layout.js +1 -1
- package/dist/components/form/field-layout.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.d.ts +0 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
- package/dist/components/form/validation/resolve-validation-props.d.ts +0 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js.map +1 -1
- package/dist/components/form/wrapper.d.ts +0 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +2 -2
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +3 -3
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +4 -4
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +2 -2
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/segmented-styles.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +2 -2
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +2 -2
- package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/AlertDialog/types.d.ts +0 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +2 -2
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +0 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +5 -5
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +2 -2
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +2 -2
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -2
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +2 -2
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
- package/dist/components/overlays/Toast/useToast.js +2 -2
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -3
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +8 -32
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +5 -1
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +4 -4
- package/dist/i18n/instance.js +3 -3
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +29 -27
- package/dist/index.js +69 -69
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +2 -2
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +23 -11
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +2 -2
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.d.ts +3 -3
- package/dist/utils/react/index.js +13 -13
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/components/actions/Button.md +10 -0
- package/docs/components/actions/ButtonSplit.md +1 -1
- package/docs/glaze/contrast.mdx +751 -0
- package/docs/glaze/exporting.mdx +635 -0
- package/docs/glaze/getting-started.mdx +487 -0
- package/docs/glaze/hdr.mdx +523 -0
- package/docs/glaze/methodology.mdx +979 -0
- package/docs/glaze/migration.md +476 -285
- package/docs/glaze/mixes.mdx +348 -0
- package/docs/glaze/okhst.mdx +692 -0
- package/docs/glaze/reference/color-definitions.md +552 -0
- package/docs/glaze/reference/color-tokens.md +421 -0
- package/docs/glaze/reference/configuration.md +532 -0
- package/docs/glaze/reference/contrast.md +279 -0
- package/docs/glaze/reference/index.md +225 -0
- package/docs/glaze/reference/output.md +714 -0
- package/docs/glaze/reference/palette.md +435 -0
- package/docs/glaze/reference/theme.md +332 -0
- package/docs/glaze/reference/utilities.md +646 -0
- package/docs/glaze/schemes.mdx +644 -0
- package/docs/glaze/shadows-and-glows.mdx +550 -0
- package/package.json +4 -4
- package/dist/components/actions/index.js +0 -29
- package/dist/components/actions/index.js.map +0 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -4
- package/dist/components/fields/ListBoxPopover/index.d.ts +0 -5
- package/dist/components/overlays/Modal/Modal.d.ts +0 -3
- package/dist/components/overlays/Modal/Popover.d.ts +0 -7
- package/dist/components/overlays/Modal/Tray.d.ts +0 -5
- package/dist/components/overlays/Modal/Underlay.d.ts +0 -3
- package/dist/components/overlays/Modal/index.d.ts +0 -8
- package/docs/glaze/api.md +0 -2021
- package/docs/glaze/methodology.md +0 -686
- package/docs/glaze/okhst.md +0 -207
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagList.js","names":["Key","Node","mergeStyles","Styles","tasty","KeyboardEvent","RefObject","useRef","useFocusRing","useId","useTag","useTagGroup","Item","ListState","useListState","useI18n","CloseIcon","mergeProps","ItemAction","CubeTagProps","Tag","TagListEntry","key","label","invalidMessage","tagProps","Partial","isDisabled","TagListProps","qa","id","tags","size","isReadOnly","onRemove","keys","styles","tagStyles","listRef","HTMLDivElement","inputRef","HTMLInputElement","TagListElement","display","flow","gap","placeItems","outline","TagRowElement","minWidth","maxWidth","radius","focused","outlineOffset","transition","cursor","TagRowProps","item","state","TagRow","t0","$","_c","t","ref","t1","rowProps","gridCellProps","removeButtonProps","allowsRemoving","isFocusVisible","focusProps","invalidId","entry","value","t2","disabledKeys","has","isTagDisabled","canRemove","t3","otherTagProps","ownTagStyles","tagChildren","tagTheme","theme","t4","t5","children","t6","_isDisabled","t7","filter","Boolean","join","undefined","describedBy","e","repeat","preventDefault","onKeyDown","handleKeyDown","t8","t9","t10","t11","color","onPress","t12","t13","t14","TagList","props","localRef","tag","map","_temp","items","_temp2","String","gridProps","onGridKeyDownCapture","otherGridProps","onKeyDownCapture","input","current","isPrintable","length","ctrlKey","metaKey","altKey","disabled","nativeEvent","isComposing","stopPropagation","focus","handleKeyDownCapture","tabIndex","collection","tag_0","_c","useId","mergeProps","Tag"],"sources":["../../../../src/components/fields/TagInput/TagList.tsx"],"sourcesContent":["import { Key, Node } from '@react-types/shared';\nimport { mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport { KeyboardEvent, RefObject, useRef } from 'react';\nimport { useFocusRing, useId, useTag, useTagGroup } from 'react-aria';\nimport { Item, ListState, useListState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\nimport { CubeTagProps, Tag } from '../../content/Tag/Tag';\n\n/** One chip as the list renders it. */\nexport interface TagListEntry {\n /** The value the chip stands for. Also its collection key. */\n key: string;\n /** The text shown on the chip. */\n label: string;\n /**\n * Why the value failed `validateTag`, when it did. Paints the chip in the\n * danger theme and becomes part of its description.\n */\n invalidMessage?: string;\n /** Extra props for this chip's `Tag`, from the `tagProps` callback. */\n tagProps?: Partial<CubeTagProps>;\n /** Whether the chip is locked: it cannot be focused or removed. */\n isDisabled?: boolean;\n}\n\nexport interface TagListProps {\n qa?: string;\n id?: string;\n 'aria-label': string;\n /** The field's label, read after `aria-label`. */\n 'aria-labelledby'?: string;\n tags: TagListEntry[];\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n /** Read-only chips render without a remove button and ignore Delete/Backspace. */\n isReadOnly?: boolean;\n onRemove: (keys: string[]) => void;\n styles?: Styles;\n tagStyles?: Styles;\n listRef?: RefObject<HTMLDivElement | null>;\n /** The field's input, which Escape and typing on a chip return to. */\n inputRef?: RefObject<HTMLInputElement | null>;\n}\n\nconst TagListElement = tasty({\n qa: 'TagInputTags',\n styles: {\n display: 'flex',\n flow: 'row wrap',\n gap: '.5x',\n placeItems: 'center start',\n outline: 0,\n },\n});\n\n// The focusable grid row. The chip inside it keeps its own look; the row only\n// contributes the focus ring, drawn on the chip's own radius.\nconst TagRowElement = tasty({\n qa: 'TagInputTag',\n styles: {\n display: 'inline-flex',\n minWidth: 0,\n maxWidth: '100%',\n radius: true,\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '$ring-width #primary-accent-text',\n },\n outlineOffset: '$outline-offset',\n transition: 'theme',\n cursor: 'default',\n },\n});\n\ninterface TagRowProps {\n item: Node<TagListEntry>;\n state: ListState<TagListEntry>;\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n isReadOnly?: boolean;\n tagStyles?: Styles;\n}\n\nfunction TagRow({\n item,\n state,\n size,\n isDisabled,\n isReadOnly,\n tagStyles,\n}: TagRowProps) {\n const { t } = useI18n();\n const ref = useRef<HTMLDivElement>(null);\n const { rowProps, gridCellProps, removeButtonProps, allowsRemoving } = useTag(\n { item },\n state,\n ref,\n );\n const { isFocusVisible, focusProps } = useFocusRing();\n const invalidId = useId();\n const entry = item.value as TagListEntry;\n const isTagDisabled = isDisabled || state.disabledKeys.has(item.key);\n const canRemove = allowsRemoving && !isTagDisabled && !isReadOnly;\n const {\n theme: tagTheme,\n styles: ownTagStyles,\n children: tagChildren,\n // Locking goes through the list's disabled keys, so the tag group skips\n // the chip too.\n isDisabled: _isDisabled,\n ...otherTagProps\n } = entry.tagProps ?? {};\n const describedBy =\n [rowProps['aria-describedby'], entry.invalidMessage ? invalidId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n // The tag group removes on every Delete/Backspace, auto-repeat included: a\n // key held down would clear the whole list.\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.repeat && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n\n return;\n }\n\n rowProps.onKeyDown?.(e);\n };\n\n return (\n <TagRowElement\n ref={ref}\n {...mergeProps(rowProps, focusProps)}\n onKeyDown={handleKeyDown}\n aria-describedby={describedBy}\n mods={{ focused: isFocusVisible }}\n >\n {entry.invalidMessage ? (\n <span hidden id={invalidId}>\n {entry.invalidMessage}\n </span>\n ) : null}\n <Tag\n // The cell of the grid row, not the `status` live region a standalone\n // tag is: every chip announcing itself would drown the list.\n {...gridCellProps}\n size={size}\n {...otherTagProps}\n // An invalid value shows as one whatever theme the chip asks for.\n theme={entry.invalidMessage ? 'danger' : (tagTheme ?? 'default')}\n styles={ownTagStyles ? mergeStyles(tagStyles, ownTagStyles) : tagStyles}\n isDisabled={isTagDisabled}\n // The row takes the one Tab stop and removes on Delete/Backspace, so the\n // remove button stays out of the Tab order.\n disableActionsFocus\n actions={\n canRemove ? (\n <ItemAction\n id={removeButtonProps.id}\n icon={<CloseIcon />}\n aria-label={t('tagInput.remove', 'Remove')}\n // Reads \"Remove, <label>\": the button's own name, then the row's.\n aria-labelledby={removeButtonProps['aria-labelledby']}\n styles={{ color: '#current' }}\n onPress={removeButtonProps.onPress}\n />\n ) : undefined\n }\n role=\"gridcell\"\n >\n {tagChildren ?? entry.label}\n </Tag>\n </TagRowElement>\n );\n}\n\n/**\n * The removable chips under a `TagInput`: a React Aria tag group, so the list\n * is one Tab stop, arrow keys move between chips, and Delete or Backspace\n * removes the focused one.\n */\nexport function TagList(props: TagListProps) {\n const {\n qa,\n id,\n tags,\n size,\n isDisabled,\n isReadOnly,\n onRemove,\n styles,\n tagStyles,\n listRef,\n inputRef,\n } = props;\n const localRef = useRef<HTMLDivElement>(null);\n const ref = listRef ?? localRef;\n\n const canRemove = !isDisabled && !isReadOnly;\n\n const state = useListState<TagListEntry>({\n items: tags,\n // A disabled field's chips drop out of the Tab order along with its input,\n // and so do locked ones.\n disabledKeys: tags\n .filter((tag) => isDisabled || tag.isDisabled)\n .map((tag) => tag.key),\n children: (entry) => (\n <Item key={entry.key} textValue={entry.label}>\n {entry.label}\n </Item>\n ),\n });\n\n const { gridProps } = useTagGroup(\n {\n id,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n onRemove: canRemove\n ? (keys: Set<Key>) => onRemove([...keys].map(String))\n : undefined,\n },\n state,\n ref,\n );\n\n // The grid's type-to-select listens here, before any chip does.\n const { onKeyDownCapture: onGridKeyDownCapture, ...otherGridProps } =\n gridProps;\n\n // Leaving the chips for the input they belong to: Escape, or typing, which\n // carries on in the input. Taken before type-to-select, so a letter does not\n // also jump to the chip it starts.\n const handleKeyDownCapture = (e: KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef?.current;\n const isPrintable =\n e.key.length === 1 &&\n e.key !== ' ' &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey;\n\n if (\n !input ||\n input.disabled ||\n e.nativeEvent.isComposing ||\n (e.key !== 'Escape' && !isPrintable)\n ) {\n onGridKeyDownCapture?.(e);\n\n return;\n }\n\n e.stopPropagation();\n // The character itself is left to reach the input, which has focus by the\n // time the browser inserts it.\n if (e.key === 'Escape') e.preventDefault();\n\n input.focus();\n };\n\n return (\n <TagListElement\n ref={ref}\n qa={qa}\n {...otherGridProps}\n onKeyDownCapture={handleKeyDownCapture}\n // With every chip disabled or locked, the grid itself would otherwise\n // stay a Tab stop that focuses nothing.\n tabIndex={\n state.disabledKeys.size === tags.length ? -1 : gridProps.tabIndex\n }\n styles={styles}\n >\n {[...state.collection].map((item) => (\n <TagRow\n key={item.key}\n item={item}\n state={state}\n size={size}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n tagStyles={tagStyles}\n />\n ))}\n </TagListElement>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TagList.js","names":["Key","Node","mergeStyles","Styles","tasty","KeyboardEvent","RefObject","useRef","useFocusRing","useId","useTag","useTagGroup","Item","ListState","useListState","useI18n","CloseIcon","mergeProps","ItemAction","CubeTagProps","Tag","TagListEntry","key","label","invalidMessage","tagProps","Partial","isDisabled","TagListProps","qa","id","tags","size","isReadOnly","onRemove","keys","styles","tagStyles","listRef","HTMLDivElement","inputRef","HTMLInputElement","TagListElement","display","flow","gap","placeItems","outline","TagRowElement","minWidth","maxWidth","radius","focused","outlineOffset","transition","cursor","TagRowProps","item","state","TagRow","t0","$","_c","t","ref","t1","rowProps","gridCellProps","removeButtonProps","allowsRemoving","isFocusVisible","focusProps","invalidId","entry","value","t2","disabledKeys","has","isTagDisabled","canRemove","t3","otherTagProps","ownTagStyles","tagChildren","tagTheme","theme","t4","t5","children","t6","_isDisabled","t7","filter","Boolean","join","undefined","describedBy","e","repeat","preventDefault","onKeyDown","handleKeyDown","t8","t9","t10","t11","color","onPress","t12","t13","t14","TagList","props","localRef","tag","map","_temp","items","_temp2","String","gridProps","onGridKeyDownCapture","otherGridProps","onKeyDownCapture","input","current","isPrintable","length","ctrlKey","metaKey","altKey","disabled","nativeEvent","isComposing","stopPropagation","focus","handleKeyDownCapture","tabIndex","collection","tag_0","_c","useId","mergeProps","Tag"],"sources":["../../../../src/components/fields/TagInput/TagList.tsx"],"sourcesContent":["import { Key, Node } from '@react-types/shared';\nimport { mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport { KeyboardEvent, RefObject, useRef } from 'react';\nimport { useFocusRing, useId, useTag, useTagGroup } from 'react-aria';\nimport { Item, ListState, useListState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n/useI18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\nimport { CubeTagProps, Tag } from '../../content/Tag/Tag';\n\n/** One chip as the list renders it. */\nexport interface TagListEntry {\n /** The value the chip stands for. Also its collection key. */\n key: string;\n /** The text shown on the chip. */\n label: string;\n /**\n * Why the value failed `validateTag`, when it did. Paints the chip in the\n * danger theme and becomes part of its description.\n */\n invalidMessage?: string;\n /** Extra props for this chip's `Tag`, from the `tagProps` callback. */\n tagProps?: Partial<CubeTagProps>;\n /** Whether the chip is locked: it cannot be focused or removed. */\n isDisabled?: boolean;\n}\n\nexport interface TagListProps {\n qa?: string;\n id?: string;\n 'aria-label': string;\n /** The field's label, read after `aria-label`. */\n 'aria-labelledby'?: string;\n tags: TagListEntry[];\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n /** Read-only chips render without a remove button and ignore Delete/Backspace. */\n isReadOnly?: boolean;\n onRemove: (keys: string[]) => void;\n styles?: Styles;\n tagStyles?: Styles;\n listRef?: RefObject<HTMLDivElement | null>;\n /** The field's input, which Escape and typing on a chip return to. */\n inputRef?: RefObject<HTMLInputElement | null>;\n}\n\nconst TagListElement = tasty({\n qa: 'TagInputTags',\n styles: {\n display: 'flex',\n flow: 'row wrap',\n gap: '.5x',\n placeItems: 'center start',\n outline: 0,\n },\n});\n\n// The focusable grid row. The chip inside it keeps its own look; the row only\n// contributes the focus ring, drawn on the chip's own radius.\nconst TagRowElement = tasty({\n qa: 'TagInputTag',\n styles: {\n display: 'inline-flex',\n minWidth: 0,\n maxWidth: '100%',\n radius: true,\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '$ring-width #primary-accent-text',\n },\n outlineOffset: '$outline-offset',\n transition: 'theme',\n cursor: 'default',\n },\n});\n\ninterface TagRowProps {\n item: Node<TagListEntry>;\n state: ListState<TagListEntry>;\n size: CubeTagProps['size'];\n isDisabled?: boolean;\n isReadOnly?: boolean;\n tagStyles?: Styles;\n}\n\nfunction TagRow({\n item,\n state,\n size,\n isDisabled,\n isReadOnly,\n tagStyles,\n}: TagRowProps) {\n const { t } = useI18n();\n const ref = useRef<HTMLDivElement>(null);\n const { rowProps, gridCellProps, removeButtonProps, allowsRemoving } = useTag(\n { item },\n state,\n ref,\n );\n const { isFocusVisible, focusProps } = useFocusRing();\n const invalidId = useId();\n const entry = item.value as TagListEntry;\n const isTagDisabled = isDisabled || state.disabledKeys.has(item.key);\n const canRemove = allowsRemoving && !isTagDisabled && !isReadOnly;\n const {\n theme: tagTheme,\n styles: ownTagStyles,\n children: tagChildren,\n // Locking goes through the list's disabled keys, so the tag group skips\n // the chip too.\n isDisabled: _isDisabled,\n ...otherTagProps\n } = entry.tagProps ?? {};\n const describedBy =\n [rowProps['aria-describedby'], entry.invalidMessage ? invalidId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n // The tag group removes on every Delete/Backspace, auto-repeat included: a\n // key held down would clear the whole list.\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.repeat && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n\n return;\n }\n\n rowProps.onKeyDown?.(e);\n };\n\n return (\n <TagRowElement\n ref={ref}\n {...mergeProps(rowProps, focusProps)}\n onKeyDown={handleKeyDown}\n aria-describedby={describedBy}\n mods={{ focused: isFocusVisible }}\n >\n {entry.invalidMessage ? (\n <span hidden id={invalidId}>\n {entry.invalidMessage}\n </span>\n ) : null}\n <Tag\n // The cell of the grid row, not the `status` live region a standalone\n // tag is: every chip announcing itself would drown the list.\n {...gridCellProps}\n size={size}\n {...otherTagProps}\n // An invalid value shows as one whatever theme the chip asks for.\n theme={entry.invalidMessage ? 'danger' : (tagTheme ?? 'default')}\n styles={ownTagStyles ? mergeStyles(tagStyles, ownTagStyles) : tagStyles}\n isDisabled={isTagDisabled}\n // The row takes the one Tab stop and removes on Delete/Backspace, so the\n // remove button stays out of the Tab order.\n disableActionsFocus\n actions={\n canRemove ? (\n <ItemAction\n id={removeButtonProps.id}\n icon={<CloseIcon />}\n aria-label={t('tagInput.remove', 'Remove')}\n // Reads \"Remove, <label>\": the button's own name, then the row's.\n aria-labelledby={removeButtonProps['aria-labelledby']}\n styles={{ color: '#current' }}\n onPress={removeButtonProps.onPress}\n />\n ) : undefined\n }\n role=\"gridcell\"\n >\n {tagChildren ?? entry.label}\n </Tag>\n </TagRowElement>\n );\n}\n\n/**\n * The removable chips under a `TagInput`: a React Aria tag group, so the list\n * is one Tab stop, arrow keys move between chips, and Delete or Backspace\n * removes the focused one.\n */\nexport function TagList(props: TagListProps) {\n const {\n qa,\n id,\n tags,\n size,\n isDisabled,\n isReadOnly,\n onRemove,\n styles,\n tagStyles,\n listRef,\n inputRef,\n } = props;\n const localRef = useRef<HTMLDivElement>(null);\n const ref = listRef ?? localRef;\n\n const canRemove = !isDisabled && !isReadOnly;\n\n const state = useListState<TagListEntry>({\n items: tags,\n // A disabled field's chips drop out of the Tab order along with its input,\n // and so do locked ones.\n disabledKeys: tags\n .filter((tag) => isDisabled || tag.isDisabled)\n .map((tag) => tag.key),\n children: (entry) => (\n <Item key={entry.key} textValue={entry.label}>\n {entry.label}\n </Item>\n ),\n });\n\n const { gridProps } = useTagGroup(\n {\n id,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n onRemove: canRemove\n ? (keys: Set<Key>) => onRemove([...keys].map(String))\n : undefined,\n },\n state,\n ref,\n );\n\n // The grid's type-to-select listens here, before any chip does.\n const { onKeyDownCapture: onGridKeyDownCapture, ...otherGridProps } =\n gridProps;\n\n // Leaving the chips for the input they belong to: Escape, or typing, which\n // carries on in the input. Taken before type-to-select, so a letter does not\n // also jump to the chip it starts.\n const handleKeyDownCapture = (e: KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef?.current;\n const isPrintable =\n e.key.length === 1 &&\n e.key !== ' ' &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey;\n\n if (\n !input ||\n input.disabled ||\n e.nativeEvent.isComposing ||\n (e.key !== 'Escape' && !isPrintable)\n ) {\n onGridKeyDownCapture?.(e);\n\n return;\n }\n\n e.stopPropagation();\n // The character itself is left to reach the input, which has focus by the\n // time the browser inserts it.\n if (e.key === 'Escape') e.preventDefault();\n\n input.focus();\n };\n\n return (\n <TagListElement\n ref={ref}\n qa={qa}\n {...otherGridProps}\n onKeyDownCapture={handleKeyDownCapture}\n // With every chip disabled or locked, the grid itself would otherwise\n // stay a Tab stop that focuses nothing.\n tabIndex={\n state.disabledKeys.size === tags.length ? -1 : gridProps.tabIndex\n }\n styles={styles}\n >\n {[...state.collection].map((item) => (\n <TagRow\n key={item.key}\n item={item}\n state={state}\n size={size}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n tagStyles={tagStyles}\n />\n ))}\n </TagListElement>\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.208.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { markKeyboardFocus } from "../ListBoxPopover/listNavigation.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.208.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useEffect, useRef, useState } from "react";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { chain } from "../../../utils/react/chain.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
|
-
import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
|
|
5
4
|
import { withOverlayKeys } from "../../../utils/react/overlayKeyPropagation.js";
|
|
6
5
|
import { castNullableStringValue } from "../../../utils/react/nullableValue.js";
|
|
7
6
|
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
8
7
|
import { TextInputBase as _TextInputBase } from "../TextInput/TextInputBase.js";
|
|
8
|
+
import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
|
|
9
9
|
import { useDisplayedValidation } from "../TextInput/displayed-validation.js";
|
|
10
10
|
import { useAutoSizeTextArea } from "../TextInput/useAutoSizeTextArea.js";
|
|
11
11
|
import { c } from "react/compiler-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","names":["ForwardedRef","forwardRef","RefObject","useRef","AriaTextFieldProps","useTextField","chain","mergeProps","
|
|
1
|
+
{"version":3,"file":"TextArea.js","names":["ForwardedRef","forwardRef","RefObject","useRef","AriaTextFieldProps","useTextField","chain","mergeProps","castNullableStringValue","WithNullableValue","withOverlayKeys","useBufferedValue","useFieldProps","useDisplayedValidation","CubeBufferedValueProps","CubeTextInputBaseProps","TextInputBase","useAutoSizeTextArea","FieldBaseProps","CubeTextAreaProps","Omit","field","inputRef","HTMLTextAreaElement","validate","onFocus","onBlur","autoSize","maxRows","rows","TextArea","rawProps","ref","$","_c","t0","t1","Symbol","for","defaultValidationTrigger","showsValidateErrors","valuePropsMapper","_temp","props","t2","isDisabled","t3","isReadOnly","t4","isRequired","t5","onChange","onChange_0","t6","t7","labelProps","userLabelProps","inputProps","userInputProps","propsInputRef","value","value_0","form","isBuffered","otherProps","undefined","Math","max","localInputRef","t8","buffered","t9","adjustHeight","displayedValidation","validation","trackTouched","reset","onKeyDown","inputElementType","t10","mergedLabelProps","T0","t11","getDisplayedValidation","t12","t13","toString","_TextArea","cubeInputType","displayName","_c","mergeProps","TextInputBase"],"sources":["../../../../src/components/fields/TextArea/TextArea.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, RefObject, useRef } from 'react';\nimport { AriaTextFieldProps, useTextField } from 'react-aria';\n\nimport { chain } from '../../../utils/react/chain';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n castNullableStringValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { withOverlayKeys } from '../../../utils/react/overlayKeyPropagation';\nimport { useBufferedValue } from '../../../utils/react/useBufferedValue';\nimport { useFieldProps } from '../../form/Form/use-field/use-field-props';\nimport { useDisplayedValidation } from '../TextInput/displayed-validation';\nimport {\n CubeBufferedValueProps,\n CubeTextInputBaseProps,\n TextInputBase,\n} from '../TextInput/TextInputBase';\nimport { useAutoSizeTextArea } from '../TextInput/useAutoSizeTextArea';\n\nimport type { FieldBaseProps } from '../../../shared/form';\n\nexport interface CubeTextAreaProps\n extends\n Omit<\n CubeTextInputBaseProps,\n 'validate' | 'inputRef' | 'onFocus' | 'onBlur'\n >,\n CubeBufferedValueProps {\n field?: FieldBaseProps<string | null | undefined>['field'];\n inputRef?: RefObject<HTMLTextAreaElement | null>;\n validate?: AriaTextFieldProps<HTMLTextAreaElement>['validate'];\n onFocus?: AriaTextFieldProps<HTMLTextAreaElement>['onFocus'];\n onBlur?: AriaTextFieldProps<HTMLTextAreaElement>['onBlur'];\n /** Whether the textarea should change its size depends on the content */\n autoSize?: boolean;\n /** Max number of visible rows when autoSize is `true`. Defaults to 10 */\n maxRows?: number;\n /** The `rows` attribute in HTML is used to specify the number of visible text lines for the\n * control i.e. the number of rows to display. Defaults to 3 */\n rows?: number;\n}\n\nfunction TextArea(\n rawProps: WithNullableValue<CubeTextAreaProps>,\n ref: ForwardedRef<HTMLElement>,\n) {\n rawProps = castNullableStringValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onBlur',\n showsValidateErrors: true,\n valuePropsMapper: ({ value, onChange }) => ({\n onChange,\n value: value?.toString() ?? '',\n }),\n });\n let {\n autoSize = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n onChange,\n maxRows = 10,\n rows = 3,\n labelProps: userLabelProps,\n inputProps: userInputProps,\n inputRef: propsInputRef,\n value,\n // The form instance, not the DOM `form` id `useTextField` forwards.\n form,\n isBuffered,\n ...otherProps\n } = props;\n\n rows = Math.max(rows, 1);\n maxRows = Math.max(maxRows, rows);\n\n let localInputRef = useRef<HTMLTextAreaElement>(null);\n let inputRef = propsInputRef ?? localInputRef;\n\n // Hold the typed text locally until the controlled value catches up — see `useBufferedValue`.\n const buffered = useBufferedValue(value, onChange, {\n isBuffered,\n isDisabled,\n isReadOnly,\n });\n\n const adjustHeight = useAutoSizeTextArea({\n inputRef,\n autoSize,\n rows,\n maxRows,\n // Keyed on the rendered value, not the prop, so a buffered draft is measured.\n value: buffered.value,\n });\n\n let displayedValidation = useDisplayedValidation();\n let { labelProps, inputProps, ...validation } = useTextField(\n displayedValidation.trackTouched({\n ...otherProps,\n value: buffered.value,\n isDisabled,\n isReadOnly,\n isRequired,\n onChange: chain(buffered.onChange, adjustHeight),\n onBlur: chain(otherProps.onBlur, buffered.reset),\n onKeyDown: withOverlayKeys(otherProps.onKeyDown),\n inputElementType: 'textarea',\n }),\n inputRef,\n );\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n return (\n <TextInputBase\n ref={ref}\n {...otherProps}\n {...displayedValidation.getDisplayedValidation(otherProps, validation)}\n multiLine\n inputRef={inputRef}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(\n inputProps,\n { 'data-input-type': 'textarea' },\n userInputProps,\n )}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n rows={rows}\n />\n );\n}\n\n/**\n * TextInputs are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _TextArea = forwardRef(TextArea);\n\n(_TextArea as any).cubeInputType = 'Text';\n_TextArea.displayName = 'TextArea';\n\nexport { _TextArea as TextArea };\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { chain } from "../../../utils/react/chain.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
|
-
import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
|
|
5
4
|
import { withOverlayKeys } from "../../../utils/react/overlayKeyPropagation.js";
|
|
6
5
|
import { castNullableStringValue } from "../../../utils/react/nullableValue.js";
|
|
7
6
|
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
8
7
|
import { TextInputBase as _TextInputBase } from "./TextInputBase.js";
|
|
8
|
+
import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
|
|
9
9
|
import { useDisplayedValidation } from "./displayed-validation.js";
|
|
10
10
|
import { c } from "react/compiler-runtime";
|
|
11
11
|
import { forwardRef, useRef } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.js","names":["ForwardedRef","forwardRef","RefObject","useRef","AriaTextFieldProps","useTextField","chain","mergeProps","
|
|
1
|
+
{"version":3,"file":"TextInput.js","names":["ForwardedRef","forwardRef","RefObject","useRef","AriaTextFieldProps","useTextField","chain","mergeProps","castNullableStringValue","WithNullableValue","withOverlayKeys","useBufferedValue","useFieldProps","useDisplayedValidation","CubeBufferedValueProps","CubeTextInputBaseProps","TextInputBase","FieldBaseProps","TextFieldKeyboardProps","CubeTextInputProps","Omit","field","validate","TextInput","rawProps","ref","$","_c","t0","t1","Symbol","for","defaultValidationTrigger","showsValidateErrors","valuePropsMapper","_temp","props","labelProps","userLabelProps","inputProps","userInputProps","inputRef","propsInputRef","form","isBuffered","restProps","localInputRef","buffered","value","onChange","isDisabled","isReadOnly","displayedValidation","validation","trackTouched","onBlur","reset","onKeyDown","inputElementType","multiLine","HTMLInputElement","t2","mergedLabelProps","T0","t3","getDisplayedValidation","t4","t5","cubeInputType","toString","_c","useTextField","mergeProps","TextInputBase"],"sources":["../../../../src/components/fields/TextInput/TextInput.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, RefObject, useRef } from 'react';\nimport { AriaTextFieldProps, useTextField } from 'react-aria';\n\nimport { chain } from '../../../utils/react/chain';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n castNullableStringValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { withOverlayKeys } from '../../../utils/react/overlayKeyPropagation';\nimport { useBufferedValue } from '../../../utils/react/useBufferedValue';\nimport { useFieldProps } from '../../form/Form/use-field/use-field-props';\n\nimport { useDisplayedValidation } from './displayed-validation';\nimport {\n CubeBufferedValueProps,\n CubeTextInputBaseProps,\n TextInputBase,\n} from './TextInputBase';\n\nimport type {\n FieldBaseProps,\n TextFieldKeyboardProps,\n} from '../../../shared/form';\n\nexport type CubeTextInputProps = WithNullableValue<\n Omit<CubeTextInputBaseProps, 'validate'>\n> &\n CubeBufferedValueProps &\n TextFieldKeyboardProps & {\n field?: FieldBaseProps<string | null | undefined>['field'];\n validate?: AriaTextFieldProps['validate'];\n };\n\nexport { useTextField };\n\nexport const TextInput = forwardRef(function TextInput(\n rawProps: CubeTextInputProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n rawProps = castNullableStringValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onBlur',\n showsValidateErrors: true,\n valuePropsMapper: ({ value, onChange }) => ({\n onChange,\n value: value?.toString() ?? '',\n }),\n });\n\n let {\n labelProps: userLabelProps,\n inputProps: userInputProps,\n inputRef: propsInputRef,\n form,\n isBuffered,\n ...restProps\n } = props;\n let localInputRef = useRef<HTMLTextAreaElement | HTMLInputElement>(null);\n let inputRef = propsInputRef ?? localInputRef;\n\n // Hold the typed text locally until the controlled value catches up, so a parent that echoes it\n // back a render late can't overwrite the DOM node and throw the caret to the end.\n let buffered = useBufferedValue(restProps.value, restProps.onChange, {\n isBuffered,\n isDisabled: restProps.isDisabled,\n isReadOnly: restProps.isReadOnly,\n });\n\n let displayedValidation = useDisplayedValidation();\n let { labelProps, inputProps, ...validation } = useTextField(\n displayedValidation.trackTouched({\n ...restProps,\n value: buffered.value,\n onChange: buffered.onChange,\n onBlur: chain(restProps.onBlur, buffered.reset),\n onKeyDown: withOverlayKeys(restProps.onKeyDown),\n inputElementType: restProps.multiLine ? 'textarea' : 'input',\n }),\n inputRef as RefObject<HTMLInputElement | null>,\n );\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n return (\n <TextInputBase\n {...restProps}\n {...displayedValidation.getDisplayedValidation(restProps, validation)}\n ref={ref}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(inputProps, userInputProps)}\n inputRef={inputRef}\n />\n );\n});\n\n/**\n * TextInputs are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\n\n(TextInput as any).cubeInputType = 'Text';\n"],"mappings":";;;;;;;;;;;;;;AAoCA,MAAauB,YAAYtB,WAAW,SAAAsB,UAAAC,UAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,UAAA;EAIvBI,KAAApB,wBAAwBgB,QAAQ;EAACE,EAAA,KAAAF;EAAAE,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAA5CF,WAAWA;CAAH,IAAAK;CAAA,IAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAC4BF,KAAA;GAAAG,0BACR;GAAQC,qBACb;GAAIC,kBACPC;EAIpB;EAACT,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAED,MAAA,EAAAW,YAAAC,gBAAAC,YAAAC,gBAAAC,UAAAC,eAAAC,MAAAC,YAAA,GAAAC,cATYjC,cAAcY,UAAUK,EAgBhCO;CACJ,MAAAU,gBAAoB3C,OAA+C,IAAI;CACvE,MAAAsC,WAAeC,iBAAAI;CAIf,MAAAC,WAAepC,iBAAiBkC,UAASG,OAAQH,UAASI,UAAW;EAAAL;EAAAM,YAEvDL,UAASK;EAAWC,YACpBN,UAASM;CACvB,CAAC;CAED,MAAAC,sBAA0BvC,uBAAuB;CACjD,MAAA,EAAAwB,YAAAE,YAAA,GAAAc,eAAgDhD,eAC9C+C,oBAAmBE,aAAc;EAAA,GAC5BT;EAASG,OACLD,SAAQC;EAAMC,UACXF,SAAQE;EAASM,QACnBjD,MAAMuC,UAASU,QAASR,SAAQS,KAAM;EAACC,WACpC/C,gBAAgBmC,UAASY,SAAU;EAACC,kBAC7Bb,UAASc,YAAT,aAAA;CACpB,CAAC,GACDlB,QACF;CAAE,IAAAoB;CAAA,IAAAnC,EAAA,OAAAW,cAAAX,EAAA,OAAAY,gBAAA;EAGuBuB,KAAAtD,aAAW8B,YAAYC,cAAc;EAACZ,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAA/D,MAAAoC,mBAAyBD;CAGtB,MAAAE,KAAA/C;CAEK,MAAAgD,KAAAZ,oBAAmBa,uBAAwBpB,WAAWQ,UAAU;CAAC,IAAAa;CAAA,IAAAxC,EAAA,OAAAa,cAAAb,EAAA,OAAAc,gBAAA;EAGzD0B,KAAA3D,aAAWgC,YAAYC,cAAc;EAACd,EAAA,KAAAa;EAAAb,EAAA,KAAAc;EAAAd,EAAA,KAAAwC;CAAA,OAAAA,KAAAxC,EAAA;CAAA,IAAAyC;CAAA,IAAAzC,EAAA,OAAAqC,MAAArC,EAAA,QAAAe,YAAAf,EAAA,QAAAoC,oBAAApC,EAAA,QAAAD,OAAAC,EAAA,QAAAmB,aAAAnB,EAAA,QAAAsC,MAAAtC,EAAA,QAAAwC,IAAA;EALpDC,KAAA,oBAAC,IAAD;GAAc,GACRtB;GAAS,GACTmB;GACCvC;GACOqC,YAAAA;GACA,YAAAI;GACFzB;EAAQ,CAAA;EAClBf,EAAA,KAAAqC;EAAArC,EAAA,MAAAe;EAAAf,EAAA,MAAAoC;EAAApC,EAAA,MAAAD;EAAAC,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsC;EAAAtC,EAAA,MAAAwC;EAAAxC,EAAA,MAAAyC;CAAA,OAAAA,KAAAzC,EAAA;CAAA,OAPFyC;AAOE,CAEL;;;;;;AAQD,UAAmBC,gBAAgB;AAnEC,SAAAjC,MAAAP,IAAA;CAQb,MAAA,EAAAoB,OAAAC,aAAArB;CAAmB,OAAM;EAAAqB;EAAAD,OAEnCA,OAAKqB,SAAiB,KAAtB;CACT;AAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { Props } from "../../../props.js";
|
|
3
3
|
import { FieldBaseProps, TextFieldKeyboardProps } from "../../../shared/form.js";
|
|
4
|
-
import "../../../shared/index.js";
|
|
5
4
|
import { CubeTooltipProviderProps } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
6
5
|
import { FieldLayoutStyleProps } from "../../form/field-layout.js";
|
|
7
6
|
import { BaseProps, Styles } from "@tenphi/tasty";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
|
-
import { getDisabledElementProps, getInertInputProps } from "../../../utils/react/disabledProps.js";
|
|
4
3
|
import { mergeRefs as mergeRefs$1, useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
5
4
|
import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
|
|
6
5
|
import { useAutoTooltip } from "../../content/use-auto-tooltip.js";
|
|
6
|
+
import { getDisabledElementProps, getInertInputProps } from "../../../utils/react/disabledProps.js";
|
|
7
7
|
import { mergeTooltipFocusProps, splitTooltipTriggerProps } from "../../overlays/Tooltip/split-trigger-props.js";
|
|
8
8
|
import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
|
|
9
|
-
import { ValidationIndicator, hasValidationIndicator } from "../../form/validation/ValidationIndicator.js";
|
|
10
9
|
import { wrapWithField } from "../../form/wrapper.js";
|
|
11
10
|
import { splitFieldLayout } from "../../form/field-layout.js";
|
|
11
|
+
import { ValidationIndicator, hasValidationIndicator } from "../../form/validation/ValidationIndicator.js";
|
|
12
12
|
import { c } from "react/compiler-runtime";
|
|
13
13
|
import { mergeStyles, tasty } from "@tenphi/tasty";
|
|
14
14
|
import { forwardRef, useImperativeHandle } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInputBase.js","names":["useObjectRef","createFocusableRef","BaseProps","mergeStyles","Styles","tasty","FocusEventHandler","forwardRef","MouseEvent","ReactElement","ReactNode","RefObject","useImperativeHandle","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","TextFieldKeyboardProps","mergeProps","mergeRefs","useCombinedRefs","getDisabledElementProps","getInertInputProps","useFocus","useAutoTooltip","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","FieldLayoutStyleProps","splitFieldLayout","mergeTooltipFocusProps","splitTooltipTriggerProps","Props","CubeTooltipProviderProps","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_RADIUS","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","readonly","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","INTERACTIVE_ELEMENTS","focusInputOnBoxPress","event","HTMLElement","input","HTMLInputElement","HTMLTextAreaElement","button","defaultPrevented","getAttribute","box","currentTarget","target","Element","contains","interactive","closest","preventDefault","focus","preventPointerFocus","CubeTextInputBaseProps","Omit","validate","onFocus","onBlur","icon","suffixPosition","actions","multiLine","autoFocus","inputProps","wrapperProps","inputRef","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","shape","autoComplete","autocomplete","tooltip","CubeBufferedValueProps","isBuffered","TextInputBase","props","ref","_c","mods","isInvalid","isValid","t0","isDisabled","isReadOnly","t1","t2","value","t3","t4","t5","t6","maxLength","minLength","form","children","otherProps","undefined","field","fillHeightOnFlex","type","ElementType","isFocused","focusProps","t7","t8","hoverProps","isHovered","domRef","t9","renderWithTooltip","isTooltipActive","select","current","getInputElement","t10","showValidationIndicator","placeholder","t11","t12","t13","t14","t15","t16","loadable","hovered","modifiers","resolvedAutoComplete","resolvedAutoFocus","hasTextSecurity","textSecurityStyles","length","fontFamily","isInputDisabled","t17","keepEvents","as","isInert","ownInputProps","excludeFromTabOrder","readOnly","onMouseDown","textField","tooltipTriggerProps","tooltipRef","pointerProps","tooltipFocusProps","labelProps","htmlFor","for","_TextInputBase","_c","useFocus","mergeProps","mergeRefs"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { BaseProps, mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport {\n FocusEventHandler,\n forwardRef,\n MouseEvent,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps, TextFieldKeyboardProps } from '../../../shared';\nimport { mergeProps, mergeRefs, useCombinedRefs } from '../../../utils/react';\nimport {\n getDisabledElementProps,\n getInertInputProps,\n} from '../../../utils/react/disabledProps';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\nimport {\n FieldLayoutStyleProps,\n splitFieldLayout,\n} from '../../form/field-layout';\nimport {\n mergeTooltipFocusProps,\n splitTooltipTriggerProps,\n} from '../../overlays/Tooltip/split-trigger-props';\n\nimport type { Props } from '../../../props';\nimport type { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\n// The field box and its input share the corners: a plain box is square.\nconst INPUT_RADIUS = {\n '': true,\n 'shape=plain': 0,\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n readonly: '#surface-2',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n readonly: '#border.5',\n // High contrast keeps the full outline it raises for every field.\n 'readonly & @hc': true,\n // A plain field sits flush in a container that draws its edges. Its border\n // keeps its width, so nothing shifts, and shows only to mark focus or\n // validity, and in high contrast.\n 'shape=plain': '#clear',\n 'shape=plain & @hc': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n 'disabled & shape=plain': '#clear',\n 'disabled & shape=plain & @hc': true,\n // Only an input kept focusable for its tooltip is focused while disabled,\n // and only from the keyboard: the pointer can't focus it.\n 'disabled & focused': '#primary-text',\n },\n preset: 't3',\n radius: INPUT_RADIUS,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: INPUT_RADIUS,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n // The browser's own for a disabled input, which an input kept focusable for\n // its tooltip doesn't get: it is read-only, not natively disabled.\n cursor: {\n '': 'text',\n disabled: 'default',\n },\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nconst INTERACTIVE_ELEMENTS =\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable]';\n\n/**\n * A press inside the field box but outside the input — the prefix or suffix area, an icon, a\n * textarea's margins — focuses the input, as a press anywhere in a native field does. Presses on\n * the input itself and on interactive children, such as a clear button or the steppers, stay\n * theirs.\n */\nfunction focusInputOnBoxPress(\n event: MouseEvent<HTMLElement>,\n input: HTMLInputElement | HTMLTextAreaElement | null | undefined,\n) {\n if (event.button !== 0 || event.defaultPrevented) return;\n // An input kept focusable for its tooltip is still disabled to the pointer.\n if (\n !input ||\n input.disabled ||\n input.getAttribute('aria-disabled') === 'true'\n ) {\n return;\n }\n\n const box = event.currentTarget;\n const target = event.target as Element;\n\n // React bubbles presses from a portal (a popover opened from a field action)\n // through the box; those belong to the portal.\n if (!box.contains(target)) return;\n\n const interactive = target.closest(INTERACTIVE_ELEMENTS);\n\n if (interactive && box.contains(interactive)) return;\n\n // The default action would move focus to the press target first, blurring the input.\n event.preventDefault();\n input.focus();\n}\n\n/** A press doesn't focus a natively disabled input, so it doesn't focus an inert one either. */\nfunction preventPointerFocus(event: MouseEvent<HTMLElement>) {\n event.preventDefault();\n}\n\nexport interface CubeTextInputBaseProps\n extends\n BaseProps,\n FieldLayoutStyleProps,\n Omit<\n AriaTextFieldProps<HTMLInputElement | HTMLTextAreaElement>,\n | 'validate'\n | 'form'\n | 'name'\n | 'errorMessage'\n | 'onKeyDown'\n | 'onKeyUp'\n | 'onFocus'\n | 'onBlur'\n >,\n TextFieldKeyboardProps,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /**\n * Controls placed last in the suffix, after the validation and loading\n * statuses and after `suffix` whatever its position, such as a popover\n * trigger.\n */\n actions?: ReactNode;\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /**\n * Direct input props. The explicit props above (`isDisabled`, `maxLength`, `minLength`,\n * `autoFocus`, `rows`, `autoComplete`) win over the same attributes here when they are set; an\n * unset one leaves the value given here in place.\n */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement | null>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement | null>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** Rendered in place of the default loading icon while `isLoading` is set */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * The shape of the field box.\n * - `default` - rounded, with a border.\n * - `plain` - square, with no border at rest, for a field set flush in a\n * container that draws its edges, such as a toolbar or a panel header. The\n * border keeps its width, and shows on focus and in a valid or invalid\n * state.\n * @default \"default\"\n */\n shape?: 'default' | 'plain';\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n /**\n * The input's own tooltip: a short hint, such as what the value means or defaults to, or why the\n * field is disabled. It opens on hover over the field box and on keyboard focus, and describes\n * the input. A disabled input with a tooltip stays focusable, so the keyboard reaches it too. A\n * string, or `TooltipProvider` props (`title`, `placement`, …). Never the field's name, an error\n * or anything needed to fill the field in: touch users don't see it. The info badge next to a\n * field label is `labelTooltip`.\n */\n tooltip?: string | Omit<CubeTooltipProviderProps, 'children'>;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n isReadOnly,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n actions,\n wrapperRef,\n rows,\n size = 'medium',\n shape = 'default',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n tooltip,\n children,\n ...otherProps\n } = props;\n\n // A text area grows with its flex line when bare, so it fills a field\n // sized by flex props too.\n const { styles, field } = splitFieldLayout(props, {\n fillHeightOnFlex: !!multiLine,\n });\n let type = otherProps.type;\n\n if (resize) {\n // oxlint-disable-next-line tasty/no-runtime-styles-mutation -- forwards the consumer's `resize` prop\n inputStyles = mergeStyles(inputStyles, { resize });\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus();\n // A read-only field takes no hover state: nothing it could change would follow.\n let { hoverProps, isHovered } = useHover({\n isDisabled: isDisabled || isReadOnly,\n });\n // The input box, with or without the field chrome, so the field's ref never\n // resolves to `null`; `wrapperRef` reaches the same element.\n let domRef = useObjectRef(wrapperRef);\n\n inputRef = useCombinedRefs(inputRef);\n\n let { renderWithTooltip, isTooltipActive } = useAutoTooltip({\n tooltip,\n children: null,\n });\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = {\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n readonly: !!isReadOnly,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix || !!actions,\n shape,\n ...mods,\n };\n\n // The explicit props win when they are set; an unset one falls back to the merged `inputProps`\n // instead of overwriting it with `undefined`. For `autoComplete` that keeps both a caller's\n // `inputProps={{ autoComplete }}` and `useNumberField`'s own `off`. `autocomplete` is the\n // deprecated alias.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n const resolvedAutoFocus = autoFocus ?? inputProps.autoFocus;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const isInputDisabled = !!(isDisabled ?? inputProps.disabled);\n\n // A disabled input with a tooltip keeps its focus, as `Checkbox` and `Switch` do: the tooltip is\n // usually the reason it is disabled, and focus is how the keyboard opens it. It is\n // `aria-disabled` and read-only instead, and the pointer still can't focus it.\n const { isInert } = getDisabledElementProps({\n isDisabled: isInputDisabled,\n keepEvents: isTooltipActive,\n as: 'input',\n });\n\n let ownInputProps = mergeProps(inputProps, focusProps, hoverProps);\n\n if (isInert) {\n ownInputProps = mergeProps(\n getInertInputProps(\n mergeProps(\n // The field's own focus handlers never run on a natively disabled input, and\n // `useNumberField` commits on blur: it would round a value the user can't edit.\n { ...inputProps, onFocus: undefined, onBlur: undefined },\n focusProps,\n hoverProps,\n ),\n { excludeFromTabOrder: props.excludeFromTabOrder },\n ),\n { readOnly: true, onMouseDown: preventPointerFocus },\n );\n }\n\n // The field box takes the tooltip's hover side and positions it, so it\n // covers the prefix, suffix and steppers and never the text being typed. The\n // input, where keyboard focus lands, takes the focus side. The box keeps the\n // field's ref, which `wrapperRef` also reaches.\n const textField = renderWithTooltip((tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n <InputWrapperElement\n ref={tooltipRef ? mergeRefs(domRef, tooltipRef) : domRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...mergeProps(wrapperProps, pointerProps, {\n onMouseDown: (event: MouseEvent<HTMLElement>) =>\n focusInputOnBoxPress(event, inputRef?.current),\n })}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeTooltipFocusProps(ownInputProps, tooltipFocusProps)}\n ref={inputRef}\n rows={multiLine ? (rows ?? inputProps.rows ?? 1) : inputProps.rows}\n mods={modifiers}\n // oxlint-disable-next-line tasty/no-style-prop -- `preset` owns font-family, and a `fontFamily` state map would replace the preset's in every state\n style={textSecurityStyles}\n {...(resolvedAutoFocus ? { 'data-autofocus': '' } : undefined)}\n autoFocus={resolvedAutoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={isInputDisabled && !isInert}\n maxLength={maxLength ?? inputProps.maxLength}\n minLength={minLength ?? inputProps.minLength}\n />\n {/* Inside the box, so a parent's `:last-child` rules still see the field: `NumberInput`'s hidden form value goes here. */}\n {children}\n {showValidationIndicator || suffix || actions ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n {isLoading && loadingIndicator ? (\n <div data-element=\"State\">{loadingIndicator}</div>\n ) : (\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n )}\n {suffixPosition === 'after' ? suffix : null}\n {actions}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n }, 'top');\n\n // `renderWithTooltip` is typed for any node; here it returns an element.\n // `tooltip` is the input's own, not the legacy spelling of `labelTooltip`.\n return wrapWithField(textField as ReactElement, {\n ...props,\n ...field,\n tooltip: undefined,\n // A click on its label doesn't focus a natively disabled input either. The input keeps its\n // name through `aria-labelledby`.\n ...(isInert\n ? {\n labelProps: {\n ...props.labelProps,\n htmlFor: undefined,\n for: undefined,\n },\n }\n : null),\n });\n}\n\nconst _TextInputBase = forwardRef(TextInputBase);\n\nexport { _TextInputBase as TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextInputBase.js","names":["useObjectRef","createFocusableRef","BaseProps","mergeStyles","Styles","tasty","FocusEventHandler","forwardRef","MouseEvent","ReactElement","ReactNode","RefObject","useImperativeHandle","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","TextFieldKeyboardProps","getDisabledElementProps","getInertInputProps","useFocus","mergeProps","mergeRefs","useCombinedRefs","useAutoTooltip","FieldLayoutStyleProps","splitFieldLayout","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","mergeTooltipFocusProps","splitTooltipTriggerProps","Props","CubeTooltipProviderProps","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_RADIUS","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","readonly","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","INTERACTIVE_ELEMENTS","focusInputOnBoxPress","event","HTMLElement","input","HTMLInputElement","HTMLTextAreaElement","button","defaultPrevented","getAttribute","box","currentTarget","target","Element","contains","interactive","closest","preventDefault","focus","preventPointerFocus","CubeTextInputBaseProps","Omit","validate","onFocus","onBlur","icon","suffixPosition","actions","multiLine","autoFocus","inputProps","wrapperProps","inputRef","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","shape","autoComplete","autocomplete","tooltip","CubeBufferedValueProps","isBuffered","TextInputBase","props","ref","_c","mods","isInvalid","isValid","t0","isDisabled","isReadOnly","t1","t2","value","t3","t4","t5","t6","maxLength","minLength","form","children","otherProps","undefined","field","fillHeightOnFlex","type","ElementType","isFocused","focusProps","t7","t8","hoverProps","isHovered","domRef","t9","renderWithTooltip","isTooltipActive","select","current","getInputElement","t10","showValidationIndicator","placeholder","t11","t12","t13","t14","t15","t16","loadable","hovered","modifiers","resolvedAutoComplete","resolvedAutoFocus","hasTextSecurity","textSecurityStyles","length","fontFamily","isInputDisabled","t17","keepEvents","as","isInert","ownInputProps","excludeFromTabOrder","readOnly","onMouseDown","textField","tooltipTriggerProps","tooltipRef","pointerProps","tooltipFocusProps","labelProps","htmlFor","for","_TextInputBase","_c","useFocus","mergeProps","mergeRefs"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { BaseProps, mergeStyles, Styles, tasty } from '@tenphi/tasty';\nimport {\n FocusEventHandler,\n forwardRef,\n MouseEvent,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps, TextFieldKeyboardProps } from '../../../shared/form';\nimport {\n getDisabledElementProps,\n getInertInputProps,\n} from '../../../utils/react/disabledProps';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n mergeRefs,\n useCombinedRefs,\n} from '../../../utils/react/useCombinedRefs';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport {\n FieldLayoutStyleProps,\n splitFieldLayout,\n} from '../../form/field-layout';\nimport { getValidationMods } from '../../form/validation/resolve-validation-props';\nimport {\n hasValidationIndicator,\n ValidationIndicator,\n} from '../../form/validation/ValidationIndicator';\nimport { wrapWithField } from '../../form/wrapper';\nimport {\n mergeTooltipFocusProps,\n splitTooltipTriggerProps,\n} from '../../overlays/Tooltip/split-trigger-props';\n\nimport type { Props } from '../../../props';\nimport type { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\n// The field box and its input share the corners: a plain box is square.\nconst INPUT_RADIUS = {\n '': true,\n 'shape=plain': 0,\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n readonly: '#surface-2',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n readonly: '#border.5',\n // High contrast keeps the full outline it raises for every field.\n 'readonly & @hc': true,\n // A plain field sits flush in a container that draws its edges. Its border\n // keeps its width, so nothing shifts, and shows only to mark focus or\n // validity, and in high contrast.\n 'shape=plain': '#clear',\n 'shape=plain & @hc': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n 'disabled & shape=plain': '#clear',\n 'disabled & shape=plain & @hc': true,\n // Only an input kept focusable for its tooltip is focused while disabled,\n // and only from the keyboard: the pointer can't focus it.\n 'disabled & focused': '#primary-text',\n },\n preset: 't3',\n radius: INPUT_RADIUS,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: INPUT_RADIUS,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n // The browser's own for a disabled input, which an input kept focusable for\n // its tooltip doesn't get: it is read-only, not natively disabled.\n cursor: {\n '': 'text',\n disabled: 'default',\n },\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nconst INTERACTIVE_ELEMENTS =\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable]';\n\n/**\n * A press inside the field box but outside the input — the prefix or suffix area, an icon, a\n * textarea's margins — focuses the input, as a press anywhere in a native field does. Presses on\n * the input itself and on interactive children, such as a clear button or the steppers, stay\n * theirs.\n */\nfunction focusInputOnBoxPress(\n event: MouseEvent<HTMLElement>,\n input: HTMLInputElement | HTMLTextAreaElement | null | undefined,\n) {\n if (event.button !== 0 || event.defaultPrevented) return;\n // An input kept focusable for its tooltip is still disabled to the pointer.\n if (\n !input ||\n input.disabled ||\n input.getAttribute('aria-disabled') === 'true'\n ) {\n return;\n }\n\n const box = event.currentTarget;\n const target = event.target as Element;\n\n // React bubbles presses from a portal (a popover opened from a field action)\n // through the box; those belong to the portal.\n if (!box.contains(target)) return;\n\n const interactive = target.closest(INTERACTIVE_ELEMENTS);\n\n if (interactive && box.contains(interactive)) return;\n\n // The default action would move focus to the press target first, blurring the input.\n event.preventDefault();\n input.focus();\n}\n\n/** A press doesn't focus a natively disabled input, so it doesn't focus an inert one either. */\nfunction preventPointerFocus(event: MouseEvent<HTMLElement>) {\n event.preventDefault();\n}\n\nexport interface CubeTextInputBaseProps\n extends\n BaseProps,\n FieldLayoutStyleProps,\n Omit<\n AriaTextFieldProps<HTMLInputElement | HTMLTextAreaElement>,\n | 'validate'\n | 'form'\n | 'name'\n | 'errorMessage'\n | 'onKeyDown'\n | 'onKeyUp'\n | 'onFocus'\n | 'onBlur'\n >,\n TextFieldKeyboardProps,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /**\n * Controls placed last in the suffix, after the validation and loading\n * statuses and after `suffix` whatever its position, such as a popover\n * trigger.\n */\n actions?: ReactNode;\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /**\n * Direct input props. The explicit props above (`isDisabled`, `maxLength`, `minLength`,\n * `autoFocus`, `rows`, `autoComplete`) win over the same attributes here when they are set; an\n * unset one leaves the value given here in place.\n */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement | null>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement | null>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** Rendered in place of the default loading icon while `isLoading` is set */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * The shape of the field box.\n * - `default` - rounded, with a border.\n * - `plain` - square, with no border at rest, for a field set flush in a\n * container that draws its edges, such as a toolbar or a panel header. The\n * border keeps its width, and shows on focus and in a valid or invalid\n * state.\n * @default \"default\"\n */\n shape?: 'default' | 'plain';\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n /**\n * The input's own tooltip: a short hint, such as what the value means or defaults to, or why the\n * field is disabled. It opens on hover over the field box and on keyboard focus, and describes\n * the input. A disabled input with a tooltip stays focusable, so the keyboard reaches it too. A\n * string, or `TooltipProvider` props (`title`, `placement`, …). Never the field's name, an error\n * or anything needed to fill the field in: touch users don't see it. The info badge next to a\n * field label is `labelTooltip`.\n */\n tooltip?: string | Omit<CubeTooltipProviderProps, 'children'>;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n isReadOnly,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n actions,\n wrapperRef,\n rows,\n size = 'medium',\n shape = 'default',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n tooltip,\n children,\n ...otherProps\n } = props;\n\n // A text area grows with its flex line when bare, so it fills a field\n // sized by flex props too.\n const { styles, field } = splitFieldLayout(props, {\n fillHeightOnFlex: !!multiLine,\n });\n let type = otherProps.type;\n\n if (resize) {\n // oxlint-disable-next-line tasty/no-runtime-styles-mutation -- forwards the consumer's `resize` prop\n inputStyles = mergeStyles(inputStyles, { resize });\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus();\n // A read-only field takes no hover state: nothing it could change would follow.\n let { hoverProps, isHovered } = useHover({\n isDisabled: isDisabled || isReadOnly,\n });\n // The input box, with or without the field chrome, so the field's ref never\n // resolves to `null`; `wrapperRef` reaches the same element.\n let domRef = useObjectRef(wrapperRef);\n\n inputRef = useCombinedRefs(inputRef);\n\n let { renderWithTooltip, isTooltipActive } = useAutoTooltip({\n tooltip,\n children: null,\n });\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = {\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n readonly: !!isReadOnly,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix || !!actions,\n shape,\n ...mods,\n };\n\n // The explicit props win when they are set; an unset one falls back to the merged `inputProps`\n // instead of overwriting it with `undefined`. For `autoComplete` that keeps both a caller's\n // `inputProps={{ autoComplete }}` and `useNumberField`'s own `off`. `autocomplete` is the\n // deprecated alias.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n const resolvedAutoFocus = autoFocus ?? inputProps.autoFocus;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const isInputDisabled = !!(isDisabled ?? inputProps.disabled);\n\n // A disabled input with a tooltip keeps its focus, as `Checkbox` and `Switch` do: the tooltip is\n // usually the reason it is disabled, and focus is how the keyboard opens it. It is\n // `aria-disabled` and read-only instead, and the pointer still can't focus it.\n const { isInert } = getDisabledElementProps({\n isDisabled: isInputDisabled,\n keepEvents: isTooltipActive,\n as: 'input',\n });\n\n let ownInputProps = mergeProps(inputProps, focusProps, hoverProps);\n\n if (isInert) {\n ownInputProps = mergeProps(\n getInertInputProps(\n mergeProps(\n // The field's own focus handlers never run on a natively disabled input, and\n // `useNumberField` commits on blur: it would round a value the user can't edit.\n { ...inputProps, onFocus: undefined, onBlur: undefined },\n focusProps,\n hoverProps,\n ),\n { excludeFromTabOrder: props.excludeFromTabOrder },\n ),\n { readOnly: true, onMouseDown: preventPointerFocus },\n );\n }\n\n // The field box takes the tooltip's hover side and positions it, so it\n // covers the prefix, suffix and steppers and never the text being typed. The\n // input, where keyboard focus lands, takes the focus side. The box keeps the\n // field's ref, which `wrapperRef` also reaches.\n const textField = renderWithTooltip((tooltipTriggerProps, tooltipRef) => {\n const { pointerProps, focusProps: tooltipFocusProps } =\n splitTooltipTriggerProps(tooltipTriggerProps);\n\n return (\n <InputWrapperElement\n ref={tooltipRef ? mergeRefs(domRef, tooltipRef) : domRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...mergeProps(wrapperProps, pointerProps, {\n onMouseDown: (event: MouseEvent<HTMLElement>) =>\n focusInputOnBoxPress(event, inputRef?.current),\n })}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeTooltipFocusProps(ownInputProps, tooltipFocusProps)}\n ref={inputRef}\n rows={multiLine ? (rows ?? inputProps.rows ?? 1) : inputProps.rows}\n mods={modifiers}\n // oxlint-disable-next-line tasty/no-style-prop -- `preset` owns font-family, and a `fontFamily` state map would replace the preset's in every state\n style={textSecurityStyles}\n {...(resolvedAutoFocus ? { 'data-autofocus': '' } : undefined)}\n autoFocus={resolvedAutoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={isInputDisabled && !isInert}\n maxLength={maxLength ?? inputProps.maxLength}\n minLength={minLength ?? inputProps.minLength}\n />\n {/* Inside the box, so a parent's `:last-child` rules still see the field: `NumberInput`'s hidden form value goes here. */}\n {children}\n {showValidationIndicator || suffix || actions ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n {isLoading && loadingIndicator ? (\n <div data-element=\"State\">{loadingIndicator}</div>\n ) : (\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n )}\n {suffixPosition === 'after' ? suffix : null}\n {actions}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n }, 'top');\n\n // `renderWithTooltip` is typed for any node; here it returns an element.\n // `tooltip` is the input's own, not the legacy spelling of `labelTooltip`.\n return wrapWithField(textField as ReactElement, {\n ...props,\n ...field,\n tooltip: undefined,\n // A click on its label doesn't focus a natively disabled input either. The input keeps its\n // name through `aria-labelledby`.\n ...(isInert\n ? {\n labelProps: {\n ...props.labelProps,\n htmlFor: undefined,\n for: undefined,\n },\n }\n : null),\n });\n}\n\nconst _TextInputBase = forwardRef(TextInputBase);\n\nexport { _TextInputBase as TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useEffect, useLayoutEffect, useRef } from "react";
|
|
4
4
|
//#region src/components/fields/TextInput/useAutoSizeTextArea.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoSizeTextArea.js","names":["RefObject","useEffect","useLayoutEffect","useRef","useEvent","MIRROR_TYPOGRAPHY_PROPS","const","FALLBACK_LINE_HEIGHT","createMirror","HTMLTextAreaElement","mirror","document","createElement","setAttribute","readOnly","rows","Object","assign","style","position","top","left","boxSizing","margin","padding","border","height","minHeight","maxHeight","overflow","resize","visibility","pointerEvents","getContentWidth","textarea","CSSStyleDeclaration","paddingLeft","parseFloat","paddingRight","borderLeft","borderLeftWidth","borderRight","borderRightWidth","scrollbar","Math","max","round","offsetWidth","clientWidth","getBoundingClientRect","width","getLineHeight","parsed","lineHeight","Number","isFinite","previousValue","value","measured","scrollHeight","AutoSizeTextAreaOptions","inputRef","autoSize","maxRows","useAutoSizeTextArea","mirrorRef","adjustHeight","current","body","appendChild","getComputedStyle","contentWidth","prop","contentRows","targetRows","min","paddingTop","paddingBottom","borderTop","borderTopWidth","borderBottom","borderBottomWidth","box","nextHeight","useEnvironmentalEffect","window","resizeObserver","ResizeObserver","observe","disconnect","remove"],"sources":["../../../../src/components/fields/TextInput/useAutoSizeTextArea.ts"],"sourcesContent":["import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/index';\n\n/**\n * Computed properties that decide where text wraps and how tall a line box is.\n * Copied onto the mirror so it wraps exactly like the live textarea.\n */\nconst MIRROR_TYPOGRAPHY_PROPS = [\n 'direction',\n 'fontFamily',\n 'fontFeatureSettings',\n 'fontKerning',\n 'fontSize',\n 'fontStretch',\n 'fontStyle',\n 'fontVariant',\n 'fontVariationSettings',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'overflowWrap',\n 'tabSize',\n 'textIndent',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n 'wordSpacing',\n] as const;\n\nconst FALLBACK_LINE_HEIGHT = 20;\n\n/**\n * An off-screen textarea used to measure how tall the content wants to be.\n *\n * It carries no padding and no border, and its width is set to the live\n * element's *content* width, so `scrollHeight` is the content height and\n * nothing else. `height: 0` is what makes shrinking measurable: a textarea's\n * `scrollHeight` never drops below its own client height, so measuring the live\n * element can only ever report \"at least what it already is\".\n */\nfunction createMirror(): HTMLTextAreaElement {\n const mirror = document.createElement('textarea');\n\n mirror.setAttribute('aria-hidden', 'true');\n mirror.setAttribute('tabindex', '-1');\n mirror.readOnly = true;\n mirror.rows = 1;\n\n Object.assign(mirror.style, {\n position: 'absolute',\n top: '0',\n left: '-9999px',\n boxSizing: 'content-box',\n margin: '0',\n padding: '0',\n border: '0',\n height: '0',\n minHeight: '0',\n maxHeight: 'none',\n overflow: 'hidden',\n resize: 'none',\n visibility: 'hidden',\n pointerEvents: 'none',\n });\n\n return mirror;\n}\n\n/** The width the text actually has to wrap in, scrollbar and padding removed. */\nfunction getContentWidth(\n textarea: HTMLTextAreaElement,\n style: CSSStyleDeclaration,\n): number {\n const paddingLeft = parseFloat(style.paddingLeft) || 0;\n const paddingRight = parseFloat(style.paddingRight) || 0;\n const borderLeft = parseFloat(style.borderLeftWidth) || 0;\n const borderRight = parseFloat(style.borderRightWidth) || 0;\n // A classic (space-taking) scrollbar narrows the text; overlay scrollbars\n // report 0 here.\n const scrollbar = Math.max(\n 0,\n Math.round(\n textarea.offsetWidth - textarea.clientWidth - borderLeft - borderRight,\n ),\n );\n\n return Math.max(\n 0,\n textarea.getBoundingClientRect().width -\n borderLeft -\n borderRight -\n scrollbar -\n paddingLeft -\n paddingRight,\n );\n}\n\n/** `line-height: normal` has no px value to read, so measure one line instead. */\nfunction getLineHeight(\n style: CSSStyleDeclaration,\n mirror: HTMLTextAreaElement,\n): number {\n const parsed = parseFloat(style.lineHeight);\n\n if (Number.isFinite(parsed) && parsed > 0) return parsed;\n\n const previousValue = mirror.value;\n\n mirror.value = 'x';\n\n const measured = mirror.scrollHeight;\n\n mirror.value = previousValue;\n\n return measured > 0 ? measured : FALLBACK_LINE_HEIGHT;\n}\n\nexport interface AutoSizeTextAreaOptions {\n inputRef: RefObject<HTMLTextAreaElement | null>;\n /** Whether the textarea resizes to fit its content. */\n autoSize: boolean;\n /** Minimum number of visible rows. */\n rows: number;\n /** Maximum number of visible rows. */\n maxRows: number;\n /** The rendered value. A change re-measures, so buffered drafts count too. */\n value: unknown;\n}\n\n/**\n * Keeps an `autoSize` textarea's height in step with its content, and returns\n * the `adjustHeight` callback so a change handler can resize in the same tick\n * as the keystroke.\n *\n * The height is derived from an off-screen mirror rather than from the live\n * element. Measuring the live element — `height: auto`, read `scrollHeight`,\n * restore — re-lays out every ancestor mid-keystroke: in a chat-style column\n * the input box collapses to one row and the scroll viewport grows by the\n * difference, and the browser's scroll anchoring has to undo that. It does so\n * imperfectly, which is visible as the whole conversation bouncing by a pixel\n * on every keystroke (CUB-4042). Measuring off-screen touches no ancestor, so\n * there is nothing to undo.\n */\nexport function useAutoSizeTextArea({\n inputRef,\n autoSize,\n rows,\n maxRows,\n value,\n}: AutoSizeTextAreaOptions) {\n const mirrorRef = useRef<HTMLTextAreaElement | null>(null);\n\n const adjustHeight = useEvent(() => {\n const textarea = inputRef.current;\n\n if (!textarea || !autoSize) return;\n\n let mirror = mirrorRef.current;\n\n if (!mirror) {\n mirror = createMirror();\n mirrorRef.current = mirror;\n document.body.appendChild(mirror);\n }\n\n const style = getComputedStyle(textarea);\n const contentWidth = getContentWidth(textarea, style);\n\n // Nothing to wrap into: the field is display:none, or has not been laid out\n // yet. Measuring at zero width would wrap every character onto its own line\n // and pin the height at `maxRows`; keep the current height instead and wait\n // for the ResizeObserver to report a real one.\n if (contentWidth === 0) return;\n\n for (const prop of MIRROR_TYPOGRAPHY_PROPS) {\n mirror.style[prop] = style[prop];\n }\n\n mirror.style.width = `${contentWidth}px`;\n mirror.value = textarea.value;\n\n const lineHeight = getLineHeight(style, mirror);\n // A textarea lays every line out at `line-height`, so the content height is\n // a whole number of lines — `round` keeps a fractional line height (a zoomed\n // page, a percentage preset) from adding a phantom row.\n const contentRows = Math.max(\n 1,\n Math.round(mirror.scrollHeight / lineHeight),\n );\n const targetRows = Math.max(Math.min(contentRows, maxRows), rows);\n\n const paddingTop = parseFloat(style.paddingTop) || 0;\n const paddingBottom = parseFloat(style.paddingBottom) || 0;\n const borderTop = parseFloat(style.borderTopWidth) || 0;\n const borderBottom = parseFloat(style.borderBottomWidth) || 0;\n // `height` covers padding and border under `border-box` only.\n const box =\n style.boxSizing === 'border-box'\n ? paddingTop + paddingBottom + borderTop + borderBottom\n : 0;\n\n const nextHeight = `${targetRows * lineHeight + box}px`;\n\n // Writing an unchanged height would wake the ResizeObserver below for\n // nothing.\n if (textarea.style.height !== nextHeight) {\n textarea.style.height = nextHeight;\n }\n });\n\n const useEnvironmentalEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n // Re-measure on element resize as that can affect wrapping.\n useEnvironmentalEffect(() => {\n if (!autoSize || !inputRef.current) return;\n\n adjustHeight();\n\n const resizeObserver = new ResizeObserver(adjustHeight);\n\n resizeObserver.observe(inputRef.current);\n\n return () => resizeObserver.disconnect();\n }, [autoSize, inputRef.current]);\n\n // Adjust when the value changes programmatically (controlled mode).\n useEnvironmentalEffect(() => {\n if (autoSize && inputRef.current) {\n adjustHeight();\n }\n }, [value]);\n\n useEffect(\n () => () => {\n mirrorRef.current?.remove();\n mirrorRef.current = null;\n },\n [],\n );\n\n return adjustHeight;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAutoSizeTextArea.js","names":["RefObject","useEffect","useLayoutEffect","useRef","useEvent","MIRROR_TYPOGRAPHY_PROPS","const","FALLBACK_LINE_HEIGHT","createMirror","HTMLTextAreaElement","mirror","document","createElement","setAttribute","readOnly","rows","Object","assign","style","position","top","left","boxSizing","margin","padding","border","height","minHeight","maxHeight","overflow","resize","visibility","pointerEvents","getContentWidth","textarea","CSSStyleDeclaration","paddingLeft","parseFloat","paddingRight","borderLeft","borderLeftWidth","borderRight","borderRightWidth","scrollbar","Math","max","round","offsetWidth","clientWidth","getBoundingClientRect","width","getLineHeight","parsed","lineHeight","Number","isFinite","previousValue","value","measured","scrollHeight","AutoSizeTextAreaOptions","inputRef","autoSize","maxRows","useAutoSizeTextArea","mirrorRef","adjustHeight","current","body","appendChild","getComputedStyle","contentWidth","prop","contentRows","targetRows","min","paddingTop","paddingBottom","borderTop","borderTopWidth","borderBottom","borderBottomWidth","box","nextHeight","useEnvironmentalEffect","window","resizeObserver","ResizeObserver","observe","disconnect","remove"],"sources":["../../../../src/components/fields/TextInput/useAutoSizeTextArea.ts"],"sourcesContent":["import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\n\n/**\n * Computed properties that decide where text wraps and how tall a line box is.\n * Copied onto the mirror so it wraps exactly like the live textarea.\n */\nconst MIRROR_TYPOGRAPHY_PROPS = [\n 'direction',\n 'fontFamily',\n 'fontFeatureSettings',\n 'fontKerning',\n 'fontSize',\n 'fontStretch',\n 'fontStyle',\n 'fontVariant',\n 'fontVariationSettings',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'overflowWrap',\n 'tabSize',\n 'textIndent',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n 'wordSpacing',\n] as const;\n\nconst FALLBACK_LINE_HEIGHT = 20;\n\n/**\n * An off-screen textarea used to measure how tall the content wants to be.\n *\n * It carries no padding and no border, and its width is set to the live\n * element's *content* width, so `scrollHeight` is the content height and\n * nothing else. `height: 0` is what makes shrinking measurable: a textarea's\n * `scrollHeight` never drops below its own client height, so measuring the live\n * element can only ever report \"at least what it already is\".\n */\nfunction createMirror(): HTMLTextAreaElement {\n const mirror = document.createElement('textarea');\n\n mirror.setAttribute('aria-hidden', 'true');\n mirror.setAttribute('tabindex', '-1');\n mirror.readOnly = true;\n mirror.rows = 1;\n\n Object.assign(mirror.style, {\n position: 'absolute',\n top: '0',\n left: '-9999px',\n boxSizing: 'content-box',\n margin: '0',\n padding: '0',\n border: '0',\n height: '0',\n minHeight: '0',\n maxHeight: 'none',\n overflow: 'hidden',\n resize: 'none',\n visibility: 'hidden',\n pointerEvents: 'none',\n });\n\n return mirror;\n}\n\n/** The width the text actually has to wrap in, scrollbar and padding removed. */\nfunction getContentWidth(\n textarea: HTMLTextAreaElement,\n style: CSSStyleDeclaration,\n): number {\n const paddingLeft = parseFloat(style.paddingLeft) || 0;\n const paddingRight = parseFloat(style.paddingRight) || 0;\n const borderLeft = parseFloat(style.borderLeftWidth) || 0;\n const borderRight = parseFloat(style.borderRightWidth) || 0;\n // A classic (space-taking) scrollbar narrows the text; overlay scrollbars\n // report 0 here.\n const scrollbar = Math.max(\n 0,\n Math.round(\n textarea.offsetWidth - textarea.clientWidth - borderLeft - borderRight,\n ),\n );\n\n return Math.max(\n 0,\n textarea.getBoundingClientRect().width -\n borderLeft -\n borderRight -\n scrollbar -\n paddingLeft -\n paddingRight,\n );\n}\n\n/** `line-height: normal` has no px value to read, so measure one line instead. */\nfunction getLineHeight(\n style: CSSStyleDeclaration,\n mirror: HTMLTextAreaElement,\n): number {\n const parsed = parseFloat(style.lineHeight);\n\n if (Number.isFinite(parsed) && parsed > 0) return parsed;\n\n const previousValue = mirror.value;\n\n mirror.value = 'x';\n\n const measured = mirror.scrollHeight;\n\n mirror.value = previousValue;\n\n return measured > 0 ? measured : FALLBACK_LINE_HEIGHT;\n}\n\nexport interface AutoSizeTextAreaOptions {\n inputRef: RefObject<HTMLTextAreaElement | null>;\n /** Whether the textarea resizes to fit its content. */\n autoSize: boolean;\n /** Minimum number of visible rows. */\n rows: number;\n /** Maximum number of visible rows. */\n maxRows: number;\n /** The rendered value. A change re-measures, so buffered drafts count too. */\n value: unknown;\n}\n\n/**\n * Keeps an `autoSize` textarea's height in step with its content, and returns\n * the `adjustHeight` callback so a change handler can resize in the same tick\n * as the keystroke.\n *\n * The height is derived from an off-screen mirror rather than from the live\n * element. Measuring the live element — `height: auto`, read `scrollHeight`,\n * restore — re-lays out every ancestor mid-keystroke: in a chat-style column\n * the input box collapses to one row and the scroll viewport grows by the\n * difference, and the browser's scroll anchoring has to undo that. It does so\n * imperfectly, which is visible as the whole conversation bouncing by a pixel\n * on every keystroke (CUB-4042). Measuring off-screen touches no ancestor, so\n * there is nothing to undo.\n */\nexport function useAutoSizeTextArea({\n inputRef,\n autoSize,\n rows,\n maxRows,\n value,\n}: AutoSizeTextAreaOptions) {\n const mirrorRef = useRef<HTMLTextAreaElement | null>(null);\n\n const adjustHeight = useEvent(() => {\n const textarea = inputRef.current;\n\n if (!textarea || !autoSize) return;\n\n let mirror = mirrorRef.current;\n\n if (!mirror) {\n mirror = createMirror();\n mirrorRef.current = mirror;\n document.body.appendChild(mirror);\n }\n\n const style = getComputedStyle(textarea);\n const contentWidth = getContentWidth(textarea, style);\n\n // Nothing to wrap into: the field is display:none, or has not been laid out\n // yet. Measuring at zero width would wrap every character onto its own line\n // and pin the height at `maxRows`; keep the current height instead and wait\n // for the ResizeObserver to report a real one.\n if (contentWidth === 0) return;\n\n for (const prop of MIRROR_TYPOGRAPHY_PROPS) {\n mirror.style[prop] = style[prop];\n }\n\n mirror.style.width = `${contentWidth}px`;\n mirror.value = textarea.value;\n\n const lineHeight = getLineHeight(style, mirror);\n // A textarea lays every line out at `line-height`, so the content height is\n // a whole number of lines — `round` keeps a fractional line height (a zoomed\n // page, a percentage preset) from adding a phantom row.\n const contentRows = Math.max(\n 1,\n Math.round(mirror.scrollHeight / lineHeight),\n );\n const targetRows = Math.max(Math.min(contentRows, maxRows), rows);\n\n const paddingTop = parseFloat(style.paddingTop) || 0;\n const paddingBottom = parseFloat(style.paddingBottom) || 0;\n const borderTop = parseFloat(style.borderTopWidth) || 0;\n const borderBottom = parseFloat(style.borderBottomWidth) || 0;\n // `height` covers padding and border under `border-box` only.\n const box =\n style.boxSizing === 'border-box'\n ? paddingTop + paddingBottom + borderTop + borderBottom\n : 0;\n\n const nextHeight = `${targetRows * lineHeight + box}px`;\n\n // Writing an unchanged height would wake the ResizeObserver below for\n // nothing.\n if (textarea.style.height !== nextHeight) {\n textarea.style.height = nextHeight;\n }\n });\n\n const useEnvironmentalEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n // Re-measure on element resize as that can affect wrapping.\n useEnvironmentalEffect(() => {\n if (!autoSize || !inputRef.current) return;\n\n adjustHeight();\n\n const resizeObserver = new ResizeObserver(adjustHeight);\n\n resizeObserver.observe(inputRef.current);\n\n return () => resizeObserver.disconnect();\n }, [autoSize, inputRef.current]);\n\n // Adjust when the value changes programmatically (controlled mode).\n useEnvironmentalEffect(() => {\n if (autoSize && inputRef.current) {\n adjustHeight();\n }\n }, [value]);\n\n useEffect(\n () => () => {\n mirrorRef.current?.remove();\n mirrorRef.current = null;\n },\n [],\n );\n\n return adjustHeight;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
import { FieldBaseProps } from "../../../shared/form.js";
|
|
3
|
-
import "../../../shared/index.js";
|
|
4
3
|
import { ComponentType } from "react";
|
|
5
4
|
//#region src/components/fields/TextInputMapper/TextInputMapper.d.ts
|
|
6
5
|
export interface CubeTextInputMapperProps extends FieldBaseProps<Record<string, string> | null | undefined> {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { Block } from "../../Block.js";
|
|
5
5
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
6
6
|
import { Space } from "../../layout/Space.js";
|
|
7
|
-
import { Button } from "../../actions/
|
|
7
|
+
import { Button } from "../../actions/Button/Button.js";
|
|
8
8
|
import { Grid } from "../../layout/Grid.js";
|
|
9
9
|
import { Flow } from "../../layout/Flow.js";
|
|
10
10
|
import { CloseIcon } from "../../../icons/CloseIcon.js";
|
|
11
|
-
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
12
11
|
import { wrapWithField } from "../../form/wrapper.js";
|
|
12
|
+
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
13
13
|
import { PasswordInput as _PasswordInput } from "../PasswordInput/PasswordInput.js";
|
|
14
14
|
import { TextArea as _TextArea } from "../TextArea/TextArea.js";
|
|
15
15
|
import { TextInput } from "../TextInput/TextInput.js";
|