@done-coding/admin-core 0.17.1-alpha.0 → 0.18.1-alpha.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,14 +1,16 @@
|
|
|
1
|
-
import { computed
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
if (!
|
|
5
|
-
const
|
|
6
|
-
return
|
|
7
|
-
})
|
|
8
|
-
|
|
1
|
+
import { computed } from "vue";
|
|
2
|
+
const useFillHeight = (options) => {
|
|
3
|
+
const fillMinHeight = computed(() => {
|
|
4
|
+
if (!options.enabled()) return void 0;
|
|
5
|
+
const raw = options.rawAvailableHeight();
|
|
6
|
+
return raw && raw > 0 ? raw : void 0;
|
|
7
|
+
});
|
|
8
|
+
const fillActive = computed(() => fillMinHeight.value !== void 0);
|
|
9
|
+
const fillMinHeightCss = computed(
|
|
10
|
+
() => fillMinHeight.value ? `${fillMinHeight.value}px` : ""
|
|
9
11
|
);
|
|
10
|
-
return { fillActive
|
|
12
|
+
return { fillActive, fillMinHeight, fillMinHeightCss };
|
|
11
13
|
};
|
|
12
14
|
export {
|
|
13
|
-
|
|
15
|
+
useFillHeight
|
|
14
16
|
};
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import { computed
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
() =>
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { computed } from "vue";
|
|
2
|
+
const useTableSkeleton = (options) => {
|
|
3
|
+
const showSkeleton = computed(
|
|
4
|
+
() => options.enabled() && options.loading() && options.dataLength() === 0
|
|
5
|
+
);
|
|
6
|
+
const skeletonMode = computed(
|
|
7
|
+
() => options.isGrid() ? "grid" : "table"
|
|
8
|
+
);
|
|
9
|
+
const skeletonColumns = computed(
|
|
10
|
+
() => Math.min(Math.max(options.columnCount(), 1), 8)
|
|
11
|
+
);
|
|
12
|
+
const skeletonRowsFinal = computed(() => {
|
|
13
|
+
const explicit = options.skeletonRows();
|
|
14
|
+
if (explicit && explicit > 0) return explicit;
|
|
15
|
+
const h = options.availableHeight();
|
|
16
|
+
if (!h) return 5;
|
|
17
|
+
return Math.min(Math.max(Math.floor((h - 44) / 48), 3), 8);
|
|
14
18
|
});
|
|
15
|
-
return { showSkeleton
|
|
19
|
+
return { showSkeleton, skeletonMode, skeletonColumns, skeletonRowsFinal };
|
|
16
20
|
};
|
|
17
21
|
export {
|
|
18
|
-
|
|
22
|
+
useTableSkeleton
|
|
19
23
|
};
|
package/es/config/list-model.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const APP_API_LIST_MODEL_KEY_CONFIG = Object.freeze({
|
|
2
2
|
/** 当前页码 key */
|
|
3
3
|
CURRENT_PAGE_KEY: "page.page",
|
|
4
4
|
/** 每页条数 key */
|
|
@@ -9,5 +9,5 @@ const e = Object.freeze({
|
|
|
9
9
|
LIST_KEY: "items"
|
|
10
10
|
});
|
|
11
11
|
export {
|
|
12
|
-
|
|
12
|
+
APP_API_LIST_MODEL_KEY_CONFIG
|
|
13
13
|
};
|
package/es/config/route.mjs
CHANGED
package/es/helpers/form.mjs
CHANGED
|
@@ -1,32 +1,42 @@
|
|
|
1
|
-
import { ElInput
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { setInputComponent
|
|
7
|
-
const
|
|
1
|
+
import { ElInput, ElInputNumber, ElSelect } from "element-plus";
|
|
2
|
+
import _sfc_main$1 from "../components/form/FormSelect.vue.mjs";
|
|
3
|
+
import FormSearch from "../components/form/FormSearch.vue.mjs";
|
|
4
|
+
import FormVerifyImage from "../components/form/FormVerifyImage.vue.mjs";
|
|
5
|
+
import _sfc_main from "../components/form/FormVerifyCode.vue.mjs";
|
|
6
|
+
import { setInputComponent, setSelectComponent } from "../components/form/utils.mjs";
|
|
7
|
+
const passwordRule = {
|
|
8
8
|
message: "限定20个以内字母、数字",
|
|
9
9
|
pattern: /^[0-9a-zA-Z]{0,20}$/,
|
|
10
10
|
trigger: "blur"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
};
|
|
12
|
+
const getConfirmPasswordRule = (getPassword) => {
|
|
13
|
+
return {
|
|
14
|
+
validator: (_rule, value, callback) => {
|
|
15
|
+
if (value !== getPassword()) {
|
|
16
|
+
callback("两次输入密码不一致!");
|
|
17
|
+
} else {
|
|
18
|
+
callback();
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
trigger: "blur"
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const FORM_CONFIG_SELECT_ALL_VALUE = `SELECT_ALL_${Date.now().toString(
|
|
17
25
|
36
|
|
18
|
-
)}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
)}`;
|
|
27
|
+
const setFormComponentType = () => {
|
|
28
|
+
setInputComponent([
|
|
29
|
+
ElInput,
|
|
30
|
+
ElInputNumber,
|
|
31
|
+
FormSearch,
|
|
32
|
+
FormVerifyImage,
|
|
33
|
+
_sfc_main
|
|
34
|
+
]);
|
|
35
|
+
setSelectComponent([ElSelect, _sfc_main$1]);
|
|
26
36
|
};
|
|
27
37
|
export {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
38
|
+
FORM_CONFIG_SELECT_ALL_VALUE,
|
|
39
|
+
getConfirmPasswordRule,
|
|
40
|
+
passwordRule,
|
|
41
|
+
setFormComponentType
|
|
32
42
|
};
|
|
@@ -1,62 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const DEFAULT_PAGE_SIZE = 200;
|
|
2
|
+
const DEFAULT_LIMIT = 1e4;
|
|
3
|
+
async function fetchListAll(api, baseParams, opts) {
|
|
4
|
+
var _a;
|
|
5
|
+
const pageSize = (opts == null ? void 0 : opts.pageSize) ?? DEFAULT_PAGE_SIZE;
|
|
6
|
+
const limit = (opts == null ? void 0 : opts.limit) ?? DEFAULT_LIMIT;
|
|
7
|
+
if (pageSize < 1 || pageSize > 1e3) {
|
|
5
8
|
throw new Error(
|
|
6
|
-
`fetchListAll: pageSize 必须在 [1, 1000] 范围内(实际 ${
|
|
9
|
+
`fetchListAll: pageSize 必须在 [1, 1000] 范围内(实际 ${pageSize})`
|
|
7
10
|
);
|
|
8
|
-
const t = [];
|
|
9
|
-
let c = 1;
|
|
10
|
-
for (; ; ) {
|
|
11
|
-
const s = {
|
|
12
|
-
...n,
|
|
13
|
-
page: { page: c, pageSize: i }
|
|
14
|
-
}, l = await r(s), g = l.items, p = ((o = l.page) == null ? void 0 : o.totalRecord) ?? 0;
|
|
15
|
-
if (t.push(...g), t.length >= a || g.length < i || t.length >= p) break;
|
|
16
|
-
c += 1;
|
|
17
11
|
}
|
|
18
|
-
|
|
12
|
+
const all = [];
|
|
13
|
+
let page = 1;
|
|
14
|
+
while (true) {
|
|
15
|
+
const params = {
|
|
16
|
+
...baseParams,
|
|
17
|
+
page: { page, pageSize }
|
|
18
|
+
};
|
|
19
|
+
const resp = await api(params);
|
|
20
|
+
const items = resp.items;
|
|
21
|
+
const totalRecord = ((_a = resp.page) == null ? void 0 : _a.totalRecord) ?? 0;
|
|
22
|
+
all.push(...items);
|
|
23
|
+
if (all.length >= limit) break;
|
|
24
|
+
if (items.length < pageSize) break;
|
|
25
|
+
if (all.length >= totalRecord) break;
|
|
26
|
+
page += 1;
|
|
27
|
+
}
|
|
28
|
+
return all.slice(0, limit);
|
|
19
29
|
}
|
|
20
|
-
function
|
|
21
|
-
return async (
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
30
|
+
function createListApi(source) {
|
|
31
|
+
return async (params) => {
|
|
32
|
+
const page = params.page;
|
|
33
|
+
if (!page) {
|
|
24
34
|
throw new Error("createListApi: params.page 必填(含 page / pageSize)");
|
|
25
|
-
|
|
26
|
-
|
|
35
|
+
}
|
|
36
|
+
const { page: pageNum, pageSize } = page;
|
|
37
|
+
if (!pageSize || pageSize <= 0) {
|
|
27
38
|
throw new Error("createListApi: pageSize 必须 > 0");
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
}
|
|
40
|
+
let list;
|
|
41
|
+
if (Array.isArray(source)) {
|
|
42
|
+
list = source;
|
|
43
|
+
} else {
|
|
44
|
+
const r = source();
|
|
45
|
+
if (r instanceof Promise) {
|
|
46
|
+
const awaited = await r;
|
|
47
|
+
if (!Array.isArray(awaited)) {
|
|
36
48
|
throw new Error("createListApi: 异步 source 返回值必须为数组");
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
}
|
|
50
|
+
list = awaited;
|
|
51
|
+
} else {
|
|
52
|
+
list = r;
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
|
-
const
|
|
55
|
+
const start = (pageNum - 1) * pageSize;
|
|
56
|
+
const end = start + pageSize;
|
|
42
57
|
return {
|
|
43
|
-
items:
|
|
58
|
+
items: list.slice(start, end),
|
|
44
59
|
page: {
|
|
45
|
-
totalRecord:
|
|
46
|
-
pageSize
|
|
47
|
-
totalPage: Math.ceil(
|
|
60
|
+
totalRecord: list.length,
|
|
61
|
+
pageSize,
|
|
62
|
+
totalPage: Math.ceil(list.length / pageSize)
|
|
48
63
|
}
|
|
49
64
|
};
|
|
50
65
|
};
|
|
51
66
|
}
|
|
52
|
-
function
|
|
53
|
-
return
|
|
54
|
-
...
|
|
67
|
+
function countAll(api, baseParams) {
|
|
68
|
+
return api({
|
|
69
|
+
...baseParams,
|
|
55
70
|
page: { page: 1, pageSize: 1 }
|
|
56
|
-
}).then((
|
|
71
|
+
}).then((r) => r.page.totalRecord);
|
|
57
72
|
}
|
|
58
73
|
export {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
74
|
+
countAll,
|
|
75
|
+
createListApi,
|
|
76
|
+
fetchListAll
|
|
62
77
|
};
|
package/es/hooks/activated.mjs
CHANGED
|
@@ -1,48 +1,64 @@
|
|
|
1
|
-
import { ref
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
isActivated:
|
|
1
|
+
import { ref, computed, readonly, onMounted, onActivated, onDeactivated, onBeforeUnmount, watch } from "vue";
|
|
2
|
+
const useActivated = (watchFn) => {
|
|
3
|
+
const activatedInfo = ref({
|
|
4
|
+
isActivated: false,
|
|
5
5
|
triggerType: "mounted"
|
|
6
|
-
})
|
|
7
|
-
|
|
6
|
+
});
|
|
7
|
+
const isActivated = computed(() => activatedInfo.value.isActivated);
|
|
8
|
+
const activatedInfoReadonly = computed(() => readonly(activatedInfo.value));
|
|
9
|
+
const changeActivatedInfo = (info) => {
|
|
10
|
+
activatedInfo.value = info;
|
|
11
|
+
watchFn == null ? void 0 : watchFn(info);
|
|
8
12
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
onMounted(() => {
|
|
14
|
+
changeActivatedInfo({ isActivated: true, triggerType: "mounted" });
|
|
15
|
+
onActivated(() => {
|
|
16
|
+
changeActivatedInfo({ isActivated: true, triggerType: "activated" });
|
|
12
17
|
});
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
isActivated:
|
|
19
|
-
|
|
18
|
+
});
|
|
19
|
+
onDeactivated(() => {
|
|
20
|
+
changeActivatedInfo({ isActivated: false, triggerType: "deactivated" });
|
|
21
|
+
});
|
|
22
|
+
onBeforeUnmount(() => {
|
|
23
|
+
changeActivatedInfo({ isActivated: false, triggerType: "unmounted" });
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
isActivated,
|
|
27
|
+
activatedInfo: activatedInfoReadonly
|
|
20
28
|
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
};
|
|
30
|
+
const useActivatedExec = (callback) => {
|
|
31
|
+
const { activatedInfo } = useActivated();
|
|
32
|
+
watch(
|
|
33
|
+
activatedInfo,
|
|
34
|
+
(info) => {
|
|
35
|
+
if (info.isActivated) {
|
|
36
|
+
callback(info);
|
|
37
|
+
}
|
|
27
38
|
},
|
|
28
39
|
{
|
|
29
|
-
immediate:
|
|
40
|
+
immediate: true
|
|
30
41
|
}
|
|
31
42
|
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
};
|
|
44
|
+
const useActivatedEvent = (bind, unbind) => {
|
|
45
|
+
const { activatedInfo } = useActivated();
|
|
46
|
+
watch(
|
|
47
|
+
activatedInfo,
|
|
48
|
+
(info) => {
|
|
49
|
+
if (info.isActivated) {
|
|
50
|
+
bind(info);
|
|
51
|
+
} else {
|
|
52
|
+
unbind(info);
|
|
53
|
+
}
|
|
38
54
|
},
|
|
39
55
|
{
|
|
40
|
-
immediate:
|
|
56
|
+
immediate: true
|
|
41
57
|
}
|
|
42
58
|
);
|
|
43
59
|
};
|
|
44
60
|
export {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
useActivated,
|
|
62
|
+
useActivatedEvent,
|
|
63
|
+
useActivatedExec
|
|
48
64
|
};
|
package/es/hooks/feel-size.mjs
CHANGED
|
@@ -1,30 +1,46 @@
|
|
|
1
|
-
import { shallowRef
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { shallowRef, ref, onBeforeMount, computed } from "vue";
|
|
2
|
+
const useFeelSize = () => {
|
|
3
|
+
const el = shallowRef();
|
|
4
|
+
const sizeInfo = ref();
|
|
5
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
6
|
+
for (const entry of entries) {
|
|
7
|
+
const { target, contentRect } = entry;
|
|
8
|
+
if (target === el.value) {
|
|
9
|
+
sizeInfo.value = {
|
|
10
|
+
width: contentRect.width,
|
|
11
|
+
height: contentRect.height
|
|
12
|
+
};
|
|
13
|
+
}
|
|
10
14
|
}
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
15
|
+
});
|
|
16
|
+
const unwatchDom = () => {
|
|
17
|
+
if (el.value) {
|
|
18
|
+
resizeObserver.unobserve(el.value);
|
|
19
|
+
el.value = void 0;
|
|
20
|
+
sizeInfo.value = void 0;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const watchDom = (dom) => {
|
|
24
|
+
if (dom === el.value) return;
|
|
25
|
+
unwatchDom();
|
|
26
|
+
resizeObserver.observe(dom);
|
|
27
|
+
el.value = dom;
|
|
28
|
+
sizeInfo.value = {
|
|
29
|
+
width: dom.offsetWidth,
|
|
30
|
+
height: dom.offsetHeight
|
|
31
|
+
};
|
|
18
32
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
33
|
+
onBeforeMount(() => {
|
|
34
|
+
unwatchDom();
|
|
35
|
+
resizeObserver.disconnect();
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
unwatchDom,
|
|
39
|
+
watchDom,
|
|
24
40
|
/** 元素尺寸信息只读属性 */
|
|
25
|
-
sizeInfo:
|
|
41
|
+
sizeInfo: computed(() => sizeInfo.value)
|
|
26
42
|
};
|
|
27
43
|
};
|
|
28
44
|
export {
|
|
29
|
-
|
|
45
|
+
useFeelSize
|
|
30
46
|
};
|
|
@@ -1,47 +1,80 @@
|
|
|
1
|
-
import { computed
|
|
2
|
-
import { useRoute
|
|
3
|
-
import { ROUTE_MODULE_LEVEL
|
|
4
|
-
const
|
|
5
|
-
getMenus
|
|
6
|
-
getMenuFlatList
|
|
7
|
-
getExtractLevel1ToHeader
|
|
1
|
+
import { computed } from "vue";
|
|
2
|
+
import { useRoute } from "vue-router";
|
|
3
|
+
import { ROUTE_MODULE_LEVEL } from "../config/route.mjs";
|
|
4
|
+
const useMenusDataDispatch = ({
|
|
5
|
+
getMenus,
|
|
6
|
+
getMenuFlatList,
|
|
7
|
+
getExtractLevel1ToHeader
|
|
8
8
|
}) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const menus = computed(getMenus);
|
|
10
|
+
const menuFlatList = computed(getMenuFlatList);
|
|
11
|
+
const extractLevel1ToHeader = computed(getExtractLevel1ToHeader);
|
|
12
|
+
const route = useRoute();
|
|
13
|
+
const activeMenu = computed(() => {
|
|
14
|
+
return menuFlatList.value.find((item) => {
|
|
15
|
+
return item.path === route.path;
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
const needRedirectToFirstChildMenu = computed(
|
|
19
|
+
() => activeMenu.value && getCanRedirectFirstChildMenu(activeMenu.value, true)
|
|
20
|
+
);
|
|
21
|
+
const activeModulePath = computed(() => {
|
|
22
|
+
if (!activeMenu.value) {
|
|
13
23
|
console.warn(
|
|
14
|
-
`当前 ${
|
|
24
|
+
`当前 ${route.path} 未找到聚焦的菜单 可能路由配置不展示菜单`
|
|
15
25
|
);
|
|
16
26
|
return;
|
|
17
27
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
if (activeMenu.value.routeLevel === ROUTE_MODULE_LEVEL) {
|
|
29
|
+
return activeMenu.value.path;
|
|
30
|
+
} else {
|
|
31
|
+
return activeMenu.value.parentPathList[0];
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const activeModuleMenu = computed(() => {
|
|
35
|
+
return activeModulePath.value ? menus.value.find((item) => item.path === activeModulePath.value) : void 0;
|
|
36
|
+
});
|
|
37
|
+
const activeModuleMenuChildrenMenu = computed(() => {
|
|
38
|
+
var _a;
|
|
39
|
+
return (_a = activeModuleMenu.value) == null ? void 0 : _a.children;
|
|
40
|
+
});
|
|
41
|
+
const sidebarMenus = computed(() => {
|
|
42
|
+
return extractLevel1ToHeader.value ? activeModuleMenuChildrenMenu.value || [] : menus.value;
|
|
43
|
+
});
|
|
44
|
+
const routeModuleLevelList = computed(() => {
|
|
45
|
+
return menus.value.filter((item) => item.routeLevel === ROUTE_MODULE_LEVEL);
|
|
46
|
+
});
|
|
47
|
+
const routeModuleLevel1ListNoChildren = computed(
|
|
48
|
+
() => routeModuleLevelList.value.map((item) => {
|
|
49
|
+
return {
|
|
50
|
+
...item,
|
|
51
|
+
// 避免 展示子菜单
|
|
52
|
+
children: []
|
|
53
|
+
};
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
const headerMenus = computed(() => {
|
|
57
|
+
return extractLevel1ToHeader.value ? routeModuleLevel1ListNoChildren.value : [];
|
|
58
|
+
});
|
|
59
|
+
const getCanRedirectFirstChildMenu = (menu, isInitCall) => {
|
|
60
|
+
if (menu.redirectToFirstChildRoute) {
|
|
61
|
+
const firstChild = menu.children[0];
|
|
62
|
+
if (firstChild) {
|
|
63
|
+
return getCanRedirectFirstChildMenu(firstChild, false);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (!isInitCall) {
|
|
67
|
+
return menu;
|
|
33
68
|
}
|
|
34
|
-
if (!E)
|
|
35
|
-
return e;
|
|
36
69
|
};
|
|
37
70
|
return {
|
|
38
|
-
sidebarMenus
|
|
39
|
-
headerMenus
|
|
40
|
-
activeMenu
|
|
41
|
-
activeModuleMenu
|
|
42
|
-
needRedirectToFirstChildMenu
|
|
71
|
+
sidebarMenus,
|
|
72
|
+
headerMenus,
|
|
73
|
+
activeMenu,
|
|
74
|
+
activeModuleMenu,
|
|
75
|
+
needRedirectToFirstChildMenu
|
|
43
76
|
};
|
|
44
77
|
};
|
|
45
78
|
export {
|
|
46
|
-
|
|
79
|
+
useMenusDataDispatch
|
|
47
80
|
};
|
package/es/hooks/timeout.mjs
CHANGED
|
@@ -1,21 +1,36 @@
|
|
|
1
|
-
import { ref
|
|
2
|
-
import { useActivated
|
|
3
|
-
const
|
|
4
|
-
const { isActivated
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { ref, onBeforeUnmount, watch } from "vue";
|
|
2
|
+
import { useActivated } from "./activated.mjs";
|
|
3
|
+
const useTimeout = (autoClear = true) => {
|
|
4
|
+
const { isActivated } = useActivated();
|
|
5
|
+
const timer = ref(void 0);
|
|
6
|
+
const clearTimer = () => {
|
|
7
|
+
if (timer.value !== null && timer.value !== void 0) {
|
|
8
|
+
clearTimeout(timer.value);
|
|
9
|
+
timer.value = void 0;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const setTimer = (handler, timeout) => {
|
|
13
|
+
clearTimer();
|
|
14
|
+
timer.value = setTimeout(handler, timeout);
|
|
8
15
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
if (autoClear) {
|
|
17
|
+
onBeforeUnmount(clearTimer);
|
|
18
|
+
}
|
|
19
|
+
watch(
|
|
20
|
+
isActivated,
|
|
21
|
+
(n) => {
|
|
22
|
+
if (!n) {
|
|
23
|
+
if (autoClear) {
|
|
24
|
+
clearTimer();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
13
27
|
},
|
|
14
28
|
{
|
|
15
|
-
immediate:
|
|
29
|
+
immediate: true
|
|
16
30
|
}
|
|
17
|
-
)
|
|
31
|
+
);
|
|
32
|
+
return [setTimer, clearTimer];
|
|
18
33
|
};
|
|
19
34
|
export {
|
|
20
|
-
|
|
35
|
+
useTimeout
|
|
21
36
|
};
|