@cube-dev/ui-kit 0.187.2 → 0.189.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/CHANGELOG.md +47 -0
- package/dist/README.md +4 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-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 +3 -6
- 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.d.ts +4 -0
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Action/Action.js.map +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +2 -2
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +40 -19
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +4 -7
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +3 -3
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +7 -5
- package/dist/components/actions/Menu/MenuSection.js.map +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 +4 -6
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.d.ts +4 -0
- package/dist/components/actions/use-action.js +6 -1
- package/dist/components/actions/use-action.js.map +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/Alert.js.map +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/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +53 -78
- package/dist/components/content/Disclosure/Disclosure.js.map +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/InfoBadge/InfoBadge.d.ts +7 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +6 -1
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +11 -10
- package/dist/components/content/Item/Item.js.map +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 +13 -22
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.d.ts +34 -4
- package/dist/components/content/Result/Result.js +199 -95
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +3 -5
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.d.ts +14 -14
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.d.ts +2 -0
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/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/data/DataTable/DataTable.js +33 -10
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/DataTable/types.d.ts +3 -1
- package/dist/components/data/ItemTable/ItemTable.js +3 -6
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +9 -7
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +82 -0
- package/dist/components/data/TableBase/column-styles.js.map +1 -0
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +8 -10
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.d.ts +11 -0
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/types.js.map +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.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/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +9 -4
- package/dist/components/fields/ComboBox/ComboBox.js +2 -1
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +3 -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.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +119 -129
- 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.js +128 -138
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +321 -331
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +163 -179
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +5 -6
- 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 +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +46 -44
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.d.ts +2 -2
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +3 -3
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.d.ts +2 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +5 -6
- package/dist/components/fields/Picker/Picker.js.map +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/SearchComboBox/SearchComboBox.d.ts +9 -4
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +2 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +68 -66
- 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 +33 -43
- package/dist/components/fields/Slider/HueSlider.js.map +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/TagInput/TagInput.js +170 -158
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.d.ts +2 -2
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +2 -2
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +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 +2 -2
- package/dist/components/layout/Board/Board.js.map +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 +4 -4
- package/dist/components/layout/Board/WidgetHost.js.map +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-modes.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/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.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/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +470 -407
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +22 -4
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +78 -116
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.d.ts +57 -50
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +52 -48
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +99 -104
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/AlertDialog/index.d.ts +2 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.d.ts +2 -2
- package/dist/components/overlays/Dialog/DialogForm.js +4 -5
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +5 -6
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +30 -0
- package/dist/components/overlays/Dialog/default-button-text.js.map +1 -0
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/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 +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Tray.js.map +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/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +18 -2
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +4 -1
- package/dist/i18n/locales/en-US/uikit.js +4 -1
- package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -0
- package/dist/i18n/locales/es-ES/uikit.js +4 -1
- package/dist/i18n/locales/es-MX/uikit.js +4 -1
- package/dist/i18n/locales/fr-FR/uikit.js +4 -1
- package/dist/i18n/locales/it-IT/uikit.js +4 -1
- package/dist/i18n/locales/ja-JP/uikit.js +4 -1
- package/dist/i18n/locales/nb-NO/uikit.js +4 -1
- package/dist/i18n/locales/pt-BR/uikit.js +4 -1
- package/dist/i18n/locales/pt-PT/uikit.js +4 -1
- package/dist/i18n/locales/sv-SE/uikit.js +4 -1
- package/dist/i18n/locales/vi-VN/uikit.js +4 -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/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/shared/form.d.ts +29 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/escapePropagation.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/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +51 -6
- package/dist/utils/styles.js.map +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/components/actions/Action.md +1 -1
- package/docs/components/actions/Button.md +4 -2
- package/docs/components/actions/ItemButton.md +1 -0
- package/docs/components/actions/Link.md +1 -1
- package/docs/components/content/InfoBadge.md +1 -1
- package/docs/components/content/Item.md +1 -1
- package/docs/components/content/Result.md +202 -12
- package/docs/components/content/Title.md +1 -0
- package/docs/components/data/DataTable.md +18 -0
- package/docs/components/data/ItemTable.md +3 -1
- package/docs/components/fields/ComboBox.md +49 -1
- package/docs/components/fields/FilterPicker.md +3 -3
- package/docs/components/fields/NumberInput.md +27 -0
- package/docs/components/fields/PasswordInput.md +24 -0
- package/docs/components/fields/Picker.md +3 -3
- package/docs/components/fields/SearchComboBox.md +3 -1
- package/docs/components/fields/TagInput.md +4 -2
- package/docs/components/fields/TextArea.md +24 -0
- package/docs/components/fields/TextInput.md +24 -0
- package/docs/components/navigation/Tabs.md +8 -3
- package/docs/components/overlays/AlertDialog.md +100 -3
- package/docs/components/overlays/DialogForm.md +3 -3
- package/docs/components/overlays/UseDialogContainer.md +4 -7
- package/docs/tasty/dsl.md +28 -6
- package/docs/tasty/styles.md +20 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialogZone.js","names":["Portal","DialogContainer","AlertDialog","CubeAlertDialogActionsProps","AlertDialogResolveStatus","Dialog","CubeButtonProps","DialogZoneProps","openedDialog","PORTAL_KEY","AlertDialogZone","props","$","_c","t0","Symbol","for","actions","content","onDismiss","options","type","isDismissable","undefined","resolve","reject","isVisible","dialogType","meta","t1","
|
|
1
|
+
{"version":3,"file":"AlertDialogZone.js","names":["Portal","DialogContainer","AlertDialog","CubeAlertDialogActionsProps","AlertDialogResolveStatus","Dialog","CubeButtonProps","DialogZoneProps","openedDialog","PORTAL_KEY","AlertDialogZone","props","$","_c","t0","Symbol","for","actions","content","onDismiss","options","type","isDismissable","undefined","resolve","reject","isVisible","dialogType","meta","t1","action","status","T","onPress","e","mergeActionProps","t2","confirm","t3","secondary","cancel","t4","t5","t6","e_0","t7","_actions","t8","t9","t10","t11","t12"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialogZone.tsx"],"sourcesContent":["import { Portal } from '../../portal';\nimport { DialogContainer } from '../Dialog/DialogContainer';\n\nimport { AlertDialog, CubeAlertDialogActionsProps } from './AlertDialog';\nimport { AlertDialogResolveStatus, Dialog } from './types';\n\nimport type { CubeButtonProps } from '../../actions/Button/Button';\n\nexport interface DialogZoneProps {\n openedDialog: Dialog | null;\n}\n\nconst PORTAL_KEY = 'AlertDialogZone';\n\n/**\n * @internal Do not use it\n */\nexport function AlertDialogZone(props: DialogZoneProps) {\n const { openedDialog } = props;\n\n if (openedDialog === null) return <Portal key={PORTAL_KEY} />;\n\n const {\n type,\n isDismissable = true,\n actions,\n onDismiss,\n content,\n ...options\n } = openedDialog.props;\n const { resolve, reject, isVisible, dialogType } = openedDialog.meta;\n\n const _actions: CubeAlertDialogActionsProps = (() => {\n const mergeActionProps = <\n T extends\n | CubeAlertDialogActionsProps['confirm']\n | CubeAlertDialogActionsProps['secondary'],\n >(\n action: T,\n status: AlertDialogResolveStatus,\n ): T => {\n if (typeof action === 'undefined') {\n return undefined as unknown as T;\n }\n\n if (typeof action === 'boolean') {\n return (action\n ? { onPress: () => resolve(status) }\n : false) as unknown as T;\n }\n\n const onPress = action.onPress;\n\n return {\n ...(action as CubeButtonProps),\n onPress: (e) => {\n onPress?.(e);\n resolve(status);\n },\n } as unknown as T;\n };\n\n // `AlertDialog` shows the confirm button unless it is `false`, so an\n // omitted one has to resolve too, not fall through to the dismissal.\n const { confirm = true, secondary, cancel } = actions ?? {};\n\n return {\n confirm: mergeActionProps(confirm, 'confirm'),\n secondary: mergeActionProps(secondary, 'secondary'),\n cancel:\n typeof cancel === 'undefined'\n ? undefined\n : typeof cancel === 'boolean'\n ? cancel\n ? { onPress: () => reject(undefined) }\n : false\n : {\n ...(cancel as CubeButtonProps),\n onPress: (e) => {\n (cancel as CubeButtonProps).onPress?.(e);\n reject(undefined);\n },\n },\n };\n })();\n\n return (\n <Portal key={PORTAL_KEY}>\n <DialogContainer\n isOpen={isVisible}\n isDismissable={isDismissable}\n type={type}\n onDismiss={onDismiss}\n >\n <AlertDialog\n noActions={dialogType === 'form'}\n actions={_actions}\n isHidden={!isVisible}\n content={\n typeof content === 'function'\n ? content({ resolve, reject })\n : content\n }\n {...options}\n />\n </DialogContainer>\n </Portal>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
import { CubeAlertDialogActionsProps, CubeAlertDialogProps, _AlertDialog } from "./AlertDialog.js";
|
|
3
|
-
import {
|
|
3
|
+
import { AlertDialogResolveStatus } from "./types.js";
|
|
4
|
+
import { AlertDialogApi, AlertDialogApiParams, useAlertDialogAPI } from "./AlertDialogApiProvider.js";
|
|
4
5
|
import "./AlertDialogZone.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { SlotProvider } from "../../../utils/react/Slots.js";
|
|
@@ -231,7 +231,7 @@ const DialogContent = forwardRef(function DialogContent(props, ref) {
|
|
|
231
231
|
slots,
|
|
232
232
|
children: [isDismissable && /* @__PURE__ */ jsx(CloseButton, {
|
|
233
233
|
icon: closeIcon || /* @__PURE__ */ jsx(CloseIcon, { size: 20 }),
|
|
234
|
-
label: t("dialog.dismiss", "Dismiss"),
|
|
234
|
+
"aria-label": t("dialog.dismiss", "Dismiss"),
|
|
235
235
|
onPress: () => onDismiss && onDismiss()
|
|
236
236
|
}), children]
|
|
237
237
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","names":["createFocusManager","useObjectRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","DIMENSION_STYLES","DimensionStyleProps","FLOW_STYLES","Styles","tasty","forwardRef","ReactElement","Ref","useEffect","AriaDialogProps","DismissButton","FocusScope","useDialog","useI18n","CloseIcon","mergeProps","SlotProvider","extractStyles","ItemButton","useOpenTransitionContext","useDialogContext","useContentOverflow","STYLES_LIST","DialogElement","as","styles","display","flow","fill","pointerEvents","outline","position","width","height","gap","border","radius","shadow","top","CloseButton","qa","type","right","sizeMap","S","M","L","sizePxMap","small","medium","large","CubeDialogProps","Omit","size","isDismissable","onDismiss","arg","closeIcon","closeButtonStyles","role","Dialog","props","ref","$","_c","transitionContext","isEntered","transitionState","context","t0","content","shouldContainFocus","isOpen","t1","shouldRestoreFocus","t2","DialogContent","HTMLDivElement","contextProps","children","onClose","style","otherProps","toUpperCase","t","domRef","dialogProps","titleProps","dismissButton","setTimeout","current","activeElement","document","isFocusOutsideDialog","contains","isFocusOnDialogShell","priorityElement","querySelector","HTMLElement","focus","focusManager","focusFirst","tabbable","contentOverflows","slots","title","level","preset","flexGrow","padding","header","ellipsis","placeItems","placeContent","footer","mods","buttonGroup","dismissable"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useObjectRef } from '@react-aria/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, Ref, useEffect } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n} from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions/ItemButton/ItemButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\nimport { useContentOverflow } from './use-content-overflow';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n\n // A `Form` placed directly here (`Dialog > Form > Content + Footer`) lays\n // itself out as this flex column — see `FormElement`. It is the form's own\n // state rather than a rule here, so the form's `styles` still win.\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'clear',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = <DialogContent key=\"content\" {...props} ref={ref} />;\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on\n // close. The restore is the one that matters for popover-type dialogs —\n // `DialogTrigger`'s own restore is a no-op there — so `shouldRestoreFocus`\n // has to reach it. Containment is unaffected either way.\n <FocusScope\n restoreFocus={context.shouldRestoreFocus ?? true}\n contain={shouldContainFocus}\n >\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n const { t } = useI18n();\n\n let domRef = useObjectRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n const contentOverflows = useContentOverflow(domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n mods: { 'content-overflow': contentOverflows },\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n // A line only while the body scrolls: the footer then sits over\n // content that carries on beneath it, and the line is what says so.\n // Under a body that fits, the actions simply end it and a rule there\n // reads as clutter.\n border: {\n '': false,\n 'content-overflow': 'top',\n },\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n label={t('dialog.dismiss', 'Dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","names":["createFocusManager","useObjectRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","DIMENSION_STYLES","DimensionStyleProps","FLOW_STYLES","Styles","tasty","forwardRef","ReactElement","Ref","useEffect","AriaDialogProps","DismissButton","FocusScope","useDialog","useI18n","CloseIcon","mergeProps","SlotProvider","extractStyles","ItemButton","useOpenTransitionContext","useDialogContext","useContentOverflow","STYLES_LIST","DialogElement","as","styles","display","flow","fill","pointerEvents","outline","position","width","height","gap","border","radius","shadow","top","CloseButton","qa","type","right","sizeMap","S","M","L","sizePxMap","small","medium","large","CubeDialogProps","Omit","size","isDismissable","onDismiss","arg","closeIcon","closeButtonStyles","role","Dialog","props","ref","$","_c","transitionContext","isEntered","transitionState","context","t0","content","shouldContainFocus","isOpen","t1","shouldRestoreFocus","t2","DialogContent","HTMLDivElement","contextProps","children","onClose","style","otherProps","toUpperCase","t","domRef","dialogProps","titleProps","dismissButton","setTimeout","current","activeElement","document","isFocusOutsideDialog","contains","isFocusOnDialogShell","priorityElement","querySelector","HTMLElement","focus","focusManager","focusFirst","tabbable","contentOverflows","slots","title","level","preset","flexGrow","padding","header","ellipsis","placeItems","placeContent","footer","mods","buttonGroup","dismissable"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useObjectRef } from '@react-aria/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, Ref, useEffect } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n} from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions/ItemButton/ItemButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\nimport { useContentOverflow } from './use-content-overflow';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n\n // A `Form` placed directly here (`Dialog > Form > Content + Footer`) lays\n // itself out as this flex column — see `FormElement`. It is the form's own\n // state rather than a rule here, so the form's `styles` still win.\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'clear',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = <DialogContent key=\"content\" {...props} ref={ref} />;\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on\n // close. The restore is the one that matters for popover-type dialogs —\n // `DialogTrigger`'s own restore is a no-op there — so `shouldRestoreFocus`\n // has to reach it. Containment is unaffected either way.\n <FocusScope\n restoreFocus={context.shouldRestoreFocus ?? true}\n contain={shouldContainFocus}\n >\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n const { t } = useI18n();\n\n let domRef = useObjectRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n const contentOverflows = useContentOverflow(domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n mods: { 'content-overflow': contentOverflows },\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n // A line only while the body scrolls: the footer then sits over\n // content that carries on beneath it, and the line is what says so.\n // Under a body that fits, the actions simply end it and a rule there\n // reads as clutter.\n border: {\n '': false,\n 'content-overflow': 'top',\n },\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n aria-label={t('dialog.dismiss', 'Dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
|
|
@@ -11,9 +11,9 @@ import { ReactElement } from "react";
|
|
|
11
11
|
interface CubeDialogFormProps<T extends FieldTypes = FieldTypes> extends Omit<CubeDialogProps, 'children'>, Omit<CubeFormProps<T>, 'role' | 'children'> {
|
|
12
12
|
/** Whether the submit button has a `danger` theme */
|
|
13
13
|
danger?: boolean;
|
|
14
|
-
/** Properties for submit button. Use `
|
|
14
|
+
/** Properties for submit button. Use `children` to change text. */
|
|
15
15
|
submitProps?: CubeButtonProps;
|
|
16
|
-
/** Properties for cancel button. Use `
|
|
16
|
+
/** Properties for cancel button. Use `children` to change text. */
|
|
17
17
|
cancelProps?: CubeButtonProps;
|
|
18
18
|
/** Preserve form values after submission or dismissal. */
|
|
19
19
|
preserve?: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
4
4
|
import { Button } from "../../actions/Button/Button.js";
|
|
@@ -7,6 +7,7 @@ import { useDialogContext } from "./context.js";
|
|
|
7
7
|
import { Content } from "../../content/Content.js";
|
|
8
8
|
import { Footer } from "../../content/Footer.js";
|
|
9
9
|
import { Header } from "../../content/Header.js";
|
|
10
|
+
import { withDefaultButtonText } from "./default-button-text.js";
|
|
10
11
|
import { Dialog } from "./Dialog.js";
|
|
11
12
|
import { isModernFormController } from "../../form/Form/backend.js";
|
|
12
13
|
import { useForm } from "../../form/Form/use-form.js";
|
|
@@ -73,13 +74,11 @@ function LegacyDialogForm(props) {
|
|
|
73
74
|
children: [/* @__PURE__ */ jsx(Content, { children: typeof children === "function" ? children(onLocalDismiss) : children }), !noActions ? /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [/* @__PURE__ */ jsx(_SubmitButton, {
|
|
74
75
|
qa: `${qa || ""}SubmitButton`,
|
|
75
76
|
theme: danger ? "danger" : void 0,
|
|
76
|
-
|
|
77
|
-
...submitProps || {}
|
|
77
|
+
...withDefaultButtonText(submitProps, t("dialogForm.submit", "Submit"))
|
|
78
78
|
}), /* @__PURE__ */ jsx(Button, {
|
|
79
79
|
qa: `${qa || ""}CancelButton`,
|
|
80
|
-
label: t("dialogForm.cancel", "Cancel"),
|
|
81
80
|
onPress: onLocalDismiss,
|
|
82
|
-
...cancelProps
|
|
81
|
+
...withDefaultButtonText(cancelProps, t("dialogForm.cancel", "Cancel"))
|
|
83
82
|
})] }) }) : void 0]
|
|
84
83
|
})]
|
|
85
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogForm.js","names":["useI18n","Button","ButtonGroup","Content","Footer","Header","Title","isModernFormController","Form","SubmitButton","useForm","useDialogContext","CubeDialogProps","Dialog","ModernDialogForm","ReactElement","CubeButtonProps","CubeFormProps","ModernFormProps","CubeSubmitButtonProps","FieldTypes","CubeDialogFormProps","Omit","T","danger","submitProps","cancelProps","preserve","noActions","title","children","onLocalDismiss","CubeDialogFormRef","open","close","ModernDialogFormProps","DialogForm","props","$","_c","t0","form","LegacyDialogForm","qa","name","defaultValues","onDismiss","onSubmit","onSubmitFailed","onValuesChange","labelStyles","labelPosition","requiredMark","necessityIndicator","isReadOnly","isInvalid","isValid","validateTrigger","size","closeIcon","dialogProps","t","onClose","setTimeout","resetFields","data","undefined"],"sources":["../../../../src/components/overlays/Dialog/DialogForm.tsx"],"sourcesContent":["import { useI18n } from '../../../i18n';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Title } from '../../content/Title';\nimport { isModernFormController } from '../../form/Form/backend';\nimport { Form } from '../../form/Form/Form';\nimport { SubmitButton } from '../../form/Form/SubmitButton/SubmitButton';\nimport { useForm } from '../../form/Form/use-form';\n\nimport { useDialogContext } from './context';\nimport { CubeDialogProps, Dialog } from './Dialog';\nimport { ModernDialogForm } from './ModernDialogForm';\n\nimport type { ReactElement } from 'react';\nimport type { CubeButtonProps } from '../../actions/Button/Button';\nimport type { CubeFormProps } from '../../form/Form/Form';\nimport type { ModernFormProps } from '../../form/Form/ModernFormRoot';\nimport type { CubeSubmitButtonProps } from '../../form/Form/SubmitButton/SubmitButton';\nimport type { FieldTypes } from '../../form/Form/types';\n\nexport interface CubeDialogFormProps<T extends FieldTypes = FieldTypes>\n extends Omit<CubeDialogProps, 'children'>,\n Omit<CubeFormProps<T>, 'role' | 'children'> {\n /** Whether the submit button has a `danger` theme */\n danger?: boolean;\n /** Properties for submit button. Use `
|
|
1
|
+
{"version":3,"file":"DialogForm.js","names":["useI18n","Button","ButtonGroup","Content","Footer","Header","Title","isModernFormController","Form","SubmitButton","useForm","useDialogContext","withDefaultButtonText","CubeDialogProps","Dialog","ModernDialogForm","ReactElement","CubeButtonProps","CubeFormProps","ModernFormProps","CubeSubmitButtonProps","FieldTypes","CubeDialogFormProps","Omit","T","danger","submitProps","cancelProps","preserve","noActions","title","children","onLocalDismiss","CubeDialogFormRef","open","close","ModernDialogFormProps","DialogForm","props","$","_c","t0","form","LegacyDialogForm","qa","name","defaultValues","onDismiss","onSubmit","onSubmitFailed","onValuesChange","labelStyles","labelPosition","requiredMark","necessityIndicator","isReadOnly","isInvalid","isValid","validateTrigger","size","closeIcon","dialogProps","t","onClose","setTimeout","resetFields","data","undefined"],"sources":["../../../../src/components/overlays/Dialog/DialogForm.tsx"],"sourcesContent":["import { useI18n } from '../../../i18n';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Title } from '../../content/Title';\nimport { isModernFormController } from '../../form/Form/backend';\nimport { Form } from '../../form/Form/Form';\nimport { SubmitButton } from '../../form/Form/SubmitButton/SubmitButton';\nimport { useForm } from '../../form/Form/use-form';\n\nimport { useDialogContext } from './context';\nimport { withDefaultButtonText } from './default-button-text';\nimport { CubeDialogProps, Dialog } from './Dialog';\nimport { ModernDialogForm } from './ModernDialogForm';\n\nimport type { ReactElement } from 'react';\nimport type { CubeButtonProps } from '../../actions/Button/Button';\nimport type { CubeFormProps } from '../../form/Form/Form';\nimport type { ModernFormProps } from '../../form/Form/ModernFormRoot';\nimport type { CubeSubmitButtonProps } from '../../form/Form/SubmitButton/SubmitButton';\nimport type { FieldTypes } from '../../form/Form/types';\n\nexport interface CubeDialogFormProps<T extends FieldTypes = FieldTypes>\n extends Omit<CubeDialogProps, 'children'>,\n Omit<CubeFormProps<T>, 'role' | 'children'> {\n /** Whether the submit button has a `danger` theme */\n danger?: boolean;\n /** Properties for submit button. Use `children` to change text. */\n submitProps?: CubeButtonProps;\n /** Properties for cancel button. Use `children` to change text. */\n cancelProps?: CubeButtonProps;\n /** Preserve form values after submission or dismissal. */\n preserve?: boolean;\n /** Whether to hide action button so developer can manually specify them */\n noActions?: boolean;\n /** The title of the dialog */\n title?: string;\n /** Children nodes or render function */\n children?:\n | CubeFormProps['children']\n | ((onLocalDismiss: () => void) => CubeFormProps['children']);\n}\n\nexport interface CubeDialogFormRef {\n open: () => void;\n close: () => void;\n}\n\n/**\n * DialogForms are a specific type of Dialog. They contain forms to fill.\n */\nexport interface ModernDialogFormProps<T extends FieldTypes = FieldTypes>\n extends Omit<CubeDialogFormProps<T>, keyof CubeFormProps<T> | 'submitProps'>,\n Omit<ModernFormProps<T>, 'role' | 'children'> {\n children?: CubeDialogFormProps<T>['children'];\n submitProps?: Omit<CubeSubmitButtonProps<T>, 'form'>;\n}\n\nexport function DialogForm<T extends FieldTypes = FieldTypes>(\n props: CubeDialogFormProps<T>,\n): ReactElement;\nexport function DialogForm<T extends FieldTypes = FieldTypes>(\n props: ModernDialogFormProps<T>,\n): ReactElement;\nexport function DialogForm<T extends FieldTypes = FieldTypes>(\n props: CubeDialogFormProps<T> | ModernDialogFormProps<T>,\n): ReactElement {\n return isModernFormController(props.form) ? (\n <ModernDialogForm {...(props as ModernDialogFormProps<T>)} />\n ) : (\n <LegacyDialogForm {...(props as CubeDialogFormProps<T>)} />\n );\n}\n\nfunction LegacyDialogForm<T extends FieldTypes>(props: CubeDialogFormProps<T>) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n let {\n qa,\n name,\n form,\n defaultValues,\n onDismiss,\n onSubmit,\n onSubmitFailed,\n onValuesChange,\n labelStyles,\n labelPosition,\n requiredMark,\n necessityIndicator,\n isReadOnly,\n isInvalid,\n isValid,\n validateTrigger,\n children,\n danger,\n noActions,\n submitProps,\n cancelProps,\n preserve,\n title,\n size,\n closeIcon,\n ...dialogProps\n } = props;\n\n [form] = useForm(form);\n\n const { t } = useI18n();\n const { onClose } = useDialogContext();\n\n function onLocalDismiss() {\n onClose?.();\n onDismiss?.();\n\n if (!preserve) {\n // let animations finish before resetting the form\n setTimeout(() => {\n form?.resetFields();\n }, 250);\n }\n }\n\n return (\n <Dialog\n qa={`${qa || ''}Dialog`}\n size={size}\n closeIcon={closeIcon}\n {...dialogProps}\n >\n <Header>\n <Title ellipsis>{title}</Title>\n </Header>\n {/*\n The form wraps BOTH slots rather than sitting inside `Content`, so the\n actions can live in a pinned `Footer` while the body scrolls. They still\n have to be inside the `<form>` for submit to work, which is why the form\n is the outer one of the two (CUB-4920). A form placed directly in a\n `Dialog` lays itself out as the dialog's column (see `FormElement`).\n */}\n <Form<T>\n qa={qa || 'DialogForm'}\n form={form}\n name={name}\n defaultValues={defaultValues}\n labelStyles={labelStyles}\n labelPosition={labelPosition}\n requiredMark={requiredMark}\n necessityIndicator={necessityIndicator}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n validateTrigger={validateTrigger}\n onSubmit={async (data) => {\n await onSubmit?.(data);\n\n onClose?.();\n\n if (!preserve) {\n // let animations finish before resetting the form\n setTimeout(() => {\n form.resetFields();\n }, 250);\n }\n }}\n onSubmitFailed={onSubmitFailed}\n onValuesChange={onValuesChange}\n >\n <Content>\n {typeof children === 'function' ? children(onLocalDismiss) : children}\n </Content>\n\n {!noActions ? (\n <Footer>\n <ButtonGroup>\n <SubmitButton\n qa={`${qa || ''}SubmitButton`}\n theme={danger ? 'danger' : undefined}\n {...withDefaultButtonText(\n submitProps,\n t('dialogForm.submit', 'Submit'),\n )}\n />\n <Button\n qa={`${qa || ''}CancelButton`}\n onPress={onLocalDismiss}\n {...withDefaultButtonText(\n cancelProps,\n t('dialogForm.cancel', 'Cancel'),\n )}\n />\n </ButtonGroup>\n </Footer>\n ) : undefined}\n </Form>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkEA,SAAOqC,WAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAD,OAAA;AAGEG,OAAAlC,uBAAuB+B,MAAKI,KAIlC,GAHC,oBAAC,oBAAgB,GAAMJ,QAGxB,GADC,oBAAC,oBAAgB,GAAMA,QACxB;AAAAC,IAAA,KAAAD;AAAAC,IAAA,KAAAE;OAAAA,MAAAF,EAAA;AAAA,QAJME;;AAOT,SAASE,iBAAuCL,OAA+B;AAC7E;CAGA,IAAI,EACFM,IACAC,MACAH,MACAI,eACAC,WACAC,UACAC,gBACAC,gBACAC,aACAC,eACAC,cACAC,oBACAC,YACAC,WACAC,SACAC,iBACA3B,UACAN,QACAI,WACAH,aACAC,aACAC,UACAE,OACA6B,MACAC,WACA,GAAGC,gBACDvB;AAEJ,EAACI,QAAQhC,QAAQgC,KAAK;CAEtB,MAAM,EAAEoB,MAAM9D,SAAS;CACvB,MAAM,EAAE+D,YAAYpD,kBAAkB;CAEtC,SAASqB,iBAAiB;AACxB+B,aAAW;AACXhB,eAAa;AAEb,MAAI,CAACnB,SAEHoC,kBAAiB;AACftB,SAAMuB,aAAa;KAClB,IAAI;;AAIX,QACE,qBAAC;EACC,IAAI,GAAGrB,MAAM,GAAE;EACTe;EACKC;EACX,GAAIC;aAEJ,oBAAC,oBACC,oBAAC;GAAM;aAAU/B;IAAa,GACxB,EAQR,qBAAC;GACC,IAAIc,MAAM;GACJF;GACAG;GACSC;GACFK;GACEC;GACDC;GACMC;GACRC;GACDC;GACFC;GACQC;GACjB,UAAU,OAAOQ,SAAS;AACxB,UAAMlB,WAAWkB,KAAK;AAEtBH,eAAW;AAEX,QAAI,CAACnC,SAEHoC,kBAAiB;AACftB,UAAKuB,aAAa;OACjB,IAAI;;GAGKhB;GACAC;cAEhB,oBAAC,qBACE,OAAOnB,aAAa,aAAaA,SAASC,eAAe,GAAGD,WACtD,EAER,CAACF,YACA,oBAAC,oBACC,qBAAC,0BACC,oBAAC;IACC,IAAI,GAAGe,MAAM,GAAE;IACf,OAAOnB,SAAS,WAAW0C;IAC3B,GAAIvD,sBACFc,aACAoC,EAAE,qBAAqB,SACzB,CAAC;KAAC,EAEJ,oBAAC;IACC,IAAI,GAAGlB,MAAM,GAAE;IACf,SAASZ;IACT,GAAIpB,sBACFe,aACAmC,EAAE,qBAAqB,SACzB,CAAC;KAAC,IAEO,GACN,GACPK;IACA;GACC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { _Title } from "../../content/Title.js";
|
|
@@ -10,6 +10,7 @@ import { useDialogContext } from "./context.js";
|
|
|
10
10
|
import { Content } from "../../content/Content.js";
|
|
11
11
|
import { Footer } from "../../content/Footer.js";
|
|
12
12
|
import { Header } from "../../content/Header.js";
|
|
13
|
+
import { withDefaultButtonText } from "./default-button-text.js";
|
|
13
14
|
import { Dialog } from "./Dialog.js";
|
|
14
15
|
import { getControllerInternals } from "../../form/Form/modern/controller.js";
|
|
15
16
|
import { _ModernFormRoot } from "../../form/Form/ModernFormRoot.js";
|
|
@@ -249,13 +250,11 @@ function ModernDialogForm(props) {
|
|
|
249
250
|
t11 = !noActions && /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [/* @__PURE__ */ jsx(_SubmitButton, {
|
|
250
251
|
qa: `${qa || ""}SubmitButton`,
|
|
251
252
|
theme: danger ? "danger" : void 0,
|
|
252
|
-
|
|
253
|
-
...submitProps
|
|
253
|
+
...withDefaultButtonText(submitProps, t("dialogForm.submit", "Submit"))
|
|
254
254
|
}), /* @__PURE__ */ jsx(Button, {
|
|
255
255
|
qa: `${qa || ""}CancelButton`,
|
|
256
|
-
label: t("dialogForm.cancel", "Cancel"),
|
|
257
256
|
onPress: dismiss,
|
|
258
|
-
...cancelProps
|
|
257
|
+
...withDefaultButtonText(cancelProps, t("dialogForm.cancel", "Cancel"))
|
|
259
258
|
})] }) });
|
|
260
259
|
$[61] = cancelProps;
|
|
261
260
|
$[62] = danger;
|
|
@@ -269,7 +268,7 @@ function ModernDialogForm(props) {
|
|
|
269
268
|
let t12;
|
|
270
269
|
if ($[69] !== action || $[70] !== autoComplete || $[71] !== defaultValues || $[72] !== encType || $[73] !== form || $[74] !== isDisabled || $[75] !== isInvalid || $[76] !== isReadOnly || $[77] !== isValid || $[78] !== labelPosition || $[79] !== labelStyles || $[80] !== labelWidth || $[81] !== method || $[82] !== name || $[83] !== necessityIndicator || $[84] !== onReset || $[85] !== onResetCapture || $[86] !== onSubmit || $[87] !== onSubmitFailed || $[88] !== onValuesChange || $[89] !== orientation || $[90] !== requiredMark || $[91] !== showValid || $[92] !== submitValues || $[93] !== submitted || $[94] !== t10 || $[95] !== t11 || $[96] !== t8 || $[97] !== target || $[98] !== validateTrigger || $[99] !== validationState) {
|
|
271
270
|
t12 = /* @__PURE__ */ jsxs(_ModernFormRoot, {
|
|
272
|
-
"data-popover-keep": true,
|
|
271
|
+
"data-popover-keep-on-press": true,
|
|
273
272
|
form,
|
|
274
273
|
qa: t8,
|
|
275
274
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModernDialogForm.js","names":["useRef","useEvent","useI18n","useLayoutEffect","Button","ButtonGroup","Content","Footer","Header","Title","getControllerInternals","ModernFormRoot","SubmitButton","useOpenTransitionContext","useDialogContext","Dialog","FormController","ModernDialogFormProps","DialogSession","form","T","preserve","ended","wasOpen","finishSession","session","store","cancelSubmission","reset","ModernDialogForm","props","$","_c","action","autoComplete","cancelProps","children","danger","defaultValues","dialogProps","encType","isDisabled","isInvalid","isReadOnly","isValid","labelPosition","labelStyles","labelWidth","method","name","necessityIndicator","noActions","onDismiss","onReset","onResetCapture","onSubmit","onSubmitFailed","onValuesChange","orientation","qa","requiredMark","showValid","submitProps","submitValues","target","title","validateTrigger","validationState","t","onClose","isOpen","t0","internals","transition","isClosing","undefined","transitionState","t1","current","dismiss","t2","submitted","t3","t4","own","queueMicrotask","getRootElement","t5","t6","t7","t8","t9","t10","t11","t12","t13"],"sources":["../../../../src/components/overlays/Dialog/ModernDialogForm.tsx"],"sourcesContent":["import { useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Title } from '../../content/Title';\nimport { getControllerInternals } from '../../form/Form/modern/controller';\nimport { ModernFormRoot } from '../../form/Form/ModernFormRoot';\nimport { SubmitButton } from '../../form/Form/SubmitButton/SubmitButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\nimport { Dialog } from './Dialog';\n\nimport type { FormController } from '../../form/Form/modern/controller';\nimport type { ModernDialogFormProps } from './DialogForm';\n\ninterface DialogSession<T extends object> {\n form: FormController<T>;\n preserve?: boolean;\n ended: boolean;\n wasOpen: boolean;\n}\n\nfunction finishSession<T extends object>(session?: DialogSession<T>) {\n if (!session || session.ended) return;\n session.ended = true;\n getControllerInternals(session.form, '<DialogForm>').store.cancelSubmission();\n if (!session.preserve) session.form.reset();\n}\n\n/** Modern dialogs own the editing session, including retained/hidden roots. */\nexport function ModernDialogForm<T extends object>(\n props: ModernDialogFormProps<T>,\n) {\n const {\n form,\n qa,\n title,\n danger,\n submitProps,\n cancelProps,\n noActions,\n preserve,\n children,\n onDismiss,\n name,\n defaultValues,\n onSubmit,\n onSubmitFailed,\n onValuesChange,\n onReset,\n onResetCapture,\n submitValues,\n labelStyles,\n labelPosition,\n labelWidth,\n orientation,\n requiredMark,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n validationState,\n validateTrigger,\n showValid,\n action,\n method,\n target,\n encType,\n autoComplete,\n ...dialogProps\n } = props;\n const { t } = useI18n();\n const { onClose, isOpen } = useDialogContext();\n const internals = getControllerInternals(form, '<DialogForm>');\n const transition = useOpenTransitionContext();\n const isClosing =\n isOpen === undefined\n ? transition?.transitionState === 'exit' ||\n transition?.transitionState === 'unmounted'\n : !isOpen;\n const session = useRef<DialogSession<T> | undefined>(undefined);\n const dismiss = useEvent(() => {\n finishSession(session.current);\n onClose?.();\n onDismiss?.();\n });\n const submitted = useEvent(() => {\n finishSession(session.current);\n onClose?.();\n });\n\n // Escape, outside clicks, and controlled closing belong to the container.\n // Only an open -> closed transition ends a session; hidden initial mounts\n // must not discard a controller that the caller has already populated.\n useLayoutEffect(() => {\n if (session.current?.form !== form) {\n session.current = { form, preserve, ended: false, wasOpen: !isClosing };\n }\n const current = session.current;\n current.preserve = preserve;\n if (isClosing && current.wasOpen) finishSession(current);\n if (!isClosing && !current.wasOpen) current.ended = false;\n current.wasOpen = !isClosing;\n });\n\n // Portals may relocate (remounting this component) and Strict Mode reconnects\n // effects. A replacement root owns the same session; only a detached\n // controller should reset after real removal. Capture that controller's\n // session, so replacing it cannot apply the new controller's preserve policy.\n useLayoutEffect(() => {\n const own = session.current;\n return () => {\n queueMicrotask(() => {\n if (!internals.getRootElement()) finishSession(own);\n });\n };\n }, [form, internals]);\n\n return (\n <Dialog {...dialogProps} qa={`${qa || ''}Dialog`} onDismiss={dismiss}>\n <Header>\n <Title ellipsis>{title}</Title>\n </Header>\n {/*\n The form wraps BOTH slots rather than sitting inside `Content`, so the\n actions can live in a pinned `Footer` while the body scrolls. They still\n have to be inside the `<form>` for submit to work, which is why the form\n is the outer one of the two (CUB-4920). A form placed directly in a\n `Dialog` lays itself out as the dialog's column (see `FormElement`).\n */}\n <ModernFormRoot\n data-popover-keep\n form={form}\n qa={qa || 'DialogForm'}\n name={name}\n defaultValues={defaultValues}\n onSubmit={onSubmit}\n onSubmitted={submitted}\n onSubmitFailed={onSubmitFailed}\n onValuesChange={onValuesChange}\n onReset={onReset}\n onResetCapture={onResetCapture}\n submitValues={submitValues}\n labelStyles={labelStyles}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n orientation={orientation}\n requiredMark={requiredMark}\n necessityIndicator={necessityIndicator}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n validationState={validationState}\n validateTrigger={validateTrigger}\n showValid={showValid}\n action={action}\n method={method}\n target={target}\n encType={encType}\n autoComplete={autoComplete}\n >\n <Content>\n {typeof children === 'function' ? children(dismiss) : children}\n </Content>\n\n {!noActions && (\n <Footer>\n <ButtonGroup>\n <SubmitButton\n qa={`${qa || ''}SubmitButton`}\n theme={danger ? 'danger' : undefined}\n label={t('dialogForm.submit', 'Submit')}\n {...submitProps}\n />\n <Button\n qa={`${qa || ''}CancelButton`}\n label={t('dialogForm.cancel', 'Cancel')}\n onPress={dismiss}\n {...cancelProps}\n />\n </ButtonGroup>\n </Footer>\n )}\n </ModernFormRoot>\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModernDialogForm.js","names":["useRef","useEvent","useI18n","useLayoutEffect","Button","ButtonGroup","Content","Footer","Header","Title","getControllerInternals","ModernFormRoot","SubmitButton","useOpenTransitionContext","useDialogContext","withDefaultButtonText","Dialog","FormController","ModernDialogFormProps","DialogSession","form","T","preserve","ended","wasOpen","finishSession","session","store","cancelSubmission","reset","ModernDialogForm","props","$","_c","action","autoComplete","cancelProps","children","danger","defaultValues","dialogProps","encType","isDisabled","isInvalid","isReadOnly","isValid","labelPosition","labelStyles","labelWidth","method","name","necessityIndicator","noActions","onDismiss","onReset","onResetCapture","onSubmit","onSubmitFailed","onValuesChange","orientation","qa","requiredMark","showValid","submitProps","submitValues","target","title","validateTrigger","validationState","t","onClose","isOpen","t0","internals","transition","isClosing","undefined","transitionState","t1","current","dismiss","t2","submitted","t3","t4","own","queueMicrotask","getRootElement","t5","t6","t7","t8","t9","t10","t11","t12","t13"],"sources":["../../../../src/components/overlays/Dialog/ModernDialogForm.tsx"],"sourcesContent":["import { useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Title } from '../../content/Title';\nimport { getControllerInternals } from '../../form/Form/modern/controller';\nimport { ModernFormRoot } from '../../form/Form/ModernFormRoot';\nimport { SubmitButton } from '../../form/Form/SubmitButton/SubmitButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\nimport { withDefaultButtonText } from './default-button-text';\nimport { Dialog } from './Dialog';\n\nimport type { FormController } from '../../form/Form/modern/controller';\nimport type { ModernDialogFormProps } from './DialogForm';\n\ninterface DialogSession<T extends object> {\n form: FormController<T>;\n preserve?: boolean;\n ended: boolean;\n wasOpen: boolean;\n}\n\nfunction finishSession<T extends object>(session?: DialogSession<T>) {\n if (!session || session.ended) return;\n session.ended = true;\n getControllerInternals(session.form, '<DialogForm>').store.cancelSubmission();\n if (!session.preserve) session.form.reset();\n}\n\n/** Modern dialogs own the editing session, including retained/hidden roots. */\nexport function ModernDialogForm<T extends object>(\n props: ModernDialogFormProps<T>,\n) {\n const {\n form,\n qa,\n title,\n danger,\n submitProps,\n cancelProps,\n noActions,\n preserve,\n children,\n onDismiss,\n name,\n defaultValues,\n onSubmit,\n onSubmitFailed,\n onValuesChange,\n onReset,\n onResetCapture,\n submitValues,\n labelStyles,\n labelPosition,\n labelWidth,\n orientation,\n requiredMark,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n validationState,\n validateTrigger,\n showValid,\n action,\n method,\n target,\n encType,\n autoComplete,\n ...dialogProps\n } = props;\n const { t } = useI18n();\n const { onClose, isOpen } = useDialogContext();\n const internals = getControllerInternals(form, '<DialogForm>');\n const transition = useOpenTransitionContext();\n const isClosing =\n isOpen === undefined\n ? transition?.transitionState === 'exit' ||\n transition?.transitionState === 'unmounted'\n : !isOpen;\n const session = useRef<DialogSession<T> | undefined>(undefined);\n const dismiss = useEvent(() => {\n finishSession(session.current);\n onClose?.();\n onDismiss?.();\n });\n const submitted = useEvent(() => {\n finishSession(session.current);\n onClose?.();\n });\n\n // Escape, outside clicks, and controlled closing belong to the container.\n // Only an open -> closed transition ends a session; hidden initial mounts\n // must not discard a controller that the caller has already populated.\n useLayoutEffect(() => {\n if (session.current?.form !== form) {\n session.current = { form, preserve, ended: false, wasOpen: !isClosing };\n }\n const current = session.current;\n current.preserve = preserve;\n if (isClosing && current.wasOpen) finishSession(current);\n if (!isClosing && !current.wasOpen) current.ended = false;\n current.wasOpen = !isClosing;\n });\n\n // Portals may relocate (remounting this component) and Strict Mode reconnects\n // effects. A replacement root owns the same session; only a detached\n // controller should reset after real removal. Capture that controller's\n // session, so replacing it cannot apply the new controller's preserve policy.\n useLayoutEffect(() => {\n const own = session.current;\n return () => {\n queueMicrotask(() => {\n if (!internals.getRootElement()) finishSession(own);\n });\n };\n }, [form, internals]);\n\n return (\n <Dialog {...dialogProps} qa={`${qa || ''}Dialog`} onDismiss={dismiss}>\n <Header>\n <Title ellipsis>{title}</Title>\n </Header>\n {/*\n The form wraps BOTH slots rather than sitting inside `Content`, so the\n actions can live in a pinned `Footer` while the body scrolls. They still\n have to be inside the `<form>` for submit to work, which is why the form\n is the outer one of the two (CUB-4920). A form placed directly in a\n `Dialog` lays itself out as the dialog's column (see `FormElement`).\n\n A press on any of its buttons, custom actions included, must not\n dismiss a popover the dialog lives in: a save has to survive\n validation and a slow request. Only presses, though. The broader\n `data-popover-keep` also tells a field's open listbox that a click\n anywhere in the form is not outside it, so the listbox stayed open\n (CUB-5251).\n */}\n <ModernFormRoot\n data-popover-keep-on-press\n form={form}\n qa={qa || 'DialogForm'}\n name={name}\n defaultValues={defaultValues}\n onSubmit={onSubmit}\n onSubmitted={submitted}\n onSubmitFailed={onSubmitFailed}\n onValuesChange={onValuesChange}\n onReset={onReset}\n onResetCapture={onResetCapture}\n submitValues={submitValues}\n labelStyles={labelStyles}\n labelPosition={labelPosition}\n labelWidth={labelWidth}\n orientation={orientation}\n requiredMark={requiredMark}\n necessityIndicator={necessityIndicator}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n validationState={validationState}\n validateTrigger={validateTrigger}\n showValid={showValid}\n action={action}\n method={method}\n target={target}\n encType={encType}\n autoComplete={autoComplete}\n >\n <Content>\n {typeof children === 'function' ? children(dismiss) : children}\n </Content>\n\n {!noActions && (\n <Footer>\n <ButtonGroup>\n <SubmitButton\n qa={`${qa || ''}SubmitButton`}\n theme={danger ? 'danger' : undefined}\n {...withDefaultButtonText(\n submitProps,\n t('dialogForm.submit', 'Submit'),\n )}\n />\n <Button\n qa={`${qa || ''}CancelButton`}\n onPress={dismiss}\n {...withDefaultButtonText(\n cancelProps,\n t('dialogForm.cancel', 'Cancel'),\n )}\n />\n </ButtonGroup>\n </Footer>\n )}\n </ModernFormRoot>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,SAASyB,cAAgCC,SAA4B;AACnE,KAAI,CAACA,WAAWA,QAAQH,MAAO;AAC/BG,SAAQH,QAAQ;AAChBb,wBAAuBgB,QAAQN,MAAM,eAAe,CAACO,MAAMC,kBAAkB;AAC7E,KAAI,CAACF,QAAQJ,SAAUI,SAAQN,KAAKS,OAAO;;;AAI7C,SAAOC,iBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,IAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAArB;CAAA,IAAAsB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAArC;CAAA,IAAAsC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAApC,EAAA,OAAAD,OAAA;AAGL,GAAA,CAAAX,MAAAwC,IAAAM,OAAA5B,QAAAyB,aAAA3B,aAAAgB,WAAA9B,UAAAe,UAAAgB,WAAAH,MAAAX,eAAAiB,UAAAC,gBAAAC,gBAAAJ,SAAAC,gBAAAS,cAAAjB,aAAAD,eAAAE,YAAAW,aAAAE,cAAAV,oBAAAT,YAAAE,YAAAD,WAAAE,SAAAuB,iBAAAD,iBAAAL,WAAA5B,QAAAe,QAAAgB,QAAAxB,SAAAN,iBAAAK,eAsCIT;AAAMC,IAAA,KAAAD;AAAAC,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAK;AAAAL,IAAA,KAAAM;AAAAN,IAAA,KAAAO;AAAAP,IAAA,KAAAQ;AAAAR,IAAA,KAAAS;AAAAT,IAAA,KAAAZ;AAAAY,IAAA,MAAAU;AAAAV,IAAA,MAAAW;AAAAX,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;AAAAhB,IAAA,MAAAiB;AAAAjB,IAAA,MAAAkB;AAAAlB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAoB;AAAApB,IAAA,MAAAqB;AAAArB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAuB;AAAAvB,IAAA,MAAAwB;AAAAxB,IAAA,MAAAyB;AAAAzB,IAAA,MAAA0B;AAAA1B,IAAA,MAAA2B;AAAA3B,IAAA,MAAAV;AAAAU,IAAA,MAAA4B;AAAA5B,IAAA,MAAA6B;AAAA7B,IAAA,MAAA8B;AAAA9B,IAAA,MAAA+B;AAAA/B,IAAA,MAAAgC;AAAAhC,IAAA,MAAAiC;AAAAjC,IAAA,MAAAkC;AAAAlC,IAAA,MAAAmC;AAAAnC,IAAA,MAAAoC;QAAA;AAAAlC,WAAAF,EAAA;AAAAG,iBAAAH,EAAA;AAAAI,gBAAAJ,EAAA;AAAAK,aAAAL,EAAA;AAAAM,WAAAN,EAAA;AAAAO,kBAAAP,EAAA;AAAAQ,gBAAAR,EAAA;AAAAS,YAAAT,EAAA;AAAAZ,SAAAY,EAAA;AAAAU,eAAAV,EAAA;AAAAW,cAAAX,EAAA;AAAAY,eAAAZ,EAAA;AAAAa,YAAAb,EAAA;AAAAc,kBAAAd,EAAA;AAAAe,gBAAAf,EAAA;AAAAgB,eAAAhB,EAAA;AAAAiB,WAAAjB,EAAA;AAAAkB,SAAAlB,EAAA;AAAAmB,uBAAAnB,EAAA;AAAAoB,cAAApB,EAAA;AAAAqB,cAAArB,EAAA;AAAAsB,YAAAtB,EAAA;AAAAuB,mBAAAvB,EAAA;AAAAwB,aAAAxB,EAAA;AAAAyB,mBAAAzB,EAAA;AAAA0B,mBAAA1B,EAAA;AAAA2B,gBAAA3B,EAAA;AAAAV,aAAAU,EAAA;AAAA4B,OAAA5B,EAAA;AAAA6B,iBAAA7B,EAAA;AAAA8B,cAAA9B,EAAA;AAAA+B,gBAAA/B,EAAA;AAAAgC,iBAAAhC,EAAA;AAAAiC,WAAAjC,EAAA;AAAAkC,UAAAlC,EAAA;AAAAmC,oBAAAnC,EAAA;AAAAoC,oBAAApC,EAAA;;CACV,MAAA,EAAAqC,MAAcnE,SAAS;CACvB,MAAA,EAAAoE,SAAAC,WAA4BzD,kBAAkB;CAAC,IAAA0D;AAAA,KAAAxC,EAAA,QAAAZ,MAAA;AAC7BoD,OAAA9D,uBAAuBU,MAAM,eAAe;AAAAY,IAAA,MAAAZ;AAAAY,IAAA,MAAAwC;OAAAA,MAAAxC,EAAA;CAA9D,MAAAyC,YAAkBD;CAClB,MAAAE,aAAmB7D,0BAA0B;CAC7C,MAAA8D,YACEJ,WAAWK,SACPF,YAAUG,oBAAsB,UAChCH,YAAUG,oBAAsB,cAFpC,CAGKN;CACP,MAAA7C,UAAgB1B,OAAqC4E,OAAU;CAAC,IAAAE;AAAA,KAAA9C,EAAA,QAAAsC,WAAAtC,EAAA,QAAAqB,WAAA;AACvCyB,aAAA;AACvBrD,iBAAcC,QAAOqD,QAAS;AAC9BT,cAAW;AACXjB,gBAAa;;AACdrB,IAAA,MAAAsC;AAAAtC,IAAA,MAAAqB;AAAArB,IAAA,MAAA8C;OAAAA,MAAA9C,EAAA;CAJD,MAAAgD,UAAgB/E,SAAS6E,GAIvB;CAAC,IAAAG;AAAA,KAAAjD,EAAA,QAAAsC,SAAA;AACwBW,aAAA;AACzBxD,iBAAcC,QAAOqD,QAAS;AAC9BT,cAAW;;AACZtC,IAAA,MAAAsC;AAAAtC,IAAA,MAAAiD;OAAAA,MAAAjD,EAAA;CAHD,MAAAkD,YAAkBjF,SAASgF,GAGzB;CAAC,IAAAE;AAAA,KAAAnD,EAAA,QAAAZ,QAAAY,EAAA,QAAA2C,aAAA3C,EAAA,QAAAV,UAAA;AAKa6D,aAAA;AACd,OAAIzD,QAAOqD,SAAc3D,SAAKA,KAC5BM,SAAOqD,UAAW;IAAA3D;IAAAE;IAAAC,OAAyB;IAAKC,SAAW,CAACmD;IAA7C;GAEjB,MAAAI,UAAgBrD,QAAOqD;AACvBA,WAAOzD,WAAYA;AACnB,OAAIqD,aAAaI,QAAOvD,QAAUC,eAAcsD,QAAQ;AACxD,OAAI,CAACJ,aAAD,CAAeI,QAAOvD,QAAUuD,SAAOxD,QAAS;AACpDwD,WAAOvD,UAAW,CAACmD;;AACpB3C,IAAA,MAAAZ;AAAAY,IAAA,MAAA2C;AAAA3C,IAAA,MAAAV;AAAAU,IAAA,MAAAmD;OAAAA,MAAAnD,EAAA;AATD7B,mBAAgBgF,GASd;CAAA,IAAAC;AAAA,KAAApD,EAAA,QAAAyC,WAAA;AAMcW,aAAA;GACd,MAAAC,MAAY3D,QAAOqD;AAAS,gBACrB;AACLO,yBAAe;AACb,SAAI,CAACb,UAASc,gBAAiB,CAAE9D,eAAc4D,IAAI;MACnD;;;AAELrD,IAAA,MAAAyC;AAAAzC,IAAA,MAAAoD;OAAAA,MAAApD,EAAA;CAAA,IAAAwD;AAAA,KAAAxD,EAAA,QAAAZ,QAAAY,EAAA,QAAAyC,WAAA;AAAEe,OAAA,CAACpE,MAAMqD,UAAU;AAAAzC,IAAA,MAAAZ;AAAAY,IAAA,MAAAyC;AAAAzC,IAAA,MAAAwD;OAAAA,MAAAxD,EAAA;AAPpB7B,mBAAgBiF,IAObI,GAAkB;CAGU,MAAAC,KAAA,GAAG7B,MAAA,GAAQ;CAAQ,IAAA8B;AAAA,KAAA1D,EAAA,QAAAkC,OAAA;AAC9CwB,OAAA,oBAAC,oBACC,oBAAC;GAAM,UAAA;aAAUxB;IACnB,GAAS;AAAAlC,IAAA,MAAAkC;AAAAlC,IAAA,MAAA0D;OAAAA,MAAA1D,EAAA;CAkBH,MAAA2D,KAAA/B,MAAA;CAAkB,IAAAgC;AAAA,KAAA5D,EAAA,QAAAK,YAAAL,EAAA,QAAAgD,SAAA;AA8BnBY,OAAA,OAAOvD,aAAa,aAAaA,SAAS2C,QAAmB,GAA7D3C;AAA6DL,IAAA,MAAAK;AAAAL,IAAA,MAAAgD;AAAAhD,IAAA,MAAA4D;OAAAA,MAAA5D,EAAA;CAAA,IAAA6D;AAAA,KAAA7D,EAAA,QAAA4D,IAAA;AADhEC,QAAA,oBAAC,qBACED,KACO;AAAA5D,IAAA,MAAA4D;AAAA5D,IAAA,MAAA6D;OAAAA,OAAA7D,EAAA;CAAA,IAAA8D;AAAA,KAAA9D,EAAA,QAAAI,eAAAJ,EAAA,QAAAM,UAAAN,EAAA,QAAAgD,WAAAhD,EAAA,QAAAoB,aAAApB,EAAA,QAAA4B,MAAA5B,EAAA,QAAA+B,eAAA/B,EAAA,QAAAqC,GAAA;AAETyB,QAAA,CAAC1C,aACA,oBAAC,oBACC,qBAAC,0BACC,oBAAC;GACK,IAAA,GAAGQ,MAAA,GAAQ;GACR,OAAAtB,SAAA,WAAAsC;GAA6B,GAChC7D,sBACFgD,aACAM,EAAE,qBAAqB,SACzB,CAAC;IAEH,sBAAC;GACK,IAAA,GAAGT,MAAA,GAAQ;GACNoB,SAAAA;GAAO,GACZjE,sBACFqB,aACAiC,EAAE,qBAAqB,SACzB,CAAC;IAEL,IACF,GACD;AAAArC,IAAA,MAAAI;AAAAJ,IAAA,MAAAM;AAAAN,IAAA,MAAAgD;AAAAhD,IAAA,MAAAoB;AAAApB,IAAA,MAAA4B;AAAA5B,IAAA,MAAA+B;AAAA/B,IAAA,MAAAqC;AAAArC,IAAA,MAAA8D;OAAAA,OAAA9D,EAAA;CAAA,IAAA+D;AAAA,KAAA/D,EAAA,QAAAE,UAAAF,EAAA,QAAAG,gBAAAH,EAAA,QAAAO,iBAAAP,EAAA,QAAAS,WAAAT,EAAA,QAAAZ,QAAAY,EAAA,QAAAU,cAAAV,EAAA,QAAAW,aAAAX,EAAA,QAAAY,cAAAZ,EAAA,QAAAa,WAAAb,EAAA,QAAAc,iBAAAd,EAAA,QAAAe,eAAAf,EAAA,QAAAgB,cAAAhB,EAAA,QAAAiB,UAAAjB,EAAA,QAAAkB,QAAAlB,EAAA,QAAAmB,sBAAAnB,EAAA,QAAAsB,WAAAtB,EAAA,QAAAuB,kBAAAvB,EAAA,QAAAwB,YAAAxB,EAAA,QAAAyB,kBAAAzB,EAAA,QAAA0B,kBAAA1B,EAAA,QAAA2B,eAAA3B,EAAA,QAAA6B,gBAAA7B,EAAA,QAAA8B,aAAA9B,EAAA,QAAAgC,gBAAAhC,EAAA,QAAAkD,aAAAlD,EAAA,QAAA6D,OAAA7D,EAAA,QAAA8D,OAAA9D,EAAA,QAAA2D,MAAA3D,EAAA,QAAAiC,UAAAjC,EAAA,QAAAmC,mBAAAnC,EAAA,QAAAoC,iBAAA;AAzDH2B,QAAA,qBAAC;GACC,8BAAA;GACM3E;GACF,IAAAuE;GACEzC;GACSX;GACLiB;GACG0B,aAAAA;GACGzB;GACAC;GACPJ;GACOC;GACFS;GACDjB;GACED;GACHE;GACCW;GACCE;GACMV;GACRT;GACAE;GACDD;GACFE;GACQuB;GACAD;GACNL;GACH5B;GACAe;GACAgB;GACCxB;GACKN;cAEd0D,KAICC;IAsBc;AAAA9D,IAAA,MAAAE;AAAAF,IAAA,MAAAG;AAAAH,IAAA,MAAAO;AAAAP,IAAA,MAAAS;AAAAT,IAAA,MAAAZ;AAAAY,IAAA,MAAAU;AAAAV,IAAA,MAAAW;AAAAX,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;AAAAhB,IAAA,MAAAiB;AAAAjB,IAAA,MAAAkB;AAAAlB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAuB;AAAAvB,IAAA,MAAAwB;AAAAxB,IAAA,MAAAyB;AAAAzB,IAAA,MAAA0B;AAAA1B,IAAA,MAAA2B;AAAA3B,IAAA,MAAA6B;AAAA7B,IAAA,MAAA8B;AAAA9B,IAAA,MAAAgC;AAAAhC,IAAA,MAAAkD;AAAAlD,IAAA,MAAA6D;AAAA7D,IAAA,MAAA8D;AAAA9D,IAAA,MAAA2D;AAAA3D,IAAA,MAAAiC;AAAAjC,IAAA,MAAAmC;AAAAnC,IAAA,MAAAoC;AAAApC,IAAA,OAAA+D;OAAAA,OAAA/D,EAAA;CAAA,IAAAgE;AAAA,KAAAhE,EAAA,SAAAQ,eAAAR,EAAA,SAAAgD,WAAAhD,EAAA,SAAA+D,OAAA/D,EAAA,SAAAyD,MAAAzD,EAAA,SAAA0D,IAAA;AA5EnBM,QAAA,qBAAC;GAAM,GAAKxD;GAAiB,IAAAiD;GAAgCT,WAAAA;cAC3DU,IAiBAK;IA2DO;AAAA/D,IAAA,OAAAQ;AAAAR,IAAA,OAAAgD;AAAAhD,IAAA,OAAA+D;AAAA/D,IAAA,OAAAyD;AAAAzD,IAAA,OAAA0D;AAAA1D,IAAA,OAAAgE;OAAAA,OAAAhE,EAAA;AAAA,QA7ETgE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
|
+
//#region src/components/overlays/Dialog/default-button-text.ts
|
|
3
|
+
/**
|
|
4
|
+
* Gives a dialog's built-in button its default text without overriding the
|
|
5
|
+
* consumer's. The text goes in `children`, since `label` is deprecated, but a
|
|
6
|
+
* consumer's `children` or (deprecated) `label` still wins. An icon-only
|
|
7
|
+
* button gets the text as its accessible name instead, which is what `label`
|
|
8
|
+
* used to do for it. A consumer's `aria-label` replaces only that name: a
|
|
9
|
+
* text button keeps its visible default. An icon given as a function (the
|
|
10
|
+
* `({ loading }) => …` form) may render nothing, so it keeps the text too.
|
|
11
|
+
*/
|
|
12
|
+
function withDefaultButtonText(props, text) {
|
|
13
|
+
const own = props ?? {};
|
|
14
|
+
if (own.children != null || own.label != null) return own;
|
|
15
|
+
if (isStaticIcon(own.icon) || isStaticIcon(own.rightIcon)) return own["aria-label"] != null ? own : {
|
|
16
|
+
...own,
|
|
17
|
+
"aria-label": text
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
...own,
|
|
21
|
+
children: text
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function isStaticIcon(icon) {
|
|
25
|
+
return !!icon && typeof icon !== "function";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { withDefaultButtonText };
|
|
30
|
+
//# sourceMappingURL=default-button-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-button-text.js","names":["CubeButtonProps","withDefaultButtonText","props","P","text","own","children","label","isStaticIcon","icon","rightIcon"],"sources":["../../../../src/components/overlays/Dialog/default-button-text.ts"],"sourcesContent":["import type { CubeButtonProps } from '../../actions/Button/Button';\n\n/**\n * Gives a dialog's built-in button its default text without overriding the\n * consumer's. The text goes in `children`, since `label` is deprecated, but a\n * consumer's `children` or (deprecated) `label` still wins. An icon-only\n * button gets the text as its accessible name instead, which is what `label`\n * used to do for it. A consumer's `aria-label` replaces only that name: a\n * text button keeps its visible default. An icon given as a function (the\n * `({ loading }) => …` form) may render nothing, so it keeps the text too.\n */\nexport function withDefaultButtonText<P extends CubeButtonProps>(\n props: P | undefined,\n text: string,\n): P {\n const own = (props ?? {}) as P;\n\n if (own.children != null || own.label != null) return own;\n\n if (isStaticIcon(own.icon) || isStaticIcon(own.rightIcon)) {\n return own['aria-label'] != null ? own : { ...own, 'aria-label': text };\n }\n\n return { ...own, children: text };\n}\n\nfunction isStaticIcon(icon: CubeButtonProps['icon']) {\n return !!icon && typeof icon !== 'function';\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAgBC,sBACdC,OACAE,MACG;CACH,MAAMC,MAAOH,SAAS,EAAE;AAExB,KAAIG,IAAIC,YAAY,QAAQD,IAAIE,SAAS,KAAM,QAAOF;AAEtD,KAAIG,aAAaH,IAAII,KAAK,IAAID,aAAaH,IAAIK,UAAU,CACvD,QAAOL,IAAI,iBAAiB,OAAOA,MAAM;EAAE,GAAGA;EAAK,cAAcD;EAAM;AAGzE,QAAO;EAAE,GAAGC;EAAKC,UAAUF;EAAM;;AAGnC,SAASI,aAAaC,MAA+B;AACnD,QAAO,CAAC,CAACA,QAAQ,OAAOA,SAAS"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import { useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { DialogContainer } from "./DialogContainer.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { _Underlay } from "./Underlay.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { markFocusRestoreWindow } from "../../../utils/react/programmaticFocus.js";
|
|
3
3
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
4
4
|
import { Provider, useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.189.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { useOverlayEscapeGuard } from "../../../utils/react/useOverlayEscapeGuard.js";
|
|
@@ -22,7 +22,7 @@ const PopoverElement = tasty({
|
|
|
22
22
|
},
|
|
23
23
|
pointerEvents: "auto",
|
|
24
24
|
position: "absolute",
|
|
25
|
-
transition: "opacity
|
|
25
|
+
transition: "opacity $disclosure-transition linear, visibility 0ms linear, transform $disclosure-transition ease-in-out",
|
|
26
26
|
transform: {
|
|
27
27
|
"": "scale(1, .9)",
|
|
28
28
|
open: "initial"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","names":["useObjectRef","BaseProps","tasty","forwardRef","HTMLAttributes","OverlayProps","useModal","useOverlay","PlacementAxis","mergeProps","useOverlayEscapeGuard","Overlay","TransitionState","WithCloseBehavior","Props","PopoverElement","role","styles","display","hide","exit","unmounted","pointerEvents","position","transition","transform","open","opacity","transformOrigin","CubePopoverProps","Omit","container","HTMLElement","placement","arrowProps","hideArrow","isOpen","onClose","shouldCloseOnBlur","isNonModal","isDismissable","shouldCloseOnInteractOutside","element","Element","Popover","props","ref","$","_c","children","otherProps","qa","style","t0","undefined","domRef","t1","t2","overlayProps","rawOverlayProps","t3","t4","PopoverWrapperProps","PopoverWrapper","transitionState","isDisabled","modalProps","T0","t5","t6","t7","t8","enter","entered","t9","_Popover","displayName"],"sources":["../../../../src/components/overlays/Modal/Popover.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { BaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes } from 'react';\nimport { OverlayProps, useModal, useOverlay } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useOverlayEscapeGuard } from '../../../utils/react/useOverlayEscapeGuard';\n\nimport { Overlay } from './Overlay';\nimport { TransitionState, WithCloseBehavior } from './types';\n\nimport type { Props } from '../../../props';\n\nconst PopoverElement = tasty({\n role: 'presentation',\n styles: {\n display: 'initial',\n hide: {\n '': true,\n 'enter | entered': false,\n exit: false,\n unmounted: true,\n },\n pointerEvents: 'auto',\n position: 'absolute',\n transition:\n 'opacity
|
|
1
|
+
{"version":3,"file":"Popover.js","names":["useObjectRef","BaseProps","tasty","forwardRef","HTMLAttributes","OverlayProps","useModal","useOverlay","PlacementAxis","mergeProps","useOverlayEscapeGuard","Overlay","TransitionState","WithCloseBehavior","Props","PopoverElement","role","styles","display","hide","exit","unmounted","pointerEvents","position","transition","transform","open","opacity","transformOrigin","CubePopoverProps","Omit","container","HTMLElement","placement","arrowProps","hideArrow","isOpen","onClose","shouldCloseOnBlur","isNonModal","isDismissable","shouldCloseOnInteractOutside","element","Element","Popover","props","ref","$","_c","children","otherProps","qa","style","t0","undefined","domRef","t1","t2","overlayProps","rawOverlayProps","t3","t4","PopoverWrapperProps","PopoverWrapper","transitionState","isDisabled","modalProps","T0","t5","t6","t7","t8","enter","entered","t9","_Popover","displayName"],"sources":["../../../../src/components/overlays/Modal/Popover.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { BaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes } from 'react';\nimport { OverlayProps, useModal, useOverlay } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useOverlayEscapeGuard } from '../../../utils/react/useOverlayEscapeGuard';\n\nimport { Overlay } from './Overlay';\nimport { TransitionState, WithCloseBehavior } from './types';\n\nimport type { Props } from '../../../props';\n\nconst PopoverElement = tasty({\n role: 'presentation',\n styles: {\n display: 'initial',\n hide: {\n '': true,\n 'enter | entered': false,\n exit: false,\n unmounted: true,\n },\n pointerEvents: 'auto',\n position: 'absolute',\n transition:\n 'opacity $disclosure-transition linear, visibility 0ms linear, transform $disclosure-transition ease-in-out',\n transform: {\n '': 'scale(1, .9)',\n open: 'initial',\n },\n opacity: {\n '': 0,\n open: '.9999',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n },\n});\n\nexport interface CubePopoverProps\n extends BaseProps,\n Omit<OverlayProps, 'children' | 'nodeRef'>,\n WithCloseBehavior,\n TransitionState {\n container?: HTMLElement;\n placement?: PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n hideArrow?: boolean;\n isOpen?: boolean;\n onClose?: () => void;\n shouldCloseOnBlur?: boolean;\n isNonModal?: boolean;\n isDismissable?: boolean;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n}\n\nfunction Popover(props: CubePopoverProps, ref) {\n let {\n qa,\n style,\n styles,\n children,\n placement,\n arrowProps,\n isNonModal,\n isDismissable = true,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n // `useOverlay` has to run here rather than inside `PopoverWrapper`, on the\n // *logical* open state — `Overlay` hands its child an `isOpen` that only\n // turns true once the enter animation has settled. Registering the overlay\n // that late leaves it out of React Aria's visible-overlay stack for the first\n // frames, and `Escape` silently does nothing until the popover finishes\n // animating in. `Modal` and `Tray` call it from the same place for the same\n // reason.\n let { overlayProps: rawOverlayProps } = useOverlay(\n { ...props, isDismissable: isDismissable && props.isOpen },\n domRef,\n );\n\n // ...and a popover that has already closed must not answer for `Escape`\n // while it animates out — see `useOverlayEscapeGuard`.\n const overlayProps = useOverlayEscapeGuard(rawOverlayProps, props.isOpen);\n\n return (\n <Overlay {...otherProps}>\n <PopoverWrapper\n ref={domRef}\n qa={qa}\n style={style}\n styles={styles}\n placement={placement}\n arrowProps={arrowProps}\n isNonModal={isNonModal}\n overlayProps={overlayProps}\n >\n {children}\n </PopoverWrapper>\n </Overlay>\n );\n}\n\ninterface PopoverWrapperProps\n extends Omit<CubePopoverProps, 'isDismissable'>,\n TransitionState {\n overlayProps?: Props;\n}\n\nconst PopoverWrapper = forwardRef(function PopoverWrapper(\n props: PopoverWrapperProps,\n ref,\n) {\n let {\n qa,\n children,\n placement = 'bottom',\n arrowProps,\n // `isOpen` here is the transition's settled state, not the trigger's — it\n // drives the enter/exit styles only.\n isOpen,\n style,\n styles,\n isNonModal,\n transitionState,\n overlayProps,\n ...otherProps\n } = props;\n let { modalProps } = useModal({\n isDisabled: isNonModal,\n });\n\n return (\n <PopoverElement\n qa={qa || 'Popover'}\n {...mergeProps(otherProps, overlayProps, modalProps)}\n ref={ref}\n styles={styles}\n mods={{\n open: isOpen,\n enter: transitionState === 'enter',\n exit: transitionState === 'exit',\n unmounted: transitionState === 'unmounted',\n entered: transitionState === 'entered',\n }}\n data-placement={placement}\n style={style}\n >\n {children}\n </PopoverElement>\n );\n});\n\nconst _Popover = forwardRef(Popover);\n\n_Popover.displayName = 'Popover';\n\nexport { _Popover as Popover };\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.189.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { _Underlay } from "./Underlay.js";
|