@cube-dev/ui-kit 0.0.0-canary-8e09ade → 0.0.0-canary-a5508da
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/README.md +1 -1
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +213 -17
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/index.d.ts +0 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.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/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/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/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/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 +1 -2
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/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/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.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/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.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/package.json +6 -19
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +0 -93
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +0 -370
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +0 -1
- package/dist/components/fields/CommandTextArea/index.d.ts +0 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -5
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +0 -139
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +0 -1
- package/dist/components/fields/ListBoxPopover/index.d.ts +0 -4
- package/dist/components/fields/ListBoxPopover/listNavigation.d.ts +0 -24
- package/dist/components/fields/ListBoxPopover/listNavigation.js +0 -78
- package/dist/components/fields/ListBoxPopover/listNavigation.js.map +0 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +0 -53
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +0 -1
- package/docs/components/fields/CommandTextArea.md +0 -130
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-8e09ade | Cube Dev Team */
|
|
2
|
-
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
|
-
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
4
|
-
import { Portal } from "../../portal/Portal.js";
|
|
5
|
-
import { ListBox } from "../ListBox/ListBox.js";
|
|
6
|
-
import { tasty } from "@tenphi/tasty";
|
|
7
|
-
import React from "react";
|
|
8
|
-
import { jsx } from "react/jsx-runtime";
|
|
9
|
-
import { useOverlay, useOverlayPosition } from "react-aria";
|
|
10
|
-
|
|
11
|
-
//#region src/components/fields/ListBoxPopover/ListBoxPopover.tsx
|
|
12
|
-
const ListBoxPopoverWrapper = tasty({
|
|
13
|
-
qa: "ComboBoxOverlayWrapper",
|
|
14
|
-
styles: {
|
|
15
|
-
position: "absolute",
|
|
16
|
-
zIndex: 1e3
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const ListBoxPopoverElement = tasty({
|
|
20
|
-
qa: "ComboBoxOverlay",
|
|
21
|
-
styles: {
|
|
22
|
-
display: "grid",
|
|
23
|
-
gridRows: "1sf",
|
|
24
|
-
gridColumns: "1sf",
|
|
25
|
-
width: "$overlay-min-width max-content 50vw",
|
|
26
|
-
height: "initial max-content (50vh - 5x)",
|
|
27
|
-
overflow: "auto",
|
|
28
|
-
fill: "#surface",
|
|
29
|
-
radius: "1cr",
|
|
30
|
-
shadow: true,
|
|
31
|
-
padding: "0",
|
|
32
|
-
border: "#border",
|
|
33
|
-
hide: {
|
|
34
|
-
"": false,
|
|
35
|
-
hidden: true
|
|
36
|
-
},
|
|
37
|
-
boxSizing: "border-box",
|
|
38
|
-
transition: "translate $transition ease-out, scale $transition ease-out, theme $transition ease-out",
|
|
39
|
-
translate: {
|
|
40
|
-
"": "0 0",
|
|
41
|
-
"open & [data-placement=\"top\"]": "0 0",
|
|
42
|
-
"!open & [data-placement=\"top\"]": "0 1x",
|
|
43
|
-
"open & ([data-placement=\"bottom\"] | ![data-placement])": "0 0",
|
|
44
|
-
"!open & ([data-placement=\"bottom\"] | ![data-placement])": "0 -1x"
|
|
45
|
-
},
|
|
46
|
-
transformOrigin: {
|
|
47
|
-
"": "top center",
|
|
48
|
-
"[data-placement=\"top\"]": "bottom center"
|
|
49
|
-
},
|
|
50
|
-
scale: {
|
|
51
|
-
"": "1 1",
|
|
52
|
-
"!open": "1 .9"
|
|
53
|
-
},
|
|
54
|
-
opacity: {
|
|
55
|
-
"": 1,
|
|
56
|
-
"!open": .001
|
|
57
|
-
},
|
|
58
|
-
"$overlay-min-width": "min 30x"
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
const ListBoxPopover = function ListBoxPopover(props) {
|
|
62
|
-
const { isOpen, triggerRef, popoverRef, listBoxRef, direction, shouldFlip, overlayOffset, containerPadding, comboBoxWidth, listBoxId, overlayStyles, listBoxStyles, optionStyles, sectionStyles, headingStyles, selectedKey, isDisabled, disabledKeys, items, children, listStateRef, onSelectionChange, onClose, label, ariaLabel, compositeFocusProps, filter, size = "medium" } = props;
|
|
63
|
-
const mergedPopoverRef = popoverRef;
|
|
64
|
-
const { overlayProps: overlayPositionProps, placement } = useOverlayPosition({
|
|
65
|
-
targetRef: triggerRef,
|
|
66
|
-
overlayRef: mergedPopoverRef,
|
|
67
|
-
placement: `${direction} start`,
|
|
68
|
-
shouldFlip,
|
|
69
|
-
isOpen,
|
|
70
|
-
offset: overlayOffset,
|
|
71
|
-
containerPadding
|
|
72
|
-
});
|
|
73
|
-
const { overlayProps: overlayBehaviorProps } = useOverlay({
|
|
74
|
-
onClose,
|
|
75
|
-
shouldCloseOnBlur: true,
|
|
76
|
-
isOpen,
|
|
77
|
-
isDismissable: true,
|
|
78
|
-
shouldCloseOnInteractOutside: (el) => {
|
|
79
|
-
const menuTriggerEl = el.closest("[data-popover-trigger]");
|
|
80
|
-
if (!menuTriggerEl) {
|
|
81
|
-
if (el.closest("[data-popover-keep]")) return false;
|
|
82
|
-
if (el.closest("[data-popover-dismiss]")) {
|
|
83
|
-
setTimeout(onClose, 0);
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
if (menuTriggerEl === triggerRef?.current) return true;
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
}, mergedPopoverRef);
|
|
92
|
-
const placementDirection = placement?.split(" ")[0] || direction;
|
|
93
|
-
return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(DisplayTransition, {
|
|
94
|
-
isShown: isOpen,
|
|
95
|
-
children: ({ phase, isShown, ref: transitionRef }) => /* @__PURE__ */ jsx(ListBoxPopoverWrapper, {
|
|
96
|
-
...mergeProps$1(overlayPositionProps, overlayBehaviorProps, compositeFocusProps),
|
|
97
|
-
ref: mergedPopoverRef,
|
|
98
|
-
style: overlayPositionProps.style,
|
|
99
|
-
children: /* @__PURE__ */ jsx(ListBoxPopoverElement, {
|
|
100
|
-
ref: transitionRef,
|
|
101
|
-
"data-placement": placementDirection,
|
|
102
|
-
"data-phase": phase,
|
|
103
|
-
mods: {
|
|
104
|
-
open: isShown,
|
|
105
|
-
hidden: phase === "unmounted"
|
|
106
|
-
},
|
|
107
|
-
styles: overlayStyles,
|
|
108
|
-
style: { "--overlay-min-width": comboBoxWidth ? `${comboBoxWidth}px` : void 0 },
|
|
109
|
-
children: /* @__PURE__ */ jsx(ListBox, {
|
|
110
|
-
ref: listBoxRef,
|
|
111
|
-
focusOnHover: true,
|
|
112
|
-
disableSelectionToggle: true,
|
|
113
|
-
id: listBoxId,
|
|
114
|
-
"aria-label": ariaLabel || (typeof label === "string" ? label : "Options"),
|
|
115
|
-
selectedKey,
|
|
116
|
-
selectionMode: "single",
|
|
117
|
-
isDisabled,
|
|
118
|
-
disabledKeys,
|
|
119
|
-
shouldUseVirtualFocus: true,
|
|
120
|
-
items,
|
|
121
|
-
filter,
|
|
122
|
-
styles: listBoxStyles,
|
|
123
|
-
optionStyles,
|
|
124
|
-
sectionStyles,
|
|
125
|
-
headingStyles,
|
|
126
|
-
stateRef: listStateRef,
|
|
127
|
-
size: "medium",
|
|
128
|
-
shape: "popover",
|
|
129
|
-
onSelectionChange,
|
|
130
|
-
children
|
|
131
|
-
})
|
|
132
|
-
})
|
|
133
|
-
})
|
|
134
|
-
}) });
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
//#endregion
|
|
138
|
-
export { ListBoxPopover };
|
|
139
|
-
//# sourceMappingURL=ListBoxPopover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListBoxPopover.js","names":["mergeProps"],"sources":["../../../../src/components/fields/ListBoxPopover/ListBoxPopover.tsx"],"sourcesContent":["import { Key } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport React, { ReactNode, RefObject } from 'react';\nimport { useOverlay, useOverlayPosition } from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\nimport { DisplayTransition } from '../../helpers';\nimport { Portal } from '../../portal';\nimport { ListBox } from '../ListBox/ListBox';\n\nexport interface ListBoxPopoverProps {\n isOpen: boolean;\n triggerRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLDivElement>;\n listBoxRef: RefObject<HTMLDivElement>;\n direction: 'bottom' | 'top';\n shouldFlip: boolean;\n overlayOffset: number;\n containerPadding: number;\n /** Min width (px) for the overlay; usually the trigger's width. */\n comboBoxWidth?: number;\n /** Stable id used for the ListBox element and aria-controls wiring. */\n listBoxId: string;\n overlayStyles?: Styles;\n listBoxStyles?: Styles;\n optionStyles?: Styles;\n sectionStyles?: Styles;\n headingStyles?: Styles;\n selectedKey?: Key | null;\n isDisabled?: boolean;\n disabledKeys?: Iterable<Key>;\n items?: Iterable<any>;\n children: ReactNode;\n /** Ref through which the ListBox exposes its internal list state. */\n listStateRef: RefObject<any>;\n onSelectionChange: (selection: Key | Key[] | null) => void;\n onClose: () => void;\n label?: ReactNode;\n ariaLabel?: string;\n compositeFocusProps: {\n onFocus: (e: React.FocusEvent) => void;\n onBlur: (e: React.FocusEvent) => void;\n };\n /** Collection node filter applied to the ListBox. */\n filter?: (nodes: Iterable<any>) => Iterable<any>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n}\n\nconst ListBoxPopoverWrapper = tasty({\n qa: 'ComboBoxOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst ListBoxPopoverElement = tasty({\n qa: 'ComboBoxOverlay',\n styles: {\n display: 'grid',\n gridRows: '1sf',\n gridColumns: '1sf',\n width: '$overlay-min-width max-content 50vw',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '0',\n border: '#border',\n hide: {\n '': false,\n hidden: true,\n },\n boxSizing: 'border-box',\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & ([data-placement=\"bottom\"] | ![data-placement])': '0 0',\n '!open & ([data-placement=\"bottom\"] | ![data-placement])': '0 -1x',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .9',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n\n '$overlay-min-width': 'min 30x',\n },\n});\n\nexport const ListBoxPopover = function ListBoxPopover(\n props: ListBoxPopoverProps,\n) {\n const {\n isOpen,\n triggerRef,\n popoverRef,\n listBoxRef,\n direction,\n shouldFlip,\n overlayOffset,\n containerPadding,\n comboBoxWidth,\n listBoxId,\n overlayStyles,\n listBoxStyles,\n optionStyles,\n sectionStyles,\n headingStyles,\n selectedKey,\n isDisabled,\n disabledKeys,\n items,\n children,\n listStateRef,\n onSelectionChange,\n onClose,\n label,\n ariaLabel,\n compositeFocusProps,\n filter,\n size = 'medium',\n } = props;\n\n const mergedPopoverRef = popoverRef;\n\n // Overlay positioning\n const { overlayProps: overlayPositionProps, placement } = useOverlayPosition({\n targetRef: triggerRef as any,\n overlayRef: mergedPopoverRef as any,\n placement: `${direction} start` as any,\n shouldFlip,\n isOpen,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n // Overlay behavior (dismiss on outside click, escape)\n const { overlayProps: overlayBehaviorProps } = useOverlay(\n {\n onClose,\n shouldCloseOnBlur: true,\n isOpen,\n isDismissable: true,\n shouldCloseOnInteractOutside: (el) => {\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss` to dismiss us without losing their click\n // to useOverlay's stopPropagation. Schedule the close after the\n // click finishes so the button's onPress runs first.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(onClose, 0);\n return false;\n }\n return true;\n }\n if (menuTriggerEl === triggerRef?.current) return true;\n return false;\n },\n },\n mergedPopoverRef as any,\n );\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || direction;\n\n const overlayContent = (\n <DisplayTransition isShown={isOpen}>\n {({ phase, isShown, ref: transitionRef }) => (\n <ListBoxPopoverWrapper\n {...mergeProps(\n overlayPositionProps,\n overlayBehaviorProps,\n compositeFocusProps,\n )}\n ref={mergedPopoverRef}\n style={overlayPositionProps.style}\n >\n <ListBoxPopoverElement\n ref={transitionRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n hidden: phase === 'unmounted',\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': comboBoxWidth\n ? `${comboBoxWidth}px`\n : undefined,\n }}\n >\n <ListBox\n ref={listBoxRef}\n focusOnHover\n disableSelectionToggle\n id={listBoxId}\n aria-label={\n ariaLabel || (typeof label === 'string' ? label : 'Options')\n }\n selectedKey={selectedKey}\n selectionMode=\"single\"\n isDisabled={isDisabled}\n disabledKeys={disabledKeys}\n shouldUseVirtualFocus={true}\n items={items as any}\n filter={filter}\n styles={listBoxStyles}\n optionStyles={optionStyles}\n sectionStyles={sectionStyles}\n headingStyles={headingStyles}\n stateRef={listStateRef}\n size=\"medium\"\n shape=\"popover\"\n onSelectionChange={onSelectionChange}\n >\n {children as any}\n </ListBox>\n </ListBoxPopoverElement>\n </ListBoxPopoverWrapper>\n )}\n </DisplayTransition>\n );\n\n return <Portal>{overlayContent}</Portal>;\n};\n"],"mappings":";;;;;;;;;;;AAgDA,MAAM,wBAAwB,MAAM;CAClC,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,wBAAwB,MAAM;CAClC,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,UAAU;EACV,aAAa;EACb,OAAO;EACP,QAAQ;EACR,UAAU;EACV,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,MAAM;GACJ,IAAI;GACJ,QAAQ;GACT;EACD,WAAW;EACX,YACE;EACF,WAAW;GACT,IAAI;GACJ,mCAAiC;GACjC,oCAAkC;GAClC,4DAA0D;GAC1D,6DAA2D;GAC5D;EACD,iBAAiB;GACf,IAAI;GACJ,4BAA0B;GAC3B;EACD,OAAO;GACL,IAAI;GACJ,SAAS;GACV;EACD,SAAS;GACP,IAAI;GACJ,SAAS;GACV;EAED,sBAAsB;EACvB;CACF,CAAC;AAEF,MAAa,iBAAiB,SAAS,eACrC,OACA;CACA,MAAM,EACJ,QACA,YACA,YACA,YACA,WACA,YACA,eACA,kBACA,eACA,WACA,eACA,eACA,cACA,eACA,eACA,aACA,YACA,cACA,OACA,UACA,cACA,mBACA,SACA,OACA,WACA,qBACA,QACA,OAAO,aACL;CAEJ,MAAM,mBAAmB;CAGzB,MAAM,EAAE,cAAc,sBAAsB,cAAc,mBAAmB;EAC3E,WAAW;EACX,YAAY;EACZ,WAAW,GAAG,UAAU;EACxB;EACA;EACA,QAAQ;EACU;EACnB,CAAC;CAGF,MAAM,EAAE,cAAc,yBAAyB,WAC7C;EACE;EACA,mBAAmB;EACnB;EACA,eAAe;EACf,+BAA+B,OAAO;GACpC,MAAM,gBAAgB,GAAG,QAAQ,yBAAyB;AAC1D,OAAI,CAAC,eAAe;AAClB,QAAI,GAAG,QAAQ,sBAAsB,CAAE,QAAO;AAK9C,QAAI,GAAG,QAAQ,yBAAyB,EAAE;AACxC,gBAAW,SAAS,EAAE;AACtB,YAAO;;AAET,WAAO;;AAET,OAAI,kBAAkB,YAAY,QAAS,QAAO;AAClD,UAAO;;EAEV,EACD,iBACD;CAGD,MAAM,qBAAqB,WAAW,MAAM,IAAI,CAAC,MAAM;AA6DvD,QAAO,oBAAC,oBA1DN,oBAAC;EAAkB,SAAS;aACxB,EAAE,OAAO,SAAS,KAAK,oBACvB,oBAAC;GACC,GAAIA,aACF,sBACA,sBACA,oBACD;GACD,KAAK;GACL,OAAO,qBAAqB;aAE5B,oBAAC;IACC,KAAK;IACL,kBAAgB;IAChB,cAAY;IACZ,MAAM;KACJ,MAAM;KACN,QAAQ,UAAU;KACnB;IACD,QAAQ;IACR,OAAO,EACL,uBAAuB,gBACnB,GAAG,cAAc,MACjB,QACL;cAED,oBAAC;KACC,KAAK;KACL;KACA;KACA,IAAI;KACJ,cACE,cAAc,OAAO,UAAU,WAAW,QAAQ;KAEvC;KACb,eAAc;KACF;KACE;KACd,uBAAuB;KAChB;KACC;KACR,QAAQ;KACM;KACC;KACA;KACf,UAAU;KACV,MAAK;KACL,OAAM;KACa;KAElB;MACO;KACY;IACF;GAER,GAGkB"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { Key } from "@react-types/shared";
|
|
3
|
-
|
|
4
|
-
//#region src/components/fields/ListBoxPopover/listNavigation.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Minimal view of a React Stately list state. Kept structural (no imports from
|
|
7
|
-
* `react-stately`) so the helpers can be used from any collection-backed
|
|
8
|
-
* component without dragging extra types in.
|
|
9
|
-
*/
|
|
10
|
-
interface ListStateLike {
|
|
11
|
-
selectionManager: {
|
|
12
|
-
focusedKey: Key | null;
|
|
13
|
-
setFocusedKey: (key: Key | null) => void;
|
|
14
|
-
};
|
|
15
|
-
collection: Iterable<any>;
|
|
16
|
-
disabledKeys?: Set<Key>;
|
|
17
|
-
lastFocusSourceRef?: {
|
|
18
|
-
current: 'keyboard' | 'mouse' | 'other';
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
type TextFilterFn = (textValue: string, inputValue: string) => boolean;
|
|
22
|
-
//#endregion
|
|
23
|
-
export { ListStateLike, TextFilterFn };
|
|
24
|
-
//# sourceMappingURL=listNavigation.d.ts.map
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-8e09ade | Cube Dev Team */
|
|
2
|
-
//#region src/components/fields/ListBoxPopover/listNavigation.ts
|
|
3
|
-
/**
|
|
4
|
-
* Walks a collection (possibly nested under sections) and collects the keys of
|
|
5
|
-
* selectable items, skipping disabled ones. Mirrors the inline walker that
|
|
6
|
-
* used to live in `useComboBoxKeyboard`.
|
|
7
|
-
*/
|
|
8
|
-
function collectVisibleKeys(nodes, out, disabledKeys) {
|
|
9
|
-
for (const node of nodes) if (node.type === "item") {
|
|
10
|
-
if (!disabledKeys?.has(node.key)) out.push(node.key);
|
|
11
|
-
} else if (node.childNodes) collectVisibleKeys(node.childNodes, out, disabledKeys);
|
|
12
|
-
}
|
|
13
|
-
/** Convenience: returns the flat list of selectable keys for a list state. */
|
|
14
|
-
function getVisibleKeys(listState) {
|
|
15
|
-
const keys = [];
|
|
16
|
-
collectVisibleKeys(listState.collection, keys, listState.disabledKeys);
|
|
17
|
-
return keys;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Computes the next key to focus when navigating with ArrowUp/ArrowDown.
|
|
21
|
-
*
|
|
22
|
-
* - If `fromKey` is omitted, reads `selectionManager.focusedKey`.
|
|
23
|
-
* - When nothing is focused (or the focused key is no longer visible), falls
|
|
24
|
-
* back to the first/last visible key depending on `direction`.
|
|
25
|
-
* - When the current key is the boundary, either returns `null` (default) or
|
|
26
|
-
* wraps to the opposite edge when `opts.wrap` is true.
|
|
27
|
-
*/
|
|
28
|
-
function getNextVisibleKey(listState, direction, opts) {
|
|
29
|
-
const visibleKeys = getVisibleKeys(listState);
|
|
30
|
-
if (visibleKeys.length === 0) return null;
|
|
31
|
-
const isForward = direction === 1;
|
|
32
|
-
const currentKey = opts?.fromKey ?? listState.selectionManager.focusedKey;
|
|
33
|
-
if (currentKey == null) return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];
|
|
34
|
-
const currentIndex = visibleKeys.indexOf(currentKey);
|
|
35
|
-
if (currentIndex === -1) return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];
|
|
36
|
-
const newIndex = currentIndex + direction;
|
|
37
|
-
if (newIndex >= 0 && newIndex < visibleKeys.length) return visibleKeys[newIndex];
|
|
38
|
-
if (opts?.wrap) return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
/** Returns the first or last selectable key. */
|
|
42
|
-
function getEdgeVisibleKey(listState, edge) {
|
|
43
|
-
const visibleKeys = getVisibleKeys(listState);
|
|
44
|
-
if (visibleKeys.length === 0) return null;
|
|
45
|
-
return edge === "first" ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Marks a focus change as keyboard-driven so the underlying ListBox scrolls the
|
|
49
|
-
* highlighted option into view. No-op when the list state doesn't expose a
|
|
50
|
-
* `lastFocusSourceRef`.
|
|
51
|
-
*/
|
|
52
|
-
function markKeyboardFocus(listState) {
|
|
53
|
-
if (listState.lastFocusSourceRef) listState.lastFocusSourceRef.current = "keyboard";
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Filters collection nodes by a search term while preserving section structure.
|
|
57
|
-
* Sections whose children all fail the filter are dropped. Extracted verbatim
|
|
58
|
-
* from the former `useComboBoxFiltering` inline filter.
|
|
59
|
-
*/
|
|
60
|
-
function filterCollectionNodes(nodes, term, textFilterFn) {
|
|
61
|
-
if (!term) return nodes;
|
|
62
|
-
return [...nodes].map((node) => {
|
|
63
|
-
if (node.type === "section" && node.childNodes) {
|
|
64
|
-
const filteredChildren = [...node.childNodes].filter((child) => textFilterFn(child.textValue || "", term));
|
|
65
|
-
if (filteredChildren.length === 0) return null;
|
|
66
|
-
return {
|
|
67
|
-
...node,
|
|
68
|
-
childNodes: filteredChildren,
|
|
69
|
-
hasChildNodes: true
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return textFilterFn(node.textValue || "", term) ? node : null;
|
|
73
|
-
}).filter(Boolean);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
//#endregion
|
|
77
|
-
export { filterCollectionNodes, getEdgeVisibleKey, getNextVisibleKey, markKeyboardFocus };
|
|
78
|
-
//# sourceMappingURL=listNavigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"listNavigation.js","names":[],"sources":["../../../../src/components/fields/ListBoxPopover/listNavigation.ts"],"sourcesContent":["import { Key } from '@react-types/shared';\n\n/**\n * Minimal view of a React Stately list state. Kept structural (no imports from\n * `react-stately`) so the helpers can be used from any collection-backed\n * component without dragging extra types in.\n */\nexport interface ListStateLike {\n selectionManager: {\n focusedKey: Key | null;\n setFocusedKey: (key: Key | null) => void;\n };\n collection: Iterable<any>;\n disabledKeys?: Set<Key>;\n lastFocusSourceRef?: { current: 'keyboard' | 'mouse' | 'other' };\n}\n\nexport type NavigationDirection = 1 | -1;\nexport type NavigationEdge = 'first' | 'last';\n\n/**\n * Walks a collection (possibly nested under sections) and collects the keys of\n * selectable items, skipping disabled ones. Mirrors the inline walker that\n * used to live in `useComboBoxKeyboard`.\n */\nexport function collectVisibleKeys(\n nodes: Iterable<any>,\n out: Key[],\n disabledKeys?: Set<Key>,\n): void {\n for (const node of nodes) {\n if (node.type === 'item') {\n if (!disabledKeys?.has(node.key)) {\n out.push(node.key);\n }\n } else if (node.childNodes) {\n collectVisibleKeys(node.childNodes, out, disabledKeys);\n }\n }\n}\n\n/** Convenience: returns the flat list of selectable keys for a list state. */\nexport function getVisibleKeys(listState: ListStateLike): Key[] {\n const keys: Key[] = [];\n collectVisibleKeys(\n listState.collection,\n keys,\n listState.disabledKeys as Set<Key> | undefined,\n );\n return keys;\n}\n\n/**\n * Computes the next key to focus when navigating with ArrowUp/ArrowDown.\n *\n * - If `fromKey` is omitted, reads `selectionManager.focusedKey`.\n * - When nothing is focused (or the focused key is no longer visible), falls\n * back to the first/last visible key depending on `direction`.\n * - When the current key is the boundary, either returns `null` (default) or\n * wraps to the opposite edge when `opts.wrap` is true.\n */\nexport function getNextVisibleKey(\n listState: ListStateLike,\n direction: NavigationDirection,\n opts?: { wrap?: boolean; fromKey?: Key | null },\n): Key | null {\n const visibleKeys = getVisibleKeys(listState);\n if (visibleKeys.length === 0) return null;\n\n const isForward = direction === 1;\n const currentKey = opts?.fromKey ?? listState.selectionManager.focusedKey;\n\n if (currentKey == null) {\n return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];\n }\n\n const currentIndex = visibleKeys.indexOf(currentKey);\n\n if (currentIndex === -1) {\n // Focused item was filtered out — restart from the matching edge.\n return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];\n }\n\n const newIndex = currentIndex + direction;\n if (newIndex >= 0 && newIndex < visibleKeys.length) {\n return visibleKeys[newIndex];\n }\n\n if (opts?.wrap) {\n return isForward ? visibleKeys[0] : visibleKeys[visibleKeys.length - 1];\n }\n\n return null;\n}\n\n/** Returns the first or last selectable key. */\nexport function getEdgeVisibleKey(\n listState: ListStateLike,\n edge: NavigationEdge,\n): Key | null {\n const visibleKeys = getVisibleKeys(listState);\n if (visibleKeys.length === 0) return null;\n return edge === 'first'\n ? visibleKeys[0]\n : visibleKeys[visibleKeys.length - 1];\n}\n\n/**\n * Marks a focus change as keyboard-driven so the underlying ListBox scrolls the\n * highlighted option into view. No-op when the list state doesn't expose a\n * `lastFocusSourceRef`.\n */\nexport function markKeyboardFocus(listState: ListStateLike): void {\n if (listState.lastFocusSourceRef) {\n listState.lastFocusSourceRef.current = 'keyboard';\n }\n}\n\nexport type TextFilterFn = (textValue: string, inputValue: string) => boolean;\n\n/**\n * Filters collection nodes by a search term while preserving section structure.\n * Sections whose children all fail the filter are dropped. Extracted verbatim\n * from the former `useComboBoxFiltering` inline filter.\n */\nexport function filterCollectionNodes(\n nodes: Iterable<any>,\n term: string,\n textFilterFn: TextFilterFn,\n): Iterable<any> {\n if (!term) {\n return nodes;\n }\n\n return [...nodes]\n .map((node: any) => {\n if (node.type === 'section' && node.childNodes) {\n const filteredChildren = [...node.childNodes].filter((child: any) =>\n textFilterFn(child.textValue || '', term),\n );\n\n if (filteredChildren.length === 0) {\n return null;\n }\n\n return {\n ...node,\n childNodes: filteredChildren,\n hasChildNodes: true,\n };\n }\n\n return textFilterFn(node.textValue || '', term) ? node : null;\n })\n .filter(Boolean);\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,mBACd,OACA,KACA,cACM;AACN,MAAK,MAAM,QAAQ,MACjB,KAAI,KAAK,SAAS,QAChB;MAAI,CAAC,cAAc,IAAI,KAAK,IAAI,CAC9B,KAAI,KAAK,KAAK,IAAI;YAEX,KAAK,WACd,oBAAmB,KAAK,YAAY,KAAK,aAAa;;;AAM5D,SAAgB,eAAe,WAAiC;CAC9D,MAAM,OAAc,EAAE;AACtB,oBACE,UAAU,YACV,MACA,UAAU,aACX;AACD,QAAO;;;;;;;;;;;AAYT,SAAgB,kBACd,WACA,WACA,MACY;CACZ,MAAM,cAAc,eAAe,UAAU;AAC7C,KAAI,YAAY,WAAW,EAAG,QAAO;CAErC,MAAM,YAAY,cAAc;CAChC,MAAM,aAAa,MAAM,WAAW,UAAU,iBAAiB;AAE/D,KAAI,cAAc,KAChB,QAAO,YAAY,YAAY,KAAK,YAAY,YAAY,SAAS;CAGvE,MAAM,eAAe,YAAY,QAAQ,WAAW;AAEpD,KAAI,iBAAiB,GAEnB,QAAO,YAAY,YAAY,KAAK,YAAY,YAAY,SAAS;CAGvE,MAAM,WAAW,eAAe;AAChC,KAAI,YAAY,KAAK,WAAW,YAAY,OAC1C,QAAO,YAAY;AAGrB,KAAI,MAAM,KACR,QAAO,YAAY,YAAY,KAAK,YAAY,YAAY,SAAS;AAGvE,QAAO;;;AAIT,SAAgB,kBACd,WACA,MACY;CACZ,MAAM,cAAc,eAAe,UAAU;AAC7C,KAAI,YAAY,WAAW,EAAG,QAAO;AACrC,QAAO,SAAS,UACZ,YAAY,KACZ,YAAY,YAAY,SAAS;;;;;;;AAQvC,SAAgB,kBAAkB,WAAgC;AAChE,KAAI,UAAU,mBACZ,WAAU,mBAAmB,UAAU;;;;;;;AAW3C,SAAgB,sBACd,OACA,MACA,cACe;AACf,KAAI,CAAC,KACH,QAAO;AAGT,QAAO,CAAC,GAAG,MAAM,CACd,KAAK,SAAc;AAClB,MAAI,KAAK,SAAS,aAAa,KAAK,YAAY;GAC9C,MAAM,mBAAmB,CAAC,GAAG,KAAK,WAAW,CAAC,QAAQ,UACpD,aAAa,MAAM,aAAa,IAAI,KAAK,CAC1C;AAED,OAAI,iBAAiB,WAAW,EAC9B,QAAO;AAGT,UAAO;IACL,GAAG;IACH,YAAY;IACZ,eAAe;IAChB;;AAGH,SAAO,aAAa,KAAK,aAAa,IAAI,KAAK,GAAG,OAAO;GACzD,CACD,OAAO,QAAQ"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-8e09ade | Cube Dev Team */
|
|
2
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
-
|
|
4
|
-
//#region src/components/fields/ListBoxPopover/useCompositeFocus.ts
|
|
5
|
-
/**
|
|
6
|
-
* Tracks focus across a wrapper element and its (portaled) popover as a single
|
|
7
|
-
* logical focus scope. Fires `onFocus` when focus enters either and `onBlur`
|
|
8
|
-
* when it leaves both — essential for components whose overlay is portaled, so
|
|
9
|
-
* that clicking an option does not look like a blur of the whole component.
|
|
10
|
-
*
|
|
11
|
-
* Focus checks are deferred to the next animation frame to tolerate the
|
|
12
|
-
* synchronous focus shuffles React Aria and portals perform on selection.
|
|
13
|
-
*/
|
|
14
|
-
function useCompositeFocus({ wrapperRef, popoverRef, onFocus, onBlur, isDisabled }) {
|
|
15
|
-
const wasInsideRef = useRef(false);
|
|
16
|
-
const rafRef = useRef(null);
|
|
17
|
-
const checkFocus = useCallback(() => {
|
|
18
|
-
if (isDisabled) return;
|
|
19
|
-
const activeElement = document.activeElement;
|
|
20
|
-
const isInside = (wrapperRef.current?.contains(activeElement) ?? false) || (popoverRef.current?.contains(activeElement) ?? false);
|
|
21
|
-
if (isInside !== wasInsideRef.current) {
|
|
22
|
-
wasInsideRef.current = isInside;
|
|
23
|
-
if (isInside) onFocus?.();
|
|
24
|
-
else onBlur?.();
|
|
25
|
-
}
|
|
26
|
-
}, [
|
|
27
|
-
wrapperRef,
|
|
28
|
-
popoverRef,
|
|
29
|
-
onFocus,
|
|
30
|
-
onBlur,
|
|
31
|
-
isDisabled
|
|
32
|
-
]);
|
|
33
|
-
const handleFocusOrBlur = useCallback((e) => {
|
|
34
|
-
if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);
|
|
35
|
-
rafRef.current = requestAnimationFrame(() => {
|
|
36
|
-
rafRef.current = null;
|
|
37
|
-
checkFocus();
|
|
38
|
-
});
|
|
39
|
-
}, [checkFocus]);
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
return () => {
|
|
42
|
-
if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);
|
|
43
|
-
};
|
|
44
|
-
}, []);
|
|
45
|
-
return { compositeFocusProps: {
|
|
46
|
-
onFocus: handleFocusOrBlur,
|
|
47
|
-
onBlur: handleFocusOrBlur
|
|
48
|
-
} };
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
//#endregion
|
|
52
|
-
export { useCompositeFocus };
|
|
53
|
-
//# sourceMappingURL=useCompositeFocus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCompositeFocus.js","names":[],"sources":["../../../../src/components/fields/ListBoxPopover/useCompositeFocus.ts"],"sourcesContent":["import React, { RefObject, useCallback, useEffect, useRef } from 'react';\n\nexport interface UseCompositeFocusProps {\n wrapperRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLElement>;\n onFocus?: () => void;\n onBlur?: () => void;\n isDisabled?: boolean;\n}\n\nexport interface UseCompositeFocusReturn {\n compositeFocusProps: {\n onFocus: (e: React.FocusEvent) => void;\n onBlur: (e: React.FocusEvent) => void;\n };\n}\n\n/**\n * Tracks focus across a wrapper element and its (portaled) popover as a single\n * logical focus scope. Fires `onFocus` when focus enters either and `onBlur`\n * when it leaves both — essential for components whose overlay is portaled, so\n * that clicking an option does not look like a blur of the whole component.\n *\n * Focus checks are deferred to the next animation frame to tolerate the\n * synchronous focus shuffles React Aria and portals perform on selection.\n */\nexport function useCompositeFocus({\n wrapperRef,\n popoverRef,\n onFocus,\n onBlur,\n isDisabled,\n}: UseCompositeFocusProps): UseCompositeFocusReturn {\n const wasInsideRef = useRef(false);\n const rafRef = useRef<number | null>(null);\n\n const checkFocus = useCallback(() => {\n if (isDisabled) return;\n\n const activeElement = document.activeElement;\n const isInside =\n (wrapperRef.current?.contains(activeElement) ?? false) ||\n (popoverRef.current?.contains(activeElement) ?? false);\n\n if (isInside !== wasInsideRef.current) {\n wasInsideRef.current = isInside;\n if (isInside) {\n onFocus?.();\n } else {\n onBlur?.();\n }\n }\n }, [wrapperRef, popoverRef, onFocus, onBlur, isDisabled]);\n\n const handleFocusOrBlur = useCallback(\n (e: React.FocusEvent) => {\n // Cancel any pending check\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // Schedule focus check for next frame\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n checkFocus();\n });\n },\n [checkFocus],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n }\n };\n }, []);\n\n return {\n compositeFocusProps: {\n onFocus: handleFocusOrBlur,\n onBlur: handleFocusOrBlur,\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AA0BA,SAAgB,kBAAkB,EAChC,YACA,YACA,SACA,QACA,cACkD;CAClD,MAAM,eAAe,OAAO,MAAM;CAClC,MAAM,SAAS,OAAsB,KAAK;CAE1C,MAAM,aAAa,kBAAkB;AACnC,MAAI,WAAY;EAEhB,MAAM,gBAAgB,SAAS;EAC/B,MAAM,YACH,WAAW,SAAS,SAAS,cAAc,IAAI,WAC/C,WAAW,SAAS,SAAS,cAAc,IAAI;AAElD,MAAI,aAAa,aAAa,SAAS;AACrC,gBAAa,UAAU;AACvB,OAAI,SACF,YAAW;OAEX,WAAU;;IAGb;EAAC;EAAY;EAAY;EAAS;EAAQ;EAAW,CAAC;CAEzD,MAAM,oBAAoB,aACvB,MAAwB;AAEvB,MAAI,OAAO,YAAY,KACrB,sBAAqB,OAAO,QAAQ;AAItC,SAAO,UAAU,4BAA4B;AAC3C,UAAO,UAAU;AACjB,eAAY;IACZ;IAEJ,CAAC,WAAW,CACb;AAGD,iBAAgB;AACd,eAAa;AACX,OAAI,OAAO,YAAY,KACrB,sBAAqB,OAAO,QAAQ;;IAGvC,EAAE,CAAC;AAEN,QAAO,EACL,qBAAqB;EACnB,SAAS;EACT,QAAQ;EACT,EACF"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
# CommandTextArea
|
|
2
|
-
|
|
3
|
-
A multiline text input (built on `TextArea` / `TextInputBase`) that shows a
|
|
4
|
-
command-autocomplete popover when the text matches a configurable trigger. The
|
|
5
|
-
focus always stays in the textarea; arrow keys, Enter/Tab, and Escape drive the
|
|
6
|
-
list only while it is open. Selecting an option inserts the option's literal
|
|
7
|
-
value (e.g. `/clear`) into the text and fires `onCommand`.
|
|
8
|
-
|
|
9
|
-
## When to Use
|
|
10
|
-
|
|
11
|
-
- Chat or prompt inputs where users type slash commands (`/clear`, `/help`).
|
|
12
|
-
- Inputs that need token-based autocomplete (`@mentions`, snippets) without
|
|
13
|
-
giving up free-form, multiline editing.
|
|
14
|
-
- Any textarea that should "feel like a textarea" but offer inline suggestions.
|
|
15
|
-
|
|
16
|
-
## Component
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
### Properties
|
|
21
|
-
|
|
22
|
-
- **`triggers`** `CommandTrigger[]` (default: `[{ char: '/', atLineStart: true }]`) — Descriptors that open the autocomplete. `atLineStart` restricts the token to the start of the input; `false` allows it anywhere after whitespace.
|
|
23
|
-
- **`items`** `Iterable<T>` — Data-driven option source (alternative to JSX children).
|
|
24
|
-
- **`children`** `ReactNode | ((item) => ReactElement)` — Static items or a render function (same shape as `ComboBox` / `ListBox`).
|
|
25
|
-
- **`filter`** `(textValue, query) => boolean | false` — Custom filter. Pass `false` to disable internal filtering (e.g. server-side).
|
|
26
|
-
- **`onCommand`** `(key, item) => void` — Fired when the user picks a command. The option's `textValue` is inserted into the textarea regardless.
|
|
27
|
-
- **`insertSpaceAfter`** `boolean` (default: `true`) — Insert a trailing space after the chosen command.
|
|
28
|
-
- **`disabledKeys`** `Iterable<Key>` — Keys of disabled options.
|
|
29
|
-
- **`direction`** `'top' | 'bottom'` (default: `'top'`) — Popover placement. Chat inputs usually want `top`.
|
|
30
|
-
- **`shouldFlip`** `boolean` (default: `true`) — Whether the popover flips when overflowing.
|
|
31
|
-
- **`overlayOffset`** `number` (default: `8`) — Distance between the textarea and the popover.
|
|
32
|
-
- **`containerPadding`** `number` (default: `8`) — Padding between the popover and the viewport edge.
|
|
33
|
-
- **`autoSize`** `boolean` (default: `false`) — Resize to fit content.
|
|
34
|
-
- **`rows`** `number` (default: `3`) — Visible rows.
|
|
35
|
-
- **`maxRows`** `number` (default: `10`) — Max visible rows when `autoSize` is true.
|
|
36
|
-
|
|
37
|
-
Each option's value is the **literal string to insert**. For commands, set the
|
|
38
|
-
item's `textValue` (and `key`) to the full `/clear` — the slash is part of both
|
|
39
|
-
the active token and the inserted value, so `/cle` becomes `/clear ` with no
|
|
40
|
-
duplication. This decouples insertion from the trigger, so non-command
|
|
41
|
-
autocomplete (e.g. a `@mention` resolving to `@john`) works the same way.
|
|
42
|
-
|
|
43
|
-
### Base Properties
|
|
44
|
-
|
|
45
|
-
Supports [Base properties](../../BaseProperties.md).
|
|
46
|
-
|
|
47
|
-
### Field Properties
|
|
48
|
-
|
|
49
|
-
Supports all [Field properties](../../FieldProperties.md)
|
|
50
|
-
(`label`, `name`, `isRequired`, `isDisabled`, `isReadOnly`, `validationState`,
|
|
51
|
-
`description`, `rules`, etc.).
|
|
52
|
-
|
|
53
|
-
### Styling Properties
|
|
54
|
-
|
|
55
|
-
- **`overlayStyles`** — Styles for the popover overlay.
|
|
56
|
-
- **`listBoxStyles`** — Styles for the inner listbox.
|
|
57
|
-
- **`optionStyles`** — Styles for individual options.
|
|
58
|
-
- **`sectionStyles`** — Styles for section containers.
|
|
59
|
-
- **`headingStyles`** — Styles for section headings.
|
|
60
|
-
|
|
61
|
-
### Style Properties
|
|
62
|
-
|
|
63
|
-
These properties allow direct style application without using the `styles` prop:
|
|
64
|
-
|
|
65
|
-
- **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
|
|
66
|
-
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
67
|
-
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
68
|
-
- **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
|
|
69
|
-
- **Color:** `color`, `fill`, `fade`, `image`
|
|
70
|
-
|
|
71
|
-
## Examples
|
|
72
|
-
|
|
73
|
-
### Basic usage
|
|
74
|
-
|
|
75
|
-
```jsx
|
|
76
|
-
<CommandTextArea
|
|
77
|
-
label="Message"
|
|
78
|
-
placeholder="Type / to see commands…"
|
|
79
|
-
onCommand={(key) => console.log('picked', key)}
|
|
80
|
-
>
|
|
81
|
-
<CommandTextArea.Item key="/clear" textValue="/clear">Clear conversation</CommandTextArea.Item>
|
|
82
|
-
<CommandTextArea.Item key="/help" textValue="/help">Show help</CommandTextArea.Item>
|
|
83
|
-
</CommandTextArea>
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Mention trigger (anywhere in the text)
|
|
87
|
-
|
|
88
|
-
```jsx
|
|
89
|
-
<CommandTextArea
|
|
90
|
-
label="Message"
|
|
91
|
-
triggers={[{ char: '@', atLineStart: false }]}
|
|
92
|
-
>
|
|
93
|
-
<CommandTextArea.Item key="@john" textValue="@john">John Doe</CommandTextArea.Item>
|
|
94
|
-
<CommandTextArea.Item key="@jane" textValue="@jane">Jane Roe</CommandTextArea.Item>
|
|
95
|
-
</CommandTextArea>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Data-driven with sections
|
|
99
|
-
|
|
100
|
-
```jsx
|
|
101
|
-
<CommandTextArea items={commands}>
|
|
102
|
-
{(item) => <CommandTextArea.Item key={item.key} textValue={item.key}>{item.label}</CommandTextArea.Item>}
|
|
103
|
-
</CommandTextArea>
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Accessibility
|
|
107
|
-
|
|
108
|
-
### Keyboard Navigation
|
|
109
|
-
|
|
110
|
-
- `Tab` — Moves focus into / out of the textarea.
|
|
111
|
-
- `ArrowUp` / `ArrowDown` — Move the highlighted option (only while the popover is open; otherwise moves the caret).
|
|
112
|
-
- `Home` / `End` — Jump to the first / last option while open.
|
|
113
|
-
- `Enter` / `Tab` — Insert the highlighted option while open; otherwise insert a newline / submit.
|
|
114
|
-
- `Escape` — Close the popover without changing the text.
|
|
115
|
-
|
|
116
|
-
### Screen Reader Support
|
|
117
|
-
|
|
118
|
-
- The textarea is announced as a `combobox` with `aria-autocomplete="list"`.
|
|
119
|
-
- `aria-expanded`, `aria-controls`, and `aria-activedescendant` track the
|
|
120
|
-
popover and the highlighted option.
|
|
121
|
-
|
|
122
|
-
## Integration with Forms
|
|
123
|
-
|
|
124
|
-
This component supports all [Field properties](../../FieldProperties.md) when used within a Form. Its `value` is the full textarea string.
|
|
125
|
-
|
|
126
|
-
## Related Components
|
|
127
|
-
|
|
128
|
-
- [TextArea](./TextArea.md) — The base multiline field this builds on.
|
|
129
|
-
- [ComboBox](./ComboBox.md) — Single-value select with search (different semantics: commits a `selectedKey`).
|
|
130
|
-
- [ListBox](./ListBox.md) — The virtual-focus list rendered inside the popover.
|