@cube-dev/ui-kit 0.203.0 → 0.205.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +22 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/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 +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider/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 +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +2 -2
- 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.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/checked-keys.js +1 -1
- package/dist/components/content/Tree/rowId.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/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 +1 -1
- package/dist/components/data/ItemTable/item-table-sections.js +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/TableRowLink.js +1 -1
- package/dist/components/data/TableBase/TableView.js +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-body-sections.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 +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.js +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- 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/CalendarPopover.js +281 -0
- package/dist/components/fields/DatePicker/CalendarPopover.js.map +1 -0
- 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 +26 -24
- 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 +4 -2
- package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +10 -0
- package/dist/components/fields/DatePicker/DateRangePicker.js +143 -65
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +172 -165
- 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 +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/styled.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +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.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +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/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/field-description.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 +198 -174
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/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 +34 -3
- package/dist/components/form/Form/modern/store.js.map +1 -1
- package/dist/components/form/Form/modern/types.d.ts +5 -0
- 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/field-chrome.js +1 -1
- package/dist/components/form/field-layout.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/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/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 +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.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +2 -2
- package/dist/components/overlays/AlertDialog/types.d.ts +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +9 -4
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.d.ts +7 -0
- package/dist/components/overlays/Dialog/DialogContainer.js +61 -32
- package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogForm.d.ts +7 -0
- package/dist/components/overlays/Dialog/DialogForm.js +10 -3
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +8 -0
- package/dist/components/overlays/Dialog/DialogTrigger.js +24 -11
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +178 -172
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +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 +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +220 -0
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -0
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/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 +6 -3
- 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.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 +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 +12 -3
- package/dist/i18n/locales/en-US/uikit.js +12 -3
- package/dist/i18n/locales/en-US/uikit.json.d.ts +12 -4
- package/dist/i18n/locales/es-ES/uikit.js +12 -3
- package/dist/i18n/locales/es-MX/uikit.js +12 -3
- package/dist/i18n/locales/fr-FR/uikit.js +12 -3
- package/dist/i18n/locales/it-IT/uikit.js +12 -3
- package/dist/i18n/locales/ja-JP/uikit.js +12 -3
- package/dist/i18n/locales/nb-NO/uikit.js +12 -3
- package/dist/i18n/locales/pt-BR/uikit.js +12 -3
- package/dist/i18n/locales/pt-PT/uikit.js +12 -3
- package/dist/i18n/locales/sv-SE/uikit.js +12 -3
- package/dist/i18n/locales/vi-VN/uikit.js +12 -3
- 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.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 +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +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/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/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/components/form/Form.md +2 -0
- package/docs/components/form/ModernForm.md +5 -1
- package/docs/components/overlays/Dialog.md +2 -2
- package/docs/components/overlays/DialogContainer.md +1 -0
- package/docs/components/overlays/DialogForm.md +3 -1
- package/docs/components/overlays/DialogTrigger.md +31 -1
- package/docs/components/overlays/Notifications.md +17 -0
- package/docs/components/overlays/Toast.md +1 -1
- package/docs/modern-form-guide.md +5 -1
- package/package.json +1 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
|
+
import { useI18n } from "../../../i18n/useI18n.js";
|
|
3
|
+
import { AlertDialog as _AlertDialog } from "../AlertDialog/AlertDialog.js";
|
|
4
|
+
import { c } from "react/compiler-runtime";
|
|
5
|
+
import { useEffect, useRef, useState } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { focusSafely } from "@react-aria/interactions";
|
|
8
|
+
//#region src/components/overlays/Dialog/use-dismiss-confirmation.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The owner side of `confirmDismiss`, for `DialogTrigger` and
|
|
11
|
+
* `DialogContainer`. A passive dismissal (Escape, an outside click, the close
|
|
12
|
+
* button) goes through `requestDismiss`, which asks "Discard changes?" first
|
|
13
|
+
* while `confirmDismiss` is `true`, or, when it is unset, while a form inside
|
|
14
|
+
* (a modern `Form` root, or a legacy `DialogForm`) reports unsaved edits, or
|
|
15
|
+
* its own `confirmDismiss`, through `registerUnsavedChanges`. Explicit actions
|
|
16
|
+
* (submit, Cancel, a `close` the consumer calls) bypass it.
|
|
17
|
+
*
|
|
18
|
+
* The owner renders the question while `confirmationProps` is set:
|
|
19
|
+
* `<DialogContainer {...confirmationProps}><DiscardChangesDialog /></DialogContainer>`.
|
|
20
|
+
*/
|
|
21
|
+
function useDismissConfirmation(confirmDismiss, isDialogOpen) {
|
|
22
|
+
const $ = c(20);
|
|
23
|
+
const [pending, setPending] = useState(null);
|
|
24
|
+
const [hasAsked, setHasAsked] = useState(false);
|
|
25
|
+
let t0;
|
|
26
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
27
|
+
t0 = /* @__PURE__ */ new Set();
|
|
28
|
+
$[0] = t0;
|
|
29
|
+
} else t0 = $[0];
|
|
30
|
+
const unsavedChecks = useRef(t0);
|
|
31
|
+
const answer = useRef(null);
|
|
32
|
+
const lastFocused = useRef(null);
|
|
33
|
+
const canAsk = isDialogOpen && confirmDismiss !== false;
|
|
34
|
+
if (pending && !isDialogOpen) setPending(null);
|
|
35
|
+
let t1;
|
|
36
|
+
let t2;
|
|
37
|
+
if ($[1] !== canAsk) {
|
|
38
|
+
t1 = () => {
|
|
39
|
+
if (!canAsk) return;
|
|
40
|
+
if (document.activeElement !== document.body) lastFocused.current = document.activeElement;
|
|
41
|
+
const onFocusIn = (event) => {
|
|
42
|
+
lastFocused.current = event.target;
|
|
43
|
+
};
|
|
44
|
+
document.addEventListener("focusin", onFocusIn, true);
|
|
45
|
+
return () => {
|
|
46
|
+
document.removeEventListener("focusin", onFocusIn, true);
|
|
47
|
+
lastFocused.current = null;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
t2 = [canAsk];
|
|
51
|
+
$[1] = canAsk;
|
|
52
|
+
$[2] = t1;
|
|
53
|
+
$[3] = t2;
|
|
54
|
+
} else {
|
|
55
|
+
t1 = $[2];
|
|
56
|
+
t2 = $[3];
|
|
57
|
+
}
|
|
58
|
+
useEffect(t1, t2);
|
|
59
|
+
let requestDismiss;
|
|
60
|
+
if ($[4] !== confirmDismiss || $[5] !== pending) {
|
|
61
|
+
requestDismiss = function requestDismiss(dismiss) {
|
|
62
|
+
if (pending) return;
|
|
63
|
+
if (!(confirmDismiss ?? hasUnsavedChanges())) {
|
|
64
|
+
dismiss();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const focused = document.activeElement;
|
|
68
|
+
setPending({
|
|
69
|
+
dismiss,
|
|
70
|
+
focusTarget: focused && focused !== document.body ? focused : lastFocused.current
|
|
71
|
+
});
|
|
72
|
+
setHasAsked(true);
|
|
73
|
+
};
|
|
74
|
+
function hasUnsavedChanges() {
|
|
75
|
+
for (const check of unsavedChecks.current) if (check()) return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
$[4] = confirmDismiss;
|
|
79
|
+
$[5] = pending;
|
|
80
|
+
$[6] = requestDismiss;
|
|
81
|
+
} else requestDismiss = $[6];
|
|
82
|
+
let t3;
|
|
83
|
+
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
84
|
+
t3 = function registerUnsavedChanges(check_0) {
|
|
85
|
+
const checks = unsavedChecks.current;
|
|
86
|
+
checks.add(check_0);
|
|
87
|
+
return () => {
|
|
88
|
+
checks.delete(check_0);
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
$[7] = t3;
|
|
92
|
+
} else t3 = $[7];
|
|
93
|
+
const registerUnsavedChanges = t3;
|
|
94
|
+
let t4;
|
|
95
|
+
if ($[8] !== pending) {
|
|
96
|
+
t4 = function settle(action) {
|
|
97
|
+
if (!pending) return;
|
|
98
|
+
answer.current = {
|
|
99
|
+
...pending,
|
|
100
|
+
isDiscarded: action === "confirm"
|
|
101
|
+
};
|
|
102
|
+
setPending(null);
|
|
103
|
+
};
|
|
104
|
+
$[8] = pending;
|
|
105
|
+
$[9] = t4;
|
|
106
|
+
} else t4 = $[9];
|
|
107
|
+
const settle = t4;
|
|
108
|
+
let t5;
|
|
109
|
+
let t6;
|
|
110
|
+
if ($[10] !== pending) {
|
|
111
|
+
t5 = () => {
|
|
112
|
+
const settled = answer.current;
|
|
113
|
+
if (pending || !settled) return;
|
|
114
|
+
answer.current = null;
|
|
115
|
+
const { focusTarget } = settled;
|
|
116
|
+
if (focusTarget instanceof HTMLElement && focusTarget.isConnected) focusSafely(focusTarget);
|
|
117
|
+
if (settled.isDiscarded) settled.dismiss();
|
|
118
|
+
};
|
|
119
|
+
t6 = [pending];
|
|
120
|
+
$[10] = pending;
|
|
121
|
+
$[11] = t5;
|
|
122
|
+
$[12] = t6;
|
|
123
|
+
} else {
|
|
124
|
+
t5 = $[11];
|
|
125
|
+
t6 = $[12];
|
|
126
|
+
}
|
|
127
|
+
useEffect(t5, t6);
|
|
128
|
+
let t7;
|
|
129
|
+
if ($[13] !== hasAsked || $[14] !== pending || $[15] !== settle) {
|
|
130
|
+
t7 = hasAsked ? {
|
|
131
|
+
isOpen: !!pending,
|
|
132
|
+
onDismiss: settle
|
|
133
|
+
} : null;
|
|
134
|
+
$[13] = hasAsked;
|
|
135
|
+
$[14] = pending;
|
|
136
|
+
$[15] = settle;
|
|
137
|
+
$[16] = t7;
|
|
138
|
+
} else t7 = $[16];
|
|
139
|
+
let t8;
|
|
140
|
+
if ($[17] !== requestDismiss || $[18] !== t7) {
|
|
141
|
+
t8 = {
|
|
142
|
+
requestDismiss,
|
|
143
|
+
registerUnsavedChanges,
|
|
144
|
+
confirmationProps: t7
|
|
145
|
+
};
|
|
146
|
+
$[17] = requestDismiss;
|
|
147
|
+
$[18] = t7;
|
|
148
|
+
$[19] = t8;
|
|
149
|
+
} else t8 = $[19];
|
|
150
|
+
return t8;
|
|
151
|
+
}
|
|
152
|
+
/** The question `useDismissConfirmation` asks. Escape keeps editing. */
|
|
153
|
+
function DiscardChangesDialog() {
|
|
154
|
+
const $ = c(19);
|
|
155
|
+
const { t } = useI18n();
|
|
156
|
+
let t0;
|
|
157
|
+
if ($[0] !== t) {
|
|
158
|
+
t0 = t("dialog.discardChanges.title", "Discard changes?");
|
|
159
|
+
$[0] = t;
|
|
160
|
+
$[1] = t0;
|
|
161
|
+
} else t0 = $[1];
|
|
162
|
+
let t1;
|
|
163
|
+
if ($[2] !== t) {
|
|
164
|
+
t1 = t("dialog.discardChanges.content", "All unsaved changes will be lost.");
|
|
165
|
+
$[2] = t;
|
|
166
|
+
$[3] = t1;
|
|
167
|
+
} else t1 = $[3];
|
|
168
|
+
let t2;
|
|
169
|
+
if ($[4] !== t) {
|
|
170
|
+
t2 = t("dialog.discardChanges.discard", "Discard");
|
|
171
|
+
$[4] = t;
|
|
172
|
+
$[5] = t2;
|
|
173
|
+
} else t2 = $[5];
|
|
174
|
+
let t3;
|
|
175
|
+
if ($[6] !== t2) {
|
|
176
|
+
t3 = { children: t2 };
|
|
177
|
+
$[6] = t2;
|
|
178
|
+
$[7] = t3;
|
|
179
|
+
} else t3 = $[7];
|
|
180
|
+
let t4;
|
|
181
|
+
if ($[8] !== t) {
|
|
182
|
+
t4 = t("dialog.discardChanges.keepEditing", "Keep editing");
|
|
183
|
+
$[8] = t;
|
|
184
|
+
$[9] = t4;
|
|
185
|
+
} else t4 = $[9];
|
|
186
|
+
let t5;
|
|
187
|
+
if ($[10] !== t4) {
|
|
188
|
+
t5 = { children: t4 };
|
|
189
|
+
$[10] = t4;
|
|
190
|
+
$[11] = t5;
|
|
191
|
+
} else t5 = $[11];
|
|
192
|
+
let t6;
|
|
193
|
+
if ($[12] !== t3 || $[13] !== t5) {
|
|
194
|
+
t6 = {
|
|
195
|
+
confirm: t3,
|
|
196
|
+
cancel: t5
|
|
197
|
+
};
|
|
198
|
+
$[12] = t3;
|
|
199
|
+
$[13] = t5;
|
|
200
|
+
$[14] = t6;
|
|
201
|
+
} else t6 = $[14];
|
|
202
|
+
let t7;
|
|
203
|
+
if ($[15] !== t0 || $[16] !== t1 || $[17] !== t6) {
|
|
204
|
+
t7 = /* @__PURE__ */ jsx(_AlertDialog, {
|
|
205
|
+
danger: true,
|
|
206
|
+
title: t0,
|
|
207
|
+
content: t1,
|
|
208
|
+
actions: t6
|
|
209
|
+
});
|
|
210
|
+
$[15] = t0;
|
|
211
|
+
$[16] = t1;
|
|
212
|
+
$[17] = t6;
|
|
213
|
+
$[18] = t7;
|
|
214
|
+
} else t7 = $[18];
|
|
215
|
+
return t7;
|
|
216
|
+
}
|
|
217
|
+
//#endregion
|
|
218
|
+
export { DiscardChangesDialog, useDismissConfirmation };
|
|
219
|
+
|
|
220
|
+
//# sourceMappingURL=use-dismiss-confirmation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-dismiss-confirmation.js","names":["focusSafely","useEffect","useRef","useState","useI18n","AlertDialog","PendingDismissal","dismiss","focusTarget","Element","Answer","isDiscarded","useDismissConfirmation","confirmDismiss","isDialogOpen","$","_c","pending","setPending","hasAsked","setHasAsked","t0","Symbol","for","Set","unsavedChecks","answer","lastFocused","canAsk","t1","t2","document","activeElement","body","current","onFocusIn","event","target","addEventListener","removeEventListener","requestDismiss","hasUnsavedChanges","focused","check","t3","registerUnsavedChanges","check_0","checks","add","delete","t4","settle","action","t5","t6","settled","HTMLElement","isConnected","t7","isOpen","onDismiss","t8","confirmationProps","DiscardChangesDialog","t","children","confirm","cancel","_c","AlertDialog"],"sources":["../../../../src/components/overlays/Dialog/use-dismiss-confirmation.tsx"],"sourcesContent":["import { focusSafely } from '@react-aria/interactions';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { AlertDialog } from '../AlertDialog/AlertDialog';\n\ninterface PendingDismissal {\n /** What the dismissal runs once the user discards the edits. */\n dismiss: () => void;\n /** Where focus was when the dialog asked, to give it back. */\n focusTarget: Element | null;\n}\n\ninterface Answer extends PendingDismissal {\n isDiscarded: boolean;\n}\n\n/**\n * The owner side of `confirmDismiss`, for `DialogTrigger` and\n * `DialogContainer`. A passive dismissal (Escape, an outside click, the close\n * button) goes through `requestDismiss`, which asks \"Discard changes?\" first\n * while `confirmDismiss` is `true`, or, when it is unset, while a form inside\n * (a modern `Form` root, or a legacy `DialogForm`) reports unsaved edits, or\n * its own `confirmDismiss`, through `registerUnsavedChanges`. Explicit actions\n * (submit, Cancel, a `close` the consumer calls) bypass it.\n *\n * The owner renders the question while `confirmationProps` is set:\n * `<DialogContainer {...confirmationProps}><DiscardChangesDialog /></DialogContainer>`.\n */\nexport function useDismissConfirmation(\n confirmDismiss: boolean | undefined,\n isDialogOpen: boolean,\n) {\n const [pending, setPending] = useState<PendingDismissal | null>(null);\n // Mounted on the first question and kept, so it can play its exit.\n const [hasAsked, setHasAsked] = useState(false);\n // Every form in the dialog reports its own: tabs or a wizard step can hold\n // more than one, and any of them with edits makes the dialog ask.\n const unsavedChecks = useRef(new Set<() => boolean>());\n const answer = useRef<Answer | null>(null);\n const lastFocused = useRef<Element | null>(null);\n const canAsk = isDialogOpen && confirmDismiss !== false;\n\n // A dialog closed some other way takes its question with it.\n if (pending && !isDialogOpen) setPending(null);\n\n // A click outside drops focus to `<body>` on its way to closing the dialog,\n // so the question gives focus back to where it was last. A `confirmDismiss`\n // bound to state turns on while the user types, so start from that field.\n useEffect(() => {\n if (!canAsk) return;\n\n if (document.activeElement !== document.body) {\n lastFocused.current = document.activeElement;\n }\n\n const onFocusIn = (event: FocusEvent) => {\n lastFocused.current = event.target as Element;\n };\n\n document.addEventListener('focusin', onFocusIn, true);\n\n return () => {\n document.removeEventListener('focusin', onFocusIn, true);\n lastFocused.current = null;\n };\n }, [canAsk]);\n\n function requestDismiss(dismiss: () => void) {\n if (pending) return;\n\n if (!(confirmDismiss ?? hasUnsavedChanges())) {\n dismiss();\n\n return;\n }\n\n const focused = document.activeElement;\n\n setPending({\n dismiss,\n focusTarget:\n focused && focused !== document.body ? focused : lastFocused.current,\n });\n setHasAsked(true);\n }\n\n function hasUnsavedChanges() {\n for (const check of unsavedChecks.current) {\n if (check()) return true;\n }\n\n return false;\n }\n\n function registerUnsavedChanges(check: () => boolean) {\n const checks = unsavedChecks.current;\n\n checks.add(check);\n\n return () => {\n checks.delete(check);\n };\n }\n\n function settle(action?: string) {\n if (!pending) return;\n\n answer.current = { ...pending, isDiscarded: action === 'confirm' };\n setPending(null);\n }\n\n // Once the question has closed: while open it holds focus, and pulls back\n // any focus moved out of it. Focus goes back into the dialog at once, not\n // when the question has faded out. A discarded dialog then closes from\n // there, so its trigger takes focus back as after any close.\n useEffect(() => {\n const settled = answer.current;\n\n if (pending || !settled) return;\n\n answer.current = null;\n\n const { focusTarget } = settled;\n\n if (focusTarget instanceof HTMLElement && focusTarget.isConnected) {\n focusSafely(focusTarget);\n }\n\n if (settled.isDiscarded) settled.dismiss();\n }, [pending]);\n\n return {\n requestDismiss,\n registerUnsavedChanges,\n confirmationProps: hasAsked\n ? { isOpen: !!pending, onDismiss: settle }\n : null,\n };\n}\n\n/** The question `useDismissConfirmation` asks. Escape keeps editing. */\nexport function DiscardChangesDialog() {\n const { t } = useI18n();\n\n return (\n <AlertDialog\n danger\n title={t('dialog.discardChanges.title', 'Discard changes?')}\n content={t(\n 'dialog.discardChanges.content',\n 'All unsaved changes will be lost.',\n )}\n actions={{\n confirm: { children: t('dialog.discardChanges.discard', 'Discard') },\n cancel: {\n children: t('dialog.discardChanges.keepEditing', 'Keep editing'),\n },\n }}\n />\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.205.0 | Cube Dev Team */
|
|
2
2
|
import { focusProgrammatically } from "../../../utils/react/programmaticFocus.js";
|
|
3
3
|
import { useOpenTransitionContext } from "../Modal/OpenTransitionContext.js";
|
|
4
4
|
import { trapsFocus, useDialogContext } from "./context.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs as mergeRefs$1 } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { ModalContainmentProvider, useModalContainment } from "./modal-containment.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
3
|
//#region src/components/overlays/Modal/OpenTransitionContext.tsx
|
|
4
4
|
const OpenTransitionContext = createContext(null);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.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.205.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs as mergeRefs$1 } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useModalLayerRef } from "./modal-containment.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs as mergeRefs$1 } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { ModalContainmentProvider, useModalContainment } from "./modal-containment.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { c } from "react/compiler-runtime";
|
|
3
3
|
import { createContext, useContext, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
import { ariaHideOutside } from "react-aria/private/overlays/ariaHideOutside";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useNotificationContext } from "./NotificationContext.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useEffect, useRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { Block } from "../../Block.js";
|
|
3
3
|
import { ItemActionProvider } from "../../actions/ItemActionContext.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
3
|
//#region src/components/overlays/Notifications/NotificationContext.ts
|
|
4
4
|
const ToastContext = createContext(null);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { NotificationCard } from "./NotificationCard.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useViewportSize } from "../../../utils/react/useViewportSize.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -15,7 +15,7 @@ const ITEM_GAP = 8;
|
|
|
15
15
|
const DEFAULT_ITEM_HEIGHT = 56;
|
|
16
16
|
const OverlayContainerElement = tasty({ styles: {
|
|
17
17
|
position: "fixed",
|
|
18
|
-
top: "2x",
|
|
18
|
+
top: "(2x + ($overlay-inset-top, 0px))",
|
|
19
19
|
left: "50%",
|
|
20
20
|
transform: "translateX(-50%)",
|
|
21
21
|
zIndex: 100,
|
|
@@ -25,7 +25,10 @@ const OverlayContainerElement = tasty({ styles: {
|
|
|
25
25
|
} });
|
|
26
26
|
const OverlayItemWrapper = tasty({ styles: {
|
|
27
27
|
position: "absolute",
|
|
28
|
-
top:
|
|
28
|
+
top: {
|
|
29
|
+
"": "$item-top",
|
|
30
|
+
isCollapsed: "($item-top - ($overlay-inset-top, 0px))"
|
|
31
|
+
},
|
|
29
32
|
left: "50%",
|
|
30
33
|
zIndex: {
|
|
31
34
|
"": "auto",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","useViewportSize","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","isCollapsed","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","t4","newHeights","hasChanges","hasRemovals","current","forEach","id","offsetHeight","id_0","Object","keys","has","prev","next","filter","id_1","size","t5","heightKeys","newIds","id_2","length","frame","requestAnimationFrame","prev_0","cancelAnimationFrame","t6","t7","el_0","set","delete","posMap","currentTop","id_3","height_0","t8","t9","pos","id_4","t10","CollapseStateResult","handleMouseEnter","handleMouseMove","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","setIsCollapsed","boundsRef","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","DOMRect","x","y","toJSON","_temp","updateBounds","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","handleMouseMove_0","e_0","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","paused","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","some","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","T0","T1","t11","bb0","getItemLayout","item_1","index","total","baseTop","get","tokens","collapsedTop","isNewest","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","layoutMods","itemProps","title","description","theme","icon","isLoading","actions","t13","item_2","index_0","t_0","t","n_0","n","a","b","_c","hasActionableToasts"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { useViewportSize } from '../../../utils/react/useViewportSize';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '$item-top',\n left: '50%',\n zIndex: {\n '': 'auto',\n isCollapsed: '$item-index',\n },\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n // Sized to its content: the container has no width of its own. Capped,\n // never floored, so a long toast wraps inside the viewport. The cap\n // matches NotificationCard's own width.\n width: 'initial max-content min((100vw - 4x), 50x)',\n pointerEvents: {\n '': 'auto',\n isCollapsed: 'none',\n },\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n // A collapsed stack shows only its newest item, whether or not it is\n // still shown, so the collapsed states outrank `isShown`.\n opacity: {\n '': 0,\n isShown: 1,\n isCollapsed: 0,\n 'isCollapsed & isNewest': 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n let hasRemovals = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasRemovals = true;\n }\n }\n\n if (hasChanges || hasRemovals) {\n setHeights(newHeights);\n }\n\n // Drop a removed item's settled id with its height, so a restored\n // notification settles again under its old id. Pruning later, from the\n // `heights` effect, left an update pending after each removal's sync\n // commit, which React 19 counts as nested (\"Maximum update depth\").\n if (hasRemovals) {\n setSettledIds((prev) => {\n const next = new Set([...prev].filter((id) => id in newHeights));\n\n return next.size === prev.size ? prev : next;\n });\n }\n });\n\n // A wrapped toast changes height with the viewport, not only on a render.\n // Re-rendering on a viewport resize lets the measurement above restack the\n // items. A height change from content that re-renders on its own, outside\n // this container, still waits for the container's next render.\n useViewportSize();\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n\n if (newIds.length === 0) return;\n\n // A removal changes `heights`, which cancels this frame, so the ids to\n // add are still current when it runs.\n const frame = requestAnimationFrame(() => {\n setSettledIds((prev) => new Set([...prev, ...newIds]));\n });\n\n return () => cancelAnimationFrame(frame);\n }, [heights]);\n\n const createRefCallback =\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n };\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseMove: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = () => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n };\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // An empty container must not carry hover state into the next toast stack.\n useEffect(() => {\n updateBounds();\n\n if (allItems.length === 0) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n }, [allItems, updateBounds, onPauseChange]);\n\n const handleMouseEnter = () => {\n onPauseChange(true);\n };\n\n // Layout and enter animations can put an item under a stationary pointer\n // and fire mouseenter. Collapse only after the user moves over the stack.\n const handleMouseMove = () => {\n if (canCollapse && !isCollapsed) {\n updateBounds();\n setIsCollapsed(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n };\n\n const handleFocus = () => {\n onPauseChange(true);\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n };\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseMove,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map((n): OverlayItem => ({\n kind: 'notification',\n data: n,\n })),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseMove,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // A plain function (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemLayout = (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { tokens: { '$item-top': `${baseTop}px` }, isCollapsed: false };\n }\n\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n tokens: { '$item-top': `${collapsedTop}px`, '$item-index': index },\n isCollapsed: true,\n isNewest: index === total - 1,\n };\n };\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = new Map<string, number>(\n visibleItems.map((item, index) => [getItemId(item), index]),\n );\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => {\n const { tokens, ...layoutMods } = getItemLayout(\n item,\n visibleIndex,\n visibleItems.length,\n );\n\n return (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{\n isShown,\n isMeasured: settledIds.has(itemId),\n ...layoutMods,\n }}\n tokens={tokens}\n onMouseEnter={handleMouseEnter}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n );\n }}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","useViewportSize","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","isCollapsed","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","t4","newHeights","hasChanges","hasRemovals","current","forEach","id","offsetHeight","id_0","Object","keys","has","prev","next","filter","id_1","size","t5","heightKeys","newIds","id_2","length","frame","requestAnimationFrame","prev_0","cancelAnimationFrame","t6","t7","el_0","set","delete","posMap","currentTop","id_3","height_0","t8","t9","pos","id_4","t10","CollapseStateResult","handleMouseEnter","handleMouseMove","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","setIsCollapsed","boundsRef","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","DOMRect","x","y","toJSON","_temp","updateBounds","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","handleMouseMove_0","e_0","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","paused","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","some","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","T0","T1","t11","bb0","getItemLayout","item_1","index","total","baseTop","get","tokens","collapsedTop","isNewest","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","layoutMods","itemProps","title","description","theme","icon","isLoading","actions","t13","item_2","index_0","t_0","t","n_0","n","a","b","_c","hasActionableToasts"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { useViewportSize } from '../../../utils/react/useViewportSize';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n // `$overlay-inset-top` lets an app keep the stack below a fixed bar of its own.\n top: '(2x + ($overlay-inset-top, 0px))',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n // A collapsed stack still peeks from the viewport's top edge, above any inset.\n top: {\n '': '$item-top',\n isCollapsed: '($item-top - ($overlay-inset-top, 0px))',\n },\n left: '50%',\n zIndex: {\n '': 'auto',\n isCollapsed: '$item-index',\n },\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n // Sized to its content: the container has no width of its own. Capped,\n // never floored, so a long toast wraps inside the viewport. The cap\n // matches NotificationCard's own width.\n width: 'initial max-content min((100vw - 4x), 50x)',\n pointerEvents: {\n '': 'auto',\n isCollapsed: 'none',\n },\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n // A collapsed stack shows only its newest item, whether or not it is\n // still shown, so the collapsed states outrank `isShown`.\n opacity: {\n '': 0,\n isShown: 1,\n isCollapsed: 0,\n 'isCollapsed & isNewest': 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n let hasRemovals = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasRemovals = true;\n }\n }\n\n if (hasChanges || hasRemovals) {\n setHeights(newHeights);\n }\n\n // Drop a removed item's settled id with its height, so a restored\n // notification settles again under its old id. Pruning later, from the\n // `heights` effect, left an update pending after each removal's sync\n // commit, which React 19 counts as nested (\"Maximum update depth\").\n if (hasRemovals) {\n setSettledIds((prev) => {\n const next = new Set([...prev].filter((id) => id in newHeights));\n\n return next.size === prev.size ? prev : next;\n });\n }\n });\n\n // A wrapped toast changes height with the viewport, not only on a render.\n // Re-rendering on a viewport resize lets the measurement above restack the\n // items. A height change from content that re-renders on its own, outside\n // this container, still waits for the container's next render.\n useViewportSize();\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n\n if (newIds.length === 0) return;\n\n // A removal changes `heights`, which cancels this frame, so the ids to\n // add are still current when it runs.\n const frame = requestAnimationFrame(() => {\n setSettledIds((prev) => new Set([...prev, ...newIds]));\n });\n\n return () => cancelAnimationFrame(frame);\n }, [heights]);\n\n const createRefCallback =\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n };\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseMove: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = () => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n };\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // An empty container must not carry hover state into the next toast stack.\n useEffect(() => {\n updateBounds();\n\n if (allItems.length === 0) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n }, [allItems, updateBounds, onPauseChange]);\n\n const handleMouseEnter = () => {\n onPauseChange(true);\n };\n\n // Layout and enter animations can put an item under a stationary pointer\n // and fire mouseenter. Collapse only after the user moves over the stack.\n const handleMouseMove = () => {\n if (canCollapse && !isCollapsed) {\n updateBounds();\n setIsCollapsed(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n };\n\n const handleFocus = () => {\n onPauseChange(true);\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n };\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseMove,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map((n): OverlayItem => ({\n kind: 'notification',\n data: n,\n })),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseMove,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // A plain function (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemLayout = (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { tokens: { '$item-top': `${baseTop}px` }, isCollapsed: false };\n }\n\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n tokens: { '$item-top': `${collapsedTop}px`, '$item-index': index },\n isCollapsed: true,\n isNewest: index === total - 1,\n };\n };\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = new Map<string, number>(\n visibleItems.map((item, index) => [getItemId(item), index]),\n );\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => {\n const { tokens, ...layoutMods } = getItemLayout(\n item,\n visibleIndex,\n visibleItems.length,\n );\n\n return (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{\n isShown,\n isMeasured: settledIds.has(itemId),\n ...layoutMods,\n }}\n tokens={tokens}\n onMouseEnter={handleMouseEnter}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n );\n }}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\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.205.0 | Cube Dev Team */
|
|
2
2
|
import { NotificationContext, PersistentNotificationsContext, ToastContext } from "./NotificationContext.js";
|
|
3
3
|
import { OverlayContainer } from "./OverlayContainer.js";
|
|
4
4
|
import { useNotificationState } from "./use-notification-state.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { Text as _Text } from "../../content/Text.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
//#region src/components/overlays/Notifications/dismissed-storage.ts
|
|
3
3
|
const STORAGE_KEY = "cube-ui-dismissed-notifications";
|
|
4
4
|
const TTL_MS = 864e5;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import "./NotificationContext.js";
|
|
3
3
|
import { NotificationAction } from "./NotificationAction.js";
|
|
4
4
|
import { NotificationCard } from "./NotificationCard.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useRef, useState } from "react";
|
|
4
4
|
//#region src/components/overlays/Notifications/use-notification-state.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
4
4
|
import { useNotificationContext } from "./NotificationContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
4
|
//#region src/components/overlays/Notifications/use-overlay-timers.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { usePersistentNotificationsContext } from "./NotificationContext.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
//#region src/components/overlays/Notifications/use-persistent-notifications.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { cleanupAndGetValidIds, saveDismissedId } from "./dismissed-storage.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|