@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
package/docs/public-api.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
- `layout/*` — каркас приложения, dock regions, stack и workbench layouts;
|
|
11
11
|
- `shared/controls/*` — buttons, fields, inputs, selects, menus и selection controls;
|
|
12
|
-
- `shared/containers/*` — panels, modal, drawer, popover и sidebars;
|
|
12
|
+
- `shared/containers/*` — panels, modal, drawer, overlay host, popover и sidebars;
|
|
13
13
|
- `shared/data-display/*` — badges, tables, code, JSON, progress, status и tooltips;
|
|
14
14
|
- `shared/navigation/*` — tabs, breadcrumbs, catalog navigation и wizard steps;
|
|
15
15
|
- `shared/database/*`, `shared/graph/*`, `shared/persona/*` — доменные сложные поверхности;
|
|
@@ -27,12 +27,39 @@ UI-kit-owned атрибуты `data-s-*` относятся к внутренн
|
|
|
27
27
|
runtime-зависимости через layout конкретного package manager. Сборка использует
|
|
28
28
|
`target/lib: ES2020`, совпадающий с baseline `@vue/tsconfig/tsconfig.dom.json`,
|
|
29
29
|
и не требует скрытых полифиллов.
|
|
30
|
+
Сборка Tailwind entrypoints использует Node ESM `dist/typography.js` с native
|
|
31
|
+
`node:util`, полным upstream prose contract и options `className`/`target`
|
|
32
|
+
для `modern | legacy`; browser Web Storage и DOM globals не требуются.
|
|
33
|
+
`icons` публикует именованные tree-shakeable компоненты, включая `HardDrive`,
|
|
34
|
+
`Usb`, `Disc`, `CalendarDays`, `ArrowUpRight`, `Paperclip`, `GitFork`, `ZoomIn`,
|
|
35
|
+
`ZoomOut`, `RotateCw`, `Volume2`, `Radio`, `Pause`, `ChevronLeft` и `Zap`. `Zap`
|
|
36
|
+
обозначает молнию для роли быстрой модели и сохраняет primary-only силуэт
|
|
37
|
+
во всех цветовых режимах. `Pause`
|
|
38
|
+
обозначает состояние паузы; `ChevronLeft` — переход влево. `Radio` обозначает сетевое вещание
|
|
39
|
+
или фоновое уведомление, не radio input. `ZoomIn` и `ZoomOut` обозначают изменение
|
|
40
|
+
масштаба; `RotateCw` — поворот по часовой стрелке; `Volume2` — звук с двумя
|
|
41
|
+
волнами. Они используют общий icon
|
|
42
|
+
contract с `classic | sputnig` наборами, `auto | duotone | monochrome` цветом
|
|
43
|
+
и семантическим размером владельца control при передаче через icon slot.
|
|
30
44
|
Типы таблицы импортируются из `shared/data-display/table`, типы графиков — из
|
|
31
45
|
`shared/data-display/chart`, типы и чистая функция diff — из
|
|
32
46
|
`shared/data-display/diff`. `SDiffViewer` принимает exact-text snapshots,
|
|
33
47
|
показывает unified/split представление, виртуализирует строки и управляет
|
|
34
48
|
вычислением в worker для больших входов. Смена source и unmount отменяют
|
|
35
49
|
неактуальную работу; завершившийся устаревший результат не публикуется.
|
|
50
|
+
`SProgressBar.shape="circular"` предоставляет 24/28/32 px numerical indicator
|
|
51
|
+
через существующий progressbar owner. Determinate круг требует явный `value`
|
|
52
|
+
0–100; `showValue` округляет только отображаемый процент, не `aria-valuenow`.
|
|
53
|
+
`valueText` описывает предметное измерение. `accuracy="estimated"` требует
|
|
54
|
+
`valueText` и видимую приблизительную отметку; явный `mode="unknown"` требует
|
|
55
|
+
`valueText`, отвергает `value` и не создаёт numerical или animated state.
|
|
56
|
+
Пассивная круговая форма допускает phrasing-композицию внутри кнопки в
|
|
57
|
+
decorative mode; интерактивный owner и доступное имя остаются у кнопки.
|
|
58
|
+
Штатная композиция использует `SButton.appearance="ghost"`, `iconOnly`,
|
|
59
|
+
`shape="circle"`, `size="lg"` и `density="default"` с областью 48×48 px.
|
|
60
|
+
Default linear/determinate и native range 0–100 сохраняются. Scoped default
|
|
61
|
+
slot с точным value относится только к linear label; circular отклоняет этот
|
|
62
|
+
slot и управляет числом и uncertainty marker через публичные props.
|
|
36
63
|
`SChart` объединяет line/area/bar/pie/donut,
|
|
37
64
|
responsive geometry, semantic palette и доступную таблицу данных. `SMetricCard`
|
|
38
65
|
принимает компактный график через `#chart`. `SCodeBlock` сохраняет CodeMirror за
|
|
@@ -43,6 +70,27 @@ async boundary; `presentation="plain"` является lightweight read-only к
|
|
|
43
70
|
`SActionListItem` держат primary activation и дополнительные controls
|
|
44
71
|
sibling-элементами внутри одного chrome; `actionsLayout`/`trailingLayout`
|
|
45
72
|
управляют inline, stacked и container-responsive раскладкой.
|
|
73
|
+
`SInteractiveSurface.tooltipTrigger` принимает полный combined `trigger` из
|
|
74
|
+
default slot `STooltip` и связывает ARIA, pointer/focus events и element ref
|
|
75
|
+
с primary activation owner в режимах action, link `href` и Vue Router `to`.
|
|
76
|
+
Link surface требует ровно один target и доступное имя; `to` требует
|
|
77
|
+
подключённого Vue Router. Static surface отклоняет tooltip binding.
|
|
78
|
+
Sibling `#actions` сохраняет независимые focus/activation. Подсказка
|
|
79
|
+
открывается по pointer/focus и закрывается через Escape.
|
|
80
|
+
Пассивный visual portal исключён из самостоятельного AX-чтения через
|
|
81
|
+
`aria-hidden`; полный rich content доступен как `aria-describedby` описание
|
|
82
|
+
focus owner. Внешние description references сохраняются; имя, роль и Tab
|
|
83
|
+
порядок owner не изменяются. Tooltip не принимает интерактивный контент.
|
|
84
|
+
Пассивная tooltip panel поддерживает геометрический hover без focus или Tab stop
|
|
85
|
+
и не перехватывает указатель у расположенных под ней действий. Выход из
|
|
86
|
+
target и панели закрывает её через `hideDelay`. Escape отменяет pending
|
|
87
|
+
`showDelay` без перехвата события у другого overlay. Blur, скрытие документа,
|
|
88
|
+
disabled и освобождение target завершают activation lease и его слушатели.
|
|
89
|
+
Binding допускает canonical focus owner в сохранённой скрытой секции.
|
|
90
|
+
Активация требует подключённого, видимого и доступного владельца. Скрытие
|
|
91
|
+
его ancestor отменяет pending-таймеры, сразу исключает visual portal из
|
|
92
|
+
взаимодействия и снимает tooltip description; последующий reveal сохраняет
|
|
93
|
+
тот же owner и допускает новое pointer/focus открытие.
|
|
46
94
|
`SUiKitLocaleProvider` задаёт `en | ru | zh-CN | zh-TW` для одного Vue subtree,
|
|
47
95
|
а `composables/useUiKitLocale` экспортирует readonly context, полный список
|
|
48
96
|
локалей и типы messages/overrides/ключей. Provider не создаёт DOM owner и
|
|
@@ -62,23 +110,142 @@ callbacks и trust flags не входят в API.
|
|
|
62
110
|
`sm/md/lg = 32/36/40 px` и label typography `12/14/14 px`; тот же
|
|
63
111
|
`density="compact"` у `SInputText` даёт совместимую геометрию поля без
|
|
64
112
|
consumer CSS.
|
|
113
|
+
Foreground/background `SButton` применяются атомарно без color interpolation
|
|
114
|
+
при disabled/loading → enabled и смене визуального состояния. Native
|
|
115
|
+
activation, `href` и Tab availability следуют текущим props без ожидания
|
|
116
|
+
декоративных shadow/transform transitions.
|
|
65
117
|
`SInputText.minLength`/`maxLength` и `STextarea.minLength`/`maxLength` передают строгие
|
|
66
118
|
неотрицательные safe integers нативному textual input; `minLength <= maxLength`
|
|
67
119
|
проверяется до рендера, а numeric/temporal families отвергают этот контракт.
|
|
120
|
+
`STextareaContentContext.hasMultipleVisualLines` передаёт `false` для одной
|
|
121
|
+
native визуальной строки, `true` для нескольких и `null` при недоступном layout
|
|
122
|
+
(SSR/hidden/zero width). Soft wrapping и hard newline учитываются общей
|
|
123
|
+
editing/resize поверхностью; пустое значение при доступном layout имеет одну
|
|
124
|
+
строку. Условный helper использует `=== false`, `composing` и `disabled`, без
|
|
125
|
+
измерения private DOM; min/max ограничивают всю surface независимо от helper.
|
|
126
|
+
`STextareaApi.selectAll(focusOwner?: boolean): void` выделяет
|
|
127
|
+
`[0, currentNativeValue.length]` с direction `forward` через общий selection
|
|
128
|
+
owner. Default `true` запрашивает native focus; `false` его не меняет.
|
|
129
|
+
Readonly и non-rendered controls допускают selection; disabled/detached focus
|
|
130
|
+
зависит от native eligibility. Исходные CRLF/Unicode bytes, model и input/history
|
|
131
|
+
не меняются; текущий native value учитывает неподтверждённый controlled input.
|
|
132
|
+
Unavailable/disposed owner и non-boolean policy завершаются явной ошибкой.
|
|
133
|
+
`SDockRegion.keepMounted?: boolean` имеет default `false` и сохраняет
|
|
134
|
+
default disposal при скрытии. `true` сохраняет тот же slot owner, включая
|
|
135
|
+
initial hidden; `hidden`/`inert` исключают layout, Tab, pointer и accessibility,
|
|
136
|
+
а resize handle освобождается с typed cancellation активного drag.
|
|
137
|
+
Повторное отображение не перехватывает внешний focus. `true → false` при
|
|
138
|
+
скрытии и unmount освобождают содержимое. Transport/imperative buffers принадлежат
|
|
139
|
+
consumer; terminal `open()` требует visible connected host с positive extent.
|
|
140
|
+
Вложенные UI-kit overlays, включая Teleport, следуют `visible`: скрытие
|
|
141
|
+
завершает registered/pending cycles, освобождает leases/body lock и не
|
|
142
|
+
возвращает focus скрытому trigger. Initial hidden запрещает opening;
|
|
143
|
+
retired controlled `open=true` получает один close intent и требует свежего
|
|
144
|
+
`false → true`. Вложенные dock сочетают admission через AND; независимые
|
|
145
|
+
sibling overlays и consumer-owned arbitrary portals не затрагиваются.
|
|
68
146
|
`SModal.headingLevel` и `SDrawer.headingLevel` принимают только `1 | 2 | 3 | 4 |
|
|
69
147
|
5 | 6`, используют `2` по умолчанию и сохраняют связь видимого заголовка с
|
|
70
|
-
dialog surface через `aria-labelledby`.
|
|
148
|
+
dialog surface через `aria-labelledby`. Локальная шапка диалога содержит
|
|
149
|
+
семантический heading и не создаёт page-level `banner`.
|
|
71
150
|
`SModal.size="4xl"` задаёт responsive maximum `56rem`; при ошибке дочернего
|
|
72
151
|
mount modal освобождает body lock, layer registration и owned teleport nodes.
|
|
152
|
+
Viewport `SModal`/`SDrawer` владеют единственным нативным `dialog` в modal top
|
|
153
|
+
layer, без `tabindex` на semantic root. Фон всех DOM namespaces исключён из
|
|
154
|
+
pointer/focus interaction и accessibility tree. Дочерние UI-kit portals
|
|
155
|
+
принадлежат actual dialog вне transform/scroll clipping; вложенный viewport
|
|
156
|
+
dialog изолирует родителя. Retirement синхронно освобождает native blocking,
|
|
157
|
+
сохраняя отдельный shared focus-return и visual leave lifecycle. Contained
|
|
158
|
+
drawer ограничивает HTML inert lease своим host и не вызывает `showModal()`.
|
|
159
|
+
Экспортируемый `useDialogOverlay` в viewport-режиме требует actual connected
|
|
160
|
+
`HTMLDialogElement` через `setPanelElement` и exact direct-child portal через
|
|
161
|
+
`setPortalElement`; contained-режим сохраняет HTMLElement surface внутри
|
|
162
|
+
SOverlayHost. Native methods принадлежат composable, не consumer.
|
|
163
|
+
Для custom viewport leaf `dialog` и portal находятся в одном Document;
|
|
164
|
+
portal — непосредственный дочерний HTMLElement semantic root. Visible frame
|
|
165
|
+
передаётся через `setDismissalElement`, его расположение не меняет native focus
|
|
166
|
+
scope. Controlled `open` является единственным запросом открытия/закрытия;
|
|
167
|
+
`showModal()`, `close()`, запись `open` и native `form method="dialog"` не являются
|
|
168
|
+
consumer API. Завершение формы использует обычный submit и явное controlled
|
|
169
|
+
намерение закрытия. Native `cancel` обрабатывается shared owner без потери
|
|
170
|
+
контроля над `open`. Композиция в стороннем native modal внутри opaque closed
|
|
171
|
+
shadow root требует отдельного host-owner контракта и не поддерживается этим API.
|
|
172
|
+
Обычные background sources внутри closed shadow root покрывает native Document
|
|
173
|
+
blocking. Контракт миграции custom leaf описан в [overlay-lifecycle.md](./overlay-lifecycle.md).
|
|
174
|
+
`SDrawer.placement` принимает `left | right | bottom` с default `right`.
|
|
175
|
+
Боковые размещения физические, не зависят от text direction и используют
|
|
176
|
+
общий size/scroll/focus owner; `left` зеркалирует сторону панели и её chrome.
|
|
177
|
+
В contained-режиме `extent` задаёт ширину для `left/right` и высоту для `bottom`.
|
|
178
|
+
`SOverlayHost` предоставляет default content и `#overlay` siblings.
|
|
179
|
+
`SDrawer.scope="contained"` требует этот host, оставляет внешний ввод доступным
|
|
180
|
+
и не объявляется глобально модальным. `extent` — конечный процент `(0,100]`
|
|
181
|
+
доступной области; без него `size=sm/md/lg` задаёт `50/70/90` процентов по оси
|
|
182
|
+
placement. `extent` запрещён для viewport-режима. `scrollBehavior="content"`
|
|
183
|
+
делегирует прокрутку дочернему viewport без второго scroll owner/полей.
|
|
184
|
+
Закрытие/retirement завершают дочерние overlay leases в общем stack; consumer
|
|
185
|
+
обрабатывает `update:open`, повторное открытие требует явного нового open-cycle.
|
|
186
|
+
Открытие через `SDropdownMenu` переносит exact current focus intent от
|
|
187
|
+
временного menuitem к dialog и сохраняет устойчивый menu trigger как цель
|
|
188
|
+
возврата, включая trigger вне contained host. Внешний focus отменяет pending
|
|
189
|
+
admission и stale return; contained Escape boundary остаётся локальной.
|
|
190
|
+
`SPopover` сохраняет native anchor и исходного focus owner trigger-запроса до
|
|
191
|
+
подтверждения controlled `open`, без перехвата последующего внешнего фокуса.
|
|
192
|
+
Программный `close()` отменяет ожидающий запрос через `update:open=false`.
|
|
193
|
+
Удаление или disabled текущего focused action не является outside-переходом:
|
|
194
|
+
панель остаётся открытой, принятое закрытие через Escape возвращает focus
|
|
195
|
+
доступному registered trigger.
|
|
196
|
+
Явный blur доступного элемента и внешний focus сохраняют outside-политику.
|
|
197
|
+
`SDrawer`, `SPopover`, `STooltip`, `SContextMenu` и
|
|
198
|
+
`SControlledToastViewport` сохраняют `opacity: 1` content при enter/leave:
|
|
199
|
+
transform motion не меняет прозрачность выбранной surface, backdrop анимируется отдельно.
|
|
200
|
+
Ширина `trigger` является минимальной шириной anchor, `content` — intrinsic,
|
|
201
|
+
`sm/md/lg` — viewport-bounded `20/28/36rem`. Chrome и focus owner используют
|
|
202
|
+
единые bounds; прозрачная поверхность задаёт всему dialog максимум `90vw`,
|
|
203
|
+
при `width="trigger"` минимальная ширина anchor имеет приоритет.
|
|
73
204
|
`SDropdownMenu` публикует controlled `open`, `defaultOpen`, размещение
|
|
74
205
|
`auto | bottom | top`, `closeOnSelect`, semantic group entries и доступные
|
|
75
|
-
описания пунктов.
|
|
206
|
+
описания пунктов. Dropdown, контекстные и вложенные меню используют доступную
|
|
207
|
+
область viewport и собственную прокрутку полной коллекции. Размещение задаёт
|
|
208
|
+
предпочтительную сторону с collision/flip; keyboard focus раскрывает строку
|
|
209
|
+
внутри menu surface без прокрутки документа. Внутренний scroll сохраняет
|
|
210
|
+
открытое меню и parent layer; высота учитывает viewport и содержимое без
|
|
211
|
+
consumer `max-height` или дочерних CSS-переопределений.
|
|
212
|
+
Home/End раскрывают строку после ручной прокрутки; при отсутствии места по обеим
|
|
213
|
+
inline-сторонам вложенное меню использует доступную верхнюю/нижнюю сторону общего
|
|
214
|
+
collision owner.
|
|
215
|
+
`SCollapsiblePanel` связывает compact/dense density с
|
|
76
216
|
32-пиксельной disclosure geometry через публичный API `SButton`.
|
|
217
|
+
`contentRole="region"` обозначает самостоятельный landmark и является значением
|
|
218
|
+
по умолчанию; `contentRole="group"` задаёт именованную локальную группу для
|
|
219
|
+
повторяемых или вложенных сведений. Обе роли связаны с видимым summary через
|
|
220
|
+
`aria-labelledby`; trigger сохраняет `aria-expanded` и `aria-controls`.
|
|
221
|
+
Raw `role` attrs не разрешены, неизвестный `contentRole` отклоняется без coercion.
|
|
222
|
+
`lazy` монтирует slot при первом принятом раскрытии и сохраняет его после
|
|
223
|
+
collapse/reopen в controlled и uncontrolled режимах, включая анимацию.
|
|
224
|
+
Controlled `open` эмитит `update:open` intent до prop acknowledgement;
|
|
225
|
+
uncontrolled режим изменяет собственное состояние без этого события.
|
|
226
|
+
Принятое сворачивание сразу исключает content из Tab/AX через inert и
|
|
227
|
+
aria-hidden, сохраняя mounted slot и завершающую анимацию. Owned focus
|
|
228
|
+
возвращается доступному trigger; внешний focus не перехватывается.
|
|
229
|
+
Отсутствие height transition завершает motion сразу; stale completion
|
|
230
|
+
не влияет на повторное раскрытие или изменённую высоту.
|
|
231
|
+
`SStatus` использует общую feedback tone-пару; `neutral` соответствует
|
|
232
|
+
`secondary`. Текстовый статус в passive content `SButton` использует foreground
|
|
233
|
+
интерактивной поверхности во всех доступных состояниях. `appearance="soft"`
|
|
234
|
+
владеет собственной фоновой/текстовой парой. `tone`, подпись, иконка и live
|
|
235
|
+
semantics сохраняются; `SCollapsiblePanel.summaryStatus` использует тот же путь
|
|
236
|
+
без consumer color overrides.
|
|
77
237
|
`shared/data-display/SScrollViewport.vue` владеет accessible scroll region,
|
|
78
238
|
разрешёнными осями, semantic block size, root-only keyboard navigation и
|
|
79
239
|
ResizeObserver lifecycle. `shared/data-display/scrollViewport` экспортирует
|
|
80
240
|
сериализуемое physical/semantic state и exposed API `focus`,
|
|
81
241
|
`scrollToBoundary`, `reveal` без доступа к внутреннему DOM.
|
|
242
|
+
`focusPolicy="always"` — default; `overflow` добавляет region и Tab stop только
|
|
243
|
+
при переполнении разрешённой оси. Ровно один из `accessibleLabel` и
|
|
244
|
+
`accessibleLabelledby` задаёт имя. `blockSize="content"` сохраняет естественную
|
|
245
|
+
высоту, `maxBlockSize="none|sm|md|lg"` задаёт semantic limit. Канонический table
|
|
246
|
+
frame композирует этот owner, сохраняя native table semantics и nested controls.
|
|
247
|
+
При исчезновении overflow focused root сохраняет `tabindex="-1"` до native blur
|
|
248
|
+
без дополнительной остановки Tab или программного переноса focus.
|
|
82
249
|
|
|
83
250
|
## English
|
|
84
251
|
|
|
@@ -89,7 +256,7 @@ Primary groups:
|
|
|
89
256
|
|
|
90
257
|
- `layout/*` — application shells, dock regions, stacks, and workbench layouts;
|
|
91
258
|
- `shared/controls/*` — buttons, fields, inputs, selects, menus, and selection controls;
|
|
92
|
-
- `shared/containers/*` — panels, modal, drawer, popover, and sidebars;
|
|
259
|
+
- `shared/containers/*` — panels, modal, drawer, overlay host, popover, and sidebars;
|
|
93
260
|
- `shared/data-display/*` — badges, tables, code, JSON, progress, status, and tooltips;
|
|
94
261
|
- `shared/navigation/*` — tabs, breadcrumbs, catalog navigation, and wizard steps;
|
|
95
262
|
- `shared/database/*`, `shared/graph/*`, `shared/persona/*` — complex domain surfaces;
|
|
@@ -107,12 +274,39 @@ Consumer type checkers do not compile internal SFCs or resolve their runtime
|
|
|
107
274
|
dependencies through a package-manager-specific layout. The build uses the
|
|
108
275
|
`target/lib: ES2020` baseline from `@vue/tsconfig/tsconfig.dom.json` and does not
|
|
109
276
|
require implicit polyfills.
|
|
277
|
+
Tailwind entrypoints use the Node ESM `dist/typography.js` artifact with
|
|
278
|
+
native `node:util`, the complete upstream prose contract, and `className`/
|
|
279
|
+
`target` options for `modern | legacy`, without browser Web Storage or DOM globals.
|
|
280
|
+
`icons` exports named tree-shakeable components, including `HardDrive`, `Usb`,
|
|
281
|
+
`Disc`, `CalendarDays`, `ArrowUpRight`, `Paperclip`, `GitFork`, `ZoomIn`, `ZoomOut`,
|
|
282
|
+
`RotateCw`, `Volume2`, `Radio`, `Pause`, `ChevronLeft`, and `Zap`. `Zap` represents
|
|
283
|
+
a lightning bolt for the fast-model role and retains its primary-only silhouette
|
|
284
|
+
in every color mode. `Pause` represents
|
|
285
|
+
a paused state; `ChevronLeft` represents leftward navigation. `Radio` represents network broadcast or a
|
|
286
|
+
background notification, not a radio input. `ZoomIn` and `ZoomOut` represent zoom actions,
|
|
287
|
+
`RotateCw` clockwise rotation, and `Volume2` a speaker with two sound waves.
|
|
288
|
+
They share the icon contract with
|
|
289
|
+
`classic | sputnig` sets, `auto | duotone | monochrome` color modes, and the
|
|
290
|
+
control owner's semantic sizing when passed through an icon slot.
|
|
110
291
|
Table types are imported from `shared/data-display/table`; chart types are
|
|
111
292
|
imported from `shared/data-display/chart`; diff types and its pure computation
|
|
112
293
|
function are imported from `shared/data-display/diff`. `SDiffViewer` accepts
|
|
113
294
|
exact-text snapshots, renders unified or split presentation, virtualizes lines,
|
|
114
295
|
and manages worker computation for large inputs. Source replacement and unmount
|
|
115
296
|
cancel obsolete work, and a completed stale result is never published.
|
|
297
|
+
`SProgressBar.shape="circular"` exposes 24/28/32 px measured progress through
|
|
298
|
+
the existing numerical/accessibility owner. Circular determinate progress
|
|
299
|
+
requires an explicit value in 0–100. `showValue` rounds only the displayed
|
|
300
|
+
percentage, retaining precise `aria-valuenow`; `valueText` provides a domain
|
|
301
|
+
description. Estimated accuracy requires `valueText` and a visible approximation
|
|
302
|
+
marker. Explicit unknown mode requires `valueText`, rejects `value`, and omits
|
|
303
|
+
the numerical value and animation. The passive circular root supports phrasing
|
|
304
|
+
composition in a button with decorative accessibility; the button owns the
|
|
305
|
+
action and accessible name. The public recipe uses `SButton.appearance="ghost"`,
|
|
306
|
+
`iconOnly`, `shape="circle"`, `size="lg"`, and default density for a 48×48 px
|
|
307
|
+
target. Default linear/determinate behavior is preserved;
|
|
308
|
+
its scoped default slot receives the exact value. Circular progress rejects a
|
|
309
|
+
supplied default slot and owns central numerical and uncertainty display.
|
|
116
310
|
`SChart` unifies
|
|
117
311
|
line/area/bar/pie/donut charts, responsive geometry, the semantic palette, and
|
|
118
312
|
an accessible data table. `SMetricCard` accepts a compact chart through
|
|
@@ -124,6 +318,23 @@ the editor runtime. `SChip.surface` owns action/link semantics, while
|
|
|
124
318
|
compositions keep primary activation and additional controls as siblings inside
|
|
125
319
|
one chrome; `actionsLayout`/`trailingLayout` control inline, stacked, and
|
|
126
320
|
container-responsive layout.
|
|
321
|
+
`SInteractiveSurface.tooltipTrigger` accepts the complete combined `trigger`
|
|
322
|
+
from the `STooltip` default slot and binds ARIA, pointer/focus events, and the
|
|
323
|
+
element ref to the primary activation owner for action, link `href`, and Vue
|
|
324
|
+
Router `to`. A link surface requires exactly one target and an accessible name;
|
|
325
|
+
`to` requires Vue Router installed in the application. A static surface rejects
|
|
326
|
+
the tooltip binding. Sibling `#actions` retain independent focus and activation.
|
|
327
|
+
The tooltip opens on pointer/focus and closes with Escape.
|
|
328
|
+
The passive tooltip panel supports geometric hover without focus or a Tab stop
|
|
329
|
+
and does not intercept pointer activation of underlying actions. Leaving
|
|
330
|
+
the target and panel closes it after `hideDelay`. Escape cancels a pending
|
|
331
|
+
`showDelay` without consuming another overlay's event. Blur, a hidden document,
|
|
332
|
+
disabled state, and target release terminate the activation lease and listeners.
|
|
333
|
+
Binding accepts a canonical focus owner in a retained hidden section.
|
|
334
|
+
Activation requires a connected, visible, available owner. Hiding its
|
|
335
|
+
ancestor cancels pending timers, immediately retires the visual portal from
|
|
336
|
+
interaction and removes the tooltip description. Revealing the section
|
|
337
|
+
retains the same owner and permits fresh pointer/focus activation.
|
|
127
338
|
`SUiKitLocaleProvider` selects `en | ru | zh-CN | zh-TW` for one Vue subtree,
|
|
128
339
|
while `composables/useUiKitLocale` exports the readonly context, the complete
|
|
129
340
|
locale list, and message/override/key types. The provider renders no DOM owner
|
|
@@ -144,20 +355,138 @@ and trust flags are not part of the API.
|
|
|
144
355
|
`sm/md/lg = 32/36/40 px` with `12/14/14 px` label typography. The matching
|
|
145
356
|
`SInputText.density="compact"` exposes the same field geometry without consumer
|
|
146
357
|
CSS.
|
|
358
|
+
The `SButton` foreground/background pair changes atomically, without color
|
|
359
|
+
interpolation, when disabled/loading actions become enabled or presentation
|
|
360
|
+
changes. Native activation, `href`, and Tab availability follow current props
|
|
361
|
+
without waiting for decorative shadow/transform transitions.
|
|
147
362
|
`SInputText.minLength`/`maxLength` and `STextarea.minLength`/`maxLength` pass strict non-negative safe
|
|
148
363
|
integers to the native textual input. `minLength <= maxLength` is validated
|
|
149
364
|
before rendering, and numeric/temporal families reject this contract.
|
|
365
|
+
`STextareaContentContext.hasMultipleVisualLines` is `false` for one native
|
|
366
|
+
visual line, `true` for multiple lines, and `null` when layout is unavailable
|
|
367
|
+
(SSR/hidden/zero width). The editing/resize owner measures soft wrapping and
|
|
368
|
+
hard newlines; an empty value has one line once layout is available. Conditional
|
|
369
|
+
helpers use `=== false`, `composing` and `disabled`, without private DOM
|
|
370
|
+
measurement. Min/max bounds include the complete surface independently of the
|
|
371
|
+
helper visibility policy.
|
|
372
|
+
`STextareaApi.selectAll(focusOwner?: boolean): void` selects
|
|
373
|
+
`[0, currentNativeValue.length]` forward through the shared selection owner.
|
|
374
|
+
The default `true` requests native focus; `false` leaves it unchanged.
|
|
375
|
+
Readonly and non-rendered controls support selection; disabled/detached focus
|
|
376
|
+
follows native eligibility. Source CRLF/Unicode bytes, model, and input/history
|
|
377
|
+
are unchanged; the current native value includes unacknowledged controlled input.
|
|
378
|
+
An unavailable/disposed owner or non-boolean policy throws an explicit error.
|
|
379
|
+
`SDockRegion.keepMounted?: boolean` defaults to `false`, preserving disposal
|
|
380
|
+
on hide. `true` retains the same slot owner, including initially hidden content;
|
|
381
|
+
`hidden`/`inert` exclude layout, Tab, pointer, and accessibility, while the
|
|
382
|
+
resize handle retires with typed cancellation of an active drag.
|
|
383
|
+
Showing does not steal external focus. Hidden `true → false` and unmount
|
|
384
|
+
dispose the content. Transport/imperative buffers remain consumer-owned;
|
|
385
|
+
terminal `open()` requires a visible, connected host with positive extent.
|
|
386
|
+
Nested UI-kit overlays, including Teleports, follow `visible`: hiding retires
|
|
387
|
+
registered/pending cycles, releases leases/body locks, and never restores focus
|
|
388
|
+
to a hidden trigger. Initially hidden content cannot open overlays; retired
|
|
389
|
+
controlled `open=true` receives one close intent and needs a fresh `false → true`
|
|
390
|
+
request. Nested docks compose admission with AND; independent sibling overlays
|
|
391
|
+
and arbitrary consumer-owned portals are unaffected.
|
|
150
392
|
`SModal.headingLevel` and `SDrawer.headingLevel` accept `1 | 2 | 3 | 4 | 5 | 6`
|
|
151
393
|
only, default to `2`, and preserve the visible-title relationship with the
|
|
152
|
-
dialog surface through `aria-labelledby`.
|
|
394
|
+
dialog surface through `aria-labelledby`. Local dialog chrome contains the
|
|
395
|
+
semantic heading without creating a page-level `banner` landmark.
|
|
153
396
|
`SModal.size="4xl"` provides a responsive `56rem` maximum; a failed child mount
|
|
154
397
|
releases body lock, layer registration, and owned teleport nodes.
|
|
398
|
+
Viewport `SModal`/`SDrawer` own one native `dialog` in the modal top layer, with
|
|
399
|
+
no `tabindex` on the semantic root. All background DOM namespaces leave
|
|
400
|
+
pointer/focus interaction and the accessibility tree. Descendant UI-kit portals
|
|
401
|
+
belong to the actual dialog outside transforms and scroll clipping; a nested
|
|
402
|
+
viewport dialog isolates its parent. Retirement releases native blocking
|
|
403
|
+
synchronously while preserving the shared focus-return and visual leave
|
|
404
|
+
lifecycles. A contained drawer limits an HTML inert lease to its host and does
|
|
405
|
+
not call `showModal()`.
|
|
406
|
+
The exported `useDialogOverlay` requires an actual connected `HTMLDialogElement`
|
|
407
|
+
through `setPanelElement` and its exact direct-child portal through
|
|
408
|
+
`setPortalElement` in viewport mode. Contained mode retains an HTMLElement
|
|
409
|
+
surface inside SOverlayHost. The composable owns native methods, not consumers.
|
|
410
|
+
The custom viewport leaf binds its visible frame through `setDismissalElement`
|
|
411
|
+
and applies `portalStyle` to its direct-child portal. Controlled `open` is the
|
|
412
|
+
only opening/closing request; direct native lifecycle calls, `open` writes and
|
|
413
|
+
`form method="dialog"` exits are not consumer APIs. Regular form submission
|
|
414
|
+
uses an explicit parent close intent. Nesting inside a foreign native modal in
|
|
415
|
+
an opaque closed shadow root requires a separate host-owner contract.
|
|
416
|
+
See [overlay-lifecycle.md](./overlay-lifecycle.md) for the custom-leaf migration.
|
|
417
|
+
`SDrawer.placement` accepts `left | right | bottom`, defaulting to `right`.
|
|
418
|
+
Side placements are physical, independent of text direction, and share the
|
|
419
|
+
size/scroll/focus owner; `left` mirrors the panel edge and its chrome.
|
|
420
|
+
Contained `extent` specifies width for `left/right` and height for `bottom`.
|
|
421
|
+
`SOverlayHost` provides default content and `#overlay` sibling regions.
|
|
422
|
+
`SDrawer.scope="contained"` requires that host, keeps external input available,
|
|
423
|
+
and is not globally modal. `extent` is a finite percentage `(0,100]` of the
|
|
424
|
+
available region; without it, `size=sm/md/lg` specifies `50/70/90` percent along
|
|
425
|
+
the placement axis. Viewport mode rejects `extent`. `scrollBehavior="content"`
|
|
426
|
+
delegates scrolling to a child viewport without a second scroll owner/padding.
|
|
427
|
+
Close/retirement retires descendant overlay leases in the shared stack; the
|
|
428
|
+
consumer handles `update:open` and an explicit new open-cycle controls reopening.
|
|
429
|
+
Opening through `SDropdownMenu` transfers the exact current focus intent
|
|
430
|
+
from a transient menu item to the dialog and retains its stable menu trigger
|
|
431
|
+
for restoration, including triggers outside a contained host. External focus
|
|
432
|
+
cancels pending admission and stale restoration; contained Escape remains local.
|
|
433
|
+
`SPopover` preserves the native anchor and original focus owner of a trigger
|
|
434
|
+
request through controlled `open` acknowledgement without taking subsequent
|
|
435
|
+
external focus. Programmatic `close()` cancels a pending request with
|
|
436
|
+
`update:open=false`.
|
|
437
|
+
Removing or disabling the currently focused action is not an outside move:
|
|
438
|
+
the panel stays open, and an accepted Escape close restores the available
|
|
439
|
+
registered trigger.
|
|
440
|
+
Explicit blur of an available element and external focus retain the outside policy.
|
|
441
|
+
`SDrawer`, `SPopover`, `STooltip`, `SContextMenu`, and
|
|
442
|
+
`SControlledToastViewport` keep content at `opacity: 1` during entry/exit:
|
|
443
|
+
transform motion preserves the selected surface translucency, and backdrop animation is independent.
|
|
444
|
+
The `trigger` width is the anchor minimum, `content` is intrinsic, and
|
|
445
|
+
`sm/md/lg` are viewport-bounded `20/28/36rem`. Chrome and focus owner share
|
|
446
|
+
the same bounds; a transparent surface sets the entire dialog's maximum to `90vw`.
|
|
447
|
+
With `width="trigger"`, the anchor minimum takes precedence.
|
|
155
448
|
`SDropdownMenu` exposes controlled `open`, `defaultOpen`,
|
|
156
449
|
`auto | bottom | top` placement, `closeOnSelect`, semantic group entries, and
|
|
157
|
-
accessible item descriptions.
|
|
450
|
+
accessible item descriptions. Dropdown, context, and nested menus use the
|
|
451
|
+
available viewport and own scrolling of the complete inventory. Placement
|
|
452
|
+
specifies a preferred side with collision/flip; keyboard focus reveals its row
|
|
453
|
+
inside the menu surface without scrolling the document. Internal scrolling
|
|
454
|
+
preserves the open menu and parent layer; height follows the viewport and
|
|
455
|
+
content without consumer `max-height` or child CSS overrides.
|
|
456
|
+
Home/End reveal the current row after manual scrolling; when neither inline
|
|
457
|
+
side fits a submenu, it uses the available top/bottom side of the shared
|
|
458
|
+
collision owner.
|
|
459
|
+
`SCollapsiblePanel` maps compact/dense density to
|
|
158
460
|
the 32px disclosure geometry through the public `SButton` API.
|
|
461
|
+
`contentRole="region"` marks an independently navigable landmark and is the
|
|
462
|
+
default; `contentRole="group"` provides a named local group for repeated or
|
|
463
|
+
nested details. Both roles are labelled by the visible summary through
|
|
464
|
+
`aria-labelledby`; the trigger retains `aria-expanded` and `aria-controls`.
|
|
465
|
+
Raw `role` attrs are not admitted; unknown `contentRole` values fail without
|
|
466
|
+
coercion. `lazy` mounts its slot on the first accepted opening and retains it
|
|
467
|
+
across collapse/reopen in controlled and uncontrolled modes, including animation.
|
|
468
|
+
Controlled `open` emits `update:open` intent before prop acknowledgement;
|
|
469
|
+
uncontrolled mode updates its owned state without that event.
|
|
470
|
+
Accepted collapse immediately excludes content from Tab/AX using inert
|
|
471
|
+
and aria-hidden, retaining the mounted slot and closing visual transition.
|
|
472
|
+
Owned focus returns to an available trigger; external focus is not taken.
|
|
473
|
+
An absent height transition settles motion immediately; stale completion
|
|
474
|
+
does not affect reopening or an updated content height.
|
|
475
|
+
`SStatus` uses the shared feedback tone pair; `neutral` maps to `secondary`.
|
|
476
|
+
A text status in `SButton` passive content uses the interactive surface's
|
|
477
|
+
foreground across its available states. `appearance="soft"` owns its
|
|
478
|
+
background/text pair. Tone, label, icon, and live semantics are preserved;
|
|
479
|
+
`SCollapsiblePanel.summaryStatus` uses the same path without consumer color
|
|
480
|
+
overrides.
|
|
159
481
|
`shared/data-display/SScrollViewport.vue` owns the accessible scroll region,
|
|
160
482
|
enabled axes, semantic block size, root-only keyboard navigation, and
|
|
161
483
|
ResizeObserver lifecycle. `shared/data-display/scrollViewport` exports
|
|
162
484
|
serializable physical and semantic state plus the `focus`, `scrollToBoundary`,
|
|
163
485
|
and `reveal` exposed API without access to internal DOM.
|
|
486
|
+
`focusPolicy="always"` is the default; `overflow` adds a region and Tab stop
|
|
487
|
+
only when an enabled axis overflows. Exactly one of `accessibleLabel` and
|
|
488
|
+
`accessibleLabelledby` supplies the name. `blockSize="content"` retains intrinsic
|
|
489
|
+
height, and `maxBlockSize="none|sm|md|lg"` supplies a semantic limit. The canonical
|
|
490
|
+
table frame composes this owner, retaining native table semantics and nested controls.
|
|
491
|
+
After overflow disappears, a focused root retains `tabindex="-1"` until native
|
|
492
|
+
blur, without an additional Tab stop or programmatic focus move.
|
package/docs/resize.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Изменение размеров панелей
|
|
2
|
+
|
|
3
|
+
`SResizeHandle` владеет native `button` с `role="separator"`, pointer capture,
|
|
4
|
+
клавиатурой, hitbox и interaction lease для cursor/selection. `SDockRegion`
|
|
5
|
+
композирует этот leaf и определяет семантический результат dock gesture.
|
|
6
|
+
Consumer хранит размер и его persistent preference; собственные pointer
|
|
7
|
+
listeners и расчёт pointer delta не требуются.
|
|
8
|
+
|
|
9
|
+
## Публичные типы
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import type {
|
|
13
|
+
SResizeHandleCancel,
|
|
14
|
+
SResizeHandleCancelReason,
|
|
15
|
+
SResizeHandleCompletion,
|
|
16
|
+
SResizeHandleHitbox,
|
|
17
|
+
SDockRegionCollapse,
|
|
18
|
+
} from '@pgcorp/ui-kit/layout/types'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Эти типы доступны также в корневом type export пакета. `SResizeHandle` сохраняет
|
|
22
|
+
type exports через путь своего компонента.
|
|
23
|
+
|
|
24
|
+
`hitbox` принимает `compact` (6 px), `standard` (12 px) или `spacious` (32 px).
|
|
25
|
+
По умолчанию inline separator использует `compact`, overlay — `spacious`.
|
|
26
|
+
`SDockRegion.hitbox` передаёт ту же семантическую ступень native владельцу.
|
|
27
|
+
|
|
28
|
+
## Pointer transaction
|
|
29
|
+
|
|
30
|
+
| Событие | Payload | Контракт |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| `resize-start` | `PointerEvent` | Начало pointer preview |
|
|
33
|
+
| `resize` | `number` | Preview, ограниченный текущим `min/max` |
|
|
34
|
+
| `resize-end` | `number`, `SResizeHandleCompletion` | Принятие конечной координаты `pointerup` |
|
|
35
|
+
| `resize-cancel` | `SResizeHandleCancel` | Отмена без `resize-end` |
|
|
36
|
+
|
|
37
|
+
`SResizeHandleCompletion` содержит `source: 'pointer'`, `startValue` и
|
|
38
|
+
`unclampedValue`. Логический intent вычисляется leaf-компонентом с axis,
|
|
39
|
+
`valueDirection` и `pointerScale` gesture. Ограничение применяется по актуальному
|
|
40
|
+
`min/max`; `pointerup` учитывается даже без предшествующего `pointermove`.
|
|
41
|
+
|
|
42
|
+
`SResizeHandleCancel` содержит `initialValue`, последний ограниченный
|
|
43
|
+
`latestValue` и точную `reason`: `pointercancel`, `lostpointercapture`,
|
|
44
|
+
`window-blur`, `disabled`, `superseded` или `unmount`. Все listeners, capture и
|
|
45
|
+
interaction lease освобождаются при завершении и отмене. Отмена соответствует
|
|
46
|
+
[Pointer Events: pointercancel и lostpointercapture](https://www.w3.org/TR/pointerevents3/).
|
|
47
|
+
|
|
48
|
+
Consumer применяет `resize` к preview. В `resize-end` он принимает размер и
|
|
49
|
+
сохраняет preference. `initialValue` — отображаемый размер на старте, а не
|
|
50
|
+
сохранённая preference: адаптивная рабочая область может ограничивать её своим
|
|
51
|
+
диапазоном. В `resize-cancel` consumer восстанавливает отображаемый snapshot в
|
|
52
|
+
актуальной host geometry; persistence preference восстанавливается из его
|
|
53
|
+
собственного transaction snapshot, не из `initialValue`. Отменённый preview
|
|
54
|
+
не сохраняется. На время pointer transaction persistent watcher должен быть
|
|
55
|
+
отделён от preview state.
|
|
56
|
+
|
|
57
|
+
## Клавиатурное завершение
|
|
58
|
+
|
|
59
|
+
Arrow/Home/End применяют одно дискретное изменение: `resize(value)`, затем
|
|
60
|
+
`resize-end(value)` без `SResizeHandleCompletion`. Отсутствие completion
|
|
61
|
+
обозначает клавиатурный источник; pointer completion всегда содержит
|
|
62
|
+
`source: 'pointer'`. Клавиатура не открывает pointer transaction и не выдаёт
|
|
63
|
+
`resize-start` или `resize-cancel`.
|
|
64
|
+
|
|
65
|
+
Значение ограничивается текущими `min/max`. На границе диапазона, для
|
|
66
|
+
ортогональной стрелки, при `disabled` или во время активного pointer gesture
|
|
67
|
+
события изменения и завершения не выдаются. Если обработчик `resize` удаляет
|
|
68
|
+
native owner, завершение после его disposal не выдаётся.
|
|
69
|
+
|
|
70
|
+
Consumer может хранить preview в `resize` и сохранять preference в
|
|
71
|
+
`resize-end` для обоих источников. Если составной owner уже атомарно сохраняет
|
|
72
|
+
клавиатурный `resize`, terminal notification не выполняет повторную запись:
|
|
73
|
+
обработчик явно разделяет источники по completion. Pointer commit требует
|
|
74
|
+
собственной живой transaction, а не разрешается при её отсутствии.
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
function finishSizeChange(value: number, completion?: SResizeHandleCompletion): void {
|
|
78
|
+
if (completion === undefined) {
|
|
79
|
+
commitKeyboardSize(value)
|
|
80
|
+
return
|
|
81
|
+
}
|
|
82
|
+
commitPointerSize(value, completion)
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```vue
|
|
87
|
+
<SDockRegion
|
|
88
|
+
placement="left"
|
|
89
|
+
:visible="visible"
|
|
90
|
+
:size="size"
|
|
91
|
+
:min-size="200"
|
|
92
|
+
:max-size="maxSize"
|
|
93
|
+
hitbox="standard"
|
|
94
|
+
@resize-start="beginSizeTransaction"
|
|
95
|
+
@resize="previewSize"
|
|
96
|
+
@resize-end="finishSizeChange"
|
|
97
|
+
@resize-cancel="cancelSizeTransaction"
|
|
98
|
+
>
|
|
99
|
+
<ProjectPanel />
|
|
100
|
+
</SDockRegion>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Размер, min/max, step и pointerScale должны быть конечными числами; размер
|
|
104
|
+
находится в min/max, `min <= max`, `step > 0` и `pointerScale > 0`. Consumer
|
|
105
|
+
передаёт согласованный диапазон при изменении рабочей области. Некорректный
|
|
106
|
+
диапазон отклоняется с `RangeError`; компонент не исправляет входные данные.
|
|
107
|
+
|
|
108
|
+
## Сворачивание dock
|
|
109
|
+
|
|
110
|
+
`SDockRegion.collapseThreshold` включает сворачивание только для committed
|
|
111
|
+
pointer release. Порог — конечное число `0 <= collapseThreshold < minSize`.
|
|
112
|
+
Preview остаётся ограниченным `minSize`; временно непригодная узкая панель не
|
|
113
|
+
рендерится.
|
|
114
|
+
|
|
115
|
+
Если конечный `unclampedValue` строго ниже порога, dock эмитит только
|
|
116
|
+
`collapse({ preferredSize: startValue })`, без конкурирующего `resize-end`.
|
|
117
|
+
В остальных случаях он передаёт `resize-end` и completion. Consumer закрывает
|
|
118
|
+
панель по `collapse` и сохраняет `preferredSize` для повторного открытия.
|
|
119
|
+
Pointer cancellation не вызывает `collapse`. Keyboard Home устанавливает
|
|
120
|
+
`minSize` и не сворачивает панель.
|
|
121
|
+
|
|
122
|
+
```vue
|
|
123
|
+
<SDockRegion
|
|
124
|
+
placement="left"
|
|
125
|
+
:visible="visible"
|
|
126
|
+
:size="size"
|
|
127
|
+
:min-size="200"
|
|
128
|
+
:max-size="maxSize"
|
|
129
|
+
:collapse-threshold="80"
|
|
130
|
+
hitbox="standard"
|
|
131
|
+
@resize-start="beginSizeTransaction"
|
|
132
|
+
@resize="previewSize"
|
|
133
|
+
@resize-end="finishSizeChange"
|
|
134
|
+
@resize-cancel="cancelSizeTransaction"
|
|
135
|
+
@collapse="collapseSizeTransaction"
|
|
136
|
+
>
|
|
137
|
+
<ProjectPanel />
|
|
138
|
+
</SDockRegion>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Без `collapseThreshold` dock не сворачивается при перетаскивании. Для правой
|
|
142
|
+
панели можно оставить `minSize=240`, динамический `maxSize` и отключённый порог.
|
|
143
|
+
|
|
144
|
+
## Составные владельцы
|
|
145
|
+
|
|
146
|
+
`SSidebarGroup` хранит pointer geometry preview локально. `update-sections`
|
|
147
|
+
передаёт принятую controlled preference после commit, а не на каждом move.
|
|
148
|
+
Отмена восстанавливает snapshot всей участвующей группы без persistence
|
|
149
|
+
события. Удаление секции освобождает её активную transaction. Клавиатура
|
|
150
|
+
передаёт дискретное изменение через `update-sections`.
|
|
151
|
+
|
|
152
|
+
`SWorkbenchPanelShell` восстанавливает secondary size через тот же cancel
|
|
153
|
+
payload; его диапазон принадлежит текущей рабочей области. Consumers используют
|
|
154
|
+
эти owners, а не создают собственный drag engine.
|
|
155
|
+
|
|
156
|
+
Storybook: `SResizeHandle/KeyboardCommitPersistence`,
|
|
157
|
+
`SResizeHandle/PointerTouchAndConcurrentLifecycle` и
|
|
158
|
+
`SDockRegion/CompanionDocks`, `CompanionDocksDark`, `CompanionDocksNarrow`.
|