@cube-dev/ui-kit 0.147.2 → 0.148.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 +22 -0
- 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 +24 -3
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +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.d.ts +1 -0
- package/dist/components/content/PrismCode/PrismCode.js +2 -1
- package/dist/components/content/PrismCode/PrismCode.js.map +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 +17 -17
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -8
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -2
- package/dist/components/fields/ComboBox/ComboBox.js +26 -23
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -5
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +1 -2
- package/dist/components/fields/DatePicker/DateInput.js +4 -7
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +21 -14
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -2
- package/dist/components/fields/DatePicker/DatePicker.js +4 -7
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js +4 -7
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +6 -8
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -2
- package/dist/components/fields/DatePicker/TimeInput.js +4 -7
- package/dist/components/fields/DatePicker/TimeInput.js.map +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 +26 -7
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +11 -11
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +20 -10
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +35 -27
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -3
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -3
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +20 -10
- 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 +14 -8
- 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 +4 -7
- 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 -2
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +21 -12
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.d.ts +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +11 -4
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.js +22 -22
- 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 +10 -4
- package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
- package/dist/components/fields/Slider/Slider.js +6 -2
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +18 -8
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +11 -4
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +15 -4
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +5 -1
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +11 -9
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -3
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -3
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +29 -33
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +2 -0
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +13 -5
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +29 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js +11 -7
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/index.d.ts +1 -2
- package/dist/components/form/FieldWrapper/types.d.ts +2 -3
- package/dist/components/form/Form/Field.js +8 -5
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.js +6 -4
- package/dist/components/form/Form/Form.js.map +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/types.d.ts +7 -5
- package/dist/components/form/Form/use-field/use-field-props.js +7 -1
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.js +8 -6
- 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 +2 -3
- package/dist/components/form/Label.js +7 -4
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/index.d.ts +6 -3
- package/dist/components/form/validation/ValidationIndicator.d.ts +28 -0
- package/dist/components/form/validation/ValidationIndicator.js +37 -0
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -0
- package/dist/components/form/validation/index.d.ts +4 -0
- package/dist/components/form/validation/resolve-validation-props.d.ts +51 -0
- package/dist/components/form/validation/resolve-validation-props.js +49 -0
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -0
- package/dist/components/form/validation/use-validation-props.d.ts +16 -0
- package/dist/components/form/validation/use-validation-props.js +29 -0
- package/dist/components/form/validation/use-validation-props.js.map +1 -0
- package/dist/components/form/wrapper.d.ts +5 -1
- package/dist/components/form/wrapper.js +8 -3
- 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/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/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 +4 -3
- package/dist/components/overlays/Dialog/DialogForm.js.map +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/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/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 +6 -4
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +2 -1
- package/dist/provider.js +6 -4
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/shared/form.d.ts +17 -4
- package/dist/shared/index.d.ts +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/palette.js.map +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/docs/FieldProperties.md +4 -2
- package/docs/Introduction.md +1 -1
- package/docs/components/content/CopySnippet.md +5 -0
- package/docs/components/content/PrismCode.md +2 -2
- package/docs/components/fields/Checkbox.md +1 -1
- package/docs/components/fields/CommandTextArea.md +1 -1
- package/docs/components/fields/DatePicker.md +1 -1
- package/docs/components/fields/FileInput.md +3 -1
- package/docs/components/fields/FilterListBox.md +2 -2
- package/docs/components/fields/ListBox.md +2 -2
- package/docs/components/fields/NumberInput.md +3 -3
- package/docs/components/fields/PasswordInput.md +3 -2
- package/docs/components/fields/Picker.md +5 -5
- package/docs/components/fields/SearchInput.md +5 -4
- package/docs/components/fields/Select.md +3 -3
- package/docs/components/fields/Slider.md +4 -0
- package/docs/components/fields/TextInput.md +3 -3
- package/docs/components/fields/TextInputMapper.md +5 -0
- package/docs/components/form/Field.md +10 -9
- package/docs/components/form/Form.md +3 -1
- package/docs/components/overlays/DialogForm.md +3 -1
- package/package.json +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.d.ts +0 -12
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +0 -41
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["Item","useFocus","mergeProps","Text","ListDivider","ListSectionWrapper","ListSectionHeading","BaseSection","CollectionItem"],"sources":["../../../../src/components/fields/Select/Select.tsx"],"sourcesContent":["import {\n AriaLabelingProps,\n CollectionBase,\n DOMRef,\n Key,\n} from '@react-types/shared';\nimport {\n BASE_STYLES,\n BasePropsWithoutChildren,\n BaseStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport React, {\n cloneElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaSelectProps,\n DismissButton,\n FocusScope,\n HiddenSelect,\n useButton,\n useHover,\n useListBox,\n useListBoxSection,\n useOption,\n useOverlay,\n useOverlayPosition,\n useSelect,\n} from 'react-aria';\nimport { Section as BaseSection, useSelectState } from 'react-stately';\nimport { CubeTooltipProviderProps } from 'src/components/overlays/Tooltip/TooltipProvider';\n\nimport { useEvent } from '../../../_internal';\nimport { CloseIcon, DirectionIcon, LoadingIcon } from '../../../icons/index';\nimport { useProviderProps } from '../../../provider';\nimport { FieldBaseProps } from '../../../shared/index';\nimport { generateRandomId } from '../../../utils/random';\nimport {\n forwardRefWithGenerics,\n mergeProps,\n useCombinedRefs,\n} from '../../../utils/react/index';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemAction, ItemActionProvider } from '../../actions';\nimport {\n StyledDivider as ListDivider,\n StyledSectionHeading as ListSectionHeading,\n StyledSection as ListSectionWrapper,\n} from '../../actions/Menu/styled';\nimport {\n CollectionItem,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport { useFieldProps, useFormProps, wrapWithField } from '../../form';\nimport { DisplayTransition } from '../../helpers';\nimport { Portal } from '../../portal';\nimport { InvalidIcon } from '../../shared/InvalidIcon';\nimport { ValidIcon } from '../../shared/ValidIcon';\n\nconst SelectWrapperElement = tasty({\n qa: 'SelectWrapper',\n styles: {\n display: 'grid',\n position: 'relative',\n radius: true,\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n 'theme=special': '#clear',\n },\n color: {\n '': '#dark.85',\n focused: '#dark.85',\n invalid: '#danger-text',\n disabled: '#disabled-surface-text',\n },\n },\n});\n\nexport const ListBoxElement = tasty({\n qa: 'ListBox',\n as: 'ul',\n styles: {\n display: 'flex',\n gap: '1bw',\n flow: 'column',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n scrollbar: 'styled',\n // The listbox is programmatically focused when the popover opens\n // (so keyboard nav works immediately) but it should never display a\n // focus ring — only the focused option does. Without this, the\n // browser draws its native outline around the whole listbox when\n // it receives focus.\n outline: 0,\n },\n});\n\n// Use Item for options to unify item visuals and reduce custom styling\nconst OptionItem = tasty(Item, {\n as: 'li',\n disableActionsFocus: true,\n qa: 'Option',\n styles: {\n '$inline-compensation': '0px',\n },\n});\n\nconst SelectOverlayWrapper = tasty({\n qa: 'SelectOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst OverlayElement = tasty({\n qa: 'SelectOverlay',\n styles: {\n width: 'min $overlay-min-width',\n display: 'grid',\n gridRows: '1sf',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '.5x',\n border: true,\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});\n\nexport interface CubeSelectBaseProps<T>\n extends BasePropsWithoutChildren,\n AriaLabelingProps,\n BaseStyleProps,\n OuterStyleProps,\n ColorStyleProps,\n Omit<FieldBaseProps, 'tooltip'>,\n CollectionBase<T>,\n Omit<\n AriaSelectProps<T>,\n | 'errorMessage'\n | 'selectedKey'\n | 'defaultSelectedKey'\n | 'onSelectionChange'\n > {\n /** The currently selected key in the collection (controlled). */\n selectedKey?: Key | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Handler that is called when the selection changes. */\n onSelectionChange?: (key: Key | null) => void;\n icon?: ReactElement;\n rightIcon?: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** Description text for the trigger. Note: Different from field-level description. */\n triggerDescription?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /** Keyboard shortcut that triggers the select when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration for the trigger:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows selected value as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n triggerRef?: RefObject<HTMLButtonElement>;\n isLoading?: boolean;\n loadingIndicator?: ReactNode;\n overlayOffset?: number;\n hideTrigger?: boolean;\n /**\n * @deprecated Use `triggerStyles` instead\n */\n inputStyles?: Styles;\n optionStyles?: Styles;\n triggerStyles?: Styles;\n listBoxStyles?: Styles;\n overlayStyles?: Styles;\n direction?: 'top' | 'bottom';\n shouldFlip?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n inputProps?: Props;\n type?: 'outline' | 'outline-2' | 'clear' | 'primary' | (string & {});\n /**\n * Shape of the trigger's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n suffixPosition?: 'before' | 'after';\n theme?: 'default' | 'special';\n /** Whether the select is clearable using a clear button in the rightIcon slot */\n isClearable?: boolean;\n /** Callback called when the clear button is pressed */\n onClear?: () => void;\n /** Callback called when the popover open state changes */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport interface CubeSelectProps<T> extends CubeSelectBaseProps<T> {\n popoverRef?: RefObject<HTMLInputElement>;\n /** The ref for the list box. */\n listBoxRef?: RefObject<HTMLElement>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n placeholder?: string;\n}\n\nconst PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\nfunction Select<T extends object>(\n props: CubeSelectProps<T>,\n ref: DOMRef<HTMLDivElement>,\n) {\n props = useProviderProps(props);\n props = useFormProps(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n }),\n });\n\n let {\n qa,\n label,\n extra,\n icon,\n rightIcon,\n labelStyles,\n isRequired,\n necessityIndicator,\n validationState,\n prefix,\n isDisabled = props.isLoading || false,\n autoFocus,\n inputProps,\n triggerRef,\n popoverRef,\n listBoxRef,\n isLoading,\n loadingIndicator,\n overlayOffset = 8,\n inputStyles,\n triggerStyles,\n optionStyles,\n listBoxStyles,\n overlayStyles,\n suffix,\n message,\n triggerDescription,\n descriptionPlacement,\n hotkeys,\n direction = 'bottom',\n shouldFlip = true,\n containerPadding = 8,\n placeholder,\n tooltip,\n size = 'medium',\n shape,\n styles,\n type = 'outline',\n theme = 'default',\n labelSuffix,\n suffixPosition = 'before',\n isClearable,\n onOpenChange,\n form,\n ...otherProps\n } = props;\n let state = useSelectState(props);\n\n // Generate a unique ID for this select instance\n const selectId = useMemo(() => generateRandomId(), []);\n\n // Call onOpenChange when open state changes\n useEffect(() => {\n onOpenChange?.(state.isOpen);\n }, [state.isOpen]);\n\n styles = extractStyles(otherProps, PROP_STYLES, styles);\n\n ref = useCombinedRefs(ref);\n triggerRef = useCombinedRefs(triggerRef);\n popoverRef = useCombinedRefs(popoverRef);\n listBoxRef = useCombinedRefs(listBoxRef);\n\n usePopoverSync({\n menuId: selectId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: triggerRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef as RefObject<HTMLElement | null>,\n });\n\n let { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n props,\n state,\n triggerRef,\n );\n\n let { overlayProps, placement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n scrollRef: listBoxRef,\n placement: `${direction} end`,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen,\n onClose: state.close,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n // Get props for the button based on the trigger props from useSelect\n let { buttonProps } = useButton(triggerProps, triggerRef);\n\n let isInvalid = validationState === 'invalid';\n\n let validationIcon = isInvalid ? InvalidIcon : ValidIcon;\n let validation = cloneElement(validationIcon);\n\n // Clear button logic\n let hasSelection = state.selectedItem != null;\n let showClearButton =\n isClearable && hasSelection && !isDisabled && !props.isReadOnly;\n\n // Clear function\n let clearValue = useEvent(() => {\n props.onSelectionChange?.(null);\n state.setSelectedKey(null);\n // Close the popup if it's open\n if (state.isOpen) {\n state.close();\n }\n // Return focus to the trigger for better UX\n triggerRef.current?.focus?.();\n\n props.onClear?.();\n });\n\n let triggerWidth = triggerRef?.current?.offsetWidth;\n\n const showPlaceholder = !!placeholder?.trim() && !state.selectedItem;\n\n const modifiers = useMemo(\n () => ({\n invalid: isInvalid,\n valid: validationState === 'valid',\n disabled: isDisabled,\n loading: isLoading,\n hovered: isHovered,\n focused: isFocused,\n placeholder: showPlaceholder,\n prefix: !!prefix,\n suffix: true,\n }),\n [\n validationState,\n isDisabled,\n isLoading,\n isHovered,\n isFocused,\n showPlaceholder,\n prefix,\n ],\n );\n\n suffix = useMemo(() => {\n if (!suffix && !validationState) {\n return null;\n }\n\n return (\n <>\n {suffix}\n {validationState ? validation : null}\n </>\n );\n }, [suffix, validationState, validation]);\n\n let selectField = (\n <SelectWrapperElement\n mods={modifiers}\n styles={styles}\n data-size={size}\n data-type={type}\n data-theme={theme}\n >\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n <Item\n as=\"button\"\n qa={qa || 'Select'}\n data-input-type=\"select\"\n {...mergeProps(buttonProps, hoverProps, focusProps)}\n ref={triggerRef}\n data-popover-trigger\n styles={{ ...inputStyles, ...triggerStyles }}\n theme={theme}\n size={size}\n shape={shape}\n // Ensure this button never submits a surrounding form in tests or runtime\n htmlType=\"button\"\n // Preserve visual variant via data attribute instead of conflicting with HTML attribute\n type={type}\n mods={modifiers}\n prefix={prefix}\n suffix={suffix}\n icon={icon}\n rightIcon={\n rightIcon !== undefined ? (\n rightIcon\n ) : showClearButton ? (\n <ItemActionProvider\n type={type}\n theme={validationState === 'invalid' ? 'danger' : theme}\n >\n <ItemAction\n icon={<CloseIcon />}\n qa=\"SelectClearButton\"\n mods={{ pressed: false }}\n onPress={clearValue}\n />\n </ItemActionProvider>\n ) : isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={state.isOpen ? 'up' : 'down'} />\n )\n }\n description={triggerDescription}\n descriptionPlacement={descriptionPlacement}\n hotkeys={hotkeys}\n tooltip={tooltip}\n labelProps={valueProps}\n >\n {state.selectedItem ? (\n state.selectedItem.rendered\n ) : placeholder ? (\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n ) : null}\n </Item>\n <ListBoxPopup\n {...menuProps}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n overlayProps={overlayProps}\n placement={placement}\n state={state}\n listBoxStyles={listBoxStyles}\n overlayStyles={overlayStyles}\n optionStyles={optionStyles}\n minWidth={triggerWidth}\n triggerRef={triggerRef}\n isDisabled={isDisabled}\n />\n </SelectWrapperElement>\n );\n\n return wrapWithField<Omit<CubeSelectProps<T>, 'children'>>(\n selectField,\n ref,\n mergeProps(\n {\n ...props,\n },\n { labelProps },\n ),\n );\n}\n\nexport function ListBoxPopup({\n state,\n popoverRef,\n listBoxRef,\n listBoxStyles,\n overlayStyles,\n optionStyles,\n overlayProps: parentOverlayProps,\n shouldUseVirtualFocus = false,\n placement,\n minWidth,\n size = 'small',\n triggerRef,\n isDisabled,\n ...otherProps\n}) {\n // For trigger+popover components, map 'small' size to 'medium' for list items\n // while preserving 'medium' and 'large' sizes\n const listItemSize = size === 'small' ? 'medium' : size;\n\n // Get props for the listbox\n let { listBoxProps } = useListBox(\n {\n autoFocus: state.focusStrategy || true,\n shouldUseVirtualFocus,\n ...otherProps,\n },\n state,\n listBoxRef,\n );\n\n // Handle events that should cause the popup to close,\n // e.g. blur, clicking outside, or pressing the escape key.\n let { overlayProps } = useOverlay(\n {\n onClose: () => state.close(),\n shouldCloseOnBlur: true,\n isOpen: state.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(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // If the same trigger that opened this select was clicked, allow closing\n if (menuTriggerEl === triggerRef?.current) return true;\n // Otherwise, don't close (let event mechanism handle it)\n return false;\n },\n },\n popoverRef,\n );\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || 'bottom';\n\n // Wrap in <FocusScope> so that focus is restored back to the\n // trigger when the popup is closed. In addition, add hidden\n // <DismissButton> components at the start and end of the list\n // to allow screen reader users to dismiss the popup easily.\n //\n // `autoFocus` is required because `ListBoxPopup` is rendered\n // unconditionally (not gated on `state.isOpen`), so by the time the\n // popover actually opens, react-aria's `useSelectableCollection`\n // autoFocus has already been consumed (its useRef captures the\n // initial value on mount, when the listbox isn't in the DOM yet).\n // Setting `autoFocus` on the FocusScope itself runs each time the\n // FocusScope mounts (every time the popover opens, since the inner\n // tree is unmounted between opens) and explicitly focuses the\n // first tabbable element (the listbox). This also registers the\n // FocusScope as the active scope, so an outer contained Dialog\n // FocusScope (e.g. a popover Dialog wrapping the Select) correctly\n // recognises focus moving into the Select popover and doesn't yank\n // it back to the trigger.\n return (\n <Portal>\n <DisplayTransition isShown={state.isOpen && !isDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <SelectOverlayWrapper\n {...overlayProps}\n {...parentOverlayProps}\n ref={popoverRef}\n style={parentOverlayProps?.style}\n >\n <OverlayElement\n ref={transitionRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': minWidth ? `${minWidth}px` : 'initial',\n }}\n >\n <FocusScope autoFocus restoreFocus>\n <DismissButton onDismiss={() => state.close()} />\n {(() => {\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n for (const item of state.collection) {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <ListDivider\n key={`divider-${String(item.key)}`}\n as=\"li\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <SelectSection\n key={item.key}\n item={item}\n state={state}\n optionStyles={optionStyles}\n sectionStyles={undefined}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n\n isFirstSection = false;\n } else {\n renderedItems.push(\n <Option\n key={item.key}\n item={item}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n }\n }\n\n return (\n <ListBoxElement\n styles={listBoxStyles}\n {...listBoxProps}\n ref={listBoxRef}\n >\n {renderedItems}\n </ListBoxElement>\n );\n })()}\n <DismissButton onDismiss={() => state.close()} />\n </FocusScope>\n </OverlayElement>\n </SelectOverlayWrapper>\n )}\n </DisplayTransition>\n </Portal>\n );\n}\n\nfunction Option({ item, state, styles, shouldUseVirtualFocus, size }) {\n let ref = useRef<HTMLLIElement>(null);\n let isDisabled = state.disabledKeys.has(item.key);\n let isSelected = state.selectionManager.isSelected(item.key);\n let isVirtualFocused = state.selectionManager.focusedKey === item.key;\n\n let { optionProps, isPressed, labelProps, descriptionProps } = useOption(\n {\n key: item.key,\n isDisabled,\n isSelected,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n shouldUseVirtualFocus,\n },\n state,\n ref,\n );\n\n // Handle focus events, so we can apply highlighted\n // style to the focused option\n let { isFocused, focusProps } = useFocus({ isDisabled });\n\n // Filter out service props - all remaining props can be passed to Item\n const filteredItemProps = filterCollectionItemProps(item.props);\n\n return (\n <OptionItem\n {...mergeProps(optionProps, focusProps, filteredItemProps)}\n ref={ref}\n mods={{\n listboxitem: true,\n selected: isSelected,\n focused: shouldUseVirtualFocus ? isVirtualFocused : isFocused,\n disabled: isDisabled,\n pressed: isPressed,\n }}\n data-size={size}\n styles={{\n ...(styles as Styles),\n ...(filteredItemProps.styles as Styles),\n }}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n defaultTooltipPlacement=\"right\"\n >\n {item.rendered}\n </OptionItem>\n );\n}\n\ninterface SelectSectionProps<T> {\n item: any; // react-stately Node<T>\n state: any; // TreeState<T>\n optionStyles?: Styles;\n headingStyles?: Styles;\n sectionStyles?: Styles;\n shouldUseVirtualFocus?: boolean;\n size?: string;\n}\n\nfunction SelectSection<T>(props: SelectSectionProps<T>) {\n const {\n item,\n state,\n optionStyles,\n headingStyles,\n sectionStyles,\n shouldUseVirtualFocus,\n size,\n } = props;\n\n const heading = item.rendered;\n\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <ListSectionWrapper {...itemProps} styles={sectionStyles}>\n {heading && (\n <ListSectionHeading\n {...headingProps}\n size={size}\n styles={{ ...headingStyles, '$inline-compensation': '0px' }}\n >\n {heading}\n </ListSectionHeading>\n )}\n <ListBoxElement {...groupProps} mods={{ section: true }}>\n {[...item.childNodes]\n .filter((node: any) => state.collection.getItem(node.key))\n .map((node: any) => (\n <Option\n key={node.key}\n item={node}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={size}\n />\n ))}\n </ListBoxElement>\n </ListSectionWrapper>\n );\n}\n\nconst _Select = forwardRefWithGenerics(Select);\n\n(_Select as any).cubeInputType = 'Select';\n\ntype SectionComponent = typeof BaseSection;\n\nconst SelectSectionComponent = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\nconst __Select = Object.assign(\n _Select as typeof _Select & {\n Item: typeof CollectionItem;\n Section: typeof SelectSectionComponent;\n },\n {\n Item: CollectionItem,\n Section: SelectSectionComponent,\n },\n);\n\n(__Select as any).displayName = 'Select';\n\nexport { __Select as Select };\n\nexport type { AriaSelectProps };\nexport { useSelectState };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["Item","useFocus","mergeProps","Text","ListDivider","ListSectionWrapper","ListSectionHeading","BaseSection","CollectionItem"],"sources":["../../../../src/components/fields/Select/Select.tsx"],"sourcesContent":["import {\n AriaLabelingProps,\n CollectionBase,\n DOMRef,\n Key,\n} from '@react-types/shared';\nimport {\n BASE_STYLES,\n BasePropsWithoutChildren,\n BaseStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport React, {\n cloneElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaSelectProps,\n DismissButton,\n FocusScope,\n HiddenSelect,\n useButton,\n useHover,\n useListBox,\n useListBoxSection,\n useOption,\n useOverlay,\n useOverlayPosition,\n useSelect,\n} from 'react-aria';\nimport { Section as BaseSection, useSelectState } from 'react-stately';\nimport { CubeTooltipProviderProps } from 'src/components/overlays/Tooltip/TooltipProvider';\n\nimport { useEvent } from '../../../_internal';\nimport { CloseIcon, DirectionIcon, LoadingIcon } from '../../../icons/index';\nimport { FieldBaseProps } from '../../../shared/index';\nimport { generateRandomId } from '../../../utils/random';\nimport {\n forwardRefWithGenerics,\n mergeProps,\n useCombinedRefs,\n} from '../../../utils/react/index';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemAction, ItemActionProvider } from '../../actions';\nimport {\n StyledDivider as ListDivider,\n StyledSectionHeading as ListSectionHeading,\n StyledSection as ListSectionWrapper,\n} from '../../actions/Menu/styled';\nimport {\n CollectionItem,\n filterCollectionItemProps,\n} from '../../CollectionItem';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { Text } from '../../content/Text';\nimport {\n getValidationIcon,\n getValidationMods,\n getValidationTheme,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { DisplayTransition } from '../../helpers';\nimport { Portal } from '../../portal';\n\nconst SelectWrapperElement = tasty({\n qa: 'SelectWrapper',\n styles: {\n display: 'grid',\n position: 'relative',\n radius: true,\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n 'theme=special': '#clear',\n },\n color: {\n '': '#dark.85',\n focused: '#dark.85',\n invalid: '#danger-text',\n disabled: '#disabled-surface-text',\n },\n },\n});\n\nexport const ListBoxElement = tasty({\n qa: 'ListBox',\n as: 'ul',\n styles: {\n display: 'flex',\n gap: '1bw',\n flow: 'column',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n scrollbar: 'styled',\n // The listbox is programmatically focused when the popover opens\n // (so keyboard nav works immediately) but it should never display a\n // focus ring — only the focused option does. Without this, the\n // browser draws its native outline around the whole listbox when\n // it receives focus.\n outline: 0,\n },\n});\n\n// Use Item for options to unify item visuals and reduce custom styling\nconst OptionItem = tasty(Item, {\n as: 'li',\n disableActionsFocus: true,\n qa: 'Option',\n styles: {\n '$inline-compensation': '0px',\n },\n});\n\nconst SelectOverlayWrapper = tasty({\n qa: 'SelectOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst OverlayElement = tasty({\n qa: 'SelectOverlay',\n styles: {\n width: 'min $overlay-min-width',\n display: 'grid',\n gridRows: '1sf',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '.5x',\n border: true,\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});\n\nexport interface CubeSelectBaseProps<T>\n extends BasePropsWithoutChildren,\n AriaLabelingProps,\n BaseStyleProps,\n OuterStyleProps,\n ColorStyleProps,\n Omit<FieldBaseProps, 'tooltip'>,\n CollectionBase<T>,\n Omit<\n AriaSelectProps<T>,\n | 'errorMessage'\n | 'selectedKey'\n | 'defaultSelectedKey'\n | 'onSelectionChange'\n > {\n /** The currently selected key in the collection (controlled). */\n selectedKey?: Key | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Handler that is called when the selection changes. */\n onSelectionChange?: (key: Key | null) => void;\n icon?: ReactElement;\n rightIcon?: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** Description text for the trigger. Note: Different from field-level description. */\n triggerDescription?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /** Keyboard shortcut that triggers the select when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration for the trigger:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows selected value as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n triggerRef?: RefObject<HTMLButtonElement>;\n isLoading?: boolean;\n loadingIndicator?: ReactNode;\n overlayOffset?: number;\n hideTrigger?: boolean;\n /**\n * @deprecated Use `triggerStyles` instead\n */\n inputStyles?: Styles;\n optionStyles?: Styles;\n triggerStyles?: Styles;\n listBoxStyles?: Styles;\n overlayStyles?: Styles;\n direction?: 'top' | 'bottom';\n shouldFlip?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n inputProps?: Props;\n type?: 'outline' | 'outline-2' | 'clear' | 'primary' | (string & {});\n /**\n * Shape of the trigger's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n suffixPosition?: 'before' | 'after';\n theme?: 'default' | 'special';\n /** Whether the select is clearable using a clear button in the rightIcon slot */\n isClearable?: boolean;\n /** Callback called when the clear button is pressed */\n onClear?: () => void;\n /** Callback called when the popover open state changes */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport interface CubeSelectProps<T> extends CubeSelectBaseProps<T> {\n popoverRef?: RefObject<HTMLInputElement>;\n /** The ref for the list box. */\n listBoxRef?: RefObject<HTMLElement>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n placeholder?: string;\n}\n\nconst PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];\n\nfunction Select<T extends object>(\n props: CubeSelectProps<T>,\n ref: DOMRef<HTMLDivElement>,\n) {\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n }),\n });\n\n let {\n qa,\n label,\n extra,\n icon,\n rightIcon,\n labelStyles,\n isRequired,\n necessityIndicator,\n isInvalid,\n isValid,\n prefix,\n isDisabled = props.isLoading || false,\n autoFocus,\n inputProps,\n triggerRef,\n popoverRef,\n listBoxRef,\n isLoading,\n loadingIndicator,\n overlayOffset = 8,\n inputStyles,\n triggerStyles,\n optionStyles,\n listBoxStyles,\n overlayStyles,\n suffix,\n message,\n triggerDescription,\n descriptionPlacement,\n hotkeys,\n direction = 'bottom',\n shouldFlip = true,\n containerPadding = 8,\n placeholder,\n tooltip,\n size = 'medium',\n shape,\n styles,\n type = 'outline',\n theme = 'default',\n labelSuffix,\n suffixPosition = 'before',\n isClearable,\n onOpenChange,\n form,\n ...otherProps\n } = props;\n let state = useSelectState(props);\n\n // Generate a unique ID for this select instance\n const selectId = useMemo(() => generateRandomId(), []);\n\n // Call onOpenChange when open state changes\n useEffect(() => {\n onOpenChange?.(state.isOpen);\n }, [state.isOpen]);\n\n styles = extractStyles(otherProps, PROP_STYLES, styles);\n\n ref = useCombinedRefs(ref);\n triggerRef = useCombinedRefs(triggerRef);\n popoverRef = useCombinedRefs(popoverRef);\n listBoxRef = useCombinedRefs(listBoxRef);\n\n usePopoverSync({\n menuId: selectId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: triggerRef as RefObject<HTMLElement | null>,\n containerRef: popoverRef as RefObject<HTMLElement | null>,\n });\n\n let { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n props,\n state,\n triggerRef,\n );\n\n let { overlayProps, placement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n scrollRef: listBoxRef,\n placement: `${direction} end`,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen,\n onClose: state.close,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n // Get props for the button based on the trigger props from useSelect\n let { buttonProps } = useButton(triggerProps, triggerRef);\n\n let validationIcon = getValidationIcon({ isInvalid, isValid });\n\n // Clear button logic\n let hasSelection = state.selectedItem != null;\n let showClearButton =\n isClearable && hasSelection && !isDisabled && !props.isReadOnly;\n\n // Clear function\n let clearValue = useEvent(() => {\n props.onSelectionChange?.(null);\n state.setSelectedKey(null);\n // Close the popup if it's open\n if (state.isOpen) {\n state.close();\n }\n // Return focus to the trigger for better UX\n triggerRef.current?.focus?.();\n\n props.onClear?.();\n });\n\n let triggerWidth = triggerRef?.current?.offsetWidth;\n\n const showPlaceholder = !!placeholder?.trim() && !state.selectedItem;\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n loading: isLoading,\n hovered: isHovered,\n focused: isFocused,\n placeholder: showPlaceholder,\n prefix: !!prefix,\n suffix: true,\n }),\n [\n isInvalid,\n isValid,\n isDisabled,\n isLoading,\n isHovered,\n isFocused,\n showPlaceholder,\n prefix,\n ],\n );\n\n suffix = useMemo(() => {\n if (!suffix && !validationIcon) {\n return null;\n }\n\n return (\n <>\n {suffix}\n {validationIcon}\n </>\n );\n }, [suffix, validationIcon]);\n\n let selectField = (\n <SelectWrapperElement\n mods={modifiers}\n styles={styles}\n data-size={size}\n data-type={type}\n data-theme={theme}\n >\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n <Item\n as=\"button\"\n qa={qa || 'Select'}\n data-input-type=\"select\"\n {...mergeProps(buttonProps, hoverProps, focusProps)}\n ref={triggerRef}\n data-popover-trigger\n styles={{ ...inputStyles, ...triggerStyles }}\n theme={theme}\n size={size}\n shape={shape}\n // Ensure this button never submits a surrounding form in tests or runtime\n htmlType=\"button\"\n // Preserve visual variant via data attribute instead of conflicting with HTML attribute\n type={type}\n mods={modifiers}\n prefix={prefix}\n suffix={suffix}\n icon={icon}\n rightIcon={\n rightIcon !== undefined ? (\n rightIcon\n ) : showClearButton ? (\n <ItemActionProvider\n type={type}\n theme={getValidationTheme(theme, { isInvalid, isValid })}\n >\n <ItemAction\n icon={<CloseIcon />}\n qa=\"SelectClearButton\"\n mods={{ pressed: false }}\n onPress={clearValue}\n />\n </ItemActionProvider>\n ) : isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={state.isOpen ? 'up' : 'down'} />\n )\n }\n description={triggerDescription}\n descriptionPlacement={descriptionPlacement}\n hotkeys={hotkeys}\n tooltip={tooltip}\n labelProps={valueProps}\n >\n {state.selectedItem ? (\n state.selectedItem.rendered\n ) : placeholder ? (\n <Text.Placeholder>{placeholder}</Text.Placeholder>\n ) : null}\n </Item>\n <ListBoxPopup\n {...menuProps}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n overlayProps={overlayProps}\n placement={placement}\n state={state}\n listBoxStyles={listBoxStyles}\n overlayStyles={overlayStyles}\n optionStyles={optionStyles}\n minWidth={triggerWidth}\n triggerRef={triggerRef}\n isDisabled={isDisabled}\n />\n </SelectWrapperElement>\n );\n\n return wrapWithField<Omit<CubeSelectProps<T>, 'children'>>(\n selectField,\n ref,\n mergeProps(\n {\n ...props,\n },\n { labelProps },\n ),\n );\n}\n\nexport function ListBoxPopup({\n state,\n popoverRef,\n listBoxRef,\n listBoxStyles,\n overlayStyles,\n optionStyles,\n overlayProps: parentOverlayProps,\n shouldUseVirtualFocus = false,\n placement,\n minWidth,\n size = 'small',\n triggerRef,\n isDisabled,\n ...otherProps\n}) {\n // For trigger+popover components, map 'small' size to 'medium' for list items\n // while preserving 'medium' and 'large' sizes\n const listItemSize = size === 'small' ? 'medium' : size;\n\n // Get props for the listbox\n let { listBoxProps } = useListBox(\n {\n autoFocus: state.focusStrategy || true,\n shouldUseVirtualFocus,\n ...otherProps,\n },\n state,\n listBoxRef,\n );\n\n // Handle events that should cause the popup to close,\n // e.g. blur, clicking outside, or pressing the escape key.\n let { overlayProps } = useOverlay(\n {\n onClose: () => state.close(),\n shouldCloseOnBlur: true,\n isOpen: state.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(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // If the same trigger that opened this select was clicked, allow closing\n if (menuTriggerEl === triggerRef?.current) return true;\n // Otherwise, don't close (let event mechanism handle it)\n return false;\n },\n },\n popoverRef,\n );\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || 'bottom';\n\n // Wrap in <FocusScope> so that focus is restored back to the\n // trigger when the popup is closed. In addition, add hidden\n // <DismissButton> components at the start and end of the list\n // to allow screen reader users to dismiss the popup easily.\n //\n // `autoFocus` is required because `ListBoxPopup` is rendered\n // unconditionally (not gated on `state.isOpen`), so by the time the\n // popover actually opens, react-aria's `useSelectableCollection`\n // autoFocus has already been consumed (its useRef captures the\n // initial value on mount, when the listbox isn't in the DOM yet).\n // Setting `autoFocus` on the FocusScope itself runs each time the\n // FocusScope mounts (every time the popover opens, since the inner\n // tree is unmounted between opens) and explicitly focuses the\n // first tabbable element (the listbox). This also registers the\n // FocusScope as the active scope, so an outer contained Dialog\n // FocusScope (e.g. a popover Dialog wrapping the Select) correctly\n // recognises focus moving into the Select popover and doesn't yank\n // it back to the trigger.\n return (\n <Portal>\n <DisplayTransition isShown={state.isOpen && !isDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <SelectOverlayWrapper\n {...overlayProps}\n {...parentOverlayProps}\n ref={popoverRef}\n style={parentOverlayProps?.style}\n >\n <OverlayElement\n ref={transitionRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': minWidth ? `${minWidth}px` : 'initial',\n }}\n >\n <FocusScope autoFocus restoreFocus>\n <DismissButton onDismiss={() => state.close()} />\n {(() => {\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n for (const item of state.collection) {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <ListDivider\n key={`divider-${String(item.key)}`}\n as=\"li\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <SelectSection\n key={item.key}\n item={item}\n state={state}\n optionStyles={optionStyles}\n sectionStyles={undefined}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n\n isFirstSection = false;\n } else {\n renderedItems.push(\n <Option\n key={item.key}\n item={item}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={listItemSize}\n />,\n );\n }\n }\n\n return (\n <ListBoxElement\n styles={listBoxStyles}\n {...listBoxProps}\n ref={listBoxRef}\n >\n {renderedItems}\n </ListBoxElement>\n );\n })()}\n <DismissButton onDismiss={() => state.close()} />\n </FocusScope>\n </OverlayElement>\n </SelectOverlayWrapper>\n )}\n </DisplayTransition>\n </Portal>\n );\n}\n\nfunction Option({ item, state, styles, shouldUseVirtualFocus, size }) {\n let ref = useRef<HTMLLIElement>(null);\n let isDisabled = state.disabledKeys.has(item.key);\n let isSelected = state.selectionManager.isSelected(item.key);\n let isVirtualFocused = state.selectionManager.focusedKey === item.key;\n\n let { optionProps, isPressed, labelProps, descriptionProps } = useOption(\n {\n key: item.key,\n isDisabled,\n isSelected,\n shouldSelectOnPressUp: true,\n shouldFocusOnHover: true,\n shouldUseVirtualFocus,\n },\n state,\n ref,\n );\n\n // Handle focus events, so we can apply highlighted\n // style to the focused option\n let { isFocused, focusProps } = useFocus({ isDisabled });\n\n // Filter out service props - all remaining props can be passed to Item\n const filteredItemProps = filterCollectionItemProps(item.props);\n\n return (\n <OptionItem\n {...mergeProps(optionProps, focusProps, filteredItemProps)}\n ref={ref}\n mods={{\n listboxitem: true,\n selected: isSelected,\n focused: shouldUseVirtualFocus ? isVirtualFocused : isFocused,\n disabled: isDisabled,\n pressed: isPressed,\n }}\n data-size={size}\n styles={{\n ...(styles as Styles),\n ...(filteredItemProps.styles as Styles),\n }}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n defaultTooltipPlacement=\"right\"\n >\n {item.rendered}\n </OptionItem>\n );\n}\n\ninterface SelectSectionProps<T> {\n item: any; // react-stately Node<T>\n state: any; // TreeState<T>\n optionStyles?: Styles;\n headingStyles?: Styles;\n sectionStyles?: Styles;\n shouldUseVirtualFocus?: boolean;\n size?: string;\n}\n\nfunction SelectSection<T>(props: SelectSectionProps<T>) {\n const {\n item,\n state,\n optionStyles,\n headingStyles,\n sectionStyles,\n shouldUseVirtualFocus,\n size,\n } = props;\n\n const heading = item.rendered;\n\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <ListSectionWrapper {...itemProps} styles={sectionStyles}>\n {heading && (\n <ListSectionHeading\n {...headingProps}\n size={size}\n styles={{ ...headingStyles, '$inline-compensation': '0px' }}\n >\n {heading}\n </ListSectionHeading>\n )}\n <ListBoxElement {...groupProps} mods={{ section: true }}>\n {[...item.childNodes]\n .filter((node: any) => state.collection.getItem(node.key))\n .map((node: any) => (\n <Option\n key={node.key}\n item={node}\n state={state}\n styles={optionStyles}\n shouldUseVirtualFocus={shouldUseVirtualFocus}\n size={size}\n />\n ))}\n </ListBoxElement>\n </ListSectionWrapper>\n );\n}\n\nconst _Select = forwardRefWithGenerics(Select);\n\n(_Select as any).cubeInputType = 'Select';\n\ntype SectionComponent = typeof BaseSection;\n\nconst SelectSectionComponent = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\nconst __Select = Object.assign(\n _Select as typeof _Select & {\n Item: typeof CollectionItem;\n Section: typeof SelectSectionComponent;\n },\n {\n Item: CollectionItem,\n Section: SelectSectionComponent,\n },\n);\n\n(__Select as any).displayName = 'Select';\n\nexport { __Select as Select };\n\nexport type { AriaSelectProps };\nexport { useSelectState };\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.148.0 | Cube Dev Team */
|
|
2
2
|
import { __Slider } from "./Slider.js";
|
|
3
3
|
import { forwardRef, useCallback, useMemo, useState } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
2
|
import { Gradation } from "./Gradation.js";
|
|
3
3
|
import { _SliderBase } from "./SliderBase.js";
|
|
4
4
|
import { SliderThumb } from "./SliderThumb.js";
|
|
@@ -18,7 +18,7 @@ function RangeSlider(props, ref) {
|
|
|
18
18
|
return /* @__PURE__ */ jsx(_SliderBase, {
|
|
19
19
|
ref,
|
|
20
20
|
...otherProps,
|
|
21
|
-
children: ({ trackRef, inputRef, state }) => {
|
|
21
|
+
children: ({ trackRef, inputRef, state, isInvalid, isValid }) => {
|
|
22
22
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
23
23
|
/* @__PURE__ */ jsx(Gradation, {
|
|
24
24
|
state,
|
|
@@ -28,6 +28,8 @@ function RangeSlider(props, ref) {
|
|
|
28
28
|
/* @__PURE__ */ jsx(SliderTrack, {
|
|
29
29
|
state,
|
|
30
30
|
isDisabled,
|
|
31
|
+
isInvalid,
|
|
32
|
+
isValid,
|
|
31
33
|
orientation: props.orientation
|
|
32
34
|
}),
|
|
33
35
|
/* @__PURE__ */ jsx(SliderThumb, {
|
|
@@ -36,7 +38,9 @@ function RangeSlider(props, ref) {
|
|
|
36
38
|
state,
|
|
37
39
|
inputRef: minThumbInputRef,
|
|
38
40
|
trackRef,
|
|
39
|
-
isDisabled
|
|
41
|
+
isDisabled,
|
|
42
|
+
isInvalid,
|
|
43
|
+
isValid
|
|
40
44
|
}),
|
|
41
45
|
/* @__PURE__ */ jsx(SliderThumb, {
|
|
42
46
|
index: 1,
|
|
@@ -44,7 +48,9 @@ function RangeSlider(props, ref) {
|
|
|
44
48
|
state,
|
|
45
49
|
inputRef: maxThumbInputRef,
|
|
46
50
|
trackRef,
|
|
47
|
-
isDisabled
|
|
51
|
+
isDisabled,
|
|
52
|
+
isInvalid,
|
|
53
|
+
isValid
|
|
48
54
|
})
|
|
49
55
|
] });
|
|
50
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeSlider.js","names":["SliderBase"],"sources":["../../../../src/components/fields/Slider/RangeSlider.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react';\n\nimport { Gradation } from './Gradation';\nimport { SliderBase, SliderBaseChildArguments } from './SliderBase';\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { RangeValue } from '../../../shared';\nimport type { CubeSliderBaseProps } from './types';\n\nexport interface CubeRangeSliderProps\n extends CubeSliderBaseProps<RangeValue<number>> {\n gradation?: string[];\n}\n\nconst INTL_MESSAGES = {\n minimum: 'Minimum',\n maximum: 'Maximum',\n};\n\nfunction RangeSlider(\n props: CubeRangeSliderProps,\n ref: FocusableRef<HTMLDivElement>,\n) {\n let { isDisabled, styles, gradation, ...otherProps } = props;\n\n // Create separate refs for each thumb to enable proper focus management\n const minThumbInputRef = useRef<HTMLInputElement>(null);\n const maxThumbInputRef = useRef<HTMLInputElement>(null);\n\n return (\n <SliderBase ref={ref} {...(otherProps as CubeSliderBaseProps<number[]>)}>\n {({
|
|
1
|
+
{"version":3,"file":"RangeSlider.js","names":["SliderBase"],"sources":["../../../../src/components/fields/Slider/RangeSlider.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react';\n\nimport { Gradation } from './Gradation';\nimport { SliderBase, SliderBaseChildArguments } from './SliderBase';\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { RangeValue } from '../../../shared';\nimport type { CubeSliderBaseProps } from './types';\n\nexport interface CubeRangeSliderProps\n extends CubeSliderBaseProps<RangeValue<number>> {\n gradation?: string[];\n}\n\nconst INTL_MESSAGES = {\n minimum: 'Minimum',\n maximum: 'Maximum',\n};\n\nfunction RangeSlider(\n props: CubeRangeSliderProps,\n ref: FocusableRef<HTMLDivElement>,\n) {\n let { isDisabled, styles, gradation, ...otherProps } = props;\n\n // Create separate refs for each thumb to enable proper focus management\n const minThumbInputRef = useRef<HTMLInputElement>(null);\n const maxThumbInputRef = useRef<HTMLInputElement>(null);\n\n return (\n <SliderBase ref={ref} {...(otherProps as CubeSliderBaseProps<number[]>)}>\n {({\n trackRef,\n inputRef,\n state,\n isInvalid,\n isValid,\n }: SliderBaseChildArguments) => {\n return (\n <>\n <Gradation state={state} ranges={[0, 1]} values={gradation} />\n <SliderTrack\n state={state}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n orientation={props.orientation}\n />\n <SliderThumb\n index={0}\n aria-label={INTL_MESSAGES['minimum']}\n state={state}\n inputRef={minThumbInputRef}\n trackRef={trackRef}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n />\n <SliderThumb\n index={1}\n aria-label={INTL_MESSAGES['maximum']}\n state={state}\n inputRef={maxThumbInputRef}\n trackRef={trackRef}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n />\n </>\n );\n }}\n </SliderBase>\n );\n}\n\nconst _RangeSlider = forwardRef(RangeSlider);\n\nconst __RangeSlider = Object.assign(_RangeSlider as typeof _RangeSlider, {\n cubeInputType: 'Number',\n displayName: 'RangeSlider',\n});\n\nexport { __RangeSlider as RangeSlider };\n"],"mappings":";;;;;;;;;AAgBA,MAAM,gBAAgB;CACpB,SAAS;CACT,SAAS;CACV;AAED,SAAS,YACP,OACA,KACA;CACA,IAAI,EAAE,YAAY,QAAQ,WAAW,GAAG,eAAe;CAGvD,MAAM,mBAAmB,OAAyB,KAAK;CACvD,MAAM,mBAAmB,OAAyB,KAAK;AAEvD,QACE,oBAACA;EAAgB;EAAK,GAAK;aACvB,EACA,UACA,UACA,OACA,WACA,cAC8B;AAC9B,UACE;IACE,oBAAC;KAAiB;KAAO,QAAQ,CAAC,GAAG,EAAE;KAAE,QAAQ;MAAa;IAC9D,oBAAC;KACQ;KACK;KACD;KACF;KACT,aAAa,MAAM;MACnB;IACF,oBAAC;KACC,OAAO;KACP,cAAY,cAAc;KACnB;KACP,UAAU;KACA;KACE;KACD;KACF;MACT;IACF,oBAAC;KACC,OAAO;KACP,cAAY,cAAc;KACnB;KACP,UAAU;KACA;KACE;KACD;KACF;MACT;OACD;;GAGI;;AAIjB,MAAM,eAAe,WAAW,YAAY;AAE5C,MAAM,gBAAgB,OAAO,OAAO,cAAqC;CACvE,eAAe;CACf,aAAa;CACd,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { Gradation } from "./Gradation.js";
|
|
@@ -30,7 +30,7 @@ function Slider(props, ref) {
|
|
|
30
30
|
ref,
|
|
31
31
|
orientation,
|
|
32
32
|
styles: extractedStyles,
|
|
33
|
-
children: ({ trackRef, inputRef, state }) => {
|
|
33
|
+
children: ({ trackRef, inputRef, state, isInvalid, isValid }) => {
|
|
34
34
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
35
35
|
/* @__PURE__ */ jsx(Gradation, {
|
|
36
36
|
state,
|
|
@@ -40,6 +40,8 @@ function Slider(props, ref) {
|
|
|
40
40
|
/* @__PURE__ */ jsx(SliderTrack, {
|
|
41
41
|
state,
|
|
42
42
|
isDisabled,
|
|
43
|
+
isInvalid,
|
|
44
|
+
isValid,
|
|
43
45
|
orientation,
|
|
44
46
|
styles: trackStyles
|
|
45
47
|
}),
|
|
@@ -49,6 +51,8 @@ function Slider(props, ref) {
|
|
|
49
51
|
inputRef,
|
|
50
52
|
trackRef,
|
|
51
53
|
isDisabled,
|
|
54
|
+
isInvalid,
|
|
55
|
+
isValid,
|
|
52
56
|
styles: thumbStyles,
|
|
53
57
|
tokens: thumbTokens
|
|
54
58
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","names":["SliderBase"],"sources":["../../../../src/components/fields/Slider/Slider.tsx"],"sourcesContent":["import { OUTER_STYLES, Styles, Tokens } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { mergeProps } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { Gradation } from './Gradation';\nimport {\n SliderBase,\n SliderBaseChildArguments,\n SliderBaseProps,\n} from './SliderBase';\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { CubeSliderBaseProps } from './types';\n\nexport interface CubeSliderProps extends CubeSliderBaseProps<number> {\n gradation?: string[];\n /** Custom styles for the track element */\n trackStyles?: Styles;\n /** Custom styles for the thumb element */\n thumbStyles?: Styles;\n /** Custom tokens for the thumb element (e.g., #slider-thumb for fill color) */\n thumbTokens?: Tokens;\n}\n\nfunction Slider(props: CubeSliderProps, ref: FocusableRef<HTMLDivElement>) {\n const {\n onChange,\n onChangeEnd,\n value,\n defaultValue,\n getValueLabel,\n isDisabled,\n styles,\n gradation,\n orientation,\n trackStyles,\n thumbStyles,\n thumbTokens,\n ...otherProps\n } = props;\n\n let baseProps: Omit<SliderBaseProps, 'children'> = {\n ...otherProps,\n // Normalize `value: number[]` to `value: number`\n value: value != null ? [value] : undefined,\n defaultValue: defaultValue != null ? [defaultValue] : undefined,\n onChange: (v: number[]): void => {\n onChange?.(v[0]);\n },\n onChangeEnd: (v: number[]): void => {\n onChangeEnd?.(v[0]);\n },\n getValueLabel: getValueLabel ? ([v]) => getValueLabel(v) : undefined,\n };\n\n const extractedStyles = extractStyles(otherProps, OUTER_STYLES, styles);\n\n return (\n <SliderBase\n {...mergeProps(otherProps, baseProps)}\n ref={ref}\n orientation={orientation}\n styles={extractedStyles}\n >\n {({
|
|
1
|
+
{"version":3,"file":"Slider.js","names":["SliderBase"],"sources":["../../../../src/components/fields/Slider/Slider.tsx"],"sourcesContent":["import { OUTER_STYLES, Styles, Tokens } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { mergeProps } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { Gradation } from './Gradation';\nimport {\n SliderBase,\n SliderBaseChildArguments,\n SliderBaseProps,\n} from './SliderBase';\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { CubeSliderBaseProps } from './types';\n\nexport interface CubeSliderProps extends CubeSliderBaseProps<number> {\n gradation?: string[];\n /** Custom styles for the track element */\n trackStyles?: Styles;\n /** Custom styles for the thumb element */\n thumbStyles?: Styles;\n /** Custom tokens for the thumb element (e.g., #slider-thumb for fill color) */\n thumbTokens?: Tokens;\n}\n\nfunction Slider(props: CubeSliderProps, ref: FocusableRef<HTMLDivElement>) {\n const {\n onChange,\n onChangeEnd,\n value,\n defaultValue,\n getValueLabel,\n isDisabled,\n styles,\n gradation,\n orientation,\n trackStyles,\n thumbStyles,\n thumbTokens,\n ...otherProps\n } = props;\n\n let baseProps: Omit<SliderBaseProps, 'children'> = {\n ...otherProps,\n // Normalize `value: number[]` to `value: number`\n value: value != null ? [value] : undefined,\n defaultValue: defaultValue != null ? [defaultValue] : undefined,\n onChange: (v: number[]): void => {\n onChange?.(v[0]);\n },\n onChangeEnd: (v: number[]): void => {\n onChangeEnd?.(v[0]);\n },\n getValueLabel: getValueLabel ? ([v]) => getValueLabel(v) : undefined,\n };\n\n const extractedStyles = extractStyles(otherProps, OUTER_STYLES, styles);\n\n return (\n <SliderBase\n {...mergeProps(otherProps, baseProps)}\n ref={ref}\n orientation={orientation}\n styles={extractedStyles}\n >\n {({\n trackRef,\n inputRef,\n state,\n isInvalid,\n isValid,\n }: SliderBaseChildArguments) => {\n return (\n <>\n <Gradation state={state} ranges={[0, 1]} values={gradation} />\n <SliderTrack\n state={state}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n orientation={orientation}\n styles={trackStyles}\n />\n <SliderThumb\n index={0}\n state={state}\n inputRef={inputRef}\n trackRef={trackRef}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n styles={thumbStyles}\n tokens={thumbTokens}\n />\n </>\n );\n }}\n </SliderBase>\n );\n}\n\nconst _Slider = forwardRef(Slider);\n\nconst __Slider = Object.assign(_Slider as typeof _Slider, {\n cubeInputType: 'Number',\n displayName: 'Slider',\n});\n\nexport { __Slider as Slider };\n"],"mappings":";;;;;;;;;;;;AA4BA,SAAS,OAAO,OAAwB,KAAmC;CACzE,MAAM,EACJ,UACA,aACA,OACA,cACA,eACA,YACA,QACA,WACA,aACA,aACA,aACA,aACA,GAAG,eACD;CAEJ,IAAI,YAA+C;EACjD,GAAG;EAEH,OAAO,SAAS,OAAO,CAAC,MAAM,GAAG;EACjC,cAAc,gBAAgB,OAAO,CAAC,aAAa,GAAG;EACtD,WAAW,MAAsB;AAC/B,cAAW,EAAE,GAAG;;EAElB,cAAc,MAAsB;AAClC,iBAAc,EAAE,GAAG;;EAErB,eAAe,iBAAiB,CAAC,OAAO,cAAc,EAAE,GAAG;EAC5D;CAED,MAAM,kBAAkB,cAAc,YAAY,cAAc,OAAO;AAEvE,QACE,oBAACA;EACC,GAAI,WAAW,YAAY,UAAU;EAChC;EACQ;EACb,QAAQ;aAEN,EACA,UACA,UACA,OACA,WACA,cAC8B;AAC9B,UACE;IACE,oBAAC;KAAiB;KAAO,QAAQ,CAAC,GAAG,EAAE;KAAE,QAAQ;MAAa;IAC9D,oBAAC;KACQ;KACK;KACD;KACF;KACI;KACb,QAAQ;MACR;IACF,oBAAC;KACC,OAAO;KACA;KACG;KACA;KACE;KACD;KACF;KACT,QAAQ;KACR,QAAQ;MACR;OACD;;GAGI;;AAIjB,MAAM,UAAU,WAAW,OAAO;AAElC,MAAM,WAAW,OAAO,OAAO,SAA2B;CACxD,eAAe;CACf,aAAa;CACd,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { forwardRefWithGenerics } from "../../../utils/react/forwardRefWithGenerics.js";
|
|
4
4
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
5
5
|
import { _Text } from "../../content/Text.js";
|
|
6
|
-
import {
|
|
6
|
+
import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
|
|
7
7
|
import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
|
|
8
8
|
import { wrapWithField } from "../../form/wrapper.js";
|
|
9
9
|
import { SliderControlsElement, SliderElement } from "./elements.js";
|
|
@@ -20,15 +20,14 @@ const LabelValueElement = tasty(_Text, { styles: {
|
|
|
20
20
|
textAlign: "right"
|
|
21
21
|
} });
|
|
22
22
|
function SliderBase(allProps, ref) {
|
|
23
|
-
let props =
|
|
24
|
-
props = useFieldProps(props, {
|
|
23
|
+
let props = useFieldProps(allProps, {
|
|
25
24
|
defaultValidationTrigger: "onChange",
|
|
26
25
|
valuePropsMapper: ({ value, onChange }) => ({
|
|
27
26
|
value: value != null ? value : void 0,
|
|
28
27
|
onChange
|
|
29
28
|
})
|
|
30
29
|
});
|
|
31
|
-
let { labelPosition, label, extra, styles, isRequired,
|
|
30
|
+
let { labelPosition, label, extra, styles, isRequired, message, description, requiredMark, labelSuffix, labelStyles, necessityIndicator, gradation, isDisabled, isInvalid, isValid, inputStyles, minValue = 0, maxValue = 100, inputWidth, formatOptions, getValueLabel, onChange, onChangeEnd, children, showValueLabel = true, orientation: formOrientation, form, labelProps: userLabelProps, ...otherProps } = props;
|
|
32
31
|
let orientation = allProps.orientation || "horizontal";
|
|
33
32
|
if (Math.abs(Math.sign(minValue) - Math.sign(maxValue)) === 2) if (formatOptions != null) {
|
|
34
33
|
if (!("signDisplay" in formatOptions)) formatOptions = {
|
|
@@ -84,8 +83,17 @@ function SliderBase(allProps, ref) {
|
|
|
84
83
|
});
|
|
85
84
|
const mods = useMemo(() => ({
|
|
86
85
|
"side-label": labelPosition === "side",
|
|
87
|
-
horizontal: orientation === "horizontal"
|
|
88
|
-
|
|
86
|
+
horizontal: orientation === "horizontal",
|
|
87
|
+
...getValidationMods({
|
|
88
|
+
isInvalid,
|
|
89
|
+
isValid
|
|
90
|
+
})
|
|
91
|
+
}), [
|
|
92
|
+
labelPosition,
|
|
93
|
+
orientation,
|
|
94
|
+
isInvalid,
|
|
95
|
+
isValid
|
|
96
|
+
]);
|
|
89
97
|
styles = extractStyles(otherProps, OUTER_STYLES, styles);
|
|
90
98
|
return wrapWithField(/* @__PURE__ */ jsx(SliderElement, {
|
|
91
99
|
ref: domRef,
|
|
@@ -101,7 +109,9 @@ function SliderBase(allProps, ref) {
|
|
|
101
109
|
children: children({
|
|
102
110
|
trackRef,
|
|
103
111
|
inputRef,
|
|
104
|
-
state
|
|
112
|
+
state,
|
|
113
|
+
isInvalid,
|
|
114
|
+
isValid
|
|
105
115
|
})
|
|
106
116
|
})
|
|
107
117
|
}), ref, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderBase.js","names":["Text","mergeProps"],"sources":["../../../../src/components/fields/Slider/SliderBase.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { DOMRef, FocusableRef } from '@react-types/shared';\nimport { OUTER_STYLES, tasty } from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n} from 'react';\nimport { useNumberFormatter, useSlider } from 'react-aria';\nimport { useSliderState } from 'react-stately';\n\nimport { forwardRefWithGenerics, mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport {
|
|
1
|
+
{"version":3,"file":"SliderBase.js","names":["Text","mergeProps"],"sources":["../../../../src/components/fields/Slider/SliderBase.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { DOMRef, FocusableRef } from '@react-types/shared';\nimport { OUTER_STYLES, tasty } from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n} from 'react';\nimport { useNumberFormatter, useSlider } from 'react-aria';\nimport { useSliderState } from 'react-stately';\n\nimport { forwardRefWithGenerics, mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport { getValidationMods, useFieldProps, wrapWithField } from '../../form';\n\nimport { SliderControlsElement, SliderElement } from './elements';\n\nimport type { SliderState } from 'react-stately';\nimport type { CubeSliderBaseProps } from './types';\n\nexport interface SliderBaseChildArguments {\n inputRef: RefObject<HTMLInputElement | null>;\n trackRef: RefObject<HTMLElement | null>;\n state: SliderState;\n /** Resolved validation state. It is only known here, after `useFieldProps` merged the form state in. */\n isInvalid?: boolean;\n isValid?: boolean;\n}\n\nexport interface SliderBaseProps<T = number[]> extends CubeSliderBaseProps<T> {\n children: (opts: SliderBaseChildArguments) => ReactNode;\n}\n\nconst LabelValueElement = tasty(Text, {\n styles: {\n display: 'block',\n textAlign: 'right',\n },\n});\n\nfunction SliderBase(allProps: SliderBaseProps, ref: DOMRef<HTMLDivElement>) {\n let props = useFieldProps(allProps, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : undefined,\n onChange: onChange,\n }),\n });\n\n let {\n labelPosition,\n label,\n extra,\n styles,\n isRequired,\n message,\n description,\n requiredMark,\n labelSuffix,\n labelStyles,\n necessityIndicator,\n gradation,\n isDisabled,\n isInvalid,\n isValid,\n inputStyles,\n minValue = 0,\n maxValue = 100,\n inputWidth,\n formatOptions,\n getValueLabel,\n onChange,\n onChangeEnd,\n children,\n showValueLabel = true,\n orientation: formOrientation,\n form,\n labelProps: userLabelProps,\n ...otherProps\n } = props;\n\n let orientation = allProps.orientation || 'horizontal';\n\n // `Math.abs(Math.sign(a) - Math.sign(b)) === 2` is true if the values have a different sign.\n let alwaysDisplaySign =\n Math.abs(Math.sign(minValue) - Math.sign(maxValue)) === 2;\n if (alwaysDisplaySign) {\n if (formatOptions != null) {\n if (!('signDisplay' in formatOptions)) {\n formatOptions = {\n ...formatOptions,\n signDisplay: 'exceptZero',\n };\n }\n } else {\n formatOptions = { signDisplay: 'exceptZero' };\n }\n }\n\n const formatter = useNumberFormatter(formatOptions);\n\n const state = useSliderState({\n ...props,\n orientation,\n numberFormatter: formatter,\n minValue,\n maxValue,\n });\n\n const trackRef = useRef<HTMLElement>(null);\n\n let { groupProps, trackProps, labelProps, outputProps } = useSlider(\n props,\n state,\n trackRef,\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n let domRef = useFocusableRef(ref as any, inputRef);\n\n let displayValue = '';\n let maxLabelLength = 0;\n\n if (typeof getValueLabel === 'function') {\n displayValue = getValueLabel(state.values);\n switch (state.values.length) {\n case 1:\n maxLabelLength = Math.max(\n getValueLabel([minValue]).length,\n getValueLabel([maxValue]).length,\n );\n break;\n case 2:\n // Try all possible combinations of min and max values.\n maxLabelLength = Math.max(\n getValueLabel([minValue, minValue]).length,\n getValueLabel([minValue, maxValue]).length,\n getValueLabel([maxValue, minValue]).length,\n getValueLabel([maxValue, maxValue]).length,\n );\n break;\n default:\n throw new Error('Only sliders with 1 or 2 handles are supported!');\n }\n } else {\n maxLabelLength = Math.max(\n [...formatter.format(minValue)].length,\n [...formatter.format(maxValue)].length,\n );\n switch (state.values.length) {\n case 1:\n displayValue = state.getThumbValueLabel(0);\n break;\n case 2:\n // This should really use the NumberFormat#formatRange proposal...\n // https://github.com/tc39/ecma402/issues/393\n // https://github.com/tc39/proposal-intl-numberformat-v3#formatrange-ecma-402-393\n displayValue = `${state.getThumbValueLabel(\n 0,\n )} – ${state.getThumbValueLabel(1)}`;\n maxLabelLength =\n 3 +\n 2 *\n Math.max(\n maxLabelLength,\n [...formatter.format(minValue)].length,\n [...formatter.format(maxValue)].length,\n );\n break;\n default:\n throw new Error('Only sliders with 1 or 2 handles are supported!');\n }\n }\n\n extra =\n extra != null || !showValueLabel ? (\n extra\n ) : (\n <LabelValueElement\n {...outputProps}\n style={\n maxLabelLength\n ? {\n width: `${maxLabelLength + 1}ch`,\n minWidth: `${maxLabelLength + 1}ch`,\n }\n : undefined\n }\n >\n {displayValue}\n </LabelValueElement>\n );\n\n const mods = useMemo(\n () => ({\n 'side-label': labelPosition === 'side',\n horizontal: orientation === 'horizontal',\n ...getValidationMods({ isInvalid, isValid }),\n }),\n [labelPosition, orientation, isInvalid, isValid],\n );\n\n styles = extractStyles(otherProps, OUTER_STYLES, styles);\n\n const sliderField = (\n <SliderElement\n ref={domRef}\n id={props.id}\n {...groupProps}\n mods={mods}\n styles={styles}\n data-input-type=\"slider\"\n >\n <SliderControlsElement {...trackProps} ref={trackRef} mods={mods}>\n {children({\n trackRef,\n inputRef,\n state,\n isInvalid,\n isValid,\n })}\n </SliderControlsElement>\n </SliderElement>\n );\n\n return wrapWithField(sliderField, ref, {\n ...props,\n extra,\n labelProps: mergeProps(labelProps, userLabelProps),\n });\n}\n\nconst _SliderBase = forwardRefWithGenerics(SliderBase);\n\n(_SliderBase as any).displayName = 'SliderBase';\n\nexport { _SliderBase as SliderBase };\nexport { useSlider };\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
|
+
import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
|
|
3
4
|
import { SliderThumbElement } from "./elements.js";
|
|
4
5
|
import { useMemo, useRef } from "react";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -7,7 +8,7 @@ import { VisuallyHidden, useHover, useSliderThumb } from "react-aria";
|
|
|
7
8
|
|
|
8
9
|
//#region src/components/fields/Slider/SliderThumb.tsx
|
|
9
10
|
function SliderThumb(props) {
|
|
10
|
-
let { state, index, inputRef, isDisabled, styles, tokens } = props;
|
|
11
|
+
let { state, index, inputRef, isDisabled, isInvalid, isValid, styles, tokens } = props;
|
|
11
12
|
const backupRef = useRef(null);
|
|
12
13
|
inputRef = inputRef || backupRef;
|
|
13
14
|
const { thumbProps, inputProps, isDragging, isFocused } = useSliderThumb({
|
|
@@ -25,7 +26,11 @@ function SliderThumb(props) {
|
|
|
25
26
|
focused: !isDragging && isFocused,
|
|
26
27
|
disabled: isDisabled,
|
|
27
28
|
collapsed: isCollapsed,
|
|
28
|
-
stuck: isStuck
|
|
29
|
+
stuck: isStuck,
|
|
30
|
+
...getValidationMods({
|
|
31
|
+
isInvalid,
|
|
32
|
+
isValid
|
|
33
|
+
})
|
|
29
34
|
};
|
|
30
35
|
}, [
|
|
31
36
|
isHovered,
|
|
@@ -33,7 +38,9 @@ function SliderThumb(props) {
|
|
|
33
38
|
isStuck,
|
|
34
39
|
isDragging,
|
|
35
40
|
isFocused,
|
|
36
|
-
isDisabled
|
|
41
|
+
isDisabled,
|
|
42
|
+
isInvalid,
|
|
43
|
+
isValid
|
|
37
44
|
]),
|
|
38
45
|
styles,
|
|
39
46
|
tokens,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderThumb.js","names":["mergeProps"],"sources":["../../../../src/components/fields/Slider/SliderThumb.tsx"],"sourcesContent":["import { Styles, Tokens } from '@tenphi/tasty';\nimport { RefObject, useMemo, useRef } from 'react';\nimport {\n AriaSliderThumbOptions,\n useHover,\n useSliderThumb,\n VisuallyHidden,\n} from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\n\nimport { SliderThumbElement } from './elements';\n\nimport type { SliderState } from 'react-stately';\n\nexport interface SliderThumbProps extends AriaSliderThumbOptions {\n state: SliderState;\n isDisabled?: boolean;\n trackRef: RefObject<HTMLElement | null>;\n inputRef: RefObject<HTMLInputElement | null>;\n index: number;\n styles?: Styles;\n tokens?: Tokens;\n}\n\nexport function SliderThumb(props: SliderThumbProps) {\n let {
|
|
1
|
+
{"version":3,"file":"SliderThumb.js","names":["mergeProps"],"sources":["../../../../src/components/fields/Slider/SliderThumb.tsx"],"sourcesContent":["import { Styles, Tokens } from '@tenphi/tasty';\nimport { RefObject, useMemo, useRef } from 'react';\nimport {\n AriaSliderThumbOptions,\n useHover,\n useSliderThumb,\n VisuallyHidden,\n} from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\nimport { getValidationMods } from '../../form';\n\nimport { SliderThumbElement } from './elements';\n\nimport type { SliderState } from 'react-stately';\n\nexport interface SliderThumbProps extends AriaSliderThumbOptions {\n state: SliderState;\n isDisabled?: boolean;\n isInvalid?: boolean;\n isValid?: boolean;\n trackRef: RefObject<HTMLElement | null>;\n inputRef: RefObject<HTMLInputElement | null>;\n index: number;\n styles?: Styles;\n tokens?: Tokens;\n}\n\nexport function SliderThumb(props: SliderThumbProps) {\n let {\n state,\n index,\n inputRef,\n isDisabled,\n isInvalid,\n isValid,\n styles,\n tokens,\n } = props;\n\n const backupRef = useRef<HTMLInputElement>(null);\n\n inputRef = inputRef || backupRef;\n\n const { thumbProps, inputProps, isDragging, isFocused } = useSliderThumb(\n {\n ...props,\n inputRef,\n },\n state,\n );\n\n const { hoverProps, isHovered } = useHover({ isDisabled });\n\n const isCollapsed = state.values[0] === state.values[1];\n const isStuck =\n state.values[index] === state.getThumbMaxValue(index) &&\n state.values[index] === state.getThumbMinValue(index);\n\n const mods = useMemo(() => {\n return {\n hovered: isHovered,\n dragged: isDragging,\n focused: !isDragging && isFocused,\n disabled: isDisabled,\n collapsed: isCollapsed,\n stuck: isStuck,\n ...getValidationMods({ isInvalid, isValid }),\n };\n }, [\n isHovered,\n isCollapsed,\n isStuck,\n isDragging,\n isFocused,\n isDisabled,\n isInvalid,\n isValid,\n ]);\n\n return (\n <SliderThumbElement\n mods={mods}\n styles={styles}\n tokens={tokens}\n {...mergeProps(thumbProps, hoverProps)}\n role=\"presentation\"\n >\n <VisuallyHidden>\n <input ref={inputRef} {...inputProps} />\n </VisuallyHidden>\n </SliderThumbElement>\n );\n}\n"],"mappings":";;;;;;;;;AA4BA,SAAgB,YAAY,OAAyB;CACnD,IAAI,EACF,OACA,OACA,UACA,YACA,WACA,SACA,QACA,WACE;CAEJ,MAAM,YAAY,OAAyB,KAAK;AAEhD,YAAW,YAAY;CAEvB,MAAM,EAAE,YAAY,YAAY,YAAY,cAAc,eACxD;EACE,GAAG;EACH;EACD,EACD,MACD;CAED,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,YAAY,CAAC;CAE1D,MAAM,cAAc,MAAM,OAAO,OAAO,MAAM,OAAO;CACrD,MAAM,UACJ,MAAM,OAAO,WAAW,MAAM,iBAAiB,MAAM,IACrD,MAAM,OAAO,WAAW,MAAM,iBAAiB,MAAM;AAuBvD,QACE,oBAAC;EACC,MAvBS,cAAc;AACzB,UAAO;IACL,SAAS;IACT,SAAS;IACT,SAAS,CAAC,cAAc;IACxB,UAAU;IACV,WAAW;IACX,OAAO;IACP,GAAG,kBAAkB;KAAE;KAAW;KAAS,CAAC;IAC7C;KACA;GACD;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAKU;EACA;EACR,GAAIA,aAAW,YAAY,WAAW;EACtC,MAAK;YAEL,oBAAC,4BACC,oBAAC;GAAM,KAAK;GAAU,GAAI;IAAc,GACzB;GACE"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
|
+
import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
|
|
2
3
|
import { SliderTrackContainerElement } from "./elements.js";
|
|
3
4
|
import { useMemo } from "react";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
|
|
6
7
|
//#region src/components/fields/Slider/SliderTrack.tsx
|
|
7
8
|
function SliderTrack(props) {
|
|
8
|
-
const { isDisabled, state, orientation = "horizontal", styles } = props;
|
|
9
|
+
const { isDisabled, isInvalid, isValid, state, orientation = "horizontal", styles } = props;
|
|
9
10
|
const selectedTrack = [state.getThumbPercent(0), state.getThumbPercent(1)];
|
|
10
11
|
const showRangeTrack = !Number.isNaN(selectedTrack[1]);
|
|
11
12
|
return /* @__PURE__ */ jsx(SliderTrackContainerElement, {
|
|
12
13
|
mods: useMemo(() => ({
|
|
13
14
|
disabled: isDisabled,
|
|
14
15
|
horizontal: orientation === "horizontal",
|
|
15
|
-
range: showRangeTrack
|
|
16
|
-
|
|
16
|
+
range: showRangeTrack,
|
|
17
|
+
...getValidationMods({
|
|
18
|
+
isInvalid,
|
|
19
|
+
isValid
|
|
20
|
+
})
|
|
21
|
+
}), [
|
|
22
|
+
isDisabled,
|
|
23
|
+
showRangeTrack,
|
|
24
|
+
orientation,
|
|
25
|
+
isInvalid,
|
|
26
|
+
isValid
|
|
27
|
+
]),
|
|
17
28
|
styles,
|
|
18
29
|
style: showRangeTrack ? {
|
|
19
30
|
"--slider-range-start": `${selectedTrack[0] * 100}%`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderTrack.js","names":[],"sources":["../../../../src/components/fields/Slider/SliderTrack.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport { useMemo } from 'react';\n\nimport { SliderTrackContainerElement } from './elements';\n\nimport type { SliderState } from 'react-stately';\n\nexport type SliderTrackProps = {\n state: SliderState;\n orientation?: 'horizontal' | 'vertical';\n isDisabled?: boolean;\n styles?: Styles;\n};\n\nexport function SliderTrack(props: SliderTrackProps) {\n const {
|
|
1
|
+
{"version":3,"file":"SliderTrack.js","names":[],"sources":["../../../../src/components/fields/Slider/SliderTrack.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport { useMemo } from 'react';\n\nimport { getValidationMods } from '../../form';\n\nimport { SliderTrackContainerElement } from './elements';\n\nimport type { SliderState } from 'react-stately';\n\nexport type SliderTrackProps = {\n state: SliderState;\n orientation?: 'horizontal' | 'vertical';\n isDisabled?: boolean;\n isInvalid?: boolean;\n isValid?: boolean;\n styles?: Styles;\n};\n\nexport function SliderTrack(props: SliderTrackProps) {\n const {\n isDisabled,\n isInvalid,\n isValid,\n state,\n orientation = 'horizontal',\n styles,\n } = props;\n const selectedTrack = [state.getThumbPercent(0), state.getThumbPercent(1)];\n\n const showRangeTrack = !Number.isNaN(selectedTrack[1]);\n\n const mods = useMemo(\n () => ({\n disabled: isDisabled,\n horizontal: orientation === 'horizontal',\n range: showRangeTrack,\n ...getValidationMods({ isInvalid, isValid }),\n }),\n [isDisabled, showRangeTrack, orientation, isInvalid, isValid],\n );\n\n return (\n <SliderTrackContainerElement\n mods={mods}\n styles={styles}\n style={\n showRangeTrack\n ? {\n '--slider-range-start': `${selectedTrack[0] * 100}%`,\n '--slider-range-end': `${selectedTrack[1] * 100}%`,\n }\n : {\n '--slider-value': `${selectedTrack[0] * 100}%`,\n }\n }\n />\n );\n}\n"],"mappings":";;;;;;;AAkBA,SAAgB,YAAY,OAAyB;CACnD,MAAM,EACJ,YACA,WACA,SACA,OACA,cAAc,cACd,WACE;CACJ,MAAM,gBAAgB,CAAC,MAAM,gBAAgB,EAAE,EAAE,MAAM,gBAAgB,EAAE,CAAC;CAE1E,MAAM,iBAAiB,CAAC,OAAO,MAAM,cAAc,GAAG;AAYtD,QACE,oBAAC;EACC,MAZS,eACJ;GACL,UAAU;GACV,YAAY,gBAAgB;GAC5B,OAAO;GACP,GAAG,kBAAkB;IAAE;IAAW;IAAS,CAAC;GAC7C,GACD;GAAC;GAAY;GAAgB;GAAa;GAAW;GAAQ,CAC9D;EAKW;EACR,OACE,iBACI;GACE,wBAAwB,GAAG,cAAc,KAAK,IAAI;GAClD,sBAAsB,GAAG,cAAc,KAAK,IAAI;GACjD,GACD,EACE,kBAAkB,GAAG,cAAc,KAAK,IAAI,IAC7C;GAEP"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
|
|
2
2
|
import { tasty } from "@tenphi/tasty";
|
|
3
3
|
|
|
4
4
|
//#region src/components/fields/Slider/elements.ts
|
|
@@ -13,6 +13,8 @@ const SliderThumbElement = tasty({
|
|
|
13
13
|
"": "(#slider-thumb, #primary)",
|
|
14
14
|
hovered: "(#slider-thumb-hovered, #primary-text)",
|
|
15
15
|
dragged: "(#slider-thumb, #primary)",
|
|
16
|
+
valid: "#success",
|
|
17
|
+
invalid: "#danger",
|
|
16
18
|
disabled: "#disabled-surface-text"
|
|
17
19
|
},
|
|
18
20
|
cursor: "$pointer",
|
|
@@ -64,6 +66,8 @@ const SliderTrackContainerElement = tasty({
|
|
|
64
66
|
},
|
|
65
67
|
fill: {
|
|
66
68
|
"": "#primary",
|
|
69
|
+
valid: "#success",
|
|
70
|
+
invalid: "#danger",
|
|
67
71
|
disabled: "#disabled-surface-text"
|
|
68
72
|
},
|
|
69
73
|
width: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements.js","names":[],"sources":["../../../../src/components/fields/Slider/elements.ts"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\n\nexport const SliderThumbElement = tasty({\n qa: 'SliderThumb',\n styles: {\n top: '$slider-thumb-offset-top',\n left: '$slider-thumb-offset-left',\n width: '2x',\n height: '2x',\n fill: {\n '': '(#slider-thumb, #primary)',\n hovered: '(#slider-thumb-hovered, #primary-text)',\n dragged: '(#slider-thumb, #primary)',\n disabled: '#disabled-surface-text',\n },\n cursor: '$pointer',\n outline: {\n '': '1bw #primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n radius: '50%',\n transition: 'theme',\n zIndex: {\n '': 0,\n 'collapsed & !stuck': 1,\n },\n },\n});\n\nexport const SliderTrackContainerElement = tasty({\n qa: 'SliderTrackContainer',\n styles: {\n top: {\n '': '0',\n horizontal: '0.875x',\n },\n left: {\n '': '0.875x',\n horizontal: '0',\n },\n position: 'absolute',\n fill: '#dark-05',\n height: {\n '': 'initial 10x 100%',\n horizontal: '2px',\n },\n width: {\n '': '2px',\n horizontal: '100%',\n },\n radius: true,\n\n Fill: {\n $: '&::before',\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n inset: {\n '': 'auto 0 0 0',\n horizontal: '0 auto 0 0',\n range: 'auto 0 $slider-range-start 0',\n 'range & horizontal': '0 auto 0 $slider-range-start',\n },\n fill: {\n '': '#primary',\n disabled: '#disabled-surface-text',\n },\n width: {\n '': 'auto',\n horizontal: '$slider-value',\n range: 'auto',\n 'range & horizontal': '($slider-range-end - $slider-range-start)',\n },\n height: {\n '': '$slider-value',\n horizontal: 'auto',\n range: '($slider-range-end - $slider-range-start)',\n 'range & horizontal': 'auto',\n },\n },\n },\n});\n\nexport const SliderGradationElement = tasty({\n qa: 'SliderGradation',\n styles: {\n position: 'absolute',\n top: '2x',\n left: 0,\n right: 0,\n\n display: 'flex',\n placeContent: 'space-between',\n },\n});\n\nexport const SliderGradeElement = tasty({\n qa: 'SliderGrade',\n styles: {\n display: 'grid',\n width: 'max 0',\n placeContent: 'center',\n preset: 'c2',\n color: '#dark-03',\n },\n});\n\nexport const SliderControlsElement = tasty({\n qa: 'SliderControls',\n styles: {\n position: 'relative',\n height: {\n '': 'initial 8x 100%',\n horizontal: '2x',\n },\n width: {\n '': '2x',\n horizontal: '(100% - 2x)',\n },\n\n '$slider-thumb-offset-top': {\n '': '0',\n horizontal: '1x',\n },\n '$slider-thumb-offset-left': {\n '': '1x',\n horizontal: '0',\n },\n },\n});\n\nexport const SliderElement = tasty({\n qa: 'RangeSlider',\n as: 'section',\n styles: {\n display: 'inline-flex',\n verticalAlign: {\n '': 'middle',\n 'side-label & !horizontal': 'top',\n },\n position: 'relative',\n height: {\n '': 'initial 10x 100%',\n horizontal: '2x',\n },\n width: {\n '': '2x',\n horizontal: '100%',\n },\n\n alignItems: 'center',\n flow: {\n '': 'column',\n inputs: 'row',\n },\n },\n});\n"],"mappings":";;;;AAEA,MAAa,qBAAqB,MAAM;CACtC,IAAI;CACJ,QAAQ;EACN,KAAK;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;GACJ,IAAI;GACJ,SAAS;GACT,SAAS;GACT,UAAU;GACX;EACD,QAAQ;EACR,SAAS;GACP,IAAI;GACJ,SAAS;GACV;EACD,eAAe;EACf,QAAQ;EACR,YAAY;EACZ,QAAQ;GACN,IAAI;GACJ,sBAAsB;GACvB;EACF;CACF,CAAC;AAEF,MAAa,8BAA8B,MAAM;CAC/C,IAAI;CACJ,QAAQ;EACN,KAAK;GACH,IAAI;GACJ,YAAY;GACb;EACD,MAAM;GACJ,IAAI;GACJ,YAAY;GACb;EACD,UAAU;EACV,MAAM;EACN,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EACD,QAAQ;EAER,MAAM;GACJ,GAAG;GACH,SAAS;GACT,SAAS;GACT,UAAU;GACV,OAAO;IACL,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACD,MAAM;IACJ,IAAI;IACJ,UAAU;IACX;GACD,OAAO;IACL,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACD,QAAQ;IACN,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACF;EACF;CACF,CAAC;AAEF,MAAa,yBAAyB,MAAM;CAC1C,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,KAAK;EACL,MAAM;EACN,OAAO;EAEP,SAAS;EACT,cAAc;EACf;CACF,CAAC;AAEF,MAAa,qBAAqB,MAAM;CACtC,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,OAAO;EACP,cAAc;EACd,QAAQ;EACR,OAAO;EACR;CACF,CAAC;AAEF,MAAa,wBAAwB,MAAM;CACzC,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EAED,4BAA4B;GAC1B,IAAI;GACJ,YAAY;GACb;EACD,6BAA6B;GAC3B,IAAI;GACJ,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAa,gBAAgB,MAAM;CACjC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,eAAe;GACb,IAAI;GACJ,4BAA4B;GAC7B;EACD,UAAU;EACV,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EAED,YAAY;EACZ,MAAM;GACJ,IAAI;GACJ,QAAQ;GACT;EACF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"elements.js","names":[],"sources":["../../../../src/components/fields/Slider/elements.ts"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\n\nexport const SliderThumbElement = tasty({\n qa: 'SliderThumb',\n styles: {\n top: '$slider-thumb-offset-top',\n left: '$slider-thumb-offset-left',\n width: '2x',\n height: '2x',\n fill: {\n '': '(#slider-thumb, #primary)',\n hovered: '(#slider-thumb-hovered, #primary-text)',\n dragged: '(#slider-thumb, #primary)',\n valid: '#success',\n invalid: '#danger',\n disabled: '#disabled-surface-text',\n },\n cursor: '$pointer',\n outline: {\n '': '1bw #primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n radius: '50%',\n transition: 'theme',\n zIndex: {\n '': 0,\n 'collapsed & !stuck': 1,\n },\n },\n});\n\nexport const SliderTrackContainerElement = tasty({\n qa: 'SliderTrackContainer',\n styles: {\n top: {\n '': '0',\n horizontal: '0.875x',\n },\n left: {\n '': '0.875x',\n horizontal: '0',\n },\n position: 'absolute',\n fill: '#dark-05',\n height: {\n '': 'initial 10x 100%',\n horizontal: '2px',\n },\n width: {\n '': '2px',\n horizontal: '100%',\n },\n radius: true,\n\n Fill: {\n $: '&::before',\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n inset: {\n '': 'auto 0 0 0',\n horizontal: '0 auto 0 0',\n range: 'auto 0 $slider-range-start 0',\n 'range & horizontal': '0 auto 0 $slider-range-start',\n },\n fill: {\n '': '#primary',\n valid: '#success',\n invalid: '#danger',\n disabled: '#disabled-surface-text',\n },\n width: {\n '': 'auto',\n horizontal: '$slider-value',\n range: 'auto',\n 'range & horizontal': '($slider-range-end - $slider-range-start)',\n },\n height: {\n '': '$slider-value',\n horizontal: 'auto',\n range: '($slider-range-end - $slider-range-start)',\n 'range & horizontal': 'auto',\n },\n },\n },\n});\n\nexport const SliderGradationElement = tasty({\n qa: 'SliderGradation',\n styles: {\n position: 'absolute',\n top: '2x',\n left: 0,\n right: 0,\n\n display: 'flex',\n placeContent: 'space-between',\n },\n});\n\nexport const SliderGradeElement = tasty({\n qa: 'SliderGrade',\n styles: {\n display: 'grid',\n width: 'max 0',\n placeContent: 'center',\n preset: 'c2',\n color: '#dark-03',\n },\n});\n\nexport const SliderControlsElement = tasty({\n qa: 'SliderControls',\n styles: {\n position: 'relative',\n height: {\n '': 'initial 8x 100%',\n horizontal: '2x',\n },\n width: {\n '': '2x',\n horizontal: '(100% - 2x)',\n },\n\n '$slider-thumb-offset-top': {\n '': '0',\n horizontal: '1x',\n },\n '$slider-thumb-offset-left': {\n '': '1x',\n horizontal: '0',\n },\n },\n});\n\nexport const SliderElement = tasty({\n qa: 'RangeSlider',\n as: 'section',\n styles: {\n display: 'inline-flex',\n verticalAlign: {\n '': 'middle',\n 'side-label & !horizontal': 'top',\n },\n position: 'relative',\n height: {\n '': 'initial 10x 100%',\n horizontal: '2x',\n },\n width: {\n '': '2x',\n horizontal: '100%',\n },\n\n alignItems: 'center',\n flow: {\n '': 'column',\n inputs: 'row',\n },\n },\n});\n"],"mappings":";;;;AAEA,MAAa,qBAAqB,MAAM;CACtC,IAAI;CACJ,QAAQ;EACN,KAAK;EACL,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;GACJ,IAAI;GACJ,SAAS;GACT,SAAS;GACT,OAAO;GACP,SAAS;GACT,UAAU;GACX;EACD,QAAQ;EACR,SAAS;GACP,IAAI;GACJ,SAAS;GACV;EACD,eAAe;EACf,QAAQ;EACR,YAAY;EACZ,QAAQ;GACN,IAAI;GACJ,sBAAsB;GACvB;EACF;CACF,CAAC;AAEF,MAAa,8BAA8B,MAAM;CAC/C,IAAI;CACJ,QAAQ;EACN,KAAK;GACH,IAAI;GACJ,YAAY;GACb;EACD,MAAM;GACJ,IAAI;GACJ,YAAY;GACb;EACD,UAAU;EACV,MAAM;EACN,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EACD,QAAQ;EAER,MAAM;GACJ,GAAG;GACH,SAAS;GACT,SAAS;GACT,UAAU;GACV,OAAO;IACL,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACD,MAAM;IACJ,IAAI;IACJ,OAAO;IACP,SAAS;IACT,UAAU;IACX;GACD,OAAO;IACL,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACD,QAAQ;IACN,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,sBAAsB;IACvB;GACF;EACF;CACF,CAAC;AAEF,MAAa,yBAAyB,MAAM;CAC1C,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,KAAK;EACL,MAAM;EACN,OAAO;EAEP,SAAS;EACT,cAAc;EACf;CACF,CAAC;AAEF,MAAa,qBAAqB,MAAM;CACtC,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,OAAO;EACP,cAAc;EACd,QAAQ;EACR,OAAO;EACR;CACF,CAAC;AAEF,MAAa,wBAAwB,MAAM;CACzC,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EAED,4BAA4B;GAC1B,IAAI;GACJ,YAAY;GACb;EACD,6BAA6B;GAC3B,IAAI;GACJ,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAa,gBAAgB,MAAM;CACjC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,eAAe;GACb,IAAI;GACJ,4BAA4B;GAC7B;EACD,UAAU;EACV,QAAQ;GACN,IAAI;GACJ,YAAY;GACb;EACD,OAAO;GACL,IAAI;GACJ,YAAY;GACb;EAED,YAAY;EACZ,MAAM;GACJ,IAAI;GACJ,QAAQ;GACT;EACF;CACF,CAAC"}
|