@cube-dev/ui-kit 0.0.0-canary-c210a8c → 0.0.0-canary-60981ef
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/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.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/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransition.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/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/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.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.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/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.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/ComplexLayout.md +469 -0
- package/docs/CreateComponent.md +410 -0
- package/docs/Introduction.md +122 -0
- package/docs/RenderCache.md +172 -0
- package/docs/Result.md +35 -0
- package/docs/SimpleLayout.md +26 -0
- package/docs/Typography.md +38 -0
- package/docs/components/CollectionItem.md +299 -0
- package/docs/components/actions/Banner.md +189 -0
- package/docs/components/actions/Button.md +183 -0
- package/docs/components/actions/ButtonSplit.md +189 -0
- package/docs/components/actions/CommandMenu.md +430 -0
- package/docs/components/actions/ItemButton.md +304 -0
- package/docs/components/actions/Link.md +325 -0
- package/docs/components/actions/Menu.md +509 -0
- package/docs/components/actions/use-anchored-menu.md +211 -0
- package/docs/components/actions/use-context-menu.md +220 -0
- package/docs/components/content/Badge.md +187 -0
- package/docs/components/content/Disclosure.md +177 -0
- package/docs/components/content/HotKeys.md +352 -0
- package/docs/components/content/Item.md +488 -0
- package/docs/components/content/ItemCard.md +125 -0
- package/docs/components/content/Layout.md +866 -0
- package/docs/components/content/Tag.md +156 -0
- package/docs/components/content/TextItem.md +211 -0
- package/docs/components/fields/Checkbox.md +180 -0
- package/docs/components/fields/ComboBox.md +617 -0
- package/docs/components/fields/DatePicker.md +231 -0
- package/docs/components/fields/FileInput.md +197 -0
- package/docs/components/fields/FilterListBox.md +703 -0
- package/docs/components/fields/FilterPicker.md +736 -0
- package/docs/components/fields/HueSlider.md +175 -0
- package/docs/components/fields/ListBox.md +691 -0
- package/docs/components/fields/NumberInput.md +184 -0
- package/docs/components/fields/PasswordInput.md +218 -0
- package/docs/components/fields/Picker.md +884 -0
- package/docs/components/fields/RadioGroup.md +314 -0
- package/docs/components/fields/SearchInput.md +227 -0
- package/docs/components/fields/Select.md +583 -0
- package/docs/components/fields/Slider.md +53 -0
- package/docs/components/fields/Switch.md +174 -0
- package/docs/components/fields/TextArea.md +61 -0
- package/docs/components/fields/TextInput.md +204 -0
- package/docs/components/fields/TextInputMapper.md +34 -0
- package/docs/components/form/Field.md +341 -0
- package/docs/components/form/Form.md +455 -0
- package/docs/components/form/FormInstance.md +319 -0
- package/docs/components/helpers/DisplayTransition.md +259 -0
- package/docs/components/helpers/IconSwitch.md +156 -0
- package/docs/components/navigation/Tabs.md +704 -0
- package/docs/components/overlays/Dialog.md +202 -0
- package/docs/components/overlays/DialogContainer.md +201 -0
- package/docs/components/overlays/DialogForm.md +290 -0
- package/docs/components/overlays/DialogTrigger.md +191 -0
- package/docs/components/overlays/Notifications.md +406 -0
- package/docs/components/overlays/Toast.md +285 -0
- package/docs/components/overlays/Tooltip.md +371 -0
- package/docs/components/overlays/UseDialogContainer.md +603 -0
- package/package.json +1 -1
- package/docs/.gitignore +0 -3
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Dialog
|
|
2
|
+
|
|
3
|
+
Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface. Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Display important information or actions that require user attention
|
|
8
|
+
- Confirm or cancel user actions before proceeding
|
|
9
|
+
- Collect user input in a focused, contextual interface
|
|
10
|
+
- Show complex workflows or forms that need dedicated space
|
|
11
|
+
- Present alerts or notifications that require user acknowledgment
|
|
12
|
+
|
|
13
|
+
## Component
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
### Properties
|
|
18
|
+
|
|
19
|
+
- **`children`** — Dialog content (Header, Content, Footer, etc.)
|
|
20
|
+
- **`size`** `'small' | 'medium' | 'large' | 'S' | 'M' | 'L'` (default: `S`) — Dialog size
|
|
21
|
+
- **`styles`** — Custom styles for the dialog root
|
|
22
|
+
- **`closeButtonStyles`** — Custom styles for the close button
|
|
23
|
+
- **`isDismissable`** `boolean` (default: `false`) — Whether the dialog is dismissable (shows close button, allows Escape key)
|
|
24
|
+
- **`onDismiss`** `function` — Callback fired when the dialog is dismissed
|
|
25
|
+
- **`closeIcon`** — Custom close icon element
|
|
26
|
+
- **`role`** `'dialog' | 'alertdialog'` (default: `dialog`) — ARIA role for the dialog
|
|
27
|
+
- **`onBlur`** `function` — Callback fired when the dialog loses focus
|
|
28
|
+
- **`onFocus`** `function` — Callback fired when the dialog receives focus
|
|
29
|
+
|
|
30
|
+
### Base Properties
|
|
31
|
+
|
|
32
|
+
Supports [Base properties](../../tasty/tasty.md)
|
|
33
|
+
|
|
34
|
+
### Styling Properties
|
|
35
|
+
|
|
36
|
+
#### styles
|
|
37
|
+
|
|
38
|
+
Customizes the root element of the dialog.
|
|
39
|
+
|
|
40
|
+
**Sub-elements:**
|
|
41
|
+
- `Dialog` - The main dialog container
|
|
42
|
+
- `Content` - The content area wrapper
|
|
43
|
+
- `Header` - The header section wrapper
|
|
44
|
+
- `Footer` - The footer section wrapper
|
|
45
|
+
|
|
46
|
+
#### closeButtonStyles
|
|
47
|
+
|
|
48
|
+
Customizes the close button appearance.
|
|
49
|
+
|
|
50
|
+
### Style Properties
|
|
51
|
+
|
|
52
|
+
These properties allow direct style application without using the `styles` prop: `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`, `reset`, `padding`, `paddingInline`, `paddingBlock`, `shadow`, `border`, `radius`, `opacity`, `overflow`, `scrollbar`, `hide`, `outline`, `textAlign`, `resize`.
|
|
53
|
+
|
|
54
|
+
### Modifiers
|
|
55
|
+
|
|
56
|
+
The `mods` property accepts the following modifiers you can override:
|
|
57
|
+
|
|
58
|
+
| Modifier | Type | Description |
|
|
59
|
+
|----------|------|-------------|
|
|
60
|
+
| dismissable | `boolean` | Applied when the dialog can be dismissed with close button or Escape key |
|
|
61
|
+
|
|
62
|
+
## Variants
|
|
63
|
+
|
|
64
|
+
### Types
|
|
65
|
+
|
|
66
|
+
- `dialog` - Standard dialog for general content (default)
|
|
67
|
+
- `alertdialog` - Alert dialog for critical notifications or confirmations
|
|
68
|
+
|
|
69
|
+
### Sizes
|
|
70
|
+
|
|
71
|
+
- `small` / `S` - Compact dialog for simple content (360px width)
|
|
72
|
+
- `medium` / `M` - Standard dialog for moderate content (479px width)
|
|
73
|
+
- `large` / `L` - Large dialog for complex content (798px width)
|
|
74
|
+
|
|
75
|
+
## Examples
|
|
76
|
+
|
|
77
|
+
### Basic Dialog
|
|
78
|
+
|
|
79
|
+
```jsx
|
|
80
|
+
<Dialog>
|
|
81
|
+
<Header>
|
|
82
|
+
<Title>Dialog Title</Title>
|
|
83
|
+
</Header>
|
|
84
|
+
<Content>
|
|
85
|
+
<Paragraph>Dialog content goes here.</Paragraph>
|
|
86
|
+
</Content>
|
|
87
|
+
<Footer>
|
|
88
|
+
<Button onPress={close}>Close</Button>
|
|
89
|
+
</Footer>
|
|
90
|
+
</Dialog>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Dismissable Dialog
|
|
94
|
+
|
|
95
|
+
```jsx
|
|
96
|
+
<Dialog isDismissable onDismiss={close}>
|
|
97
|
+
<Header>
|
|
98
|
+
<Title>Dismissable Dialog</Title>
|
|
99
|
+
</Header>
|
|
100
|
+
<Content>
|
|
101
|
+
<Paragraph>You can close this dialog with the close button or Escape key.</Paragraph>
|
|
102
|
+
</Content>
|
|
103
|
+
</Dialog>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Custom Size Dialog
|
|
107
|
+
|
|
108
|
+
```jsx
|
|
109
|
+
<Dialog size="large">
|
|
110
|
+
<Header>
|
|
111
|
+
<Title>Large Dialog</Title>
|
|
112
|
+
</Header>
|
|
113
|
+
<Content>
|
|
114
|
+
<Paragraph>This dialog uses the large size variant.</Paragraph>
|
|
115
|
+
</Content>
|
|
116
|
+
</Dialog>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Alert Dialog
|
|
120
|
+
|
|
121
|
+
```jsx
|
|
122
|
+
<Dialog role="alertdialog">
|
|
123
|
+
<Header>
|
|
124
|
+
<Title>Confirm Action</Title>
|
|
125
|
+
</Header>
|
|
126
|
+
<Content>
|
|
127
|
+
<Paragraph>Are you sure you want to delete this item? This action cannot be undone.</Paragraph>
|
|
128
|
+
</Content>
|
|
129
|
+
<Footer>
|
|
130
|
+
<Button type="danger" onPress={confirmDelete}>Delete</Button>
|
|
131
|
+
<Button onPress={close}>Cancel</Button>
|
|
132
|
+
</Footer>
|
|
133
|
+
</Dialog>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Accessibility
|
|
137
|
+
|
|
138
|
+
### Keyboard Navigation
|
|
139
|
+
|
|
140
|
+
- `Tab` - Moves focus between interactive elements within the dialog
|
|
141
|
+
- `Shift + Tab` - Moves focus backward between interactive elements
|
|
142
|
+
- `Escape` - Dismisses the dialog if `isDismissable` is true
|
|
143
|
+
- `Enter/Space` - Activates focused buttons or interactive elements
|
|
144
|
+
|
|
145
|
+
### Screen Reader Support
|
|
146
|
+
|
|
147
|
+
- Dialog announces as "dialog" or "alertdialog" based on role
|
|
148
|
+
- Focus is trapped within the dialog when open
|
|
149
|
+
- Focus returns to the trigger element when dialog closes
|
|
150
|
+
- Dialog title and content are properly announced
|
|
151
|
+
- State changes and actions are communicated to screen readers
|
|
152
|
+
|
|
153
|
+
### ARIA Properties
|
|
154
|
+
|
|
155
|
+
- `aria-labelledby` - Links dialog to its title element automatically
|
|
156
|
+
- `aria-describedby` - Links dialog to its description content
|
|
157
|
+
- `aria-modal` - Set to true for modal dialogs to indicate exclusive interaction
|
|
158
|
+
- `role` - Set to "dialog" or "alertdialog" based on content type
|
|
159
|
+
|
|
160
|
+
## Best Practices
|
|
161
|
+
|
|
162
|
+
1. **Do**: Provide clear titles and actionable buttons
|
|
163
|
+
```jsx
|
|
164
|
+
<Dialog>
|
|
165
|
+
<Header>
|
|
166
|
+
<Title>Save Changes</Title>
|
|
167
|
+
</Header>
|
|
168
|
+
<Content>
|
|
169
|
+
<Paragraph>Your changes will be saved to the document.</Paragraph>
|
|
170
|
+
</Content>
|
|
171
|
+
<Footer>
|
|
172
|
+
<Button type="primary" onPress={save}>Save</Button>
|
|
173
|
+
<Button onPress={close}>Cancel</Button>
|
|
174
|
+
</Footer>
|
|
175
|
+
</Dialog>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
2. **Don't**: Use dialogs for trivial notifications
|
|
179
|
+
```jsx
|
|
180
|
+
{/* Avoid using dialogs for simple success messages */}
|
|
181
|
+
<Dialog>
|
|
182
|
+
<Content>Item saved!</Content>
|
|
183
|
+
</Dialog>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
3. **Accessibility**: Always provide a meaningful title for screen readers
|
|
187
|
+
4. **Dismissal**: Use `isDismissable` for dialogs that users can close voluntarily
|
|
188
|
+
5. **Focus Management**: Ensure focus moves to the most important action when dialog opens
|
|
189
|
+
|
|
190
|
+
## Integration with Overlays
|
|
191
|
+
|
|
192
|
+
Dialog is typically used within `DialogTrigger` or `Modal` components for proper overlay management and positioning. It should not be rendered directly without an overlay container.
|
|
193
|
+
|
|
194
|
+
## Suggested Improvements
|
|
195
|
+
|
|
196
|
+
- Enhancement 1: Add support for custom dialog animations and transitions
|
|
197
|
+
- Enhancement 2: Implement automatic focus management for complex form scenarios
|
|
198
|
+
|
|
199
|
+
## Related Components
|
|
200
|
+
|
|
201
|
+
- [DialogTrigger](./DialogTrigger.md) - Manages dialog open/close state and positioning
|
|
202
|
+
- AlertDialog - Specialized component for alert scenarios
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# DialogContainer
|
|
2
|
+
|
|
3
|
+
A DialogContainer accepts a single Dialog as a child, and manages to show and hide it in a modal. Useful in cases where there is no trigger element or when the trigger unmounts while the dialog is open.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- When you need to display a dialog without a specific trigger element
|
|
8
|
+
- To prevent dialog closure when the trigger component unmounts
|
|
9
|
+
- For programmatically controlled dialogs in complex application flows
|
|
10
|
+
- When managing dialog state externally from the component hierarchy
|
|
11
|
+
- For dialogs that need to persist across route changes or component updates
|
|
12
|
+
|
|
13
|
+
## Component
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
### Properties
|
|
18
|
+
|
|
19
|
+
- **`children`** — The Dialog to display, if any
|
|
20
|
+
- **`type`** `'modal' | 'fullscreen' | 'fullscreenTakeover' | 'panel'` (default: `modal`) — The type of Dialog that should be rendered
|
|
21
|
+
- **`isDismissable`** `boolean` (default: `false`) — Whether the Dialog is dismissible
|
|
22
|
+
- **`isKeyboardDismissDisabled`** `boolean` (default: `false`) — Whether pressing the escape key to close the dialog should be disabled
|
|
23
|
+
- **`isOpen`** `boolean` — Whether the modal is open or not
|
|
24
|
+
- **`onDismiss`** `function` — Handler called when the x button of a dismissible Dialog is clicked
|
|
25
|
+
- **`hideOnClose`** `boolean` (default: `false`) — Whether the dialog should be hidden when closed
|
|
26
|
+
|
|
27
|
+
### Base Properties
|
|
28
|
+
|
|
29
|
+
Supports [Base properties](../../tasty/tasty.md)
|
|
30
|
+
|
|
31
|
+
### Styling Properties
|
|
32
|
+
|
|
33
|
+
DialogContainer has no styling capabilities.
|
|
34
|
+
|
|
35
|
+
## Variants
|
|
36
|
+
|
|
37
|
+
### Types
|
|
38
|
+
|
|
39
|
+
- `modal` - Standard modal dialog with backdrop (default)
|
|
40
|
+
- `fullscreen` - Takes up entire screen with padding
|
|
41
|
+
- `fullscreenTakeover` - Fullscreen without padding
|
|
42
|
+
- `panel` - Side panel overlay
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
### Basic Usage
|
|
47
|
+
|
|
48
|
+
```jsx
|
|
49
|
+
<DialogContainer isOpen={isDialogOpen} onDismiss={() => setIsDialogOpen(false)}>
|
|
50
|
+
<Dialog>
|
|
51
|
+
<Header>
|
|
52
|
+
<Title>Dialog Title</Title>
|
|
53
|
+
</Header>
|
|
54
|
+
<Content>
|
|
55
|
+
<Paragraph>Dialog content goes here.</Paragraph>
|
|
56
|
+
</Content>
|
|
57
|
+
</Dialog>
|
|
58
|
+
</DialogContainer>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Controlled Dialog
|
|
62
|
+
|
|
63
|
+
```jsx
|
|
64
|
+
function ControlledDialogExample() {
|
|
65
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<>
|
|
69
|
+
<Button onPress={() => setIsOpen(true)}>Open Dialog</Button>
|
|
70
|
+
<DialogContainer
|
|
71
|
+
isOpen={isOpen}
|
|
72
|
+
isDismissable
|
|
73
|
+
onDismiss={() => setIsOpen(false)}
|
|
74
|
+
>
|
|
75
|
+
<Dialog>
|
|
76
|
+
<Header>
|
|
77
|
+
<Title>Controlled Dialog</Title>
|
|
78
|
+
</Header>
|
|
79
|
+
<Content>
|
|
80
|
+
<Paragraph>This dialog is controlled externally.</Paragraph>
|
|
81
|
+
</Content>
|
|
82
|
+
<Footer>
|
|
83
|
+
<Button onPress={() => setIsOpen(false)}>Close</Button>
|
|
84
|
+
</Footer>
|
|
85
|
+
</Dialog>
|
|
86
|
+
</DialogContainer>
|
|
87
|
+
</>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Conditional Dialog
|
|
93
|
+
|
|
94
|
+
```jsx
|
|
95
|
+
function ConditionalDialog() {
|
|
96
|
+
const [showDialog, setShowDialog] = useState(false);
|
|
97
|
+
const [dialogContent, setDialogContent] = useState(null);
|
|
98
|
+
|
|
99
|
+
const openDialog = (content) => {
|
|
100
|
+
setDialogContent(content);
|
|
101
|
+
setShowDialog(true);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<DialogContainer isOpen={showDialog} onDismiss={() => setShowDialog(false)}>
|
|
106
|
+
{dialogContent && (
|
|
107
|
+
<Dialog>
|
|
108
|
+
<Header>
|
|
109
|
+
<Title>Dynamic Dialog</Title>
|
|
110
|
+
</Header>
|
|
111
|
+
<Content>
|
|
112
|
+
{dialogContent}
|
|
113
|
+
</Content>
|
|
114
|
+
</Dialog>
|
|
115
|
+
)}
|
|
116
|
+
</DialogContainer>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Non-dismissable Dialog
|
|
122
|
+
|
|
123
|
+
```jsx
|
|
124
|
+
<DialogContainer isOpen={isOpen} isDismissable={false}>
|
|
125
|
+
<Dialog>
|
|
126
|
+
<Header>
|
|
127
|
+
<Title>Important Notice</Title>
|
|
128
|
+
</Header>
|
|
129
|
+
<Content>
|
|
130
|
+
<Paragraph>This dialog requires user action to close.</Paragraph>
|
|
131
|
+
</Content>
|
|
132
|
+
<Footer>
|
|
133
|
+
<Button type="primary" onPress={handleAction}>
|
|
134
|
+
Take Action
|
|
135
|
+
</Button>
|
|
136
|
+
</Footer>
|
|
137
|
+
</Dialog>
|
|
138
|
+
</DialogContainer>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Accessibility
|
|
142
|
+
|
|
143
|
+
### Keyboard Navigation
|
|
144
|
+
|
|
145
|
+
- `Tab` - Moves focus between interactive elements within the dialog
|
|
146
|
+
- `Shift + Tab` - Moves focus backward between interactive elements
|
|
147
|
+
- `Escape` - Closes the dialog if `isDismissable` is true and `isKeyboardDismissDisabled` is false
|
|
148
|
+
|
|
149
|
+
### Screen Reader Support
|
|
150
|
+
|
|
151
|
+
- Dialog announces as "dialog" to screen readers
|
|
152
|
+
- Focus is trapped within the dialog when open
|
|
153
|
+
- Focus management is handled automatically
|
|
154
|
+
- Modal state is properly communicated to assistive technologies
|
|
155
|
+
|
|
156
|
+
### ARIA Properties
|
|
157
|
+
|
|
158
|
+
- `aria-modal` - Set to true to indicate modal behavior
|
|
159
|
+
- `aria-labelledby` - Links dialog to its title automatically
|
|
160
|
+
- `aria-describedby` - Links dialog to its description content
|
|
161
|
+
- `role` - Set to "dialog" for proper semantic meaning
|
|
162
|
+
|
|
163
|
+
## Best Practices
|
|
164
|
+
|
|
165
|
+
1. **Do**: Use DialogContainer for dialogs without specific triggers
|
|
166
|
+
```jsx
|
|
167
|
+
<DialogContainer isOpen={showErrorDialog} onDismiss={clearError}>
|
|
168
|
+
<Dialog>
|
|
169
|
+
<Header>
|
|
170
|
+
<Title>Error</Title>
|
|
171
|
+
</Header>
|
|
172
|
+
<Content>
|
|
173
|
+
<Paragraph>{errorMessage}</Paragraph>
|
|
174
|
+
</Content>
|
|
175
|
+
</Dialog>
|
|
176
|
+
</DialogContainer>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
2. **Don't**: Use DialogContainer when DialogTrigger is more appropriate
|
|
180
|
+
```jsx
|
|
181
|
+
{/* Prefer DialogTrigger when you have a specific trigger */}
|
|
182
|
+
<DialogContainer isOpen={buttonPressed}>
|
|
183
|
+
<Dialog>...</Dialog>
|
|
184
|
+
</DialogContainer>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
3. **State Management**: Always control the `isOpen` state externally
|
|
188
|
+
4. **Single Child**: Only pass one Dialog as a child to DialogContainer
|
|
189
|
+
5. **Cleanup**: Ensure proper cleanup of dialog state when component unmounts
|
|
190
|
+
|
|
191
|
+
## Suggested Improvements
|
|
192
|
+
|
|
193
|
+
- Enhancement 1: Add support for dialog stacking and z-index management
|
|
194
|
+
- Enhancement 2: Implement automatic focus restoration after dialog closes
|
|
195
|
+
- Enhancement 3: Add support for custom backdrop click behavior
|
|
196
|
+
|
|
197
|
+
## Related Components
|
|
198
|
+
|
|
199
|
+
- [DialogTrigger](./DialogTrigger.md) - Use when you have a specific trigger element
|
|
200
|
+
- [Dialog](./Dialog.md) - The content component used within DialogContainer
|
|
201
|
+
- [Button](../actions/Button.md) - Common element for dialog actions
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# DialogForm
|
|
2
|
+
|
|
3
|
+
DialogForm combines [Dialog](./Dialog.md) and [Form](../form/Form.md) functionality into a single component for collecting user input in a modal context. It provides automatic form submission handling, dialog closing, and default action buttons.
|
|
4
|
+
|
|
5
|
+
**Recommended Usage:** Use the [`useDialogContainer`](./UseDialogContainer.md) hook for programmatic control over DialogForm. This provides a cleaner API and better state management compared to `DialogTrigger`.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- Collect user input in a focused modal interface
|
|
10
|
+
- Create forms that require user attention and confirmation
|
|
11
|
+
- Build edit dialogs, creation modals, or settings forms
|
|
12
|
+
- Handle form submission with automatic dialog closing
|
|
13
|
+
|
|
14
|
+
## Component
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
### Properties
|
|
19
|
+
|
|
20
|
+
### DialogForm-specific Properties
|
|
21
|
+
|
|
22
|
+
| Property | Type | Description |
|
|
23
|
+
|----------|------|-------------|
|
|
24
|
+
| `title` | `string` | The title of the dialog |
|
|
25
|
+
| `danger` | `boolean` | Whether the submit button has a danger theme |
|
|
26
|
+
| `submitProps` | `CubeButtonProps` | Properties for submit button (use `label` to change text) |
|
|
27
|
+
| `cancelProps` | `CubeButtonProps` | Properties for cancel button (use `label` to change text) |
|
|
28
|
+
| `preserve` | `boolean` | Preserve form values after submission/dismissal (default: false) |
|
|
29
|
+
| `noActions` | `boolean` | Hide default action buttons to manually specify them |
|
|
30
|
+
|
|
31
|
+
### Inherited Properties
|
|
32
|
+
|
|
33
|
+
DialogForm inherits all properties from:
|
|
34
|
+
- **[Dialog](./Dialog.md)**: `size`, `isDismissable`, `closeIcon`, styling properties, etc.
|
|
35
|
+
- **[Form](../form/Form.md)**: `name`, `defaultValues`, `onSubmit`, `onSubmitFailed`, `onValuesChange`, `labelPosition`, `requiredMark`, validation properties, etc.
|
|
36
|
+
|
|
37
|
+
See the respective component documentation for complete property lists.
|
|
38
|
+
|
|
39
|
+
### Base Properties
|
|
40
|
+
|
|
41
|
+
Supports [Base properties](../../tasty/tasty.md)
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Basic DialogForm (Recommended)
|
|
46
|
+
|
|
47
|
+
Using `useDialogContainer` for programmatic control:
|
|
48
|
+
|
|
49
|
+
```jsx
|
|
50
|
+
import { useDialogContainer, DialogForm, Input, Button } from '@cube-dev/ui-kit';
|
|
51
|
+
|
|
52
|
+
function UserFormDialog({ onSubmit, initialData }) {
|
|
53
|
+
return (
|
|
54
|
+
<DialogForm
|
|
55
|
+
title="User Information"
|
|
56
|
+
defaultValues={initialData}
|
|
57
|
+
onSubmit={onSubmit}
|
|
58
|
+
>
|
|
59
|
+
<Input.Text
|
|
60
|
+
name="name"
|
|
61
|
+
label="Name"
|
|
62
|
+
rules={[{ required: true, message: 'Name is required' }]}
|
|
63
|
+
placeholder="Enter your name"
|
|
64
|
+
/>
|
|
65
|
+
<Input.Text
|
|
66
|
+
name="email"
|
|
67
|
+
label="Email"
|
|
68
|
+
type="email"
|
|
69
|
+
rules={[
|
|
70
|
+
{ required: true, message: 'Email is required' },
|
|
71
|
+
{ type: 'email', message: 'Please enter a valid email' }
|
|
72
|
+
]}
|
|
73
|
+
placeholder="Enter your email"
|
|
74
|
+
/>
|
|
75
|
+
</DialogForm>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function App() {
|
|
80
|
+
const userDialog = useDialogContainer(UserFormDialog);
|
|
81
|
+
|
|
82
|
+
const openDialog = () => {
|
|
83
|
+
userDialog.open({
|
|
84
|
+
initialData: { name: '', email: '' },
|
|
85
|
+
onSubmit: async (data) => {
|
|
86
|
+
await saveUser(data);
|
|
87
|
+
userDialog.close();
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
<Button onPress={openDialog}>Add User</Button>
|
|
95
|
+
{userDialog.rendered}
|
|
96
|
+
</>
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### With DialogTrigger (Alternative)
|
|
102
|
+
|
|
103
|
+
For simpler use cases, you can use `DialogTrigger`:
|
|
104
|
+
|
|
105
|
+
```jsx
|
|
106
|
+
<DialogTrigger>
|
|
107
|
+
<Button>Open Form</Button>
|
|
108
|
+
<DialogForm
|
|
109
|
+
title="User Information"
|
|
110
|
+
onSubmit={async (data) => {
|
|
111
|
+
await saveUser(data);
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
<Input.Text
|
|
115
|
+
name="name"
|
|
116
|
+
label="Name"
|
|
117
|
+
rules={[{ required: true }]}
|
|
118
|
+
placeholder="Enter your name"
|
|
119
|
+
/>
|
|
120
|
+
<Input.Text
|
|
121
|
+
name="email"
|
|
122
|
+
label="Email"
|
|
123
|
+
type="email"
|
|
124
|
+
rules={[
|
|
125
|
+
{ required: true },
|
|
126
|
+
{ type: 'email', message: 'Please enter a valid email' }
|
|
127
|
+
]}
|
|
128
|
+
placeholder="Enter your email"
|
|
129
|
+
/>
|
|
130
|
+
</DialogForm>
|
|
131
|
+
</DialogTrigger>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Danger DialogForm
|
|
135
|
+
|
|
136
|
+
```jsx
|
|
137
|
+
<DialogForm
|
|
138
|
+
title="Delete Account"
|
|
139
|
+
danger
|
|
140
|
+
submitProps={{ label: 'Delete' }}
|
|
141
|
+
cancelProps={{ label: 'Keep Account' }}
|
|
142
|
+
onSubmit={async (data) => {
|
|
143
|
+
await deleteAccount(data.confirmation);
|
|
144
|
+
}}
|
|
145
|
+
>
|
|
146
|
+
<Input.Text
|
|
147
|
+
name="confirmation"
|
|
148
|
+
label="Type DELETE to confirm"
|
|
149
|
+
rules={[
|
|
150
|
+
{ required: true },
|
|
151
|
+
{ pattern: /^DELETE$/, message: 'Please type DELETE' }
|
|
152
|
+
]}
|
|
153
|
+
/>
|
|
154
|
+
</DialogForm>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Custom Actions with Access to Dismiss
|
|
158
|
+
|
|
159
|
+
When you need custom action buttons, use `noActions` prop and the render function pattern:
|
|
160
|
+
|
|
161
|
+
```jsx
|
|
162
|
+
<DialogForm
|
|
163
|
+
title="Advanced Form"
|
|
164
|
+
noActions
|
|
165
|
+
onSubmit={handleSubmit}
|
|
166
|
+
>
|
|
167
|
+
{(dismiss) => (
|
|
168
|
+
<>
|
|
169
|
+
<Input.Text name="field1" label="Field 1" />
|
|
170
|
+
<Input.Text name="field2" label="Field 2" />
|
|
171
|
+
|
|
172
|
+
<ButtonGroup>
|
|
173
|
+
<SubmitButton>Save</SubmitButton>
|
|
174
|
+
<Button onPress={() => {
|
|
175
|
+
saveAsDraft();
|
|
176
|
+
dismiss();
|
|
177
|
+
}}>
|
|
178
|
+
Save as Draft
|
|
179
|
+
</Button>
|
|
180
|
+
<Button onPress={dismiss}>Cancel</Button>
|
|
181
|
+
</ButtonGroup>
|
|
182
|
+
</>
|
|
183
|
+
)}
|
|
184
|
+
</DialogForm>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Preserving Form Values
|
|
188
|
+
|
|
189
|
+
Use `preserve` prop to keep form values when reopening the dialog:
|
|
190
|
+
|
|
191
|
+
```jsx
|
|
192
|
+
<DialogForm
|
|
193
|
+
title="Edit Draft"
|
|
194
|
+
preserve
|
|
195
|
+
defaultValues={draftData}
|
|
196
|
+
onSubmit={saveDraft}
|
|
197
|
+
>
|
|
198
|
+
<Input.Text name="title" label="Title" />
|
|
199
|
+
<TextArea name="content" label="Content" />
|
|
200
|
+
</DialogForm>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Behavior
|
|
204
|
+
|
|
205
|
+
### Form Submission
|
|
206
|
+
|
|
207
|
+
- On successful submission (`onSubmit`), the dialog automatically closes
|
|
208
|
+
- Form fields are automatically reset after closing (unless `preserve` is true)
|
|
209
|
+
- Reset happens after a 250ms delay to allow exit animations to complete
|
|
210
|
+
|
|
211
|
+
### Dialog Dismissal
|
|
212
|
+
|
|
213
|
+
- When dismissed via cancel button or Escape key, form fields are reset (unless `preserve` is true)
|
|
214
|
+
- Both `onClose` (from dialog context) and `onDismiss` callbacks are triggered
|
|
215
|
+
|
|
216
|
+
### Default Buttons
|
|
217
|
+
|
|
218
|
+
- **Submit Button**: Labeled "Submit" by default, automatically handles form submission and loading states
|
|
219
|
+
- **Cancel Button**: Labeled "Cancel" by default, dismisses the dialog and resets the form
|
|
220
|
+
- Both buttons can be customized via `submitProps` and `cancelProps`
|
|
221
|
+
- Hide default buttons with `noActions={true}` to provide custom actions
|
|
222
|
+
|
|
223
|
+
## Accessibility
|
|
224
|
+
|
|
225
|
+
DialogForm combines accessibility features from both Dialog and Form:
|
|
226
|
+
|
|
227
|
+
### Keyboard Navigation
|
|
228
|
+
|
|
229
|
+
- `Tab` / `Shift + Tab` - Navigate through form fields and buttons
|
|
230
|
+
- `Enter` - Submit the form (when on submit button)
|
|
231
|
+
- `Escape` - Dismiss the dialog (if `isDismissable` is true)
|
|
232
|
+
|
|
233
|
+
### Screen Reader Support
|
|
234
|
+
|
|
235
|
+
- Dialog announces with proper title
|
|
236
|
+
- Form fields have proper label associations
|
|
237
|
+
- Validation errors are announced
|
|
238
|
+
- Submit/cancel actions are clearly communicated
|
|
239
|
+
- Focus management handles transitions between dialog open/close
|
|
240
|
+
|
|
241
|
+
See [Dialog Accessibility](./Dialog.md#accessibility) and [Form Accessibility](../form/Form.md#accessibility) for complete details.
|
|
242
|
+
|
|
243
|
+
## Best Practices
|
|
244
|
+
|
|
245
|
+
1. **Use useDialogContainer for programmatic control**: Preferred method for better state management
|
|
246
|
+
```jsx
|
|
247
|
+
const dialog = useDialogContainer(MyFormDialog);
|
|
248
|
+
dialog.open({ initialData, onSubmit: handleSubmit });
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
2. **Provide clear titles**: Always set a descriptive `title` for context
|
|
252
|
+
```jsx
|
|
253
|
+
<DialogForm title="Edit User Profile" onSubmit={save}>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
3. **Use danger theme for destructive actions**: Apply `danger` for delete/remove operations
|
|
257
|
+
```jsx
|
|
258
|
+
<DialogForm title="Delete Item" danger submitProps={{ label: 'Delete' }}>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
4. **Customize button labels**: Make action buttons specific to the task
|
|
262
|
+
```jsx
|
|
263
|
+
<DialogForm
|
|
264
|
+
title="Create Project"
|
|
265
|
+
submitProps={{ label: 'Create' }}
|
|
266
|
+
cancelProps={{ label: 'Discard' }}
|
|
267
|
+
>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
5. **Handle submission errors**: Implement `onSubmitFailed` for error handling
|
|
271
|
+
```jsx
|
|
272
|
+
<DialogForm
|
|
273
|
+
onSubmit={save}
|
|
274
|
+
onSubmitFailed={(error) => notify.error(error.message)}
|
|
275
|
+
>
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
6. **Use preserve for drafts**: Enable `preserve` when working with draft content
|
|
279
|
+
```jsx
|
|
280
|
+
<DialogForm preserve title="Edit Draft" defaultValues={draft}>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Related Components
|
|
284
|
+
|
|
285
|
+
- [useDialogContainer](./UseDialogContainer.md) - **Recommended hook for programmatic dialog control**
|
|
286
|
+
- [Dialog](./Dialog.md) - Base dialog component
|
|
287
|
+
- [Form](../form/Form.md) - Form component with validation
|
|
288
|
+
- [DialogTrigger](./DialogTrigger.md) - Alternative: manages dialog open/close state
|
|
289
|
+
- AlertDialog - For simple confirmations without forms
|
|
290
|
+
|