@pgcorp/ui-kit 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1055 -31
- package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_a1f403e2_lang.css +1 -0
- package/dist/assets/src/components/layout/{SResizeHandle.vue_vue_type_style_index_0_scoped_90cc655e_lang.css → SResizeHandle.vue_vue_type_style_index_0_scoped_dc65aba1_lang.css} +1 -1
- package/dist/assets/src/components/layout/{SWorkbenchPanelShell.css_vue_type_style_index_0_src_1030a231_scoped_1030a231_lang.css → SWorkbenchPanelShell.css_vue_type_style_index_0_src_f9faa52a_scoped_f9faa52a_lang.css} +1 -1
- package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_a108e8f1_scoped_a108e8f1_lang.css +2 -0
- package/dist/assets/src/components/shared/_internal/{SListboxGroup.css_vue_type_style_index_0_src_518787d3_scoped_518787d3_lang.css → SListboxGroup.css_vue_type_style_index_0_src_00060944_scoped_00060944_lang.css} +1 -1
- package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_e478164c_scoped_e478164c_lang.css +1 -0
- package/dist/assets/src/components/shared/containers/{SCollapsiblePanel.css_vue_type_style_index_0_src_71824088_scoped_71824088_lang.css → SCollapsiblePanel.css_vue_type_style_index_0_src_db85261d_scoped_db85261d_lang.css} +1 -1
- package/dist/assets/src/components/shared/containers/SOverlayHost.css_vue_type_style_index_0_src_09215628_scoped_09215628_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_a4f1f64a_scoped_a4f1f64a_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/{SSidebarGroup.css_vue_type_style_index_0_src_3e8bc2d7_scoped_3e8bc2d7_lang.css → SSidebarGroup.css_vue_type_style_index_0_src_5b1eeb6c_scoped_5b1eeb6c_lang.css} +1 -1
- package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_52396e42_scoped_52396e42_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_7a5acda9_scoped_7a5acda9_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SCheckbox.css_vue_type_style_index_0_src_2562f916_scoped_2562f916_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_d630c922_scoped_d630c922_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_43b6e378_scoped_43b6e378_lang.css +1 -0
- package/dist/assets/src/components/shared/controls/{SDropdownMenu.css_vue_type_style_index_0_src_1ccb9efc_scoped_1ccb9efc_lang.css → SDropdownMenu.css_vue_type_style_index_0_src_40040ae5_scoped_40040ae5_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_2d353c26_scoped_2d353c26_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/{SInteractiveSurface.css_vue_type_style_index_0_src_998940dd_scoped_998940dd_lang.css → SInteractiveSurface.css_vue_type_style_index_0_src_5e422fac_scoped_5e422fac_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/{SLink.css_vue_type_style_index_0_src_c7ae14e1_scoped_c7ae14e1_lang.css → SLink.css_vue_type_style_index_0_src_ac46e5a4_scoped_ac46e5a4_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_50063f9f_scoped_50063f9f_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/{SListboxOption.css_vue_type_style_index_0_src_77c399b4_scoped_77c399b4_lang.css → SListboxOption.css_vue_type_style_index_0_src_59c9c538_scoped_59c9c538_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_d2b7d71b_scoped_d2b7d71b_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_d1ead6c0_scoped_d1ead6c0_lang.css +2 -0
- package/dist/assets/src/components/shared/controls/STextarea.css_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/assets/src/components/shared/data-display/SControlledToastViewport.css_vue_type_style_index_0_src_a69aa84b_scoped_a69aa84b_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_cad721dd_scoped_cad721dd_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_8db085d5_scoped_8db085d5_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SScrollViewport.css_vue_type_style_index_0_src_d94fcf8c_scoped_d94fcf8c_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/SStatus.css_vue_type_style_index_0_src_3ce41a12_scoped_3ce41a12_lang.css +1 -1
- package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_b23b3d71_scoped_b23b3d71_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/STooltip.css_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_9fe3ade0_scoped_9fe3ade0_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_eaae882d_scoped_eaae882d_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_1f0ffc97_scoped_1f0ffc97_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichImage.css_vue_type_style_index_0_src_2f1c39a9_scoped_2f1c39a9_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/{SRichInlineNode.css_vue_type_style_index_0_src_20c8cc87_scoped_20c8cc87_lang.css → SRichInlineNode.css_vue_type_style_index_0_src_3ca8df12_scoped_3ca8df12_lang.css} +1 -1
- package/dist/assets/src/components/shared/data-display/_internal/STableCell.css_vue_type_style_index_0_src_b829cbc6_scoped_b829cbc6_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/STableFrame.css_vue_type_style_index_0_src_914bad28_scoped_914bad28_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/STableRow.css_vue_type_style_index_0_src_1661f8b8_scoped_1661f8b8_lang.css +2 -0
- package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_8a291af7_scoped_8a291af7_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/{SBottomNav.vue_vue_type_style_index_0_scoped_b3963080_lang.css → SBottomNav.vue_vue_type_style_index_0_scoped_68cf84b3_lang.css} +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -3
- package/dist/reference.css +4 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +15 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +4 -4
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +46 -1
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +260 -230
- package/dist/src/components/icons/sputnigUiIcons.d.ts +1 -1
- package/dist/src/components/icons/sputnigUiIcons.js +233 -218
- package/dist/src/components/layout/SAppShell.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/src/components/layout/SDockRegion.vue.d.ts +18 -5
- package/dist/src/components/layout/SDockRegion.vue.js +2 -2
- package/dist/src/components/layout/SDockRegion.vue_vue_type_script_setup_true_lang.js +112 -64
- package/dist/src/components/layout/SResizeHandle.vue.d.ts +6 -3
- package/dist/src/components/layout/SResizeHandle.vue.js +2 -2
- package/dist/src/components/layout/SResizeHandle.vue_vue_type_script_setup_true_lang.js +127 -87
- package/dist/src/components/layout/SStack.vue.d.ts +1 -1
- package/dist/src/components/layout/SWorkbenchPanelShell.vue.d.ts +4 -4
- package/dist/src/components/layout/SWorkbenchPanelShell.vue.js +2 -2
- package/dist/src/components/layout/SWorkbenchPanelShell.vue_vue_type_script_setup_true_lang.js +62 -58
- package/dist/src/components/layout/types.d.ts +20 -0
- package/dist/src/components/shared/_internal/SDialogSurface.vue.d.ts +9 -1
- package/dist/src/components/shared/_internal/SDialogSurface.vue.js +2 -2
- package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +183 -68
- package/dist/src/components/shared/_internal/SHeaderSurface.vue.d.ts +1 -1
- package/dist/src/components/shared/_internal/SListboxGroup.vue.d.ts +5 -0
- package/dist/src/components/shared/_internal/SListboxGroup.vue.js +2 -2
- package/dist/src/components/shared/_internal/SListboxGroup.vue_vue_type_script_setup_true_lang.js +33 -15
- package/dist/src/components/shared/_internal/SMenuLayer.vue.d.ts +5 -1
- package/dist/src/components/shared/_internal/SMenuLayer.vue.js +2 -2
- package/dist/src/components/shared/_internal/SMenuLayer.vue_vue_type_script_setup_true_lang.js +64 -20
- package/dist/src/components/shared/_internal/dialogSurface.d.ts +17 -2
- package/dist/src/components/shared/_internal/dialogSurface.js +42 -23
- package/dist/src/components/shared/_internal/dialogSurfaceMotion.d.ts +14 -0
- package/dist/src/components/shared/_internal/dialogSurfaceMotion.js +84 -0
- package/dist/src/components/shared/_internal/focusTrap.js +15 -13
- package/dist/src/components/shared/_internal/listboxContext.d.ts +1 -0
- package/dist/src/components/shared/_internal/listboxInventory.d.ts +51 -0
- package/dist/src/components/shared/_internal/listboxInventory.js +85 -0
- package/dist/src/components/shared/_internal/menuContext.d.ts +8 -0
- package/dist/src/components/shared/_internal/menuContext.js +2 -2
- package/dist/src/components/shared/_internal/sidebarGroupContext.d.ts +1 -0
- package/dist/src/components/shared/_internal/useVirtualCollection.d.ts +45 -0
- package/dist/src/components/shared/_internal/useVirtualCollection.js +123 -0
- package/dist/src/components/shared/complex/SKanbanLane.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/src/components/shared/containers/SCloudChrome.vue.d.ts +1 -1
- package/dist/src/components/shared/containers/SCloudChromeRow.vue.d.ts +1 -1
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue.d.ts +5 -0
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue.js +2 -2
- package/dist/src/components/shared/containers/SCollapsiblePanel.vue_vue_type_script_setup_true_lang.js +123 -121
- package/dist/src/components/shared/containers/SDrawer.vue.d.ts +16 -5
- package/dist/src/components/shared/containers/SDrawer.vue.js +3 -6
- package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +149 -75
- package/dist/src/components/shared/containers/SModal.vue.d.ts +8 -8
- package/dist/src/components/shared/containers/SModal.vue.js +3 -6
- package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +93 -85
- package/dist/src/components/shared/containers/SOverlayHost.vue.d.ts +16 -0
- package/dist/src/components/shared/containers/SOverlayHost.vue.js +8 -0
- package/dist/src/components/shared/containers/SOverlayHost.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/src/components/shared/containers/SPageHeader.vue.d.ts +1 -1
- package/dist/src/components/shared/containers/SPanel.vue.d.ts +2 -2
- package/dist/src/components/shared/containers/SPanel.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/src/components/shared/containers/SPopover.vue.js +2 -2
- package/dist/src/components/shared/containers/SPopover.vue_vue_type_script_setup_true_lang.js +250 -156
- package/dist/src/components/shared/containers/SSidebarGroup.vue.js +2 -2
- package/dist/src/components/shared/containers/SSidebarGroup.vue_vue_type_script_setup_true_lang.js +30 -8
- package/dist/src/components/shared/containers/SSidebarSection.vue.js +2 -2
- package/dist/src/components/shared/containers/SSidebarSection.vue_vue_type_script_setup_true_lang.js +59 -45
- package/dist/src/components/shared/controls/SButton.vue.d.ts +7 -0
- package/dist/src/components/shared/controls/SButton.vue.js +2 -2
- package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +11 -5
- package/dist/src/components/shared/controls/SCheckbox.vue.d.ts +3 -0
- package/dist/src/components/shared/controls/SCheckbox.vue.js +2 -2
- package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +53 -43
- package/dist/src/components/shared/controls/SCheckboxGroup.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/src/components/shared/controls/SChoiceCards.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/controls/SColorSelect.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/src/components/shared/controls/SCombobox.vue.js +2 -2
- package/dist/src/components/shared/controls/SCombobox.vue_vue_type_script_setup_true_lang.js +157 -132
- package/dist/src/components/shared/controls/SComboboxTrigger.vue.d.ts +2 -2
- package/dist/src/components/shared/controls/SContextMenu.vue.d.ts +11 -0
- package/dist/src/components/shared/controls/SContextMenu.vue.js +2 -2
- package/dist/src/components/shared/controls/SContextMenu.vue_vue_type_script_setup_true_lang.js +163 -73
- package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/src/components/shared/controls/SDropdownMenu.vue.js +2 -2
- package/dist/src/components/shared/controls/SDropdownMenu.vue_vue_type_script_setup_true_lang.js +77 -65
- package/dist/src/components/shared/controls/SField.vue.d.ts +9 -6
- package/dist/src/components/shared/controls/SField.vue.js +2 -2
- package/dist/src/components/shared/controls/SField.vue_vue_type_script_setup_true_lang.js +69 -52
- package/dist/src/components/shared/controls/SFieldGroup.vue_vue_type_script_setup_true_lang.js +13 -13
- package/dist/src/components/shared/controls/SInlineTokenEditor.vue_vue_type_script_setup_true_lang.js +26 -26
- package/dist/src/components/shared/controls/SInputText.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/src/components/shared/controls/SInteractiveSurface.vue.js +2 -2
- package/dist/src/components/shared/controls/SInteractiveSurface.vue_vue_type_script_setup_true_lang.js +99 -74
- package/dist/src/components/shared/controls/SLink.d.ts +11 -1
- package/dist/src/components/shared/controls/SLink.vue.d.ts +17 -1
- package/dist/src/components/shared/controls/SLink.vue.js +2 -2
- package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +157 -62
- package/dist/src/components/shared/controls/SListbox.vue.d.ts +10 -1
- package/dist/src/components/shared/controls/SListbox.vue.js +2 -2
- package/dist/src/components/shared/controls/SListbox.vue_vue_type_script_setup_true_lang.js +371 -189
- package/dist/src/components/shared/controls/SListboxOption.vue.d.ts +6 -0
- package/dist/src/components/shared/controls/SListboxOption.vue.js +2 -2
- package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +47 -34
- package/dist/src/components/shared/controls/SMenuSurface.vue.d.ts +2 -2
- package/dist/src/components/shared/controls/SMenuSurface.vue.js +2 -2
- package/dist/src/components/shared/controls/SMenuSurface.vue_vue_type_script_setup_true_lang.js +145 -115
- package/dist/src/components/shared/controls/SRange.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/src/components/shared/controls/SSelect.vue.js +2 -2
- package/dist/src/components/shared/controls/SSelect.vue_vue_type_script_setup_true_lang.js +130 -112
- package/dist/src/components/shared/controls/STextarea.d.ts +1 -1
- package/dist/src/components/shared/controls/STextarea.vue.d.ts +28 -2
- package/dist/src/components/shared/controls/STextarea.vue_vue_type_script_setup_true_lang.js +348 -209
- package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +36 -36
- package/dist/src/components/shared/data-display/SActionList.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +4 -4
- package/dist/src/components/shared/data-display/SActionListItem.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/src/components/shared/data-display/SBadge.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SChart.vue_vue_type_script_setup_true_lang.js +89 -89
- package/dist/src/components/shared/data-display/SChip.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +19 -19
- package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +37 -37
- package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/src/components/shared/data-display/SControlledToastViewport.vue.js +2 -2
- package/dist/src/components/shared/data-display/SControlledToastViewport.vue_vue_type_script_setup_true_lang.js +57 -48
- package/dist/src/components/shared/data-display/SDiffViewer.vue_vue_type_script_setup_true_lang.js +13 -13
- package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/src/components/shared/data-display/SEmptyState.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SEmptyState.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/src/components/shared/data-display/SKeyValueGrid.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/src/components/shared/data-display/SLinkedSystemsList.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/src/components/shared/data-display/SMessage.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/src/components/shared/data-display/SMetricCard.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SProgressBar.vue.d.ts +22 -3
- package/dist/src/components/shared/data-display/SProgressBar.vue.js +2 -2
- package/dist/src/components/shared/data-display/SProgressBar.vue_vue_type_script_setup_true_lang.js +133 -47
- package/dist/src/components/shared/data-display/SProgressIndicator.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/data-display/SRichDocument.vue.js +2 -2
- package/dist/src/components/shared/data-display/SRichDocument.vue_vue_type_script_setup_true_lang.js +46 -23
- package/dist/src/components/shared/data-display/SScrollViewport.vue.d.ts +10 -5
- package/dist/src/components/shared/data-display/SScrollViewport.vue.js +2 -2
- package/dist/src/components/shared/data-display/SScrollViewport.vue_vue_type_script_setup_true_lang.js +162 -111
- package/dist/src/components/shared/data-display/SSectionHeader.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SStatus.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/data-display/STable.vue.js +2 -2
- package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +343 -322
- package/dist/src/components/shared/data-display/STooltip.vue.d.ts +2 -2
- package/dist/src/components/shared/data-display/STooltip.vue_vue_type_script_setup_true_lang.js +284 -205
- package/dist/src/components/shared/data-display/STooltipAnchor.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/src/components/shared/data-display/STooltipTarget.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/data-display/SVirtualList.vue.js +2 -2
- package/dist/src/components/shared/data-display/SVirtualList.vue_vue_type_script_setup_true_lang.js +196 -246
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +2 -2
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +242 -220
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.d.ts +13 -2
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.js +2 -2
- package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue_vue_type_script_setup_true_lang.js +67 -11
- package/dist/src/components/shared/data-display/_internal/SRichImage.vue.d.ts +11 -0
- package/dist/src/components/shared/data-display/_internal/SRichImage.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/SRichImage.vue_vue_type_script_setup_true_lang.js +89 -0
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.d.ts +3 -2
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.js +2 -2
- package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue_vue_type_script_setup_true_lang.js +179 -125
- package/dist/src/components/shared/data-display/_internal/SRichMath.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.d.ts +21 -0
- package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.js +5 -0
- package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue_vue_type_script_setup_true_lang.js +150 -0
- package/dist/src/components/shared/data-display/_internal/STableCell.vue.d.ts +52 -0
- package/dist/src/components/shared/data-display/_internal/STableCell.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/STableCell.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/src/components/shared/data-display/_internal/STableFrame.vue.d.ts +42 -0
- package/dist/src/components/shared/data-display/_internal/STableFrame.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/STableFrame.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/src/components/shared/data-display/_internal/STableRow.vue.d.ts +43 -0
- package/dist/src/components/shared/data-display/_internal/STableRow.vue.js +8 -0
- package/dist/src/components/shared/data-display/_internal/STableRow.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/src/components/shared/data-display/_internal/STableSection.vue.d.ts +28 -0
- package/dist/src/components/shared/data-display/_internal/STableSection.vue.js +5 -0
- package/dist/src/components/shared/data-display/_internal/STableSection.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentMedia.d.ts +6 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentMedia.js +136 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.d.ts +21 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.js +39 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.d.ts +30 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.js +88 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.d.ts +9 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.js +240 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.d.ts +15 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.js +61 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentTypes.d.ts +466 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentValidation.d.ts +65 -0
- package/dist/src/components/shared/data-display/_internal/richDocumentValidation.js +192 -0
- package/dist/src/components/shared/data-display/_internal/tableFoundation.d.ts +27 -0
- package/dist/src/components/shared/data-display/_internal/tableFoundation.js +16 -0
- package/dist/src/components/shared/data-display/richDocument.d.ts +3 -220
- package/dist/src/components/shared/data-display/richDocument.js +607 -399
- package/dist/src/components/shared/data-display/scrollViewport.d.ts +2 -0
- package/dist/src/components/shared/database/SDataGrid.vue_vue_type_script_setup_true_lang.js +36 -36
- package/dist/src/components/shared/database/SSqlEditor.vue.d.ts +2 -2
- package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +36 -36
- package/dist/src/components/shared/feedback/SAsyncState.vue.js +2 -2
- package/dist/src/components/shared/feedback/SAsyncState.vue_vue_type_script_setup_true_lang.js +70 -63
- package/dist/src/components/shared/navigation/SBottomNav.vue.d.ts +2 -2
- package/dist/src/components/shared/navigation/SBottomNav.vue.js +2 -2
- package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +140 -129
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue.d.ts +2 -2
- package/dist/src/components/shared/navigation/STabList.vue.d.ts +1 -1
- package/dist/src/components/shared/navigation/STabPanel.vue.d.ts +2 -2
- package/dist/src/components/shared/navigation/SWizardSteps.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/src/components/shared/persona/SPersonaProjectPicker.vue.d.ts +2 -2
- package/dist/src/composables/useDialogOverlay.d.ts +21 -2
- package/dist/src/composables/useDialogOverlay.js +275 -44
- package/dist/src/composables/useFloatingPosition.d.ts +20 -0
- package/dist/src/composables/useFloatingPosition.js +129 -52
- package/dist/src/internal/fieldSurface.d.ts +3 -0
- package/dist/src/internal/fieldSurface.js +3 -2
- package/dist/src/internal/flatTree.d.ts +8 -0
- package/dist/src/internal/flatTree.js +23 -0
- package/dist/src/internal/focusNavigation.d.ts +5 -0
- package/dist/src/internal/focusNavigation.js +29 -16
- package/dist/src/internal/inertLease.d.ts +8 -0
- package/dist/src/internal/inertLease.js +33 -0
- package/dist/src/internal/layerStack.d.ts +52 -0
- package/dist/src/internal/layerStack.js +343 -60
- package/dist/src/internal/linkTarget.d.ts +7 -1
- package/dist/src/internal/linkTarget.js +11 -7
- package/dist/src/internal/nativeFocus.d.ts +4 -0
- package/dist/src/internal/nativeFocus.js +12 -0
- package/dist/src/internal/overlayHost.d.ts +18 -0
- package/dist/src/internal/overlayHost.js +18 -0
- package/dist/src/internal/overlayPortal.d.ts +17 -0
- package/dist/src/internal/overlayPortal.js +23 -0
- package/dist/src/internal/ownedAttrs.d.ts +13 -3
- package/dist/src/internal/ownedAttrs.js +8 -1
- package/dist/src/internal/runtimeContract.d.ts +2 -0
- package/dist/src/internal/runtimeContract.js +10 -5
- package/dist/src/internal/semanticSizing.d.ts +2 -2
- package/dist/src/internal/semanticSizing.js +2 -1
- package/dist/src/internal/useMenuLayer.d.ts +8 -4
- package/dist/src/internal/useMenuLayer.js +78 -49
- package/dist/src/internal/viewportModality.d.ts +27 -0
- package/dist/src/internal/viewportModality.js +132 -0
- package/dist/tailwind.css +3 -0
- package/dist/typography.LICENSE.txt +94 -0
- package/dist/typography.js +5105 -0
- package/docs/getting-started.md +39 -0
- package/docs/link-download.md +114 -0
- package/docs/listbox.md +129 -0
- package/docs/overlay-lifecycle.md +195 -0
- package/docs/public-api.md +335 -6
- package/docs/resize.md +158 -0
- package/docs/rich-document.md +442 -25
- package/docs/scroll-viewport.md +30 -10
- package/docs/theming.md +42 -8
- package/package.json +12 -4
- package/src/components/shared/_internal/SDialogSurface.css +213 -36
- package/src/components/shared/_internal/SMenuLayer.css +4 -0
- package/src/components/shared/containers/SOverlayHost.css +14 -0
- package/src/components/shared/containers/SPopover.css +8 -2
- package/src/components/shared/controls/SButton.css +4 -3
- package/src/components/shared/controls/SCheckbox.css +19 -7
- package/src/components/shared/controls/SField.css +6 -0
- package/src/components/shared/controls/SListbox.css +17 -0
- package/src/components/shared/controls/SMenuSurface.css +18 -4
- package/src/components/shared/controls/STextarea.css +42 -3
- package/src/components/shared/data-display/SControlledToastViewport.css +2 -10
- package/src/components/shared/data-display/SProgressBar.css +79 -0
- package/src/components/shared/data-display/SRichDocument.css +1 -0
- package/src/components/shared/data-display/SScrollViewport.css +17 -1
- package/src/components/shared/data-display/SStatus.css +8 -25
- package/src/components/shared/data-display/STable.css +0 -113
- package/src/components/shared/data-display/STooltip.css +3 -0
- package/src/components/shared/data-display/_internal/SRichBlockNode.css +11 -7
- package/src/components/shared/data-display/_internal/SRichDisclosure.css +16 -0
- package/src/components/shared/data-display/_internal/SRichImage.css +37 -0
- package/src/components/shared/data-display/_internal/STableCell.css +55 -0
- package/src/components/shared/data-display/_internal/STableFrame.css +37 -0
- package/src/components/shared/data-display/_internal/STableRow.css +12 -0
- package/src/components/shared/feedback/SAsyncState.css +0 -4
- package/src/styles/style.css +9 -5
- package/src/styles/tokens.css +30 -0
- package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_2932631d_lang.css +0 -1
- package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_d1b65adf_scoped_d1b65adf_lang.css +0 -2
- package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_4913bbe1_scoped_4913bbe1_lang.css +0 -1
- package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_091d7325_scoped_091d7325_lang.css +0 -2
- package/dist/assets/src/components/shared/containers/SModal.css_vue_type_style_index_0_src_0dc51b74_scoped_0dc51b74_lang.css +0 -2
- package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_deded766_scoped_deded766_lang.css +0 -2
- package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_96f51ac6_scoped_96f51ac6_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_a5d8f7e0_scoped_a5d8f7e0_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SCheckbox.css_vue_type_style_index_0_src_b20b27dd_scoped_b20b27dd_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_e3b4f580_scoped_e3b4f580_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_00c91d39_scoped_00c91d39_lang.css +0 -1
- package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_60628f96_scoped_60628f96_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_24db4abb_scoped_24db4abb_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_ddcc5fbb_scoped_ddcc5fbb_lang.css +0 -2
- package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_441648c9_scoped_441648c9_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SControlledToastViewport.css_vue_type_style_index_0_src_5864b6c6_scoped_5864b6c6_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_9308293a_scoped_9308293a_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_d1afafc5_scoped_d1afafc5_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SScrollViewport.css_vue_type_style_index_0_src_e5d11342_scoped_e5d11342_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_9955d482_scoped_9955d482_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_cee8c247_scoped_cee8c247_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_fa94e2ff_scoped_fa94e2ff_lang.css +0 -2
- package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_bfc28903_scoped_bfc28903_lang.css +0 -2
- package/src/components/shared/containers/SDrawer.css +0 -69
- package/src/components/shared/containers/SModal.css +0 -27
|
@@ -1,20 +1,39 @@
|
|
|
1
1
|
import { ComponentPublicInstance, Ref } from 'vue';
|
|
2
|
+
import { OverlayHostContext } from '../internal/overlayHost';
|
|
3
|
+
export type DialogOverlayScope = 'viewport' | 'contained';
|
|
2
4
|
export interface DialogOverlayOptions {
|
|
3
5
|
open: Readonly<Ref<boolean>>;
|
|
4
6
|
closable: Readonly<Ref<boolean>>;
|
|
7
|
+
scope?: Readonly<Ref<DialogOverlayScope>>;
|
|
8
|
+
host?: OverlayHostContext;
|
|
9
|
+
/** Validates the full owner presentation at setup and before each resource acquisition. */
|
|
10
|
+
validate?: () => void;
|
|
5
11
|
requestClose: () => void;
|
|
6
12
|
/** Runs after the mounted surface owns focus for the current open cycle. */
|
|
7
13
|
opened?: () => void;
|
|
8
14
|
}
|
|
9
15
|
export interface DialogOverlayController {
|
|
10
16
|
panelRef: Ref<HTMLElement | null>;
|
|
17
|
+
portalRef: Ref<HTMLElement | null>;
|
|
18
|
+
dismissalRef: Ref<HTMLElement | null>;
|
|
19
|
+
/** Native cycle availability, independent of its captured initial-focus permission. */
|
|
20
|
+
nativeAdmitted: Readonly<Ref<boolean>>;
|
|
21
|
+
renderOpen: Readonly<Ref<boolean>>;
|
|
22
|
+
/** Exact current layer base for the private dialog surface's semantic paint bands. */
|
|
23
|
+
layerIndex: Readonly<Ref<string | null>>;
|
|
11
24
|
setPanelElement: (element: Element | ComponentPublicInstance | null) => void;
|
|
25
|
+
setPortalElement: (element: Element | ComponentPublicInstance | null) => void;
|
|
26
|
+
setDismissalElement: (element: Element | ComponentPublicInstance | null) => void;
|
|
12
27
|
backdropStyle: Readonly<Ref<Record<string, string>>>;
|
|
13
28
|
surfaceStyle: Readonly<Ref<Record<string, string>>>;
|
|
29
|
+
/** Exact native portal paint band; global toast priority is unchanged. */
|
|
30
|
+
portalStyle: Readonly<Ref<Record<string, string>>>;
|
|
31
|
+
/** Explicit cleanup retires this cycle and descendants without a focus-return request. */
|
|
14
32
|
dispose: () => void;
|
|
15
33
|
}
|
|
16
34
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
35
|
+
* Owns one mounted dialog cycle in the shared layer stack. Viewport dialogs lock
|
|
36
|
+
* body/trap focus and isolate the native background; contained dialogs lease their host without global modality.
|
|
37
|
+
* Retirement requires a new false→true open request before another cycle.
|
|
19
38
|
*/
|
|
20
39
|
export declare function useDialogOverlay(options: DialogOverlayOptions): DialogOverlayController;
|
|
@@ -1,52 +1,283 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { createAggregateError as e } from "../internal/es2020.js";
|
|
2
|
+
import { flatTreeContains as t } from "../internal/flatTree.js";
|
|
3
|
+
import { trapFocusInsidePanel as n } from "../components/shared/_internal/focusTrap.js";
|
|
4
|
+
import { resolveDialogSurfaceLayerIndex as r } from "../components/shared/_internal/dialogSurface.js";
|
|
5
|
+
import { captureLayerFocusAdmission as i, registerLayer as a } from "../internal/layerStack.js";
|
|
6
|
+
import { useOverlayAdmission as o } from "../internal/overlayHost.js";
|
|
7
|
+
import { validateBoolean as s, validateExactString as c } from "../internal/runtimeContract.js";
|
|
8
|
+
import { provideOverlayPortal as l, useOverlayPortal as u } from "../internal/overlayPortal.js";
|
|
9
|
+
import { computed as d, inject as f, nextTick as p, onBeforeUnmount as m, onMounted as h, provide as g, readonly as _, ref as v, shallowRef as y, watch as b } from "vue";
|
|
4
10
|
//#region src/composables/useDialogOverlay.ts
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
var x = Symbol("ui-kit-dialog-parent-lease");
|
|
12
|
+
function S(S) {
|
|
13
|
+
let C = () => c("useDialogOverlay", "scope", S.scope?.value ?? "viewport", ["viewport", "contained"]), w = () => s("useDialogOverlay", "open", S.open.value), T = () => s("useDialogOverlay", "closable", S.closable.value), E = () => {
|
|
14
|
+
if (!S.host) throw TypeError("useDialogOverlay: scope=\"contained\" requires a parent SOverlayHost");
|
|
15
|
+
return S.host;
|
|
16
|
+
}, D = C(), ee = w();
|
|
17
|
+
T(), D === "contained" && E(), S.validate?.();
|
|
18
|
+
let O = o(), k = v(null), A = v(null), j = v(null), M = v(!1), N = u();
|
|
19
|
+
l({
|
|
20
|
+
scope: d(() => C() === "viewport" ? "native" : N?.scope.value ?? "document"),
|
|
21
|
+
subject: d(() => C() === "viewport" ? k.value instanceof HTMLDialogElement ? k.value : null : N?.subject.value ?? null),
|
|
22
|
+
target: d(() => C() === "viewport" ? A.value : N?.target.value ?? null),
|
|
23
|
+
admitted: d(() => C() === "viewport" ? M.value : N?.admitted.value ?? !1)
|
|
24
|
+
});
|
|
25
|
+
let P = f(x, null), F = y(null), I = d(() => F.value?.zIndex ?? null);
|
|
26
|
+
g(x, {
|
|
27
|
+
registration: F,
|
|
28
|
+
panel: k
|
|
29
|
+
});
|
|
30
|
+
let L = v(O.value && D === "viewport" && ee), R = v(!1), z = v({}), B = v({}), V = v({}), H = null, U = !1, W = !1, G = !1, K = D, q = () => {
|
|
31
|
+
let e = E(), t = [
|
|
32
|
+
e.root.value,
|
|
33
|
+
e.content.value,
|
|
34
|
+
e.portal.value
|
|
35
|
+
];
|
|
36
|
+
for (let e of t) if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: SOverlayHost refs must resolve to native HTMLElement or null");
|
|
37
|
+
let n = e.root.value, r = e.content.value, i = e.portal.value;
|
|
38
|
+
if (!n || !r || !i || !n.isConnected || !r.isConnected || !i.isConnected) return null;
|
|
39
|
+
if (n.ownerDocument !== document || r.ownerDocument !== document || i.ownerDocument !== document || r.parentElement !== n || i.parentElement !== n || r === i) throw TypeError("useDialogOverlay: SOverlayHost requires connected same-document sibling content/portal owners");
|
|
40
|
+
return e;
|
|
41
|
+
}, J = () => {
|
|
42
|
+
!G && w() && (G = !0, S.requestClose());
|
|
43
|
+
}, Y = (t) => {
|
|
44
|
+
let n = H;
|
|
45
|
+
H = null, L.value = !1, z.value = {}, B.value = {}, V.value = {};
|
|
46
|
+
let r = [];
|
|
47
|
+
try {
|
|
48
|
+
n?.registration?.unregister({
|
|
49
|
+
restoreFocus: t,
|
|
50
|
+
retireDescendants: !0
|
|
51
|
+
});
|
|
52
|
+
} catch (e) {
|
|
53
|
+
r.push(e);
|
|
54
|
+
} finally {
|
|
55
|
+
n?.focusAdmission?.cancel();
|
|
56
|
+
}
|
|
57
|
+
F.value = null, M.value = !1, n?.releaseNativeListeners?.();
|
|
58
|
+
try {
|
|
59
|
+
n?.releaseHost?.();
|
|
60
|
+
} catch (e) {
|
|
61
|
+
r.push(e);
|
|
62
|
+
}
|
|
63
|
+
if (r.length === 1) throw r[0];
|
|
64
|
+
if (r.length > 1) throw e(r, "useDialogOverlay: layer and host retirement failed");
|
|
65
|
+
}, X = (t, n) => {
|
|
66
|
+
let r = [];
|
|
67
|
+
try {
|
|
68
|
+
Y(t);
|
|
69
|
+
} catch (e) {
|
|
70
|
+
r.push(e);
|
|
71
|
+
}
|
|
72
|
+
if (n) try {
|
|
73
|
+
J();
|
|
74
|
+
} catch (e) {
|
|
75
|
+
r.push(e);
|
|
76
|
+
}
|
|
77
|
+
if (r.length === 1) throw r[0];
|
|
78
|
+
if (r.length > 1) throw e(r, "useDialogOverlay: retirement and close intent failed");
|
|
79
|
+
}, Z = (e = !0) => {
|
|
80
|
+
U = !0, X(e, !0);
|
|
81
|
+
}, Q = (e) => H === e && R.value && !W && !U && O.value && w() && L.value, te = () => {
|
|
82
|
+
try {
|
|
83
|
+
let e = C(), t = w();
|
|
84
|
+
if (T(), e !== K && t) throw TypeError("useDialogOverlay: scope can change only while open=false");
|
|
85
|
+
e === "contained" && E(), S.validate?.();
|
|
86
|
+
} catch (t) {
|
|
87
|
+
U = !0;
|
|
88
|
+
try {
|
|
89
|
+
Y(!1);
|
|
90
|
+
} catch (n) {
|
|
91
|
+
throw e([t, n], "useDialogOverlay: validation and resource retirement failed");
|
|
92
|
+
}
|
|
93
|
+
throw t;
|
|
94
|
+
}
|
|
95
|
+
}, ne = async () => {
|
|
96
|
+
let i = H, o = k.value;
|
|
97
|
+
if (!i || !Q(i) || !o?.isConnected || i.focusing || i.scope === "viewport" && !A.value?.isConnected) return;
|
|
98
|
+
let s = P?.registration.value ?? null;
|
|
99
|
+
if (!P || s && P.panel.value?.isConnected) {
|
|
100
|
+
if (i.scope === "contained" && i.portal?.contains(o) !== !0) throw TypeError("useDialogOverlay: contained dialog surface must mount inside its SOverlayHost portal");
|
|
101
|
+
te(), i.focusing = !0;
|
|
102
|
+
try {
|
|
103
|
+
let e = i.scope === "contained";
|
|
104
|
+
if (e) {
|
|
105
|
+
let e = q();
|
|
106
|
+
if (!e || e.root.value !== i.root || e.content.value !== i.content || e.portal.value !== i.portal) {
|
|
107
|
+
Z();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (i.releaseHost = i.focusAdmission ? i.focusAdmission.acquireHost(() => e.acquire(Z)) : e.acquire(Z), !Q(i)) {
|
|
111
|
+
i.releaseHost(), i.focusAdmission?.cancel();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
let c = P?.panel.value ?? null, l = c && !c.contains(i.restoreTarget) ? c : i.restoreTarget;
|
|
116
|
+
if (!e) {
|
|
117
|
+
if (!(o instanceof HTMLDialogElement)) throw TypeError("useDialogOverlay: viewport panel ref requires an actual HTMLDialogElement and its exact direct portal");
|
|
118
|
+
let e = (e) => {
|
|
119
|
+
e.target === o && (e.preventDefault(), Q(i) && T() && S.requestClose());
|
|
120
|
+
}, n = (e) => {
|
|
121
|
+
if (e.defaultPrevented) return;
|
|
122
|
+
let n = e.target;
|
|
123
|
+
if (!(n instanceof HTMLFormElement) || n.closest("dialog") !== o || !t(o, n)) return;
|
|
124
|
+
let r = e.submitter;
|
|
125
|
+
if (((r instanceof HTMLButtonElement || r instanceof HTMLInputElement) && r.hasAttribute("formmethod") ? r.formMethod : n.method) === "dialog") throw e.preventDefault(), TypeError("useDialogOverlay: native form method=\"dialog\" bypasses controlled open; use a typed close action or update open");
|
|
126
|
+
};
|
|
127
|
+
o.addEventListener("cancel", e, !0), o.addEventListener("submit", n, !0), i.releaseNativeListeners = () => {
|
|
128
|
+
o.removeEventListener("cancel", e, !0), o.removeEventListener("submit", n, !0);
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
if (i.registration = a({
|
|
132
|
+
kind: "dialog",
|
|
133
|
+
root: () => k.value,
|
|
134
|
+
modal: !e,
|
|
135
|
+
...o instanceof HTMLDialogElement && !e ? { nativeDialog: {
|
|
136
|
+
subject: o,
|
|
137
|
+
portal: () => A.value
|
|
138
|
+
} } : {},
|
|
139
|
+
dismissalRoots: () => {
|
|
140
|
+
let t = j.value ?? k.value, n = e ? null : A.value;
|
|
141
|
+
return [...t ? [t] : [], ...n ? [n] : []];
|
|
142
|
+
},
|
|
143
|
+
parent: s,
|
|
144
|
+
eventBoundary: e ? () => i.root : void 0,
|
|
145
|
+
restoreTarget: l,
|
|
146
|
+
focusAdmission: i.focusAdmission,
|
|
147
|
+
dismissOnEscape: T,
|
|
148
|
+
dismissOnOutsidePointer: T,
|
|
149
|
+
blocksParentFocusTrap: !e,
|
|
150
|
+
...e ? {} : { trapFocus: (e) => n(e, k, !0) },
|
|
151
|
+
requestDismiss: () => S.requestClose(),
|
|
152
|
+
onRetire: Z
|
|
153
|
+
}), !Q(i)) {
|
|
154
|
+
i.registration.unregister({
|
|
155
|
+
restoreFocus: !1,
|
|
156
|
+
retireDescendants: !0
|
|
157
|
+
}), i.focusAdmission?.cancel(), i.releaseNativeListeners?.(), i.releaseNativeListeners = null;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (F.value = i.registration, M.value = !e, z.value = { zIndex: r(i.registration.zIndex, "backdrop") }, B.value = { zIndex: r(i.registration.zIndex, "surface") }, V.value = e ? {} : { "--s-layer-root-toast": r(i.registration.zIndex, "toast") }, await p(), !Q(i) || k.value !== o || !o.isConnected || !i.registration.isTopmost()) {
|
|
161
|
+
i.focusAdmission?.cancel();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
i.registration.claimFocus(o) && Q(i) && S.opened?.();
|
|
165
|
+
} catch (t) {
|
|
166
|
+
try {
|
|
167
|
+
H === i ? (U = !0, Y(!1)) : i.focusAdmission?.cancel();
|
|
168
|
+
} catch (n) {
|
|
169
|
+
throw e([t, n], "useDialogOverlay: focus admission and resource retirement failed");
|
|
170
|
+
}
|
|
171
|
+
throw t;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}, re = () => {
|
|
175
|
+
let e;
|
|
176
|
+
try {
|
|
177
|
+
let t = C(), n = w();
|
|
178
|
+
if (T(), t !== K && n) throw TypeError("useDialogOverlay: scope can change only while open=false");
|
|
179
|
+
t === "contained" && E(), S.validate?.(), e = {
|
|
180
|
+
valid: !0,
|
|
181
|
+
open: n,
|
|
182
|
+
scope: t,
|
|
183
|
+
host: R.value && t === "contained" ? q() : null,
|
|
184
|
+
parent: P?.registration.value ?? null,
|
|
185
|
+
admitted: O.value
|
|
186
|
+
};
|
|
187
|
+
} catch (t) {
|
|
188
|
+
e = {
|
|
189
|
+
valid: !1,
|
|
190
|
+
error: t
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return e;
|
|
194
|
+
}, ie = (t) => {
|
|
195
|
+
if (!t.valid) {
|
|
196
|
+
U = !0;
|
|
197
|
+
try {
|
|
198
|
+
Y(!1);
|
|
199
|
+
} catch (n) {
|
|
200
|
+
throw e([t.error, n], "useDialogOverlay: validation and resource retirement failed");
|
|
201
|
+
}
|
|
202
|
+
throw t.error;
|
|
203
|
+
}
|
|
204
|
+
let { open: n, scope: r, host: a, admitted: o } = t;
|
|
205
|
+
if (r !== K) {
|
|
206
|
+
if (n) throw TypeError("useDialogOverlay: scope can change only while open=false");
|
|
207
|
+
K = r, r === "contained" && E();
|
|
208
|
+
}
|
|
209
|
+
if (!n) {
|
|
210
|
+
U = !1, G = !1, Y(o);
|
|
9
211
|
return;
|
|
10
212
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (u) return;
|
|
14
|
-
let n = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
15
|
-
u = t({
|
|
16
|
-
kind: "dialog",
|
|
17
|
-
root: () => s.value,
|
|
18
|
-
modal: !0,
|
|
19
|
-
restoreTarget: n,
|
|
20
|
-
dismissOnEscape: () => o.closable.value,
|
|
21
|
-
dismissOnOutsidePointer: () => o.closable.value,
|
|
22
|
-
trapFocus: (t) => e(t, s, !0),
|
|
23
|
-
requestDismiss: () => o.requestClose()
|
|
24
|
-
}), c.value = { zIndex: u.zIndex }, l.value = { zIndex: `calc(${u.zIndex} + var(--s-layer-overlay-surface-offset))` };
|
|
25
|
-
}, m = (e = !0) => {
|
|
26
|
-
u?.unregister({ restoreFocus: e }), u = null, c.value = {}, l.value = {};
|
|
27
|
-
}, h = () => {
|
|
28
|
-
d += 1, m(!1);
|
|
29
|
-
};
|
|
30
|
-
return a(o.open, async (e, t) => {
|
|
31
|
-
d += 1;
|
|
32
|
-
let r = d;
|
|
33
|
-
if (e) {
|
|
34
|
-
if (p(), await n(), r !== d || !o.open.value || u === null) return;
|
|
35
|
-
let e = s.value;
|
|
36
|
-
if (!e) return;
|
|
37
|
-
e.focus(), r === d && o.open.value && u !== null && o.opened?.();
|
|
213
|
+
if (!o) {
|
|
214
|
+
Z(!1);
|
|
38
215
|
return;
|
|
39
216
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
217
|
+
if (!R.value || W || U) return;
|
|
218
|
+
if (H) {
|
|
219
|
+
(r === "contained" && (a === null || H.root !== a.root.value || H.content !== a.content.value || H.portal !== a.portal.value) || H.registration && P && !t.parent) && Z();
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (r === "contained" && !a) return;
|
|
223
|
+
let s = i({ releaseBoundary: a?.content.value ?? null }), c = s?.restoreTarget ?? null;
|
|
224
|
+
H = {
|
|
225
|
+
scope: r,
|
|
226
|
+
root: a?.root.value ?? null,
|
|
227
|
+
content: a?.content.value ?? null,
|
|
228
|
+
portal: a?.portal.value ?? null,
|
|
229
|
+
restoreTarget: c,
|
|
230
|
+
focusAdmission: s,
|
|
231
|
+
releaseHost: null,
|
|
232
|
+
registration: null,
|
|
233
|
+
releaseNativeListeners: null,
|
|
234
|
+
focusing: !1
|
|
235
|
+
}, L.value = !0;
|
|
236
|
+
}, ae = (e) => {
|
|
237
|
+
if (e !== null && !(e instanceof HTMLElement)) throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
|
|
238
|
+
k.value = e;
|
|
239
|
+
}, oe = (e) => {
|
|
240
|
+
if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: native portal ref must resolve to HTMLElement or null");
|
|
241
|
+
A.value = e;
|
|
242
|
+
}, se = (e) => {
|
|
243
|
+
if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: visual dismissal ref must resolve to HTMLElement or null");
|
|
244
|
+
j.value = e;
|
|
245
|
+
};
|
|
246
|
+
b(re, ie, {
|
|
247
|
+
flush: "sync",
|
|
248
|
+
immediate: !0
|
|
249
|
+
}), b(k, () => {
|
|
250
|
+
H?.registration?.refreshModality();
|
|
251
|
+
}, { flush: "sync" }), b(A, () => H?.registration?.refreshModality(), { flush: "sync" }), b([
|
|
252
|
+
R,
|
|
253
|
+
k,
|
|
254
|
+
A,
|
|
255
|
+
L,
|
|
256
|
+
() => P?.registration.value
|
|
257
|
+
], ne, { flush: "post" }), h(() => {
|
|
258
|
+
R.value = !0;
|
|
259
|
+
});
|
|
260
|
+
let $ = (e) => {
|
|
261
|
+
if (W) return;
|
|
262
|
+
W = !0;
|
|
263
|
+
let t = K === "contained" && w();
|
|
264
|
+
X(e, t);
|
|
265
|
+
};
|
|
266
|
+
return m(() => $(O.value)), {
|
|
267
|
+
panelRef: k,
|
|
268
|
+
portalRef: A,
|
|
269
|
+
dismissalRef: j,
|
|
270
|
+
nativeAdmitted: _(M),
|
|
271
|
+
renderOpen: _(L),
|
|
272
|
+
layerIndex: I,
|
|
273
|
+
setPanelElement: ae,
|
|
274
|
+
setPortalElement: oe,
|
|
275
|
+
setDismissalElement: se,
|
|
276
|
+
backdropStyle: z,
|
|
277
|
+
surfaceStyle: B,
|
|
278
|
+
portalStyle: V,
|
|
279
|
+
dispose: () => $(!1)
|
|
49
280
|
};
|
|
50
281
|
}
|
|
51
282
|
//#endregion
|
|
52
|
-
export {
|
|
283
|
+
export { S as useDialogOverlay };
|
|
@@ -3,6 +3,16 @@ export type FloatingSide = 'top' | 'bottom' | 'left' | 'right';
|
|
|
3
3
|
export type FloatingAlignment = 'start' | 'center' | 'end';
|
|
4
4
|
export type FloatingPlacement = `${FloatingSide}-${FloatingAlignment}`;
|
|
5
5
|
export type FloatingWidthMatch = 'none' | 'min' | 'exact';
|
|
6
|
+
/** Доступные размеры border-box floating viewport. / Available floating viewport border-box dimensions. */
|
|
7
|
+
export interface FloatingAvailableSize {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}
|
|
11
|
+
/** Native scroll/chrome owner и его естественный, не прокручиваемый контент. / Native scroll/chrome owner and its natural non-scrolling content. */
|
|
12
|
+
export interface FloatingSizingElements {
|
|
13
|
+
surface: HTMLElement;
|
|
14
|
+
content: HTMLElement;
|
|
15
|
+
}
|
|
6
16
|
export interface FloatingPositionOptions {
|
|
7
17
|
active: Readonly<Ref<boolean>>;
|
|
8
18
|
placement: () => FloatingPlacement;
|
|
@@ -14,6 +24,10 @@ export interface FloatingPositionOptions {
|
|
|
14
24
|
flip?: () => boolean;
|
|
15
25
|
shift?: () => boolean;
|
|
16
26
|
constrainMainAxis?: () => boolean;
|
|
27
|
+
/** Ограничивает viewport по natural content без clipped measurements. / Bounds the viewport using natural content, not clipped measurements. */
|
|
28
|
+
viewportSizing?: () => boolean;
|
|
29
|
+
/** Явные native владельцы размера; обязательны для viewportSizing. / Explicit native size owners, required for viewportSizing. */
|
|
30
|
+
sizingElements?: () => FloatingSizingElements | null;
|
|
17
31
|
widthMatch?: () => FloatingWidthMatch;
|
|
18
32
|
zIndex?: () => string;
|
|
19
33
|
scrollStrategy?: 'reposition' | 'close';
|
|
@@ -26,6 +40,7 @@ export interface FloatingPositionController {
|
|
|
26
40
|
arrowStyle: Ref<Record<string, string>>;
|
|
27
41
|
resolvedPlacement: Ref<FloatingPlacement>;
|
|
28
42
|
coordinates: Ref<FloatingCoordinates>;
|
|
43
|
+
availableSize: Ref<FloatingAvailableSize | null>;
|
|
29
44
|
updatePosition: () => void;
|
|
30
45
|
}
|
|
31
46
|
/** Координаты floating-поверхности во viewport. / Floating-surface viewport coordinates. */
|
|
@@ -36,5 +51,10 @@ export interface FloatingCoordinates {
|
|
|
36
51
|
/**
|
|
37
52
|
* Единый владелец geometry/collision/observer-контракта floating surfaces.
|
|
38
53
|
* Canonical owner of floating-surface geometry, collision and observers.
|
|
54
|
+
* Panel dimensions use the untransformed used CSS border box, preserving
|
|
55
|
+
* fractional pixels and content-box padding/borders. Non-resolved CSS sizes
|
|
56
|
+
* use native unscaled offset dimensions; visual anchor rectangles retain transforms.
|
|
57
|
+
* CSSOM: https://www.w3.org/TR/cssom-1/#resolved-values
|
|
58
|
+
* CSSOM View: https://www.w3.org/TR/cssom-view-1/#dom-htmlelement-offsetwidth
|
|
39
59
|
*/
|
|
40
60
|
export declare function useFloatingPosition(options: FloatingPositionOptions): FloatingPositionController;
|
|
@@ -28,97 +28,174 @@ function u(e, t) {
|
|
|
28
28
|
let n = Math.min(10, t / 2);
|
|
29
29
|
return Math.max(n, Math.min(e, t - n));
|
|
30
30
|
}
|
|
31
|
-
function d(
|
|
32
|
-
|
|
31
|
+
function d(e) {
|
|
32
|
+
if (!/^(?:\d+|\d*\.\d+)px$/u.test(e)) return null;
|
|
33
|
+
let t = Number(e.slice(0, -2));
|
|
34
|
+
return Number.isFinite(t) ? t : null;
|
|
35
|
+
}
|
|
36
|
+
function f(e, t, n) {
|
|
37
|
+
let r = d(e);
|
|
38
|
+
if (r === null) return null;
|
|
39
|
+
if (t === "border-box") return r;
|
|
40
|
+
let i = r;
|
|
41
|
+
for (let e of n) {
|
|
42
|
+
let t = d(e);
|
|
43
|
+
if (t === null) return null;
|
|
44
|
+
i += t;
|
|
45
|
+
}
|
|
46
|
+
return i;
|
|
47
|
+
}
|
|
48
|
+
function p(e) {
|
|
49
|
+
let t = window.getComputedStyle(e);
|
|
50
|
+
return {
|
|
51
|
+
width: f(t.width, t.boxSizing, [
|
|
52
|
+
t.paddingLeft,
|
|
53
|
+
t.paddingRight,
|
|
54
|
+
t.borderLeftWidth,
|
|
55
|
+
t.borderRightWidth
|
|
56
|
+
]) ?? e.offsetWidth,
|
|
57
|
+
height: f(t.height, t.boxSizing, [
|
|
58
|
+
t.paddingTop,
|
|
59
|
+
t.paddingBottom,
|
|
60
|
+
t.borderTopWidth,
|
|
61
|
+
t.borderBottomWidth
|
|
62
|
+
]) ?? e.offsetHeight
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function m(e) {
|
|
66
|
+
let { surface: t, content: n } = e;
|
|
67
|
+
if (!t.contains(n)) throw Error("useFloatingPosition: natural content must belong to its native sizing surface");
|
|
68
|
+
let r = p(t), i = p(n);
|
|
69
|
+
if (r.width === 0 && r.height === 0 && i.width === 0 && i.height === 0) return r;
|
|
70
|
+
let a = window.getComputedStyle(t), o = i.height;
|
|
71
|
+
for (let e of [
|
|
72
|
+
a.paddingTop,
|
|
73
|
+
a.paddingBottom,
|
|
74
|
+
a.borderTopWidth,
|
|
75
|
+
a.borderBottomWidth
|
|
76
|
+
]) {
|
|
77
|
+
let t = d(e);
|
|
78
|
+
if (t === null) throw Error("useFloatingPosition: sizing surface block edges must resolve to pixel lengths");
|
|
79
|
+
o += t;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
width: r.width,
|
|
83
|
+
height: o
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function h(s) {
|
|
87
|
+
let d = r(null), f = s.panelRef ?? r(null), h = r({}), g = r({}), _ = r(s.placement()), v = r({
|
|
33
88
|
left: -1e4,
|
|
34
89
|
top: -1e4
|
|
35
|
-
}),
|
|
36
|
-
if (!s.active.value || typeof window > "u") return;
|
|
90
|
+
}), y = r(null), b = null, x = !1, S = !1, C = !1, w = 0, T = () => {
|
|
91
|
+
if (C || !s.active.value || typeof window > "u") return;
|
|
37
92
|
let e = s.anchorElement?.() ?? d.value, t = f.value, n = s.anchorRect?.() ?? e?.getBoundingClientRect() ?? null;
|
|
38
93
|
if (!n || !t) return;
|
|
39
|
-
let r =
|
|
94
|
+
let r = s.viewportSizing?.() ?? !1, i = r ? s.sizingElements?.() : null;
|
|
95
|
+
if (r && !i) return;
|
|
96
|
+
let { width: b, height: x } = i ? m(i) : p(t), S = s.offset?.() ?? 6, w = s.boundaryPadding?.() ?? 8, T = window.innerWidth, E = window.innerHeight, [D, O] = o(s.placement()), k = D, A = c(k, O, n, b, x, S);
|
|
40
97
|
if (s.flip?.() ?? !0) {
|
|
41
|
-
let e = a[
|
|
42
|
-
|
|
98
|
+
let e = a[k], t = c(e, O, n, b, x, S), i = l(k, A, b, x, T, E, w), o = l(e, t, b, x, T, E, w);
|
|
99
|
+
if (o < i && (k = e, A = t), r && (D === "left" || D === "right") && i > 0 && o > 0) {
|
|
100
|
+
let e = c("bottom", O, n, b, x, S), t = c("top", O, n, b, x, S), r = l("bottom", e, b, x, T, E, w);
|
|
101
|
+
k = l("top", t, b, x, T, E, w) < r ? "top" : "bottom", A = k === "top" ? t : e;
|
|
102
|
+
}
|
|
43
103
|
}
|
|
44
|
-
let
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
104
|
+
let j = b, M = x, N = {};
|
|
105
|
+
if (r) {
|
|
106
|
+
let e = Math.max(0, T - 2 * w), t = Math.max(0, Math.min(E - 2 * w, k === "top" ? n.top - S - w : k === "bottom" ? E - w - n.bottom - S : E - 2 * w)), r = y.value;
|
|
107
|
+
(!r || r.width !== e || r.height !== t) && (y.value = {
|
|
108
|
+
width: e,
|
|
109
|
+
height: t
|
|
110
|
+
}), j = Math.min(b, e), M = Math.min(x, t), A = c(k, O, n, j, M, S);
|
|
111
|
+
} else if (s.constrainMainAxis?.() ?? !1) {
|
|
112
|
+
if (k === "top" || k === "bottom") {
|
|
113
|
+
let e = k === "top" ? n.top - S - w : E - w - n.bottom - S;
|
|
114
|
+
M = Math.min(x, Math.max(0, Math.floor(e))), N.maxHeight = `${M}px`, N.overflowY = "auto";
|
|
49
115
|
} else {
|
|
50
|
-
let e =
|
|
51
|
-
|
|
116
|
+
let e = k === "left" ? n.left - S - w : T - w - n.right - S;
|
|
117
|
+
j = Math.min(b, Math.max(0, Math.floor(e))), N.maxWidth = `${j}px`, N.overflowX = "auto";
|
|
52
118
|
}
|
|
53
|
-
|
|
119
|
+
A = c(k, O, n, j, M, S);
|
|
54
120
|
}
|
|
55
|
-
(s.shift?.() ?? !0) && (
|
|
56
|
-
let
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
121
|
+
(s.shift?.() ?? !0) && (A.left = Math.max(w, Math.min(A.left, T - j - w)), A.top = Math.max(w, Math.min(A.top, E - M - w)));
|
|
122
|
+
let P = `${k}-${O}`;
|
|
123
|
+
_.value = P;
|
|
124
|
+
let F = Math.round(A.left), I = Math.round(A.top);
|
|
125
|
+
v.value = r && (s.shift?.() ?? !0) ? {
|
|
126
|
+
left: Math.max(w, Math.min(F, T - j - w)),
|
|
127
|
+
top: Math.max(w, Math.min(I, E - M - w))
|
|
128
|
+
} : {
|
|
129
|
+
left: F,
|
|
130
|
+
top: I
|
|
60
131
|
};
|
|
61
|
-
let
|
|
62
|
-
if (
|
|
132
|
+
let L = s.widthMatch?.() ?? "none";
|
|
133
|
+
if (h.value = {
|
|
63
134
|
position: "fixed",
|
|
64
|
-
left: `${
|
|
65
|
-
top: `${
|
|
135
|
+
left: `${v.value.left}px`,
|
|
136
|
+
top: `${v.value.top}px`,
|
|
66
137
|
zIndex: s.zIndex?.() ?? "var(--s-layer-root-floating)",
|
|
67
|
-
...
|
|
68
|
-
...
|
|
69
|
-
...
|
|
70
|
-
},
|
|
71
|
-
let e = n.left + n.width / 2 -
|
|
72
|
-
|
|
138
|
+
...N,
|
|
139
|
+
...L === "min" ? { minWidth: `${Math.round(n.width)}px` } : {},
|
|
140
|
+
...L === "exact" ? { width: `${Math.round(n.width)}px` } : {}
|
|
141
|
+
}, k === "top" || k === "bottom") {
|
|
142
|
+
let e = n.left + n.width / 2 - A.left;
|
|
143
|
+
g.value = { left: `${Math.round(u(e, b))}px` };
|
|
73
144
|
} else {
|
|
74
|
-
let e = n.top + n.height / 2 -
|
|
75
|
-
|
|
145
|
+
let e = n.top + n.height / 2 - A.top;
|
|
146
|
+
g.value = { top: `${Math.round(u(e, x))}px` };
|
|
76
147
|
}
|
|
77
|
-
},
|
|
148
|
+
}, E = () => {
|
|
78
149
|
if (s.active.value) {
|
|
79
150
|
if (s.scrollStrategy === "close") {
|
|
80
151
|
s.requestClose?.();
|
|
81
152
|
return;
|
|
82
153
|
}
|
|
83
|
-
|
|
154
|
+
T();
|
|
84
155
|
}
|
|
85
|
-
},
|
|
86
|
-
if (!
|
|
156
|
+
}, D = () => {
|
|
157
|
+
if (S && !C && s.active.value && !x && typeof window < "u" && (x = !0, window.addEventListener("resize", T, { passive: !0 }), window.addEventListener("scroll", E, {
|
|
87
158
|
passive: !0,
|
|
88
159
|
capture: !0
|
|
89
160
|
}), typeof ResizeObserver < "u")) {
|
|
90
|
-
|
|
161
|
+
b = new ResizeObserver(T);
|
|
91
162
|
let e = s.anchorElement?.() ?? d.value;
|
|
92
|
-
e &&
|
|
163
|
+
e && b.observe(e), f.value && b.observe(f.value);
|
|
164
|
+
let t = s.viewportSizing?.() ? s.sizingElements?.() : null;
|
|
165
|
+
t && (t.surface !== f.value && b.observe(t.surface), b.observe(t.content));
|
|
93
166
|
}
|
|
94
|
-
},
|
|
95
|
-
|
|
167
|
+
}, O = () => {
|
|
168
|
+
x && typeof window < "u" && (x = !1, window.removeEventListener("resize", T), window.removeEventListener("scroll", E, !0), b?.disconnect(), b = null);
|
|
96
169
|
};
|
|
97
170
|
return i(s.active, async (t) => {
|
|
171
|
+
let n = ++w;
|
|
98
172
|
if (!t) {
|
|
99
|
-
|
|
173
|
+
O(), h.value = {}, g.value = {}, v.value = {
|
|
100
174
|
left: -1e4,
|
|
101
175
|
top: -1e4
|
|
102
|
-
};
|
|
176
|
+
}, y.value = null;
|
|
103
177
|
return;
|
|
104
178
|
}
|
|
105
|
-
|
|
179
|
+
h.value = {
|
|
106
180
|
position: "fixed",
|
|
107
181
|
left: "-10000px",
|
|
108
182
|
top: "-10000px",
|
|
109
183
|
zIndex: s.zIndex?.() ?? "var(--s-layer-root-floating)"
|
|
110
|
-
}, await e(),
|
|
184
|
+
}, await e(), S && !C && s.active.value && n === w && (D(), T());
|
|
111
185
|
}, { immediate: !0 }), n(() => {
|
|
112
|
-
s.active.value && (
|
|
113
|
-
}), t(
|
|
186
|
+
S = !0, s.active.value && (D(), T());
|
|
187
|
+
}), t(() => {
|
|
188
|
+
C = !0, S = !1, w += 1, O();
|
|
189
|
+
}), {
|
|
114
190
|
anchorRef: d,
|
|
115
191
|
panelRef: f,
|
|
116
|
-
floatingStyle:
|
|
117
|
-
arrowStyle:
|
|
118
|
-
resolvedPlacement:
|
|
119
|
-
coordinates:
|
|
120
|
-
|
|
192
|
+
floatingStyle: h,
|
|
193
|
+
arrowStyle: g,
|
|
194
|
+
resolvedPlacement: _,
|
|
195
|
+
coordinates: v,
|
|
196
|
+
availableSize: y,
|
|
197
|
+
updatePosition: T
|
|
121
198
|
};
|
|
122
199
|
}
|
|
123
200
|
//#endregion
|
|
124
|
-
export {
|
|
201
|
+
export { h as useFloatingPosition };
|
|
@@ -10,6 +10,8 @@ export interface FieldSurfaceContract {
|
|
|
10
10
|
invalid: boolean;
|
|
11
11
|
disabled: boolean;
|
|
12
12
|
readonly: boolean;
|
|
13
|
+
/** A field surface enclosing its native editor and in-flow supporting content. */
|
|
14
|
+
composite?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export interface FieldSurfaceBindings {
|
|
15
17
|
'data-s-field-surface': FieldSurfaceKind;
|
|
@@ -17,6 +19,7 @@ export interface FieldSurfaceBindings {
|
|
|
17
19
|
'data-s-field-invalid'?: 'true';
|
|
18
20
|
'data-s-field-disabled'?: 'true';
|
|
19
21
|
'data-s-field-readonly'?: 'true';
|
|
22
|
+
'data-s-field-composite'?: 'true';
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Создаёт exact DOM bindings единого field-surface foundation без truthy coercion.
|