@done-coding/admin-core 0.18.0 → 0.19.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 +77 -1
- package/es/_virtual/_plugin-vue_export-helper.mjs +7 -6
- package/es/bridge/config-hook.mjs +49 -37
- package/es/bridge/index.mjs +152 -109
- package/es/bridge/layout.mjs +45 -31
- package/es/bridge/plugin.mjs +22 -12
- package/es/bridge/route.mjs +59 -50
- package/es/bridge/state.mjs +54 -39
- package/es/bridge/storage.mjs +18 -8
- package/es/bridge/theme/index.mjs +200 -97
- package/es/bridge/theme/persist.mjs +11 -7
- package/es/bridge/theme/system-dark.mjs +13 -6
- package/es/components/app-layout/AppAside.vue.mjs +4 -4
- package/es/components/app-layout/AppAside.vue2.mjs +37 -30
- package/es/components/app-layout/AppBody.vue.mjs +4 -4
- package/es/components/app-layout/AppBody.vue2.mjs +97 -60
- package/es/components/app-layout/AppBreadcrumb.vue.mjs +4 -4
- package/es/components/app-layout/AppBreadcrumb.vue2.mjs +59 -38
- package/es/components/app-layout/AppCollapseToggle.vue.mjs +4 -4
- package/es/components/app-layout/AppCollapseToggle.vue2.mjs +51 -42
- package/es/components/app-layout/AppFooter.vue.mjs +4 -4
- package/es/components/app-layout/AppFooter.vue2.mjs +15 -12
- package/es/components/app-layout/AppHeader.vue.mjs +4 -4
- package/es/components/app-layout/AppHeader.vue2.mjs +81 -58
- package/es/components/app-layout/AppLayout.vue.mjs +4 -4
- package/es/components/app-layout/AppLayout.vue2.mjs +148 -112
- package/es/components/app-layout/AppPage.vue.mjs +4 -4
- package/es/components/app-layout/AppPage.vue2.mjs +254 -197
- package/es/components/app-layout/AppShell.vue.mjs +44 -42
- package/es/components/app-layout/AppShell.vue2.mjs +2 -2
- package/es/components/app-layout/AppSidebar.vue.mjs +4 -4
- package/es/components/app-layout/AppSidebar.vue2.mjs +76 -59
- package/es/components/app-layout/AppTheme.vue.mjs +4 -4
- package/es/components/app-layout/AppTheme.vue2.mjs +69 -57
- package/es/components/app-layout/app-page-geometry.mjs +44 -42
- package/es/components/app-layout/keep-alive.mjs +27 -19
- package/es/components/app-layout/viewport.mjs +4 -3
- package/es/components/data-view/DataListView.vue.mjs +4 -4
- package/es/components/data-view/DataListView.vue2.mjs +133 -93
- package/es/components/data-view/DataListViewItem.vue.mjs +4 -4
- package/es/components/data-view/DataListViewItem.vue2.mjs +11 -9
- package/es/components/data-view/utils.mjs +36 -34
- package/es/components/display/ActionBtn.vue.mjs +94 -71
- package/es/components/display/ActionBtn.vue2.mjs +2 -2
- package/es/components/display/ActionBtnGroup.vue.mjs +54 -48
- package/es/components/display/ActionBtnGroup.vue2.mjs +2 -2
- package/es/components/display/ActionConfirm.vue.mjs +4 -4
- package/es/components/display/ActionConfirm.vue2.mjs +116 -92
- package/es/components/display/BooleanTag.vue.mjs +24 -18
- package/es/components/display/BooleanTag.vue2.mjs +2 -2
- package/es/components/display/HeightProvider.vue.mjs +37 -27
- package/es/components/display/HeightProvider.vue2.mjs +2 -2
- package/es/components/display/TabsHeader.vue.mjs +4 -4
- package/es/components/display/TabsHeader.vue2.mjs +86 -57
- package/es/components/display/TabsMain.vue.mjs +156 -125
- package/es/components/display/TabsMain.vue2.mjs +2 -2
- package/es/components/display/TabsNaturalFlow.vue.mjs +15 -11
- package/es/components/display/TabsNaturalFlow.vue2.mjs +2 -2
- package/es/components/display/TabsRefineFlow.vue.mjs +55 -42
- package/es/components/display/TabsRefineFlow.vue2.mjs +2 -2
- package/es/components/display/TabsTile.vue.mjs +4 -4
- package/es/components/display/TabsTile.vue2.mjs +204 -146
- package/es/components/display/WatchSize.vue.mjs +50 -30
- package/es/components/display/WatchSize.vue2.mjs +2 -2
- package/es/components/display/use-tabs-query-sync.mjs +21 -17
- package/es/components/form/FormItem.vue.mjs +4 -4
- package/es/components/form/FormItem.vue2.mjs +183 -121
- package/es/components/form/FormItemNestForm.vue.mjs +4 -4
- package/es/components/form/FormItemNestForm.vue2.mjs +38 -34
- package/es/components/form/FormItemNestFormList.vue.mjs +4 -4
- package/es/components/form/FormItemNestFormList.vue2.mjs +135 -106
- package/es/components/form/FormMain.vue.mjs +4 -4
- package/es/components/form/FormMain.vue2.mjs +226 -139
- package/es/components/form/FormRadioGroup.vue.mjs +67 -52
- package/es/components/form/FormRadioGroup.vue2.mjs +2 -2
- package/es/components/form/FormSearch.vue.mjs +4 -4
- package/es/components/form/FormSearch.vue2.mjs +194 -156
- package/es/components/form/FormSelect.vue.mjs +69 -42
- package/es/components/form/FormSelect.vue2.mjs +2 -2
- package/es/components/form/FormSubmitBtn.vue.mjs +30 -25
- package/es/components/form/FormSubmitBtn.vue2.mjs +2 -2
- package/es/components/form/FormSubmitPanel.vue.mjs +4 -4
- package/es/components/form/FormSubmitPanel.vue2.mjs +129 -96
- package/es/components/form/FormTree.vue.mjs +19 -16
- package/es/components/form/FormTree.vue2.mjs +2 -2
- package/es/components/form/FormVerifyCode.vue.mjs +58 -41
- package/es/components/form/FormVerifyCode.vue2.mjs +2 -2
- package/es/components/form/FormVerifyImage.vue.mjs +4 -4
- package/es/components/form/FormVerifyImage.vue2.mjs +62 -40
- package/es/components/form/form-search-utils.mjs +83 -52
- package/es/components/form/nest-form-item-list.mjs +63 -55
- package/es/components/form/nest-form-item.mjs +30 -30
- package/es/components/form/nest-registry.mjs +4 -4
- package/es/components/form/use-form-submit.mjs +18 -15
- package/es/components/form/use-layout-by-container.mjs +23 -15
- package/es/components/form/use-nest-form-list.mjs +19 -16
- package/es/components/form/use-nest-form.mjs +37 -28
- package/es/components/form/use-nest-layout-scale.mjs +11 -10
- package/es/components/form/utils.mjs +233 -145
- package/es/components/list-page/ListPage.vue.mjs +4 -4
- package/es/components/list-page/ListPage.vue2.mjs +313 -207
- package/es/components/list-page/use-sticky.mjs +45 -33
- package/es/components/menu/MenuItemSub.vue.mjs +47 -43
- package/es/components/menu/MenuItemSub.vue2.mjs +2 -2
- package/es/components/menu/MenuTree.vue.mjs +84 -61
- package/es/components/menu/MenuTree.vue2.mjs +2 -2
- package/es/components/misc/AutoRefresh.vue.mjs +4 -4
- package/es/components/misc/AutoRefresh.vue2.mjs +78 -53
- package/es/components/misc/AutoRefreshGroup.vue.mjs +4 -4
- package/es/components/misc/AutoRefreshGroup.vue2.mjs +54 -51
- package/es/components/misc/SelectModule.vue.mjs +54 -45
- package/es/components/misc/SelectModule.vue2.mjs +2 -2
- package/es/components/misc/TriggerAutoImport.vue.mjs +7 -5
- package/es/components/misc/TriggerAutoImport.vue2.mjs +2 -2
- package/es/components/modal/ModalConfirm.vue.mjs +4 -4
- package/es/components/modal/ModalConfirm.vue2.mjs +160 -125
- package/es/components/modal/ModalDetail.vue.mjs +50 -39
- package/es/components/modal/ModalDetail.vue2.mjs +2 -2
- package/es/components/modal/ModalForm.vue.mjs +63 -52
- package/es/components/modal/ModalForm.vue2.mjs +2 -2
- package/es/components/modal/ModalPorter.vue.mjs +51 -36
- package/es/components/modal/ModalPorter.vue2.mjs +2 -2
- package/es/components/modal/ModalShelf.vue.mjs +38 -28
- package/es/components/modal/ModalShelf.vue2.mjs +2 -2
- package/es/components/modal/modal-shelf-core.mjs +52 -36
- package/es/components/modal/modal-shelf-hierarchy.mjs +11 -9
- package/es/components/panel/PanelEditSwitch.vue.mjs +4 -4
- package/es/components/panel/PanelEditSwitch.vue2.mjs +88 -66
- package/es/components/panel/PanelItem.vue.mjs +4 -4
- package/es/components/panel/PanelItem.vue2.mjs +103 -77
- package/es/components/panel/PanelItemNestForm.vue.mjs +4 -4
- package/es/components/panel/PanelItemNestForm.vue2.mjs +61 -52
- package/es/components/panel/PanelItemNestPanel.vue.mjs +22 -20
- package/es/components/panel/PanelItemNestPanel.vue2.mjs +2 -2
- package/es/components/panel/PanelMain.vue.mjs +4 -4
- package/es/components/panel/PanelMain.vue2.mjs +92 -74
- package/es/components/panel/nest-panel-form.mjs +44 -38
- package/es/components/panel/nest-panel-item.mjs +18 -17
- package/es/components/slot-layout/SlotLayoutFlowAside.vue.mjs +4 -4
- package/es/components/slot-layout/SlotLayoutFlowAside.vue2.mjs +55 -42
- package/es/components/slot-layout/SlotLayoutTemplate.vue.mjs +11 -9
- package/es/components/slot-layout/SlotLayoutTemplate.vue2.mjs +2 -2
- package/es/components/table/TableMain.vue.mjs +4 -4
- package/es/components/table/TableMain.vue2.mjs +378 -275
- package/es/components/table/TableSkeleton.vue.mjs +4 -4
- package/es/components/table/TableSkeleton.vue2.mjs +95 -74
- package/es/components/table/TableToolbar.vue.mjs +4 -4
- package/es/components/table/TableToolbar.vue2.mjs +170 -154
- package/es/components/table/ToolbarButtons.vue.mjs +12 -10
- package/es/components/table/ToolbarButtons.vue2.mjs +2 -2
- package/es/components/table/constants.mjs +4 -3
- package/es/components/table/use-fill-height.mjs +12 -10
- package/es/components/table/use-table-skeleton.mjs +19 -15
- package/es/config/list-model.mjs +2 -2
- package/es/config/route.mjs +4 -3
- package/es/helpers/form.mjs +35 -25
- package/es/helpers/list-helper.mjs +59 -44
- package/es/hooks/activated.mjs +49 -33
- package/es/hooks/feel-size.mjs +39 -23
- package/es/hooks/menus-dispatch.mjs +68 -35
- package/es/hooks/timeout.mjs +29 -14
- package/es/hooks/use-breakpoint.mjs +35 -23
- package/es/hooks/use-channel-viewport-height.mjs +30 -20
- package/es/hooks/use-custom-breakpoint.mjs +48 -31
- package/es/hooks/use-observe-size.mjs +37 -20
- package/es/hooks/use-theme-apply.mjs +175 -124
- package/es/hooks/use-viewport-apply.mjs +39 -27
- package/es/index.mjs +239 -239
- package/es/inject/key.mjs +52 -41
- package/es/injectInfo.json.mjs +2 -2
- package/es/router/group-redirect.mjs +22 -16
- package/es/router/guard/index.mjs +26 -21
- package/es/router/guard/login.mjs +4 -2
- package/es/router/guard/permission.mjs +4 -2
- package/es/store/app.mjs +163 -123
- package/es/store/router-permission.mjs +75 -46
- package/es/store/user.mjs +100 -71
- package/es/style.css +769 -1
- package/es/utils/dom.mjs +20 -16
- package/es/utils/export.mjs +34 -18
- package/es/utils/id.mjs +5 -3
- package/es/utils/router.mjs +21 -14
- package/es/utils/theme-scale.mjs +50 -35
- package/es/utils/time.mjs +20 -14
- package/package.json +4 -3
- package/src/bridge/README.md +5 -0
- package/src/bridge/docs/README.md +72 -0
- package/src/components/README.md +84 -0
- package/src/components/app-layout/README.md +46 -0
- package/src/components/app-layout/docs/README-AppAside.md +69 -0
- package/src/components/app-layout/docs/README-AppBody.md +81 -0
- package/src/components/app-layout/docs/README-AppBreadcrumb.md +71 -0
- package/src/components/app-layout/docs/README-AppFooter.md +41 -0
- package/src/components/app-layout/docs/README-AppHeader.md +73 -0
- package/src/components/app-layout/docs/README-AppLayout.md +83 -0
- package/src/components/app-layout/docs/README-AppPage.md +80 -0
- package/src/components/app-layout/docs/README-AppSidebar.md +70 -0
- package/src/components/app-layout/docs/README-AppTheme.md +66 -0
- package/src/components/data-view/README.md +19 -0
- package/src/components/data-view/docs/README-DataListView.md +114 -0
- package/src/components/display/README.md +23 -0
- package/src/components/display/docs/README-ActionBtn.md +84 -0
- package/src/components/display/docs/README-ActionBtnGroup.md +96 -0
- package/src/components/display/docs/README-ActionConfirm.md +77 -0
- package/src/components/display/docs/README-BooleanTag.md +76 -0
- package/src/components/display/docs/README-HeightProvider.md +74 -0
- package/src/components/display/docs/README-TabsMain.md +99 -0
- package/src/components/display/docs/README-WatchSize.md +70 -0
- package/src/components/form/README.md +24 -0
- package/src/components/form/docs/README-FormItemNestForm.md +86 -0
- package/src/components/form/docs/README-FormItemNestFormList.md +93 -0
- package/src/components/form/docs/README-FormMain.md +101 -0
- package/src/components/form/docs/README-FormSearch.md +89 -0
- package/src/components/form/docs/README-FormSubmitBtn.md +72 -0
- package/src/components/form/docs/README-FormSubmitPanel.md +97 -0
- package/src/components/list-page/README.md +16 -0
- package/src/components/list-page/docs/README-ListPage.md +136 -0
- package/src/components/menu/README.md +19 -0
- package/src/components/menu/docs/README-MenuItemSub.md +53 -0
- package/src/components/menu/docs/README-MenuTree.md +76 -0
- package/src/components/misc/README.md +21 -0
- package/src/components/misc/docs/README-AutoRefresh.md +74 -0
- package/src/components/misc/docs/README-AutoRefreshGroup.md +74 -0
- package/src/components/misc/docs/README-SelectModule.md +72 -0
- package/src/components/modal/README.md +21 -0
- package/src/components/modal/docs/README-ModalConfirm.md +105 -0
- package/src/components/modal/docs/README-ModalDetail.md +103 -0
- package/src/components/modal/docs/README-ModalForm.md +97 -0
- package/src/components/modal/docs/README-ModalPorter.md +92 -0
- package/src/components/modal/docs/README-ModalShelf.md +115 -0
- package/src/components/panel/README.md +19 -0
- package/src/components/panel/docs/README-PanelMain.md +149 -0
- package/src/components/slot-layout/README.md +17 -0
- package/src/components/slot-layout/docs/README-SlotLayoutFlowAside.md +83 -0
- package/src/components/slot-layout/docs/README-SlotLayoutTemplate.md +73 -0
- package/src/components/table/README.md +17 -0
- package/src/components/table/docs/README-TableMain.md +140 -0
- package/src/hooks/README.md +5 -0
- package/src/hooks/docs/README.md +49 -0
- package/types/bridge/config-hook.d.ts +68 -0
- package/types/bridge/index.d.ts +411 -0
- package/types/bridge/layout.d.ts +40 -0
- package/types/bridge/plugin.d.ts +18 -0
- package/types/bridge/route.d.ts +20 -1
- package/types/bridge/state.d.ts +14 -0
- package/types/bridge/storage.d.ts +9 -0
- package/types/bridge/theme/index.d.ts +7 -0
- package/types/bridge/theme/persist.d.ts +12 -0
- package/types/bridge/theme/system-dark.d.ts +12 -0
- package/types/bridge/theme/types.d.ts +238 -0
- package/types/components/app-layout/AppAside.vue.d.ts +1 -0
- package/types/components/app-layout/AppCollapseToggle.vue.d.ts +3 -0
- package/types/components/app-layout/AppHeader.vue.d.ts +3 -0
- package/types/components/app-layout/AppLayout.vue.d.ts +12 -0
- package/types/components/app-layout/AppPage.vue.d.ts +17 -0
- package/types/components/app-layout/AppSidebar.vue.d.ts +2 -0
- package/types/components/app-layout/app-page-geometry.d.ts +48 -0
- package/types/components/app-layout/keep-alive.d.ts +17 -0
- package/types/components/app-layout/types.d.ts +125 -0
- package/types/components/app-layout/viewport.d.ts +28 -0
- package/types/components/data-view/DataListViewItem.vue.d.ts +8 -0
- package/types/components/data-view/index.d.ts +4 -0
- package/types/components/data-view/types.d.ts +42 -0
- package/types/components/data-view/utils.d.ts +3 -0
- package/types/components/display/TabsHeader.vue.d.ts +2 -0
- package/types/components/display/TabsMain.vue.d.ts +2 -0
- package/types/components/display/TabsRefineFlow.vue.d.ts +1 -0
- package/types/components/display/TabsTile.vue.d.ts +247 -12
- package/types/components/display/WatchSize.vue.d.ts +9 -0
- package/types/components/display/index.d.ts +37 -1
- package/types/components/display/types.d.ts +163 -0
- package/types/components/display/use-tabs-query-sync.d.ts +29 -0
- package/types/components/form/FormItemNestForm.vue.d.ts +5 -0
- package/types/components/form/FormItemNestFormList.vue.d.ts +17 -0
- package/types/components/form/FormVerifyCode.vue.d.ts +9 -0
- package/types/components/form/FormVerifyImage.vue.d.ts +1 -0
- package/types/components/form/form-search-utils.d.ts +34 -0
- package/types/components/form/nest-form-item-list.d.ts +28 -0
- package/types/components/form/nest-form-item.d.ts +21 -0
- package/types/components/form/nest-registry.d.ts +14 -0
- package/types/components/form/types.d.ts +208 -8
- package/types/components/form/use-form-submit.d.ts +13 -0
- package/types/components/form/use-layout-by-container.d.ts +23 -0
- package/types/components/form/use-nest-form-list.d.ts +13 -0
- package/types/components/form/use-nest-form.d.ts +15 -0
- package/types/components/form/use-nest-layout-scale.d.ts +12 -0
- package/types/components/form/utils.d.ts +56 -1
- package/types/components/list-page/ListPage.vue.d.ts +6 -0
- package/types/components/list-page/types.d.ts +50 -2
- package/types/components/list-page/use-sticky.d.ts +23 -0
- package/types/components/misc/index.d.ts +6 -1
- package/types/components/misc/types.d.ts +7 -0
- package/types/components/modal/ModalConfirm.vue.d.ts +29 -0
- package/types/components/modal/index.d.ts +7 -1
- package/types/components/modal/modal-shelf-core.d.ts +3 -0
- package/types/components/modal/modal-shelf-hierarchy.d.ts +4 -0
- package/types/components/modal/modal-shelf-types.d.ts +34 -0
- package/types/components/modal/types.d.ts +63 -2
- package/types/components/panel/PanelItemNestForm.vue.d.ts +6 -0
- package/types/components/panel/PanelItemNestPanel.vue.d.ts +5 -0
- package/types/components/panel/nest-panel-form.d.ts +21 -0
- package/types/components/panel/nest-panel-item.d.ts +14 -0
- package/types/components/panel/types.d.ts +52 -1
- package/types/components/slot-layout/SlotLayoutTemplate.vue.d.ts +21 -0
- package/types/components/slot-layout/types.d.ts +4 -0
- package/types/components/table/constants.d.ts +8 -0
- package/types/components/table/types.d.ts +140 -9
- package/types/components/table/use-fill-height.d.ts +14 -0
- package/types/components/table/use-table-skeleton.d.ts +16 -0
- package/types/config/list-model.d.ts +29 -0
- package/types/config/route.d.ts +2 -0
- package/types/helpers/form.d.ts +5 -0
- package/types/helpers/list-helper.d.ts +26 -0
- package/types/helpers/types.d.ts +11 -0
- package/types/hooks/activated.d.ts +23 -0
- package/types/hooks/feel-size.d.ts +2 -0
- package/types/hooks/menus-dispatch.d.ts +4 -0
- package/types/hooks/timeout.d.ts +4 -0
- package/types/hooks/use-channel-viewport-height.d.ts +8 -0
- package/types/hooks/use-custom-breakpoint.d.ts +19 -0
- package/types/hooks/use-observe-size.d.ts +29 -0
- package/types/hooks/use-theme-apply.d.ts +23 -0
- package/types/hooks/use-viewport-apply.d.ts +12 -0
- package/types/inject/key.d.ts +163 -0
- package/types/injectInfo.json.d.ts +1 -1
- package/types/router/group-redirect.d.ts +9 -0
- package/types/router/guard/index.d.ts +13 -0
- package/types/router/guard/login.d.ts +1 -0
- package/types/router/guard/permission.d.ts +1 -0
- package/types/router/guard/types.d.ts +3 -0
- package/types/store/app.d.ts +27 -0
- package/types/store/router-permission.d.ts +53 -0
- package/types/store/user.d.ts +24 -0
- package/types/types/dot-path.d.ts +8 -0
- package/types/types/route.d.ts +45 -0
- package/types/types/utility-types.d.ts +7 -0
- package/types/utils/dom.d.ts +22 -0
- package/types/utils/export.d.ts +16 -1
- package/types/utils/id.d.ts +1 -0
- package/types/utils/router.d.ts +2 -0
- package/types/utils/theme-scale.d.ts +31 -0
- package/types/utils/time.d.ts +1 -0
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
import { RouteLocationNormalizedLoaded, Router } from 'vue-router';
|
|
3
|
+
/**
|
|
4
|
+
* TabsMain 激活 tab ↔ 路由 query 同步的工具(仅 TabsMain 消费)。
|
|
5
|
+
*
|
|
6
|
+
* 设计取向(甲方 2026-07-02 校准,避免过度设计):
|
|
7
|
+
* - **读走激活生命周期**:TabsMain 用 `useActivated` 在每次激活(首次 mounted + keep-alive 缓存页
|
|
8
|
+
* 返回 activated)从 `route.query` 读一次作激活 tab,值合不合法交 TabsMain 既有 normalize watch
|
|
9
|
+
* 校准。用 useActivated 而非 onMounted → 覆盖「缓存页返回按新 query 重同步」(onMounted 不重跑会漏)。
|
|
10
|
+
* - **queryKey 可响应式**:读走激活回调 / 写走 getter,每次都读新鲜 `props.queryKey`,无需快照。
|
|
11
|
+
* - **持续同步只有一个方向:model → query**(`watchTabToQuery`)。反向由激活回调承担(激活时读 query),
|
|
12
|
+
* 非激活期外部改 query 不实时反切。
|
|
13
|
+
* - **初始化期不写 query**(`ready()` 闸):init 期 seed 与 normalize 归一会产生 transient model 变更,
|
|
14
|
+
* 若逐个写 query 会触发多次 `router.replace` 竞速(真机曾见最终 URL 落在归一 transient)。故 seed 前
|
|
15
|
+
* 不写,seed 后开闸。写 watch 用 `flush:"post"` 读 settle 后的真实激活值(避 defineModel setter 只
|
|
16
|
+
* emit、getter 同步返回旧 prop 的 masked 读)。
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* 从 route.query 读取激活 tab 值(query 值可能是 string|null|数组,取首个字符串;无则 undefined)。
|
|
20
|
+
* 由 TabsMain 在每次激活(useActivated)时调用;queryKey 可响应式(每次读新鲜值)。
|
|
21
|
+
*/
|
|
3
22
|
export declare function getTabQuery(route: RouteLocationNormalizedLoaded | undefined, queryKey: string | undefined): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* 把激活值写回路由 query(单次)。`router.replace`(不压历史栈)、`{ ...route.query, [queryKey]:
|
|
25
|
+
* activeKey }` 只增删自己那个 key、保留其它 query;值与当前相同则跳过(防冗余导航)。
|
|
26
|
+
* 无 router / queryKey / activeKey → no-op。
|
|
27
|
+
*/
|
|
4
28
|
export declare function writeTabQuery(params: {
|
|
5
29
|
activeKey: string | undefined;
|
|
6
30
|
route: RouteLocationNormalizedLoaded | undefined;
|
|
7
31
|
router: Router | undefined;
|
|
8
32
|
queryKey: string | undefined;
|
|
9
33
|
}): void;
|
|
34
|
+
/**
|
|
35
|
+
* 持续同步:激活 tab(model)变更 → 写回 query。`ready()` 返回 false 时跳过(初始化期不写,
|
|
36
|
+
* 见上文竞速说明)。`queryKey` 取 getter,每次写读新鲜值(响应式)。`flush:"post"` 让回调在组件
|
|
37
|
+
* re-render、prop settle 后跑,读到真实激活值而非 defineModel masked 旧 prop。无 router → no-op。
|
|
38
|
+
*/
|
|
10
39
|
export declare function watchTabToQuery(params: {
|
|
11
40
|
model: Ref<string | undefined>;
|
|
12
41
|
route: RouteLocationNormalizedLoaded | undefined;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { FormItemConfigList } from './types';
|
|
2
2
|
import { ColProps } from 'element-plus';
|
|
3
3
|
type __VLS_Props = {
|
|
4
|
+
/** 所属父 item key(注册到父 FormMain exposeMap 的索引) */
|
|
4
5
|
nestKey: string;
|
|
6
|
+
/** 子表单配置列表 */
|
|
5
7
|
list: FormItemConfigList;
|
|
6
8
|
layout?: Partial<ColProps>;
|
|
7
9
|
rowGutter?: number;
|
|
10
|
+
/** 联结组件外环阴影颜色;缺省走 CSS 变量主题自适配(亮/暗),仅显式传时内联覆盖 */
|
|
8
11
|
shadowColor?: string;
|
|
12
|
+
/** 父 item 代表 span(P3 rebase 算因子用;helper 经 resolveLayoutSpan(layout) 传入) */
|
|
9
13
|
parentSpan?: number;
|
|
14
|
+
/** 是否叠本层嵌套布局 rebase(缺省 true;false = 逆向逃生口,layout 原样直透) */
|
|
10
15
|
rebase?: boolean;
|
|
11
16
|
};
|
|
12
17
|
type __VLS_PublicProps = {
|
|
@@ -8,29 +8,46 @@ declare const _default: <T extends Record<string, any>>(__VLS_props: NonNullable
|
|
|
8
8
|
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:modelValue"> & ({
|
|
9
9
|
modelValue?: T[];
|
|
10
10
|
} & {
|
|
11
|
+
/** 所属父 item key(注册到父 FormMain exposeMap 的索引) */
|
|
11
12
|
nestKey: string;
|
|
13
|
+
/** 每行子表单配置列表 */
|
|
12
14
|
list: FormItemConfigList;
|
|
15
|
+
/** 行稳定标识字段(指向 T 内稳定 id);缺省走内部自增 rowId */
|
|
13
16
|
rowKey?: string;
|
|
17
|
+
/** 新增行工厂;缺省 generateFormData(list) 产子默认对象 */
|
|
14
18
|
itemFactory?: () => T;
|
|
19
|
+
/** 最少行数(删到 min 禁删;硬约束走父 item rules 长度校验) */
|
|
15
20
|
min?: number;
|
|
21
|
+
/** 最多行数(达上限禁新增;硬约束走父 item rules 长度校验) */
|
|
16
22
|
max?: number;
|
|
17
23
|
layout?: Partial<ColProps>;
|
|
18
24
|
rowGutter?: number;
|
|
19
25
|
addText?: string;
|
|
20
26
|
removeText?: string;
|
|
27
|
+
/** 顶部自定义渲染(render-fn prop,替代 template slot;label 由父 FormItem 渲染) */
|
|
21
28
|
headerRender?: (scope: {
|
|
22
29
|
count: number;
|
|
23
30
|
max: number;
|
|
24
31
|
}) => VNodeChild;
|
|
32
|
+
/** 底部自定义渲染;缺省 = 内置「新增」按钮 */
|
|
25
33
|
footerRender?: (scope: {
|
|
26
34
|
count: number;
|
|
27
35
|
max: number;
|
|
28
36
|
canAdd: boolean;
|
|
29
37
|
add: () => void;
|
|
30
38
|
}) => VNodeChild;
|
|
39
|
+
/** 联结组件外环 + 每行分割阴影颜色 */
|
|
31
40
|
shadowColor?: string;
|
|
41
|
+
/** 父 item 代表 span(P3 rebase 算因子用;helper 经 resolveLayoutSpan(layout) 传入) */
|
|
32
42
|
parentSpan?: number;
|
|
43
|
+
/** 是否叠本层嵌套布局 rebase(缺省 true;false = 逆向逃生口,layout 原样直透) */
|
|
33
44
|
rebase?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 行删除二次确认(破坏性操作防误删):
|
|
47
|
+
* - `true`(默认)→ 默认 popconfirm「确认删除该项?」(danger)
|
|
48
|
+
* - `false` → 不弹确认,直删(回旧行为)
|
|
49
|
+
* - 对象 → 自定义 ActionBtnConfirmConfig
|
|
50
|
+
*/
|
|
34
51
|
removeConfirm?: boolean | ActionBtnConfirmConfig;
|
|
35
52
|
}) & Partial<{}>> & import('vue').PublicProps;
|
|
36
53
|
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
@@ -3,11 +3,20 @@ declare const _default: <P extends Record<string, any>>(__VLS_props: NonNullable
|
|
|
3
3
|
readonly "onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
4
4
|
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:modelValue"> & {
|
|
5
5
|
modelValue: string;
|
|
6
|
+
/** 发送频率 */
|
|
6
7
|
hz?: number;
|
|
7
8
|
api: (params?: P) => Promise<void>;
|
|
9
|
+
/** 请求参数 */
|
|
8
10
|
params?: P;
|
|
11
|
+
/** 重置标识
|
|
12
|
+
* 内部检测变化以重新计时
|
|
13
|
+
* @example const resetKey = ref(1);
|
|
14
|
+
* 需要重置时 resetKey.value++;
|
|
15
|
+
* */
|
|
9
16
|
resetKey?: number;
|
|
17
|
+
/** 是否禁用 */
|
|
10
18
|
disabled?: boolean;
|
|
19
|
+
/** 发送按钮文本 */
|
|
11
20
|
btnText?: string;
|
|
12
21
|
} & Partial<{}>> & import('vue').PublicProps;
|
|
13
22
|
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
@@ -6,6 +6,7 @@ declare const _default: <P extends Record<string, any>>(__VLS_props: NonNullable
|
|
|
6
6
|
imgWidth?: number;
|
|
7
7
|
api: (params?: P) => Promise<string>;
|
|
8
8
|
params?: P;
|
|
9
|
+
/** 是否自动销毁图片链接 */
|
|
9
10
|
autoRevokeUrl?: boolean;
|
|
10
11
|
} & Partial<{}>> & import('vue').PublicProps;
|
|
11
12
|
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
@@ -1,21 +1,55 @@
|
|
|
1
1
|
import { ColProps } from 'element-plus';
|
|
2
2
|
import { Breakpoint } from '../../hooks/use-breakpoint';
|
|
3
|
+
/**
|
|
4
|
+
* 计算当前断点下单项的 span 档位(断点值优先于 span,镜像 ElCol 语义)。
|
|
5
|
+
*/
|
|
3
6
|
export declare const getCurrentSpan: (layout: Partial<ColProps> | undefined, breakpoint: Breakpoint) => number;
|
|
7
|
+
/**
|
|
8
|
+
* 解析单项在指定断点下的实际占位格数(含 offset)。
|
|
9
|
+
* merged 应为「顶层 layout 与单项 layout 的合并结果」(与 FormMain.mergeLayout 同序),
|
|
10
|
+
* 保证几何模拟看到的 span 与 ElCol 实际渲染一致。结果 clamp 到 [1, 24]。
|
|
11
|
+
*/
|
|
4
12
|
export declare const resolveSearchItemOccupancy: (merged: Partial<ColProps>, breakpoint: Breakpoint) => number;
|
|
5
13
|
export interface SearchGeometryOptions {
|
|
14
|
+
/** 可见项(hide !== true)在当前断点下的占位格数序列,顺序 = 渲染顺序 */
|
|
6
15
|
spans: number[];
|
|
16
|
+
/** 按钮区与末行共存所需的最小格数(通常取当前断点单项 span 档位) */
|
|
7
17
|
buttonMinSpan: number;
|
|
18
|
+
/** 收起态最大视觉行数(含操作区所在行);<= 0 = 不折叠 */
|
|
8
19
|
maxRows: number;
|
|
20
|
+
/** 当前是否处于收起态 */
|
|
9
21
|
collapsed: boolean;
|
|
10
22
|
}
|
|
11
23
|
export interface SearchGeometry {
|
|
24
|
+
/** 实际渲染的可见项数(收起态 = 折叠后保留数;展开态 = 全量) */
|
|
12
25
|
showCount: number;
|
|
26
|
+
/** 是否存在被折叠项(决定「展开更多/收起更多」按钮显隐) */
|
|
13
27
|
needsFold: boolean;
|
|
28
|
+
/** 按钮区 ElCol 的 span(共行 = 末行剩余格数;独占行 = 24) */
|
|
14
29
|
buttonSpan: number;
|
|
15
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* 搜索表单几何解算(异构 span 装箱模型)。
|
|
33
|
+
*
|
|
34
|
+
* maxRows 语义 = 收起态下整个表单最多渲染的**真实视觉行数,含操作区所在行**;
|
|
35
|
+
* 行由逐行装箱模拟得出(单项 span 可异构),非「maxRows × 每行项数」的均匀网格折算。
|
|
36
|
+
* 装不下的项折叠进「展开更多」,操作区恒为流的末尾 + 贴右。
|
|
37
|
+
*/
|
|
16
38
|
export declare const computeSearchGeometry: ({ spans, buttonMinSpan, maxRows, collapsed, }: SearchGeometryOptions) => SearchGeometry;
|
|
39
|
+
/**
|
|
40
|
+
* compact 生效时按**容器断点**把布局解算成定值 `{ span }`(ElCol 定 span 无媒体查询、
|
|
41
|
+
* 恒生效,规避响应式 span 认视口误判档位);否则用外部响应式 layout。
|
|
42
|
+
* span 取 `getCurrentSpan(layout, breakpoint)` = 复用用户配的档位语义(如容器 xs→layout.xs)。
|
|
43
|
+
*/
|
|
17
44
|
export declare const resolveSearchLayout: (compact: boolean, layout: Partial<ColProps> | undefined, breakpoint: Breakpoint) => Partial<ColProps> | undefined;
|
|
45
|
+
/** compact 生效则 label 顶部(窄列吃满宽),否则用外部 labelPosition */
|
|
18
46
|
export declare const resolveSearchLabelPosition: <T extends "right" | "left" | "top" | undefined>(compact: boolean, labelPosition: T) => T | "top";
|
|
47
|
+
/**
|
|
48
|
+
* 结算最终渲染 list:compact 时每项 layout 强制为 itemLayout(容器定值 `{ span }`,
|
|
49
|
+
* 覆盖单项自定义 layout,够得着外层盖不到的项);collapsing 时**前 threshold 个
|
|
50
|
+
* 可见项之外**的可见项 hide 覆写 true(threshold = 保留的可见项数,按可见序计数)。
|
|
51
|
+
* 二者皆不触发时原样返回(保持引用,零回归)。
|
|
52
|
+
*/
|
|
19
53
|
export declare const packSearchFormList: <T extends Record<string, any>>(list: T[], options: {
|
|
20
54
|
compact: boolean;
|
|
21
55
|
itemLayout: Partial<ColProps>;
|
|
@@ -3,33 +3,61 @@ import { ColProps } from 'element-plus';
|
|
|
3
3
|
import { FormItemConfig, FormItemConfigList } from './types';
|
|
4
4
|
import { ActionBtnConfirmConfig } from '../display';
|
|
5
5
|
export interface NestFormItemListOptions {
|
|
6
|
+
/** 父 item key */
|
|
6
7
|
key: string;
|
|
8
|
+
/** 父 item label */
|
|
7
9
|
label: string;
|
|
10
|
+
/** 每行子表单配置列表 */
|
|
8
11
|
list: FormItemConfigList;
|
|
12
|
+
/** 行稳定标识字段(指向行对象内稳定 id);缺省走内部自增 rowId */
|
|
9
13
|
rowKey?: string;
|
|
14
|
+
/** 新增行工厂;缺省 generateFormData(list) */
|
|
10
15
|
itemFactory?: () => Record<string, any>;
|
|
16
|
+
/** 最少行数 */
|
|
11
17
|
min?: number;
|
|
18
|
+
/** 最多行数 */
|
|
12
19
|
max?: number;
|
|
20
|
+
/** 父 item 栅格布局 */
|
|
13
21
|
layout?: Partial<ColProps>;
|
|
22
|
+
/** 每行子表单行间距 */
|
|
14
23
|
rowGutter?: number;
|
|
24
|
+
/** 新增 / 删除按钮文案 */
|
|
15
25
|
addText?: string;
|
|
16
26
|
removeText?: string;
|
|
27
|
+
/** 顶部自定义渲染(render-fn;label 由父 FormItem 渲染,本组件不出 title) */
|
|
17
28
|
headerRender?: (scope: {
|
|
18
29
|
count: number;
|
|
19
30
|
max: number;
|
|
20
31
|
}) => VNodeChild;
|
|
32
|
+
/** 底部自定义渲染;缺省 = 内置「新增」按钮 */
|
|
21
33
|
footerRender?: (scope: {
|
|
22
34
|
count: number;
|
|
23
35
|
max: number;
|
|
24
36
|
canAdd: boolean;
|
|
25
37
|
add: () => void;
|
|
26
38
|
}) => VNodeChild;
|
|
39
|
+
/** 联结组件外环 + 每行分割阴影颜色 */
|
|
27
40
|
shadowColor?: string;
|
|
41
|
+
/** 业务校验规则;与自动织入的 min/max 长度规则合并(长度规则在前) */
|
|
28
42
|
rules?: FormItemConfig["rules"];
|
|
43
|
+
/** 覆盖默认 init(缺省 = 空数组 [],[MUST NOT] 改初始值补 min;min/max 走校验) */
|
|
29
44
|
init?: FormItemConfig["init"];
|
|
45
|
+
/** 覆盖默认 stringify(缺省 = 数组逐项 `stringifyFormData(t, list)`) */
|
|
30
46
|
stringify?: FormItemConfig["stringify"];
|
|
47
|
+
/** 覆盖默认 parse(缺省 = 数组逐项 `parseFormData(t, list)`) */
|
|
31
48
|
parse?: FormItemConfig["parse"];
|
|
49
|
+
/** 是否叠本层嵌套布局 rebase(P3,缺省 true;false = 逆向逃生口,子层 layout 原样直透) */
|
|
32
50
|
rebase?: boolean;
|
|
51
|
+
/** 行删除二次确认(缺省 true=默认 popconfirm「确认删除该项?」;false=直删;对象=自定义) */
|
|
33
52
|
removeConfirm?: boolean | ActionBtnConfirmConfig;
|
|
34
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* 生成「父 item 内嵌数组子表单(N 行 FormMain)」的 FormItemConfig(C4 配套 helper)
|
|
56
|
+
* ----
|
|
57
|
+
* render 出口挂 FormItemNestFormList(值贯通数组 in-place + 增删 + 聚合校验穿透自动接线)。
|
|
58
|
+
* ----
|
|
59
|
+
* **序列化 pack(ADR-6,对齐 §34)**:自动织入 init/stringify/parse —— 父 FormMain 的
|
|
60
|
+
* generate()/stringify()/parse() 逐项命中即对数组逐项递归(行内若再嵌 nestFormItem /
|
|
61
|
+
* nestFormItemList → 逐层组合)。业务传 init/stringify/parse 则以业务为准。
|
|
62
|
+
*/
|
|
35
63
|
export declare function nestFormItemList(options: NestFormItemListOptions): FormItemConfig;
|
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import { ColProps } from 'element-plus';
|
|
2
2
|
import { FormItemConfig, FormItemConfigList } from './types';
|
|
3
3
|
export interface NestFormItemOptions {
|
|
4
|
+
/** 父 item key */
|
|
4
5
|
key: string;
|
|
6
|
+
/** 父 item label */
|
|
5
7
|
label: string;
|
|
8
|
+
/** 子表单配置列表 */
|
|
6
9
|
list: FormItemConfigList;
|
|
10
|
+
/** 父 item 栅格布局 */
|
|
7
11
|
layout?: Partial<ColProps>;
|
|
12
|
+
/** 子表单行间距 */
|
|
8
13
|
rowGutter?: number;
|
|
14
|
+
/** 联结组件外环阴影颜色 */
|
|
9
15
|
shadowColor?: string;
|
|
16
|
+
/** 覆盖默认 init(缺省 = `generateFormData(list)`,产子默认对象) */
|
|
10
17
|
init?: FormItemConfig["init"];
|
|
18
|
+
/** 覆盖默认 stringify(缺省 = 递归 `stringifyFormData(value, list)`) */
|
|
11
19
|
stringify?: FormItemConfig["stringify"];
|
|
20
|
+
/** 覆盖默认 parse(缺省 = 递归 `parseFormData(value, list)`) */
|
|
12
21
|
parse?: FormItemConfig["parse"];
|
|
22
|
+
/** 是否叠本层嵌套布局 rebase(P3,缺省 true;false = 逆向逃生口,子层 layout 原样直透) */
|
|
13
23
|
rebase?: boolean;
|
|
14
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* 生成「父 item 内嵌子 FormMain」的 FormItemConfig(C1 配套 helper)
|
|
27
|
+
* ----
|
|
28
|
+
* 降低业务方手写 h(FormItemNestForm) 噪音:传 key/label/子 list 即得一个满足 FormItemConfig
|
|
29
|
+
* 的配置项,渲染出口挂 FormItemNestForm(值贯通 + 校验级联自动接线)。
|
|
30
|
+
* ----
|
|
31
|
+
* **stringify/parse/init 自动 pack**:FormItemConfig 的 per-item `init`/`stringify`/`parse`
|
|
32
|
+
* 钩子 + 纯 list 驱动 util(generate/stringify/parseFormData)→ 自动织入「递归进子 list」,
|
|
33
|
+
* 父 FormMain 的 `generate()`/`stringify()`/`parse()` 逐项命中即递归序列化/回显嵌套子表单,
|
|
34
|
+
* 多层自然组合(孙 nestFormItem 的钩子同理逐层)。业务传 init/stringify/parse 则以业务为准。
|
|
35
|
+
*/
|
|
15
36
|
export declare function nestFormItem(options: NestFormItemOptions): FormItemConfig;
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import { FormMainInstance } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 嵌套子 FormMain 级联 expose 子集
|
|
4
|
+
* ----
|
|
5
|
+
* 联结组件(FormItemNestForm)把所持子 FormMain 的级联方法注册进父 FormMain 的 exposeMap,
|
|
6
|
+
* 使父顶层 validate/clearValidate/resetFields 可级联到子。
|
|
7
|
+
*/
|
|
2
8
|
export interface NestFormExpose {
|
|
3
9
|
validate: FormMainInstance["validate"];
|
|
4
10
|
clearValidate: FormMainInstance["clearValidate"];
|
|
5
11
|
resetFields: FormMainInstance["resetFields"];
|
|
6
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 嵌套子表单 exposeMap
|
|
15
|
+
* ----
|
|
16
|
+
* key = 联结组件所属父 item 的 key(天然唯一,供父 FormMain 对齐 hideKeyList:隐藏 item 不级联 validate)。
|
|
17
|
+
* 用 `shallowReactive`:顶层 key 增删响应式(注册/摘除可被响应式消费),value(expose 对象)保持 raw
|
|
18
|
+
* 不深代理——既规避 expose 引用循环,又留响应式消费口。每个 FormMain 经工厂在闭包内 new 一份,零模块级单例。
|
|
19
|
+
*/
|
|
7
20
|
export type NestFormExposeMap = Record<string, NestFormExpose>;
|
|
21
|
+
/** 创建一个嵌套子表单 exposeMap(shallowReactive) */
|
|
8
22
|
export declare function createNestFormExposeMap(): NestFormExposeMap;
|