@done-coding/admin-core 0.27.0 → 0.28.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/es/bridge/index.mjs +11 -3
- package/es/components/app-layout/AppBody.vue.mjs +1 -1
- package/es/components/app-layout/AppBody.vue2.mjs +14 -5
- package/es/components/app-layout/AppHeader.vue.mjs +1 -1
- package/es/components/app-layout/AppHeader.vue2.mjs +7 -5
- package/es/components/app-layout/AppLayout.vue.mjs +1 -1
- package/es/components/app-layout/AppLayout.vue2.mjs +2 -1
- package/es/components/app-layout/AppPage.vue.mjs +1 -1
- package/es/components/app-layout/AppPage.vue2.mjs +35 -32
- package/es/components/app-layout/app-page-geometry.mjs +16 -16
- package/es/components/app-layout/app-page-recommended.mjs +10 -0
- package/es/components/data-view/DataGridView.vue.mjs +1 -1
- package/es/components/data-view/DataGridView.vue2.mjs +29 -17
- package/es/components/data-view/DataListView.vue.mjs +1 -1
- package/es/components/data-view/DataListView.vue2.mjs +10 -0
- package/es/components/data-view/InfiniteListView.vue.mjs +1 -1
- package/es/components/data-view/InfiniteListView.vue2.mjs +9 -3
- package/es/components/data-view/use-active-scroll.mjs +15 -0
- package/es/components/display/DragFloat.vue.mjs +7 -0
- package/es/components/display/DragFloat.vue2.mjs +109 -0
- package/es/components/display/TabsHeader.vue.mjs +1 -1
- package/es/components/display/TabsHeader.vue2.mjs +9 -10
- package/es/components/display/TabsMain.vue.mjs +22 -7
- package/es/components/display/tabs-variant.mjs +14 -0
- package/es/components/form/FormDivider.vue.mjs +7 -0
- package/es/components/form/FormDivider.vue2.mjs +14 -0
- package/es/components/form/FormGroupTitle.vue.mjs +7 -0
- package/es/components/form/FormGroupTitle.vue2.mjs +59 -0
- package/es/components/form/FormItemNestForm.vue.mjs +1 -1
- package/es/components/form/FormItemNestFormList.vue.mjs +1 -1
- package/es/components/form/FormMain.vue.mjs +1 -1
- package/es/components/form/FormMain.vue2.mjs +69 -9
- package/es/components/form/FormSearch.vue.mjs +1 -1
- package/es/components/form/FormSearch.vue2.mjs +15 -3
- package/es/components/form/FormSubmitPanel.vue.mjs +1 -1
- package/es/components/form/FormSubmitPanel.vue2.mjs +14 -1
- package/es/components/form/ai-schema.mjs +139 -0
- package/es/components/form/group.mjs +81 -0
- package/es/components/form/use-ai-fill.mjs +71 -0
- package/es/components/form/utils.mjs +15 -4
- package/es/components/list-layout/ListLayout.vue.mjs +1 -1
- package/es/components/list-layout/ListLayout.vue2.mjs +103 -62
- package/es/components/modal/ImagePreviewTrigger.vue.mjs +5 -1
- package/es/components/modal/ModalConfirm.vue.mjs +1 -1
- package/es/components/modal/ModalConfirm.vue2.mjs +8 -5
- package/es/components/modal/VideoPreviewTrigger.vue.mjs +1 -1
- package/es/components/modal/VideoPreviewTrigger.vue2.mjs +2 -1
- package/es/components/page-layout/AppPageDetail.vue.mjs +1 -1
- package/es/components/page-layout/AppPageDetail.vue2.mjs +17 -13
- package/es/components/page-layout/AppPageListDetailLayout.vue.mjs +7 -4
- package/es/components/page-layout/AppPageListDetailSheet.vue.mjs +12 -4
- package/es/components/page-layout/AppPageListDetailSplit.vue.mjs +1 -1
- package/es/components/page-layout/AppPageListDetailSplit.vue2.mjs +10 -3
- package/es/components/table/TableMain.vue.mjs +1 -1
- package/es/components/table/TableMain.vue2.mjs +45 -25
- package/es/components/view-layout/ViewLayout.vue.mjs +1 -1
- package/es/components/view-layout/ViewLayout.vue2.mjs +46 -15
- package/es/config/slot-region.mjs +1 -0
- package/es/hooks/use-active-record.mjs +5 -1
- package/es/hooks/use-surface.mjs +27 -0
- package/es/hooks/use-theme-apply.mjs +52 -18
- package/es/index.mjs +81 -59
- package/es/inject/key.mjs +4 -0
- package/es/store/app.mjs +51 -17
- package/es/style.css +361 -184
- package/es/utils/dom.mjs +7 -1
- package/es/utils/gap-scale.mjs +25 -0
- package/es/utils/theme-scale.mjs +27 -0
- package/package.json +2 -2
- package/src/bridge/docs/README.md +30 -0
- package/src/components/app-layout/docs/README-AppBody.md +21 -0
- package/src/components/app-layout/docs/README-AppPage.md +20 -3
- package/src/components/data-view/docs/README-DataGridView.md +15 -0
- package/src/components/data-view/docs/README-DataListView.md +13 -0
- package/src/components/data-view/docs/README-InfiniteListView.md +15 -0
- package/src/components/display/README.md +1 -0
- package/src/components/display/docs/README-DragFloat.md +68 -0
- package/src/components/form/README.md +4 -2
- package/src/components/form/docs/README-FormItemNestForm.md +5 -3
- package/src/components/form/docs/README-FormItemNestFormList.md +7 -1
- package/src/components/form/docs/README-FormMain.md +102 -1
- package/src/components/form/docs/README-FormSearch.md +5 -0
- package/src/components/list-layout/docs/README-ListLayout.md +61 -1
- package/src/components/modal/docs/README-ImagePreviewTrigger.md +2 -0
- package/src/components/modal/docs/README-VideoPreviewTrigger.md +4 -1
- package/src/components/page-layout/docs/README-AppPageDetail.md +11 -1
- package/src/components/page-layout/docs/README-AppPageListDetailLayout.md +64 -6
- package/src/components/table/docs/README-TableMain.md +22 -0
- package/src/components/view-layout/docs/README-ViewLayout.md +27 -2
- package/src/hooks/docs/README.md +30 -1
- package/types/bridge/index.d.ts +69 -10
- package/types/components/app-layout/AppPage.vue.d.ts +15 -7
- package/types/components/app-layout/app-page-geometry.d.ts +19 -10
- package/types/components/app-layout/app-page-recommended.d.ts +12 -0
- package/types/components/app-layout/index.d.ts +1 -0
- package/types/components/data-view/types.d.ts +18 -0
- package/types/components/data-view/use-active-scroll.d.ts +30 -0
- package/types/components/display/BadgeMark.vue.d.ts +2 -2
- package/types/components/display/DragFloat.vue.d.ts +35 -0
- package/types/components/display/TabsHeader.vue.d.ts +7 -0
- package/types/components/display/index.d.ts +8 -1
- package/types/components/display/tabs-variant.d.ts +17 -0
- package/types/components/display/types.d.ts +6 -0
- package/types/components/form/FormDivider.vue.d.ts +2 -0
- package/types/components/form/FormGroupTitle.vue.d.ts +22 -0
- package/types/components/form/FormItemNestForm.vue.d.ts +2 -0
- package/types/components/form/ai-schema.d.ts +24 -0
- package/types/components/form/group.d.ts +36 -0
- package/types/components/form/index.d.ts +2 -0
- package/types/components/form/types.d.ts +94 -3
- package/types/components/form/use-ai-fill.d.ts +59 -0
- package/types/components/form/utils.d.ts +19 -0
- package/types/components/list-layout/ListLayout.vue.d.ts +3 -0
- package/types/components/list-layout/types.d.ts +28 -0
- package/types/components/modal/ModalConfirm.vue.d.ts +1 -1
- package/types/components/modal/VideoPreviewTrigger.vue.d.ts +1 -1
- package/types/components/page-layout/AppPageDetail.vue.d.ts +2 -2
- package/types/components/page-layout/AppPageListDetailLayout.vue.d.ts +3 -7
- package/types/components/page-layout/AppPageListDetailSheet.vue.d.ts +4 -8
- package/types/components/page-layout/AppPageListDetailSplit.vue.d.ts +4 -8
- package/types/components/page-layout/types.d.ts +42 -0
- package/types/components/panel/PanelItemNestForm.vue.d.ts +2 -0
- package/types/components/table/types.d.ts +9 -0
- package/types/components/view-layout/ViewLayout.vue.d.ts +18 -0
- package/types/components/view-layout/types.d.ts +15 -0
- package/types/config/slot-region.d.ts +10 -1
- package/types/hooks/use-surface.d.ts +34 -0
- package/types/inject/key.d.ts +10 -0
- package/types/injectInfo.json.d.ts +1 -1
- package/types/store/app.d.ts +3 -0
- package/types/utils/dom.d.ts +31 -0
- package/types/utils/gap-scale.d.ts +46 -0
- package/types/utils/index.d.ts +1 -0
- package/types/utils/theme-scale.d.ts +33 -0
package/es/bridge/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed } from "vue";
|
|
1
|
+
import { computed, shallowRef, ref } from "vue";
|
|
2
2
|
import { createStorageWithNamespace } from "./storage.mjs";
|
|
3
3
|
import { createUseState } from "./state.mjs";
|
|
4
4
|
import { createGenerateRouteMetaRawTree } from "./route.mjs";
|
|
@@ -35,7 +35,7 @@ function createCoreBridge(options) {
|
|
|
35
35
|
...options.APP_LAYOUT_ASIDE_CONFIG
|
|
36
36
|
};
|
|
37
37
|
const gapConfig = {
|
|
38
|
-
size:
|
|
38
|
+
size: 8,
|
|
39
39
|
...options.APP_LAYOUT_GAP_CONFIG
|
|
40
40
|
};
|
|
41
41
|
const configHook = createBridgeConfigHook({
|
|
@@ -95,6 +95,8 @@ function createCoreBridge(options) {
|
|
|
95
95
|
let logoutApiFn;
|
|
96
96
|
let getUserInfoApiFn;
|
|
97
97
|
let refreshTokenApiFn;
|
|
98
|
+
const aiFillTriggerRef = shallowRef(void 0);
|
|
99
|
+
const aiFillRequireDescriptionRef = ref(false);
|
|
98
100
|
const msg = (name) => `bridge: ${name} 未注册`;
|
|
99
101
|
const pluginHost = createBridgePluginHost();
|
|
100
102
|
const bridgeInstance = {
|
|
@@ -107,6 +109,9 @@ function createCoreBridge(options) {
|
|
|
107
109
|
if (options2.logoutApi) logoutApiFn = options2.logoutApi;
|
|
108
110
|
if (options2.getUserInfoApi) getUserInfoApiFn = options2.getUserInfoApi;
|
|
109
111
|
if (options2.refreshTokenApi) refreshTokenApiFn = options2.refreshTokenApi;
|
|
112
|
+
if (options2.aiFillTrigger) aiFillTriggerRef.value = options2.aiFillTrigger;
|
|
113
|
+
if (options2.aiFillRequireDescription !== void 0)
|
|
114
|
+
aiFillRequireDescriptionRef.value = options2.aiFillRequireDescription;
|
|
110
115
|
},
|
|
111
116
|
// 已注册返回 undefined 是合法业务态不 throw
|
|
112
117
|
// v3 终锁 Δ8b:零参 facade(BR-1 ③ 终裁——core 对 UserInfo 不透明 + 拦截器无 info 源)
|
|
@@ -290,7 +295,10 @@ function createCoreBridge(options) {
|
|
|
290
295
|
if (!refreshTokenApiFn)
|
|
291
296
|
return Promise.reject(new Error(msg("refreshTokenApi")));
|
|
292
297
|
return refreshTokenApiFn(refreshToken);
|
|
293
|
-
}
|
|
298
|
+
},
|
|
299
|
+
// AI 填充触发组件槽位(gf9z3w):只读透出,消费方(FormMain)自渲染
|
|
300
|
+
aiFillTrigger: aiFillTriggerRef,
|
|
301
|
+
aiFillRequireDescription: aiFillRequireDescriptionRef
|
|
294
302
|
};
|
|
295
303
|
return bridgeInstance;
|
|
296
304
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./AppBody.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const AppBody = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const AppBody = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ca48e9a0"]]);
|
|
5
5
|
export {
|
|
6
6
|
AppBody as default
|
|
7
7
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, useCssVars, inject, ref, computed, provide, readonly, watch, resolveComponent, openBlock, createElementBlock, normalizeStyle, createElementVNode, createBlock, unref, withCtx, createVNode, createCommentVNode, KeepAlive, resolveDynamicComponent, renderSlot } from "vue";
|
|
1
|
+
import { defineComponent, useCssVars, inject, ref, computed, provide, readonly, onMounted, watch, resolveComponent, openBlock, createElementBlock, normalizeStyle, createElementVNode, createBlock, unref, withCtx, createVNode, createCommentVNode, KeepAlive, resolveDynamicComponent, renderSlot } from "vue";
|
|
2
2
|
import { ElAffix } from "element-plus";
|
|
3
3
|
import AppBreadcrumb from "./AppBreadcrumb.vue.mjs";
|
|
4
4
|
import { isKeepAliveRoute, keepAliveRouteKey } from "./keep-alive.mjs";
|
|
@@ -12,7 +12,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
12
12
|
},
|
|
13
13
|
setup(__props) {
|
|
14
14
|
useCssVars((_ctx) => ({
|
|
15
|
-
"
|
|
15
|
+
"ece8e1ac": contentViewHeight.value
|
|
16
16
|
}));
|
|
17
17
|
const appStore = inject(APP_LAYOUT_APP_STORE_KEY);
|
|
18
18
|
const bridge = inject(APP_LAYOUT_BRIDGE_KEY);
|
|
@@ -29,6 +29,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
29
29
|
const bodyShimPadding = computed(() => {
|
|
30
30
|
return appStore.bodyShimPadding;
|
|
31
31
|
});
|
|
32
|
+
onMounted(() => {
|
|
33
|
+
if (bodyShimPadding.value) {
|
|
34
|
+
console.warn(
|
|
35
|
+
`[dc-layout] APP_LAYOUT_BODY_CONFIG.shimPadding(当前 ${bodyShimPadding.value})已废弃且**不再影响任何渲染**。内容四周留白改由间距阶梯的外圈档(gap × 2)给出 —— 要调留白请改 APP_LAYOUT_GAP_CONFIG.size,一个旋钮按比例缩放「外圈 / 呼吸 / 模块 / 分段」四档。本字段将在下一个版本移除。`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
32
39
|
const bodyShimStyle = computed(() => {
|
|
33
40
|
return appStore.bodyShimStyle;
|
|
34
41
|
});
|
|
@@ -42,8 +49,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
42
49
|
left: appStore.bodyStyle.paddingLeft,
|
|
43
50
|
right: appStore.bodyStyle.paddingRight,
|
|
44
51
|
bottom: `calc(100vh - ${appStore.bodyStyle.paddingTop} - ${bodyShimStyle.value.minHeight})`,
|
|
45
|
-
//
|
|
46
|
-
|
|
52
|
+
// @deprecated huhyx7 起恒 0:shim 不再铺 padding,插槽也不需要复刻它的呼吸
|
|
53
|
+
// (插槽本就贴在 .app-body 的 padding 盒边缘,外圈档已给过呼吸)。
|
|
54
|
+
// 字段保留一个版本供下游过渡,[MUST NOT] 再拿它算任何几何。
|
|
55
|
+
shimPadding: 0
|
|
47
56
|
}));
|
|
48
57
|
provide(BODY_CONTENT_VIEWPORT_RECT, contentViewportRect);
|
|
49
58
|
provide(
|
|
@@ -51,7 +60,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
51
60
|
computed(() => appStore.contentViewportInset)
|
|
52
61
|
);
|
|
53
62
|
const contentViewHeight = computed(
|
|
54
|
-
() => `calc(${bodyShimStyle.value.minHeight} - ${showBreadcrumb.value && affixIsShow.value ? affixHeight.value : 0}px
|
|
63
|
+
() => `calc(${bodyShimStyle.value.minHeight} - ${showBreadcrumb.value && affixIsShow.value ? affixHeight.value : 0}px)`
|
|
55
64
|
);
|
|
56
65
|
const onAffixShow = (value) => {
|
|
57
66
|
affixIsShow.value = value;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./AppHeader.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const AppHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const AppHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9ff1c70b"]]);
|
|
5
5
|
export {
|
|
6
6
|
AppHeader as default
|
|
7
7
|
};
|
|
@@ -3,6 +3,7 @@ import { useRouter } from "vue-router";
|
|
|
3
3
|
import { ElIcon } from "element-plus";
|
|
4
4
|
import BadgeMark from "../display/BadgeMark.vue.mjs";
|
|
5
5
|
import { APP_LAYOUT_APP_STORE_KEY, APP_LAYOUT_BRIDGE_KEY } from "../../inject/key.mjs";
|
|
6
|
+
import { domScrollIntoViewport } from "../../utils/dom.mjs";
|
|
6
7
|
const _hoisted_1 = { class: "app-header-shim" };
|
|
7
8
|
const _hoisted_2 = ["name", "onClick"];
|
|
8
9
|
const _hoisted_3 = { class: "app-header-right" };
|
|
@@ -17,7 +18,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
17
18
|
},
|
|
18
19
|
setup(__props) {
|
|
19
20
|
useCssVars((_ctx) => ({
|
|
20
|
-
"
|
|
21
|
+
"v0b60c1aa": themeColors.value.primaryColor
|
|
21
22
|
}));
|
|
22
23
|
const props = __props;
|
|
23
24
|
const appStore = inject(APP_LAYOUT_APP_STORE_KEY);
|
|
@@ -47,10 +48,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
47
48
|
(n) => {
|
|
48
49
|
if (n) {
|
|
49
50
|
nextTick(() => {
|
|
50
|
-
var _a
|
|
51
|
-
(
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
domScrollIntoViewport(
|
|
53
|
+
(_a = document.querySelector(`.${moduleBoxCls}`)) == null ? void 0 : _a.querySelector(`[name="${n}"]`),
|
|
54
|
+
{ behavior: "smooth" }
|
|
55
|
+
);
|
|
54
56
|
});
|
|
55
57
|
}
|
|
56
58
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./AppLayout.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const AppLayout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const AppLayout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-140fec15"]]);
|
|
5
5
|
export {
|
|
6
6
|
AppLayout as default
|
|
7
7
|
};
|
|
@@ -130,7 +130,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
130
130
|
left: "0",
|
|
131
131
|
right: "0",
|
|
132
132
|
height: `calc(${props.appStore.headerStyle.top} + ${props.appStore.headerStyle.height})`,
|
|
133
|
-
background: props.bridge.
|
|
133
|
+
background: props.bridge.APP_LAYOUT_BODY_CONFIG.background ?? "var(--el-bg-color-page, #f2f3f5)",
|
|
134
|
+
backgroundAttachment: "fixed",
|
|
134
135
|
zIndex: 1,
|
|
135
136
|
pointerEvents: "none"
|
|
136
137
|
}));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./AppPage.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const AppPage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const AppPage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d875cc1d"]]);
|
|
5
5
|
export {
|
|
6
6
|
AppPage as default
|
|
7
7
|
};
|
|
@@ -4,8 +4,10 @@ import _sfc_main$1 from "../modal/ModalShelf.vue.mjs";
|
|
|
4
4
|
import _sfc_main$2 from "../display/WatchSize.vue.mjs";
|
|
5
5
|
import { computeAppPageReducedViewportHeight, computeAppPageReducedViewportWidth, computeAppPageContentInset, computeAppPageSlotStyles, computeAppPageSlotShimStyles } from "./app-page-geometry.mjs";
|
|
6
6
|
import { useAppPageContentBox } from "./use-content-box.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { APP_PAGE_LIST_LAYOUT_RECOMMENDED } from "./app-page-recommended.mjs";
|
|
8
|
+
import { BODY_CONTENT_VIEWPORT_RECT, APP_LAYOUT_BRIDGE_KEY, SCOPE_VIEWPORT_MAX_HEIGHT, BODY_CONTENT_VIEWPORT_HEIGHT, BODY_CONTENT_VIEWPORT_INSET, APP_PAGE_CONTENT_INSET } from "../../inject/key.mjs";
|
|
8
9
|
import { useActivated } from "../../hooks/activated.mjs";
|
|
10
|
+
import { gapScaleValue } from "../../utils/gap-scale.mjs";
|
|
9
11
|
import { SlotRegion } from "../../config/slot-region.mjs";
|
|
10
12
|
const _hoisted_1 = ["data-dc-slot"];
|
|
11
13
|
const _hoisted_2 = ["data-dc-slot"];
|
|
@@ -24,10 +26,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
24
26
|
nextViewportMaxHeight: { default: `var(--app-viewport-max-height)` },
|
|
25
27
|
background: {},
|
|
26
28
|
gap: { default: 8 },
|
|
27
|
-
topBg: {},
|
|
28
|
-
bottomBg: {},
|
|
29
|
-
leftBg: {},
|
|
30
|
-
rightBg: {},
|
|
29
|
+
topBg: { default: "var(--el-bg-color)" },
|
|
30
|
+
bottomBg: { default: "var(--el-bg-color)" },
|
|
31
|
+
leftBg: { default: "var(--el-bg-color)" },
|
|
32
|
+
rightBg: { default: "var(--el-bg-color)" },
|
|
31
33
|
topObserveResize: { type: Boolean, default: false },
|
|
32
34
|
bottomObserveResize: { type: Boolean, default: false },
|
|
33
35
|
leftObserveResize: { type: Boolean, default: false },
|
|
@@ -37,13 +39,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
37
39
|
},
|
|
38
40
|
setup(__props) {
|
|
39
41
|
useCssVars((_ctx) => ({
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
42
|
+
"b28df728": pageCssVars.value.top,
|
|
43
|
+
"d4142898": pageCssVars.value.bottom,
|
|
44
|
+
"v3063bfd0": pageCssVars.value.left,
|
|
45
|
+
"v472ac91a": pageCssVars.value.right,
|
|
46
|
+
"v469df1c6": pageCssVars.value.width,
|
|
47
|
+
"c0be3aa0": pageCssVars.value.height,
|
|
48
|
+
"v52d7da39": props.nextViewportMaxHeight
|
|
47
49
|
}));
|
|
48
50
|
const props = __props;
|
|
49
51
|
const style = computed(() => {
|
|
@@ -55,13 +57,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
55
57
|
};
|
|
56
58
|
});
|
|
57
59
|
const slots = useSlots();
|
|
58
|
-
const listLayoutRecommended =
|
|
59
|
-
customView: true,
|
|
60
|
-
tableMainProps: {
|
|
61
|
-
pageLayout: "prev, pager, next",
|
|
62
|
-
paginationBackground: false
|
|
63
|
-
}
|
|
64
|
-
};
|
|
60
|
+
const listLayoutRecommended = APP_PAGE_LIST_LAYOUT_RECOMMENDED;
|
|
65
61
|
const hasTop = computed(() => !!slots.top);
|
|
66
62
|
const hasBottom = computed(() => !!slots.bottom);
|
|
67
63
|
const hasLeft = computed(() => !!slots.left);
|
|
@@ -121,10 +117,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
121
117
|
const r = injectedRect == null ? void 0 : injectedRect.value;
|
|
122
118
|
return r ? { top: r.top, left: r.left, right: r.right, bottom: r.bottom } : fallbackRect.value;
|
|
123
119
|
});
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
const layoutBridge = inject(APP_LAYOUT_BRIDGE_KEY, void 0);
|
|
121
|
+
const gapBase = computed(
|
|
122
|
+
() => props.gap ?? (layoutBridge == null ? void 0 : layoutBridge.APP_LAYOUT_GAP_CONFIG.size) ?? 8
|
|
123
|
+
);
|
|
124
|
+
const outerGap = computed(
|
|
125
|
+
() => gapScaleValue(gapBase.value, "outer", layoutBridge == null ? void 0 : layoutBridge.themeDensity.value)
|
|
126
|
+
);
|
|
128
127
|
const slotSizes = computed(() => ({
|
|
129
128
|
topH: topH.value,
|
|
130
129
|
bottomH: bottomH.value,
|
|
@@ -136,7 +135,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
136
135
|
() => computeAppPageReducedViewportHeight(
|
|
137
136
|
(parentScope == null ? void 0 : parentScope.viewportMaxHeight.value) ?? 0,
|
|
138
137
|
slotSizes.value,
|
|
139
|
-
shimPadding
|
|
138
|
+
// 🔴 [MUST] outerGap,[MUST NOT] shimPadding —— 后者 huhyx7 起恒 0
|
|
139
|
+
// (AppBody 写死 `shimPadding: 0`),传它等于「让位不含 gap」,可用高多算
|
|
140
|
+
// 一个外圈档 × 槽数 → refine 内容压槽。同文件 width 一路传的就是 outerGap,
|
|
141
|
+
// 此处是漏改(形参名早已是 outerGap)。
|
|
142
|
+
outerGap.value
|
|
140
143
|
)
|
|
141
144
|
);
|
|
142
145
|
provide(BODY_CONTENT_VIEWPORT_HEIGHT, reducedViewportHeight);
|
|
@@ -168,7 +171,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
168
171
|
() => computeAppPageReducedViewportWidth(
|
|
169
172
|
pageBoxWidth.value,
|
|
170
173
|
slotSizes.value,
|
|
171
|
-
|
|
174
|
+
outerGap.value
|
|
172
175
|
)
|
|
173
176
|
);
|
|
174
177
|
const { contentGutter } = useAppPageContentBox({
|
|
@@ -208,10 +211,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
208
211
|
};
|
|
209
212
|
});
|
|
210
213
|
const slotStyles = computed(
|
|
211
|
-
() => computeAppPageSlotStyles(rectInset.value,
|
|
214
|
+
() => computeAppPageSlotStyles(rectInset.value, slotSizes.value, outerGap.value)
|
|
212
215
|
);
|
|
213
216
|
const shimStyles = computed(() => {
|
|
214
|
-
const base = computeAppPageSlotShimStyles(
|
|
217
|
+
const base = computeAppPageSlotShimStyles();
|
|
215
218
|
return {
|
|
216
219
|
top: { ...base.top, background: props.topBg },
|
|
217
220
|
bottom: { ...base.bottom, background: props.bottomBg },
|
|
@@ -220,10 +223,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
220
223
|
};
|
|
221
224
|
});
|
|
222
225
|
const shimStyle = computed(() => {
|
|
223
|
-
const
|
|
226
|
+
const o = outerGap.value;
|
|
224
227
|
const g = contentGutter.value;
|
|
225
|
-
const inset = (v) => `${
|
|
226
|
-
const insetX = (v) => `${
|
|
228
|
+
const inset = (v) => `${v ? v + o : 0}px`;
|
|
229
|
+
const insetX = (v) => `${(v ? v + o : 0) + g}px`;
|
|
227
230
|
return {
|
|
228
231
|
paddingTop: inset(topH.value),
|
|
229
232
|
paddingBottom: inset(bottomH.value),
|
|
@@ -302,7 +305,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
302
305
|
style: normalizeStyle(shimStyles.value.left),
|
|
303
306
|
"data-dc-slot": unref(SlotRegion).AppPage_Left
|
|
304
307
|
}, [
|
|
305
|
-
renderSlot(_ctx.$slots, "left", { listLayoutRecommended }, void 0, true)
|
|
308
|
+
renderSlot(_ctx.$slots, "left", { listLayoutRecommended: unref(listLayoutRecommended) }, void 0, true)
|
|
306
309
|
], 12, _hoisted_4)
|
|
307
310
|
]),
|
|
308
311
|
_: 3
|
|
@@ -321,7 +324,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
321
324
|
style: normalizeStyle(shimStyles.value.right),
|
|
322
325
|
"data-dc-slot": unref(SlotRegion).AppPage_Right
|
|
323
326
|
}, [
|
|
324
|
-
renderSlot(_ctx.$slots, "right", { listLayoutRecommended }, void 0, true)
|
|
327
|
+
renderSlot(_ctx.$slots, "right", { listLayoutRecommended: unref(listLayoutRecommended) }, void 0, true)
|
|
325
328
|
], 12, _hoisted_5)
|
|
326
329
|
]),
|
|
327
330
|
_: 3
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
function appPageSlotInset(v,
|
|
2
|
-
return v ?
|
|
1
|
+
function appPageSlotInset(v, outerGap) {
|
|
2
|
+
return v ? v + outerGap : 0;
|
|
3
3
|
}
|
|
4
|
-
function computeAppPageReducedViewportHeight(bodyViewportHeight, slotSizes,
|
|
4
|
+
function computeAppPageReducedViewportHeight(bodyViewportHeight, slotSizes, outerGap) {
|
|
5
5
|
return Math.max(
|
|
6
6
|
0,
|
|
7
|
-
bodyViewportHeight - appPageSlotInset(slotSizes.topH,
|
|
7
|
+
bodyViewportHeight - appPageSlotInset(slotSizes.topH, outerGap) - appPageSlotInset(slotSizes.bottomH, outerGap)
|
|
8
8
|
);
|
|
9
9
|
}
|
|
10
|
-
function computeAppPageReducedViewportWidth(pageBoxWidth, slotSizes,
|
|
10
|
+
function computeAppPageReducedViewportWidth(pageBoxWidth, slotSizes, outerGap) {
|
|
11
11
|
return Math.max(
|
|
12
12
|
0,
|
|
13
|
-
pageBoxWidth - appPageSlotInset(slotSizes.leftW,
|
|
13
|
+
pageBoxWidth - appPageSlotInset(slotSizes.leftW, outerGap) - appPageSlotInset(slotSizes.rightW, outerGap)
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
function computeAppPageContentInset(appInset, slotSizes, gap) {
|
|
@@ -23,10 +23,14 @@ function computeAppPageContentInset(appInset, slotSizes, gap) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
const APP_PAGE_SLOT_Z_INDEX = 1;
|
|
26
|
-
function computeAppPageSlotStyles(rect,
|
|
26
|
+
function computeAppPageSlotStyles(rect, slotSizes, outerGap) {
|
|
27
27
|
const z = APP_PAGE_SLOT_Z_INDEX;
|
|
28
|
-
const
|
|
29
|
-
const
|
|
28
|
+
const { topH, bottomH } = slotSizes;
|
|
29
|
+
const midTop = `calc(${rect.top} + ${appPageSlotInset(topH, outerGap)}px)`;
|
|
30
|
+
const midBottom = `calc(${rect.bottom} + ${appPageSlotInset(
|
|
31
|
+
bottomH,
|
|
32
|
+
outerGap
|
|
33
|
+
)}px)`;
|
|
30
34
|
return {
|
|
31
35
|
top: {
|
|
32
36
|
position: "fixed",
|
|
@@ -58,13 +62,9 @@ function computeAppPageSlotStyles(rect, topH, bottomH) {
|
|
|
58
62
|
}
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
|
-
function computeAppPageSlotShimStyles(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
bottom: { padding: `${gap}px ${sp}px ${sp}px ${sp}px` },
|
|
65
|
-
left: { padding: `0 ${gap}px 0 ${sp}px` },
|
|
66
|
-
right: { padding: `0 ${sp}px 0 ${gap}px` }
|
|
67
|
-
};
|
|
65
|
+
function computeAppPageSlotShimStyles() {
|
|
66
|
+
const none = { padding: "0" };
|
|
67
|
+
return { top: none, bottom: none, left: none, right: none };
|
|
68
68
|
}
|
|
69
69
|
export {
|
|
70
70
|
APP_PAGE_SLOT_Z_INDEX,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./DataGridView.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const DataGridView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const DataGridView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-90c0ccf6"]]);
|
|
5
5
|
export {
|
|
6
6
|
DataGridView as default
|
|
7
7
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { defineComponent, useModel, shallowRef, ref, computed, onMounted, onActivated, watch, openBlock, createElementBlock,
|
|
1
|
+
import { defineComponent, useCssVars, unref, useModel, shallowRef, ref, computed, onMounted, onActivated, watch, openBlock, createElementBlock, normalizeClass, createBlock, withCtx, createVNode, mergeProps, createCommentVNode, createElementVNode, toDisplayString, createTextVNode, normalizeStyle, Fragment, renderList, renderSlot, resolveDynamicComponent, mergeModels } from "vue";
|
|
2
2
|
import { ElButton } from "element-plus";
|
|
3
3
|
import TableToolbar from "../table/TableToolbar.vue.mjs";
|
|
4
4
|
import _sfc_main$2 from "../table/TableEmpty.vue.mjs";
|
|
5
5
|
import TableSkeleton from "../table/TableSkeleton.vue.mjs";
|
|
6
|
+
import { useSurface } from "../../hooks/use-surface.mjs";
|
|
6
7
|
import _sfc_main$1 from "../display/WatchSize.vue.mjs";
|
|
7
8
|
import _cloneDeep from "lodash/cloneDeep";
|
|
8
9
|
import _set from "lodash/set";
|
|
@@ -15,12 +16,11 @@ import { useBreakpoint } from "../../hooks/use-breakpoint.mjs";
|
|
|
15
16
|
import { pickExportColumns } from "../../utils/export.mjs";
|
|
16
17
|
import { useChannelViewportHeight } from "../../hooks/use-channel-viewport-height.mjs";
|
|
17
18
|
import { APP_API_LIST_MODEL_KEY_CONFIG } from "../../config/list-model.mjs";
|
|
18
|
-
const _hoisted_1 =
|
|
19
|
-
const _hoisted_2 =
|
|
20
|
-
const _hoisted_3 = { class: "data-grid-
|
|
21
|
-
const _hoisted_4 = { class: "data-grid-view__field-
|
|
22
|
-
const _hoisted_5 = {
|
|
23
|
-
const _hoisted_6 = {
|
|
19
|
+
const _hoisted_1 = ["onClick"];
|
|
20
|
+
const _hoisted_2 = { class: "data-grid-view__card" };
|
|
21
|
+
const _hoisted_3 = { class: "data-grid-view__field-label" };
|
|
22
|
+
const _hoisted_4 = { class: "data-grid-view__field-value" };
|
|
23
|
+
const _hoisted_5 = {
|
|
24
24
|
key: 0,
|
|
25
25
|
class: "data-grid-view__empty-error"
|
|
26
26
|
};
|
|
@@ -33,6 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
33
33
|
query: {},
|
|
34
34
|
pageSizeInit: { default: 20 },
|
|
35
35
|
gridColumns: { default: 4 },
|
|
36
|
+
surface: { type: Boolean, default: void 0 },
|
|
36
37
|
maxHeight: { default: "100vh" },
|
|
37
38
|
refine: { type: Boolean, default: true },
|
|
38
39
|
refineReduceHeight: { default: 0 },
|
|
@@ -59,6 +60,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
60
|
}),
|
|
60
61
|
emits: /* @__PURE__ */ mergeModels(["pageChange", "pageSizeChange", "dataChange", "selectionChange", "loadingChange", "pageInfoChange"], ["update:isAutoRefresh", "update:refreshInterval", "update:activeId", "update:activeData"]),
|
|
61
62
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
63
|
+
useCssVars((_ctx) => ({
|
|
64
|
+
"c829655a": unref(surfacePadCss)
|
|
65
|
+
}));
|
|
62
66
|
const props = __props;
|
|
63
67
|
const emits = __emit;
|
|
64
68
|
const isAutoRefresh = useModel(__props, "isAutoRefresh");
|
|
@@ -305,22 +309,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
305
309
|
toolbarHeight.value = h;
|
|
306
310
|
};
|
|
307
311
|
const { viewportHeightFinal } = useChannelViewportHeight(props);
|
|
312
|
+
const { surfaceActive, surfacePad, surfacePadCss } = useSurface(() => props);
|
|
308
313
|
const toolbarHeightAdjust = computed(
|
|
309
314
|
() => props.showToolbar ? toolbarHeight.value : 0
|
|
310
315
|
);
|
|
311
316
|
const rawAvailableHeight = computed(() => {
|
|
317
|
+
const pad = surfacePad.value * 2;
|
|
312
318
|
if (typeof props.maxHeight === "number") {
|
|
313
|
-
return props.maxHeight - toolbarHeightAdjust.value;
|
|
319
|
+
return props.maxHeight - pad - toolbarHeightAdjust.value;
|
|
314
320
|
}
|
|
315
321
|
if (props.refine) {
|
|
316
|
-
return viewportHeightFinal.value - toolbarHeightAdjust.value - props.refineReduceHeight;
|
|
322
|
+
return viewportHeightFinal.value - pad - toolbarHeightAdjust.value - props.refineReduceHeight;
|
|
317
323
|
}
|
|
318
324
|
return props.maxHeight;
|
|
319
325
|
});
|
|
326
|
+
const hasHeightSource = computed(
|
|
327
|
+
() => props.maxHeight !== void 0 || viewportHeightFinal.value > 0
|
|
328
|
+
);
|
|
320
329
|
const tableMaxHeight = computed(() => {
|
|
321
330
|
const raw = rawAvailableHeight.value;
|
|
322
331
|
if (raw === void 0) return void 0;
|
|
323
|
-
|
|
332
|
+
if (typeof raw !== "number") return raw;
|
|
333
|
+
return hasHeightSource.value ? Math.max(raw, 0) : Math.max(raw, props.dataViewMaxHeightMinValue);
|
|
324
334
|
});
|
|
325
335
|
const skeletonMaxHeight = computed(
|
|
326
336
|
() => typeof tableMaxHeight.value === "number" ? tableMaxHeight.value : void 0
|
|
@@ -361,7 +371,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
361
371
|
emits("loadingChange", n);
|
|
362
372
|
});
|
|
363
373
|
return (_ctx, _cache) => {
|
|
364
|
-
return openBlock(), createElementBlock("div",
|
|
374
|
+
return openBlock(), createElementBlock("div", {
|
|
375
|
+
class: normalizeClass(["dc-data-grid-view data-grid-view", { "data-grid-view_surface": unref(surfaceActive) }])
|
|
376
|
+
}, [
|
|
365
377
|
__props.showToolbar ? (openBlock(), createBlock(unref(_sfc_main$1), {
|
|
366
378
|
key: 0,
|
|
367
379
|
class: "dc-data-grid-view__toolbar",
|
|
@@ -416,14 +428,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
416
428
|
onClick: ($event) => unref(setActive)(row)
|
|
417
429
|
}, [
|
|
418
430
|
renderSlot(_ctx.$slots, "custom-view-item", mergeProps({ ref_for: true }, assertItemScope(row, index * gridColumnsFinal.value + colIndex)), () => [
|
|
419
|
-
createElementVNode("div",
|
|
431
|
+
createElementVNode("div", _hoisted_2, [
|
|
420
432
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
|
|
421
433
|
return openBlock(), createElementBlock("div", {
|
|
422
434
|
key: column.prop ?? column.type,
|
|
423
435
|
class: "data-grid-view__field"
|
|
424
436
|
}, [
|
|
425
|
-
createElementVNode("span",
|
|
426
|
-
createElementVNode("span",
|
|
437
|
+
createElementVNode("span", _hoisted_3, toDisplayString(column.label ?? column.prop) + ":", 1),
|
|
438
|
+
createElementVNode("span", _hoisted_4, [
|
|
427
439
|
(openBlock(), createBlock(resolveDynamicComponent(unref(fieldComponentMap)[fieldKeyOf(column)]), {
|
|
428
440
|
row,
|
|
429
441
|
index: index * gridColumnsFinal.value + colIndex,
|
|
@@ -435,12 +447,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
435
447
|
}), 128))
|
|
436
448
|
])
|
|
437
449
|
], true)
|
|
438
|
-
], 10,
|
|
450
|
+
], 10, _hoisted_1);
|
|
439
451
|
}), 128))
|
|
440
452
|
], 4)
|
|
441
453
|
]),
|
|
442
454
|
empty: withCtx(() => [
|
|
443
|
-
error.value && !store.value.length ? (openBlock(), createElementBlock("div",
|
|
455
|
+
error.value && !store.value.length ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
444
456
|
createElementVNode("span", null, toDisplayString(errorText.value), 1),
|
|
445
457
|
createVNode(unref(ElButton), {
|
|
446
458
|
size: "small",
|
|
@@ -459,7 +471,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
459
471
|
]),
|
|
460
472
|
_: 3
|
|
461
473
|
}, 16, ["data", "loading", "loading-more", "error", "finished", "max-height"]))
|
|
462
|
-
]);
|
|
474
|
+
], 2);
|
|
463
475
|
};
|
|
464
476
|
}
|
|
465
477
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./DataListView.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const DataListView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const DataListView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0d316a42"]]);
|
|
5
5
|
export {
|
|
6
6
|
DataListView as default
|
|
7
7
|
};
|
|
@@ -4,6 +4,7 @@ import DataListViewItem from "./DataListViewItem.vue.mjs";
|
|
|
4
4
|
import { createDataListViewInstance } from "./utils.mjs";
|
|
5
5
|
import { useDataViewFieldMap } from "./use-data-view-field-map.mjs";
|
|
6
6
|
import { useActiveRecord, activeRecordValueOf } from "../../hooks/use-active-record.mjs";
|
|
7
|
+
import { useActiveScroll } from "./use-active-scroll.mjs";
|
|
7
8
|
const _hoisted_1 = {
|
|
8
9
|
key: 1,
|
|
9
10
|
class: "data-list-view-empty"
|
|
@@ -11,6 +12,7 @@ const _hoisted_1 = {
|
|
|
11
12
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
12
13
|
__name: "DataListView",
|
|
13
14
|
props: /* @__PURE__ */ mergeModels({
|
|
15
|
+
activeScroll: { type: Boolean, default: true },
|
|
14
16
|
data: {},
|
|
15
17
|
rowKey: {},
|
|
16
18
|
columns: {},
|
|
@@ -45,6 +47,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
45
47
|
});
|
|
46
48
|
const activeId = useModel(__props, "activeId");
|
|
47
49
|
const activeData = useModel(__props, "activeData");
|
|
50
|
+
const listRoot = ref();
|
|
48
51
|
const { isActive, setActive } = useActiveRecord({
|
|
49
52
|
data: () => props.data,
|
|
50
53
|
// 出口值保原始类型(数字 id 出数字);比对由 hook 内部 String 归一,与渲染用的 keyOf 不冲突
|
|
@@ -53,6 +56,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
53
56
|
activeData,
|
|
54
57
|
name: "DataListView"
|
|
55
58
|
});
|
|
59
|
+
useActiveScroll({
|
|
60
|
+
enabled: () => props.activeScroll,
|
|
61
|
+
activeId,
|
|
62
|
+
container: () => listRoot.value
|
|
63
|
+
});
|
|
56
64
|
const selectedKeys = ref(/* @__PURE__ */ new Set());
|
|
57
65
|
const selectAll = computed(() => selectedKeys.value.size === props.data.length);
|
|
58
66
|
const isSelected = (row) => props.selectable && selectedKeys.value.has(keyOf(row));
|
|
@@ -98,6 +106,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
98
106
|
);
|
|
99
107
|
return (_ctx, _cache) => {
|
|
100
108
|
return openBlock(), createElementBlock("div", {
|
|
109
|
+
ref_key: "listRoot",
|
|
110
|
+
ref: listRoot,
|
|
101
111
|
class: "data-list-view",
|
|
102
112
|
style: normalizeStyle(containerStyle.value)
|
|
103
113
|
}, [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./InfiniteListView.vue2.mjs";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
-
const InfiniteListView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const InfiniteListView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6539caa4"]]);
|
|
5
5
|
export {
|
|
6
6
|
InfiniteListView as default
|
|
7
7
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, watch, nextTick, openBlock, createElementBlock,
|
|
1
|
+
import { defineComponent, useCssVars, unref, ref, computed, watch, nextTick, openBlock, createElementBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, Fragment, renderList, renderSlot, createVNode } from "vue";
|
|
2
2
|
import { ElEmpty } from "element-plus";
|
|
3
3
|
import { useVirtualizer } from "@tanstack/vue-virtual";
|
|
4
|
+
import { useSurface } from "../../hooks/use-surface.mjs";
|
|
4
5
|
import { usePullRefresh } from "./use-pull-refresh.mjs";
|
|
5
6
|
import { useActivated } from "../../hooks/activated.mjs";
|
|
6
7
|
const _hoisted_1 = ["data-index"];
|
|
@@ -29,15 +30,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
29
30
|
errorText: { default: "加载失败,点击重试" },
|
|
30
31
|
estimateSize: { default: 200 },
|
|
31
32
|
overscan: { default: 5 },
|
|
33
|
+
surface: { type: Boolean, default: void 0 },
|
|
32
34
|
maxHeight: { default: void 0 },
|
|
33
35
|
pullRefresh: { type: Boolean, default: false }
|
|
34
36
|
},
|
|
35
37
|
emits: ["loadMore", "retry", "refresh"],
|
|
36
38
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
39
|
+
useCssVars((_ctx) => ({
|
|
40
|
+
"v0d4fd951": unref(surfacePadCss)
|
|
41
|
+
}));
|
|
37
42
|
const props = __props;
|
|
38
43
|
const emits = __emit;
|
|
39
44
|
const scrollContainer = ref();
|
|
40
45
|
const sentinel = ref();
|
|
46
|
+
const { surfaceActive, surfacePadCss } = useSurface(() => props);
|
|
41
47
|
const containerStyle = computed(
|
|
42
48
|
() => props.maxHeight ? {
|
|
43
49
|
maxHeight: typeof props.maxHeight === "number" ? `${props.maxHeight}px` : props.maxHeight,
|
|
@@ -125,7 +131,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
125
131
|
return openBlock(), createElementBlock("div", {
|
|
126
132
|
ref_key: "scrollContainer",
|
|
127
133
|
ref: scrollContainer,
|
|
128
|
-
class: "dc-infinite-list-view infinite-list-view",
|
|
134
|
+
class: normalizeClass(["dc-infinite-list-view infinite-list-view", { "infinite-list-view_surface": unref(surfaceActive) }]),
|
|
129
135
|
style: normalizeStyle(containerStyle.value),
|
|
130
136
|
onTouchstartPassive: _cache[0] || (_cache[0] = //@ts-ignore
|
|
131
137
|
(...args) => unref(onTouchStart) && unref(onTouchStart)(...args)),
|
|
@@ -196,7 +202,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
196
202
|
createVNode(unref(ElEmpty))
|
|
197
203
|
], true)
|
|
198
204
|
]))
|
|
199
|
-
],
|
|
205
|
+
], 38);
|
|
200
206
|
};
|
|
201
207
|
}
|
|
202
208
|
});
|