@cube-dev/ui-kit 0.195.0 → 0.196.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +174 -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 +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.d.ts +6 -0
- package/dist/components/Root.js +125 -102
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +11 -5
- 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.d.ts +9 -4
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +27 -25
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +7 -4
- package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.js +69 -60
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -4
- 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.js +15 -14
- 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/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +8 -8
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +16 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
- package/dist/components/content/ItemBadge/ItemBadge.js.map +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 +29 -15
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +20 -10
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +12 -9
- package/dist/components/content/Layout/LayoutFooter.js.map +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.d.ts +4 -2
- package/dist/components/content/Layout/LayoutPanel.js +73 -2
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.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.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +2 -1
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +3 -3
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +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 +2 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/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 +3 -1
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-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-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +2 -2
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +27 -7
- package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
- package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +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/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +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.d.ts +7 -0
- package/dist/components/fields/DatePicker/parseDate.js +17 -3
- package/dist/components/fields/DatePicker/parseDate.js.map +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 +2 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +15 -6
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.d.ts +2 -2
- package/dist/components/fields/Input/Input.js +2 -2
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
- package/dist/components/fields/ListBox/ListBox.js +298 -146
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +150 -139
- 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 +6 -1
- package/dist/components/fields/NumberInput/NumberInput.js +136 -128
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +38 -48
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +1 -1
- package/dist/components/fields/Picker/Picker.js +22 -8
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -6
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
- package/dist/components/fields/SearchInput/SearchInput.js +22 -34
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +12 -1
- package/dist/components/fields/Select/Select.js +365 -207
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +3 -4
- package/dist/components/fields/Slider/RangeSlider.js.map +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 +2 -2
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
- package/dist/components/fields/TextArea/TextArea.js +49 -63
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
- package/dist/components/fields/TextInput/TextInput.js +42 -46
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
- package/dist/components/fields/TextInput/TextInputBase.js +32 -10
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +50 -0
- package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +20 -17
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +3 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +78 -0
- package/dist/components/fields/option-origin-press.js.map +1 -0
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +10 -8
- package/dist/components/form/FieldWrapper/FieldWrapper.js +214 -159
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +3 -3
- package/dist/components/form/FieldWrapper/field-description.js.map +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +4 -3
- 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 +21 -33
- package/dist/components/form/Form/use-field/use-field-props.js.map +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/field-chrome.js +4 -34
- package/dist/components/form/field-chrome.js.map +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.d.ts +6 -17
- package/dist/components/form/wrapper.js +6 -14
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/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 +3 -1
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +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 +2 -1
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +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/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +28 -14
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
- package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
- 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 +9 -3
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +31 -29
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -1
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/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 +18 -32
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/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.d.ts +8 -0
- package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
- package/dist/components/overlays/Tooltip/split-trigger-props.js.map +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 +11 -17
- 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 +6 -4
- package/dist/i18n/locales/en-US/uikit.js +6 -4
- package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
- package/dist/i18n/locales/es-ES/uikit.js +6 -4
- package/dist/i18n/locales/es-MX/uikit.js +6 -4
- package/dist/i18n/locales/fr-FR/uikit.js +6 -4
- package/dist/i18n/locales/it-IT/uikit.js +6 -4
- package/dist/i18n/locales/ja-JP/uikit.js +6 -4
- package/dist/i18n/locales/nb-NO/uikit.js +6 -4
- package/dist/i18n/locales/pt-BR/uikit.js +6 -4
- package/dist/i18n/locales/pt-PT/uikit.js +6 -4
- package/dist/i18n/locales/sv-SE/uikit.js +6 -4
- package/dist/i18n/locales/vi-VN/uikit.js +6 -4
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- 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/navigation-url.js +15 -3
- package/dist/providers/navigation-url.js.map +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/shared/form.d.ts +11 -12
- 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/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 +18 -9
- package/dist/utils/react/nullableValue.js.map +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/ComplexLayout.md +1 -1
- package/docs/CreateComponent.md +2 -0
- package/docs/FieldProperties.md +31 -6
- package/docs/Theming.md +2 -1
- package/docs/Usage.md +2 -0
- package/docs/components/Root.md +1 -1
- package/docs/components/actions/Button.md +8 -2
- package/docs/components/actions/ButtonSplit.md +27 -1
- package/docs/components/actions/Link.md +1 -1
- package/docs/components/actions/Menu.md +4 -2
- package/docs/components/content/InfoBadge.md +2 -0
- package/docs/components/content/ItemBadge.md +4 -0
- package/docs/components/content/Layout.md +10 -5
- package/docs/components/fields/ComboBox.md +30 -19
- package/docs/components/fields/FilterListBox.md +2 -2
- package/docs/components/fields/FilterPicker.md +2 -2
- package/docs/components/fields/ListBox.md +14 -10
- package/docs/components/fields/NumberInput.md +20 -11
- package/docs/components/fields/PasswordInput.md +6 -7
- package/docs/components/fields/Picker.md +6 -5
- package/docs/components/fields/RadioGroup.md +1 -1
- package/docs/components/fields/SearchInput.md +7 -6
- package/docs/components/fields/Select.md +14 -8
- package/docs/components/fields/TagInput.md +8 -1
- package/docs/components/fields/TextArea.md +4 -3
- package/docs/components/fields/TextInput.md +13 -6
- package/docs/components/overlays/AlertDialog.md +7 -1
- package/docs/components/overlays/Dialog.md +5 -5
- package/docs/components/overlays/DialogTrigger.md +6 -6
- package/docs/components/overlays/Tooltip.md +17 -6
- package/docs/components/overlays/TooltipTrigger.md +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.196.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";
|
|
@@ -108,12 +108,22 @@ const sizePxMap = {
|
|
|
108
108
|
large: 798
|
|
109
109
|
};
|
|
110
110
|
/**
|
|
111
|
+
* The control a dialog focuses when it opens: an input marked
|
|
112
|
+
* `data-autofocus`, or a submit or primary button. In an alert dialog never a
|
|
113
|
+
* destructive (`danger`) button, which a reflexive Enter would run.
|
|
114
|
+
*/
|
|
115
|
+
function findPriorityFocusElement(dialog) {
|
|
116
|
+
const button = dialog.getAttribute("role") === "alertdialog" ? "button:not([data-theme=\"danger\"])" : "button";
|
|
117
|
+
return dialog.querySelector(`input[data-autofocus], ${button}[type="submit"], ${button}[data-type="primary"]`);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
111
120
|
* Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.
|
|
112
121
|
* Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.
|
|
113
122
|
*/
|
|
114
123
|
const Dialog = forwardRef(function Dialog(props, ref) {
|
|
115
124
|
const $ = c(7);
|
|
116
|
-
const
|
|
125
|
+
const transitionState = useOpenTransitionContext()?.transitionState;
|
|
126
|
+
const isShown = transitionState === "enter" || transitionState === "entered";
|
|
117
127
|
const context = useDialogContext();
|
|
118
128
|
let t0;
|
|
119
129
|
if ($[0] !== props || $[1] !== ref) {
|
|
@@ -126,7 +136,8 @@ const Dialog = forwardRef(function Dialog(props, ref) {
|
|
|
126
136
|
$[2] = t0;
|
|
127
137
|
} else t0 = $[2];
|
|
128
138
|
const content = t0;
|
|
129
|
-
const
|
|
139
|
+
const isNonModalPopover = context.type === "popover" && context.isDismissable === false;
|
|
140
|
+
const shouldContainFocus = isShown && !!context.isOpen && context.type !== "panel" && !isNonModalPopover;
|
|
130
141
|
const t1 = context.shouldRestoreFocus ?? true;
|
|
131
142
|
let t2;
|
|
132
143
|
if ($[3] !== content || $[4] !== shouldContainFocus || $[5] !== t1) {
|
|
@@ -144,12 +155,12 @@ const Dialog = forwardRef(function Dialog(props, ref) {
|
|
|
144
155
|
});
|
|
145
156
|
const DialogContent = forwardRef(function DialogContent(props, ref) {
|
|
146
157
|
let { type = "modal", ...contextProps } = useDialogContext();
|
|
147
|
-
let { qa, children, size = "M", isDismissable = contextProps.isDismissable, onDismiss = contextProps.onClose, closeIcon, closeButtonStyles, style, ...otherProps } = props;
|
|
158
|
+
let { qa, children, size = "M", isDismissable = type === "popover" ? void 0 : contextProps.isDismissable, onDismiss = contextProps.onClose, closeIcon, closeButtonStyles, style, ...otherProps } = props;
|
|
148
159
|
size = sizeMap[size.toUpperCase()] || size;
|
|
149
160
|
const styles = extractStyles(otherProps, STYLES_LIST);
|
|
150
161
|
const { t } = useI18n();
|
|
151
162
|
let domRef = useObjectRef(ref);
|
|
152
|
-
let { dialogProps, titleProps } = useDialog(mergeProps$1(contextProps, props), domRef);
|
|
163
|
+
let { dialogProps, titleProps, contentProps } = useDialog(mergeProps$1(contextProps, props), domRef);
|
|
153
164
|
let dismissButton;
|
|
154
165
|
if (type === "popover" || type === "tray") dismissButton = /* @__PURE__ */ jsx(DismissButton, { onDismiss });
|
|
155
166
|
useEffect(() => {
|
|
@@ -158,7 +169,7 @@ const DialogContent = forwardRef(function DialogContent(props, ref) {
|
|
|
158
169
|
const activeElement = document.activeElement;
|
|
159
170
|
const isFocusOutsideDialog = !domRef.current.contains(activeElement);
|
|
160
171
|
const isFocusOnDialogShell = activeElement === domRef.current;
|
|
161
|
-
const priorityElement = domRef.current
|
|
172
|
+
const priorityElement = findPriorityFocusElement(domRef.current);
|
|
162
173
|
if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {
|
|
163
174
|
priorityElement.focus();
|
|
164
175
|
return;
|
|
@@ -175,15 +186,18 @@ const DialogContent = forwardRef(function DialogContent(props, ref) {
|
|
|
175
186
|
preset: "h4",
|
|
176
187
|
...titleProps
|
|
177
188
|
},
|
|
178
|
-
content: {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
189
|
+
content: {
|
|
190
|
+
id: contentProps.id ?? null,
|
|
191
|
+
styles: {
|
|
192
|
+
flexGrow: 1,
|
|
193
|
+
padding: "$dialog-content-padding-v $dialog-padding-h",
|
|
194
|
+
gap: "$dialog-content-gap",
|
|
195
|
+
height: {
|
|
196
|
+
"": "max (100% - (2 * $dialog-content-padding-v))",
|
|
197
|
+
":last-child": "max (100% - $dialog-content-padding-v)"
|
|
198
|
+
}
|
|
185
199
|
}
|
|
186
|
-
}
|
|
200
|
+
},
|
|
187
201
|
header: {
|
|
188
202
|
ellipsis: true,
|
|
189
203
|
styles: {
|
|
@@ -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 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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"}
|
|
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","findPriorityFocusElement","dialog","HTMLElement","button","getAttribute","querySelector","Dialog","props","ref","$","_c","transitionState","isShown","context","t0","content","isNonModalPopover","shouldContainFocus","isOpen","t1","shouldRestoreFocus","t2","DialogContent","HTMLDivElement","contextProps","children","undefined","onClose","style","otherProps","toUpperCase","t","domRef","dialogProps","titleProps","contentProps","dismissButton","setTimeout","current","activeElement","document","isFocusOutsideDialog","contains","isFocusOnDialogShell","priorityElement","focus","focusManager","focusFirst","tabbable","contentOverflows","slots","title","level","preset","id","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 * The control a dialog focuses when it opens: an input marked\n * `data-autofocus`, or a submit or primary button. In an alert dialog never a\n * destructive (`danger`) button, which a reflexive Enter would run.\n */\nfunction findPriorityFocusElement(dialog: HTMLElement) {\n const button =\n dialog.getAttribute('role') === 'alertdialog'\n ? 'button:not([data-theme=\"danger\"])'\n : 'button';\n\n return dialog.querySelector<HTMLElement>(\n `input[data-autofocus], ${button}[type=\"submit\"], ${button}[data-type=\"primary\"]`,\n );\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 transitionState = useOpenTransitionContext()?.transitionState;\n\n // From the first frame of the enter transition, not only once it has\n // ended: a Tab pressed while the dialog animates in would otherwise land on\n // the page behind it, and nothing would pull it back. Released as soon as\n // the dialog closes, so focus can return to the trigger during the exit.\n const isShown = transitionState === 'enter' || transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = <DialogContent key=\"content\" {...props} ref={ref} />;\n\n // A popover that is not dismissable leaves the page usable, as a panel\n // does: an outside press reaches its control, and focus has to follow it\n // there, into a text field too.\n const isNonModalPopover =\n context.type === 'popover' && context.isDismissable === false;\n\n const shouldContainFocus =\n isShown &&\n !!context.isOpen &&\n context.type !== 'panel' &&\n !isNonModalPopover;\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 // A popover shows a close button only when its `Dialog` asks for one: its\n // trigger's `isDismissable` decides whether an outside press closes it.\n isDismissable = type === 'popover' ? undefined : 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 // `contentProps` carries an id only for `role=\"alertdialog\"` without an\n // explicit `aria-describedby`: an alert is described by its message, while a\n // plain dialog links nothing, so opening a form does not read it aloud.\n let { dialogProps, titleProps, contentProps } = 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 = findPriorityFocusElement(domRef.current);\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 // `null` rather than `undefined` when there is none: slots reach nested\n // slot providers, and `undefined` does not override, so a dialog opened\n // inside an alert dialog would repeat the alert's message id.\n id: contentProps.id ?? null,\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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.196.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";
|
|
@@ -21,12 +21,16 @@ interface CubeDialogTriggerProps extends Omit<OverlayTriggerProps, 'type'>, Posi
|
|
|
21
21
|
mobileType?: 'modal' | 'tray' | 'fullscreen' | 'fullscreenTakeover' | 'panel' | 'popover';
|
|
22
22
|
placement?: Placement;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Has no effect: popovers render no arrow.
|
|
25
|
+
* @deprecated Popovers never render an arrow, so there is nothing to hide.
|
|
25
26
|
*/
|
|
26
27
|
hideArrow?: boolean;
|
|
27
|
-
/** The ref of the element the Dialog should visually attach itself to. Defaults to the trigger button if not defined. */
|
|
28
|
+
/** The ref of the element the Dialog should visually attach itself to. Defaults to the trigger button if not defined. A popover closes when this element scrolls, as one attached to its trigger does. */
|
|
28
29
|
targetRef?: RefObject<HTMLElement | null>;
|
|
29
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Whether passive dismissal (Escape or an outside click) can close the dialog. Explicit dialog actions can still close it.
|
|
32
|
+
* A popover that is not dismissable lets an outside press through to the control it lands on, including a text field, which can take focus. It stays open when another popover opens, and closes when a modal, tray, fullscreen or panel dialog opens from another `DialogTrigger`.
|
|
33
|
+
*/
|
|
30
34
|
isDismissable?: boolean;
|
|
31
35
|
/** Whether pressing the escape key to close the dialog should be disabled. */
|
|
32
36
|
isKeyboardDismissDisabled?: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.196.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";
|
|
@@ -9,6 +9,7 @@ import { _Tray } from "../Modal/Tray.js";
|
|
|
9
9
|
import { _Popover } from "../Modal/Popover.js";
|
|
10
10
|
import { isOwnActionsPress } from "../../actions/actions-run.js";
|
|
11
11
|
import { DialogContext } from "./context.js";
|
|
12
|
+
import { useDialogOpenSync } from "./use-dialog-open-sync.js";
|
|
12
13
|
import { c } from "react/compiler-runtime";
|
|
13
14
|
import { Fragment, useEffect, useMemo, useRef } from "react";
|
|
14
15
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -49,7 +50,14 @@ function DialogTrigger(props) {
|
|
|
49
50
|
triggerRef: syncTriggerRef,
|
|
50
51
|
containerRef: syncOverlayRef,
|
|
51
52
|
dismissOnInnerButtonPress: isPopoverFlavored,
|
|
52
|
-
closeOnPeerOpen: isPopoverFlavored
|
|
53
|
+
closeOnPeerOpen: isPopoverFlavored && isDismissable
|
|
54
|
+
});
|
|
55
|
+
useDialogOpenSync({
|
|
56
|
+
emits: !isPopoverFlavored,
|
|
57
|
+
closes: isPopoverFlavored && !isDismissable,
|
|
58
|
+
state,
|
|
59
|
+
triggerRef: syncTriggerRef,
|
|
60
|
+
overlayRef: syncOverlayRef
|
|
53
61
|
});
|
|
54
62
|
useEffect(() => {
|
|
55
63
|
return () => {
|
|
@@ -70,6 +78,7 @@ function DialogTrigger(props) {
|
|
|
70
78
|
targetRef,
|
|
71
79
|
trigger,
|
|
72
80
|
content,
|
|
81
|
+
isDismissable,
|
|
73
82
|
isKeyboardDismissDisabled,
|
|
74
83
|
hideArrow,
|
|
75
84
|
shouldCloseOnInteractOutside,
|
|
@@ -123,10 +132,11 @@ function DialogTrigger(props) {
|
|
|
123
132
|
});
|
|
124
133
|
}
|
|
125
134
|
function PopoverTrigger(allProps) {
|
|
126
|
-
const $ = c(
|
|
135
|
+
const $ = c(66);
|
|
127
136
|
let content;
|
|
128
137
|
let hideArrow;
|
|
129
138
|
let hideOnClose;
|
|
139
|
+
let isDismissable;
|
|
130
140
|
let isKeyboardDismissDisabled;
|
|
131
141
|
let keepOpenOnScroll;
|
|
132
142
|
let onClose;
|
|
@@ -140,7 +150,7 @@ function PopoverTrigger(allProps) {
|
|
|
140
150
|
let targetRef;
|
|
141
151
|
let trigger;
|
|
142
152
|
if ($[0] !== allProps) {
|
|
143
|
-
const { state: t0, styles: t1, targetRef: t2, trigger: t3, content: t4, hideArrow: t5, onClose: t6,
|
|
153
|
+
const { state: t0, styles: t1, targetRef: t2, trigger: t3, content: t4, hideArrow: t5, onClose: t6, isDismissable: t7, isKeyboardDismissDisabled: t8, hideOnClose: t9, shouldCloseOnInteractOutside: t10, shouldRestoreFocus: t11, keepOpenOnScroll: t12, syncTriggerRef: t13, syncOverlayRef: t14, triggerType, ...t15 } = allProps;
|
|
144
154
|
state = t0;
|
|
145
155
|
styles = t1;
|
|
146
156
|
targetRef = t2;
|
|
@@ -148,122 +158,125 @@ function PopoverTrigger(allProps) {
|
|
|
148
158
|
content = t4;
|
|
149
159
|
hideArrow = t5;
|
|
150
160
|
onClose = t6;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
isDismissable = t7;
|
|
162
|
+
isKeyboardDismissDisabled = t8;
|
|
163
|
+
hideOnClose = t9;
|
|
164
|
+
shouldCloseOnInteractOutside = t10;
|
|
165
|
+
shouldRestoreFocus = t11;
|
|
166
|
+
keepOpenOnScroll = t12;
|
|
167
|
+
syncTriggerRef = t13;
|
|
168
|
+
syncOverlayRef = t14;
|
|
169
|
+
props = t15;
|
|
159
170
|
$[0] = allProps;
|
|
160
171
|
$[1] = content;
|
|
161
172
|
$[2] = hideArrow;
|
|
162
173
|
$[3] = hideOnClose;
|
|
163
|
-
$[4] =
|
|
164
|
-
$[5] =
|
|
165
|
-
$[6] =
|
|
166
|
-
$[7] =
|
|
167
|
-
$[8] =
|
|
168
|
-
$[9] =
|
|
169
|
-
$[10] =
|
|
170
|
-
$[11] =
|
|
171
|
-
$[12] =
|
|
172
|
-
$[13] =
|
|
173
|
-
$[14] =
|
|
174
|
-
$[15] =
|
|
174
|
+
$[4] = isDismissable;
|
|
175
|
+
$[5] = isKeyboardDismissDisabled;
|
|
176
|
+
$[6] = keepOpenOnScroll;
|
|
177
|
+
$[7] = onClose;
|
|
178
|
+
$[8] = props;
|
|
179
|
+
$[9] = shouldCloseOnInteractOutside;
|
|
180
|
+
$[10] = shouldRestoreFocus;
|
|
181
|
+
$[11] = state;
|
|
182
|
+
$[12] = styles;
|
|
183
|
+
$[13] = syncOverlayRef;
|
|
184
|
+
$[14] = syncTriggerRef;
|
|
185
|
+
$[15] = targetRef;
|
|
186
|
+
$[16] = trigger;
|
|
175
187
|
} else {
|
|
176
188
|
content = $[1];
|
|
177
189
|
hideArrow = $[2];
|
|
178
190
|
hideOnClose = $[3];
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
isDismissable = $[4];
|
|
192
|
+
isKeyboardDismissDisabled = $[5];
|
|
193
|
+
keepOpenOnScroll = $[6];
|
|
194
|
+
onClose = $[7];
|
|
195
|
+
props = $[8];
|
|
196
|
+
shouldCloseOnInteractOutside = $[9];
|
|
197
|
+
shouldRestoreFocus = $[10];
|
|
198
|
+
state = $[11];
|
|
199
|
+
styles = $[12];
|
|
200
|
+
syncOverlayRef = $[13];
|
|
201
|
+
syncTriggerRef = $[14];
|
|
202
|
+
targetRef = $[15];
|
|
203
|
+
trigger = $[16];
|
|
191
204
|
}
|
|
192
205
|
const triggerRef = useRef(null);
|
|
193
206
|
const overlayRef = useRef(null);
|
|
207
|
+
const anchorRef = targetRef || triggerRef;
|
|
194
208
|
let t0;
|
|
195
|
-
if ($[
|
|
209
|
+
if ($[17] !== syncOverlayRef || $[18] !== syncTriggerRef || $[19] !== targetRef) {
|
|
196
210
|
t0 = () => {
|
|
197
211
|
if (syncTriggerRef) syncTriggerRef.current = targetRef?.current ?? triggerRef.current ?? null;
|
|
198
212
|
if (syncOverlayRef) syncOverlayRef.current = overlayRef.current ?? null;
|
|
199
213
|
};
|
|
200
|
-
$[
|
|
201
|
-
$[
|
|
202
|
-
$[
|
|
203
|
-
$[
|
|
204
|
-
} else t0 = $[
|
|
214
|
+
$[17] = syncOverlayRef;
|
|
215
|
+
$[18] = syncTriggerRef;
|
|
216
|
+
$[19] = targetRef;
|
|
217
|
+
$[20] = t0;
|
|
218
|
+
} else t0 = $[20];
|
|
205
219
|
useLayoutEffect$1(t0);
|
|
206
|
-
const t1 =
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
targetRef: t1,
|
|
220
|
+
const t1 = props.offset ?? 8;
|
|
221
|
+
let t2;
|
|
222
|
+
if ($[21] !== anchorRef || $[22] !== props.containerPadding || $[23] !== props.crossOffset || $[24] !== props.placement || $[25] !== props.shouldFlip || $[26] !== props.shouldUpdatePosition || $[27] !== state.isOpen || $[28] !== t1) {
|
|
223
|
+
t2 = {
|
|
224
|
+
targetRef: anchorRef,
|
|
212
225
|
overlayRef,
|
|
213
226
|
placement: props.placement,
|
|
214
227
|
containerPadding: props.containerPadding,
|
|
215
|
-
offset:
|
|
228
|
+
offset: t1,
|
|
216
229
|
crossOffset: props.crossOffset,
|
|
217
230
|
shouldFlip: props.shouldFlip,
|
|
218
231
|
shouldUpdatePosition: props.shouldUpdatePosition,
|
|
219
232
|
isOpen: state.isOpen
|
|
220
233
|
};
|
|
221
|
-
$[
|
|
222
|
-
$[
|
|
223
|
-
$[
|
|
224
|
-
$[
|
|
225
|
-
$[
|
|
226
|
-
$[
|
|
227
|
-
$[
|
|
228
|
-
$[
|
|
229
|
-
$[
|
|
230
|
-
} else
|
|
231
|
-
const { overlayProps: popoverProps, placement, arrowProps, updatePosition } = useOverlayPosition(
|
|
234
|
+
$[21] = anchorRef;
|
|
235
|
+
$[22] = props.containerPadding;
|
|
236
|
+
$[23] = props.crossOffset;
|
|
237
|
+
$[24] = props.placement;
|
|
238
|
+
$[25] = props.shouldFlip;
|
|
239
|
+
$[26] = props.shouldUpdatePosition;
|
|
240
|
+
$[27] = state.isOpen;
|
|
241
|
+
$[28] = t1;
|
|
242
|
+
$[29] = t2;
|
|
243
|
+
} else t2 = $[29];
|
|
244
|
+
const { overlayProps: popoverProps, placement, arrowProps, updatePosition } = useOverlayPosition(t2);
|
|
232
245
|
let overlayTriggerState = state;
|
|
233
246
|
if (keepOpenOnScroll) {
|
|
234
|
-
let
|
|
235
|
-
if ($[
|
|
236
|
-
|
|
247
|
+
let t3;
|
|
248
|
+
if ($[30] !== state || $[31] !== updatePosition) {
|
|
249
|
+
t3 = {
|
|
237
250
|
...state,
|
|
238
251
|
close: updatePosition
|
|
239
252
|
};
|
|
240
|
-
$[
|
|
241
|
-
$[
|
|
242
|
-
$[
|
|
243
|
-
} else
|
|
244
|
-
overlayTriggerState =
|
|
253
|
+
$[30] = state;
|
|
254
|
+
$[31] = updatePosition;
|
|
255
|
+
$[32] = t3;
|
|
256
|
+
} else t3 = $[32];
|
|
257
|
+
overlayTriggerState = t3;
|
|
245
258
|
}
|
|
246
|
-
let
|
|
247
|
-
if ($[
|
|
248
|
-
|
|
249
|
-
$[
|
|
250
|
-
} else
|
|
251
|
-
const { triggerProps, overlayProps } = useOverlayTrigger(
|
|
252
|
-
const
|
|
253
|
-
let
|
|
254
|
-
if ($[
|
|
255
|
-
|
|
259
|
+
let t3;
|
|
260
|
+
if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
|
|
261
|
+
t3 = { type: "dialog" };
|
|
262
|
+
$[33] = t3;
|
|
263
|
+
} else t3 = $[33];
|
|
264
|
+
const { triggerProps, overlayProps } = useOverlayTrigger(t3, overlayTriggerState, anchorRef);
|
|
265
|
+
const t4 = targetRef ? void 0 : triggerRef;
|
|
266
|
+
let t5;
|
|
267
|
+
if ($[34] !== t4 || $[35] !== triggerProps) {
|
|
268
|
+
t5 = {
|
|
256
269
|
...triggerProps,
|
|
257
|
-
ref:
|
|
270
|
+
ref: t4
|
|
258
271
|
};
|
|
259
|
-
$[
|
|
260
|
-
$[
|
|
261
|
-
$[
|
|
262
|
-
} else
|
|
263
|
-
const triggerPropsWithRef =
|
|
264
|
-
let
|
|
265
|
-
if ($[
|
|
266
|
-
|
|
272
|
+
$[34] = t4;
|
|
273
|
+
$[35] = triggerProps;
|
|
274
|
+
$[36] = t5;
|
|
275
|
+
} else t5 = $[36];
|
|
276
|
+
const triggerPropsWithRef = t5;
|
|
277
|
+
let t6;
|
|
278
|
+
if ($[37] !== shouldCloseOnInteractOutside || $[38] !== state || $[39] !== targetRef) {
|
|
279
|
+
t6 = (el) => {
|
|
267
280
|
if (shouldCloseOnInteractOutside && !shouldCloseOnInteractOutside(el)) return false;
|
|
268
281
|
const ownTrigger = targetRef?.current ?? triggerRef.current;
|
|
269
282
|
if (isOwnActionsPress(el, ownTrigger)) return false;
|
|
@@ -279,53 +292,55 @@ function PopoverTrigger(allProps) {
|
|
|
279
292
|
if (popoverTriggerEl === ownTrigger || ownTrigger?.contains(el)) return true;
|
|
280
293
|
return false;
|
|
281
294
|
};
|
|
282
|
-
$[
|
|
283
|
-
$[
|
|
284
|
-
$[
|
|
285
|
-
$[
|
|
286
|
-
} else
|
|
287
|
-
const resolveShouldCloseOnInteractOutside = useEvent(
|
|
288
|
-
const
|
|
295
|
+
$[37] = shouldCloseOnInteractOutside;
|
|
296
|
+
$[38] = state;
|
|
297
|
+
$[39] = targetRef;
|
|
298
|
+
$[40] = t6;
|
|
299
|
+
} else t6 = $[40];
|
|
300
|
+
const resolveShouldCloseOnInteractOutside = useEvent(t6);
|
|
301
|
+
const t7 = placement ?? void 0;
|
|
302
|
+
let t8;
|
|
303
|
+
if ($[41] !== content || $[42] !== state.close) {
|
|
304
|
+
t8 = typeof content === "function" ? content(state.close) : content;
|
|
305
|
+
$[41] = content;
|
|
306
|
+
$[42] = state.close;
|
|
307
|
+
$[43] = t8;
|
|
308
|
+
} else t8 = $[43];
|
|
289
309
|
let t9;
|
|
290
|
-
if ($[
|
|
291
|
-
t9 =
|
|
292
|
-
$[40] = content;
|
|
293
|
-
$[41] = state.close;
|
|
294
|
-
$[42] = t9;
|
|
295
|
-
} else t9 = $[42];
|
|
296
|
-
let t10;
|
|
297
|
-
if ($[43] !== arrowProps || $[44] !== hideArrow || $[45] !== hideOnClose || $[46] !== isKeyboardDismissDisabled || $[47] !== onClose || $[48] !== popoverProps.style || $[49] !== resolveShouldCloseOnInteractOutside || $[50] !== state.isOpen || $[51] !== styles || $[52] !== t8 || $[53] !== t9) {
|
|
298
|
-
t10 = /* @__PURE__ */ jsx(_Popover, {
|
|
310
|
+
if ($[44] !== arrowProps || $[45] !== hideArrow || $[46] !== hideOnClose || $[47] !== isDismissable || $[48] !== isKeyboardDismissDisabled || $[49] !== onClose || $[50] !== popoverProps.style || $[51] !== resolveShouldCloseOnInteractOutside || $[52] !== state.isOpen || $[53] !== styles || $[54] !== t7 || $[55] !== t8) {
|
|
311
|
+
t9 = /* @__PURE__ */ jsx(_Popover, {
|
|
299
312
|
ref: overlayRef,
|
|
300
313
|
styles,
|
|
301
314
|
hideOnClose,
|
|
302
315
|
isOpen: state.isOpen,
|
|
303
316
|
style: popoverProps.style,
|
|
304
|
-
placement:
|
|
317
|
+
placement: t7,
|
|
305
318
|
arrowProps,
|
|
319
|
+
isDismissable,
|
|
306
320
|
isKeyboardDismissDisabled,
|
|
307
321
|
hideArrow,
|
|
308
322
|
shouldCloseOnInteractOutside: resolveShouldCloseOnInteractOutside,
|
|
309
323
|
onClose,
|
|
310
|
-
children:
|
|
324
|
+
children: t8
|
|
311
325
|
});
|
|
312
|
-
$[
|
|
313
|
-
$[
|
|
314
|
-
$[
|
|
315
|
-
$[
|
|
316
|
-
$[
|
|
317
|
-
$[
|
|
318
|
-
$[
|
|
319
|
-
$[
|
|
320
|
-
$[
|
|
321
|
-
$[
|
|
322
|
-
$[
|
|
323
|
-
$[
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
326
|
+
$[44] = arrowProps;
|
|
327
|
+
$[45] = hideArrow;
|
|
328
|
+
$[46] = hideOnClose;
|
|
329
|
+
$[47] = isDismissable;
|
|
330
|
+
$[48] = isKeyboardDismissDisabled;
|
|
331
|
+
$[49] = onClose;
|
|
332
|
+
$[50] = popoverProps.style;
|
|
333
|
+
$[51] = resolveShouldCloseOnInteractOutside;
|
|
334
|
+
$[52] = state.isOpen;
|
|
335
|
+
$[53] = styles;
|
|
336
|
+
$[54] = t7;
|
|
337
|
+
$[55] = t8;
|
|
338
|
+
$[56] = t9;
|
|
339
|
+
} else t9 = $[56];
|
|
340
|
+
const overlay = t9;
|
|
341
|
+
let t10;
|
|
342
|
+
if ($[57] !== isDismissable || $[58] !== onClose || $[59] !== overlay || $[60] !== overlayProps || $[61] !== shouldRestoreFocus || $[62] !== state || $[63] !== trigger || $[64] !== triggerPropsWithRef) {
|
|
343
|
+
t10 = /* @__PURE__ */ jsx(DialogTriggerBase, {
|
|
329
344
|
type: "popover",
|
|
330
345
|
state,
|
|
331
346
|
triggerProps: triggerPropsWithRef,
|
|
@@ -333,19 +348,21 @@ function PopoverTrigger(allProps) {
|
|
|
333
348
|
trigger,
|
|
334
349
|
overlay,
|
|
335
350
|
overlayRef,
|
|
351
|
+
isDismissable,
|
|
336
352
|
shouldRestoreFocus,
|
|
337
353
|
onClose
|
|
338
354
|
});
|
|
339
|
-
$[
|
|
340
|
-
$[
|
|
341
|
-
$[
|
|
342
|
-
$[
|
|
343
|
-
$[
|
|
344
|
-
$[
|
|
345
|
-
$[
|
|
346
|
-
$[
|
|
347
|
-
|
|
348
|
-
|
|
355
|
+
$[57] = isDismissable;
|
|
356
|
+
$[58] = onClose;
|
|
357
|
+
$[59] = overlay;
|
|
358
|
+
$[60] = overlayProps;
|
|
359
|
+
$[61] = shouldRestoreFocus;
|
|
360
|
+
$[62] = state;
|
|
361
|
+
$[63] = trigger;
|
|
362
|
+
$[64] = triggerPropsWithRef;
|
|
363
|
+
$[65] = t10;
|
|
364
|
+
} else t10 = $[65];
|
|
365
|
+
return t10;
|
|
349
366
|
}
|
|
350
367
|
function DialogTriggerBase(props) {
|
|
351
368
|
const ref = useCombinedRefs(props.ref);
|