@ditari/bsui 5.1.12 → 5.1.13

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.
Files changed (63) hide show
  1. package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
  2. package/dist/cjs/components/index.cjs +2 -0
  3. package/dist/cjs/components/index.cjs.map +1 -1
  4. package/dist/cjs/components/layout/AppLayout.cjs +55 -0
  5. package/dist/cjs/components/layout/AppLayout.cjs.map +1 -0
  6. package/dist/cjs/components/layout/List.cjs +20 -1
  7. package/dist/cjs/components/layout/List.cjs.map +1 -1
  8. package/dist/cjs/components/layout/components/mobile/MobileList.cjs +64 -0
  9. package/dist/cjs/components/layout/components/mobile/MobileList.cjs.map +1 -0
  10. package/dist/cjs/components/layout/index.cjs +8 -0
  11. package/dist/cjs/components/layout/index.cjs.map +1 -1
  12. package/dist/cjs/components/layout/style.cjs +19 -0
  13. package/dist/cjs/components/layout/style.cjs.map +1 -0
  14. package/dist/cjs/components/select/Select.vue2.cjs.map +1 -1
  15. package/dist/cjs/components/table/Table.cjs +1 -1
  16. package/dist/cjs/components/table/Table.cjs.map +1 -1
  17. package/dist/cjs/components/table-form/TableForm.cjs +6 -2
  18. package/dist/cjs/components/table-form/TableForm.cjs.map +1 -1
  19. package/dist/cjs/components/table-form/TableFormItem.cjs +2 -1
  20. package/dist/cjs/components/table-form/TableFormItem.cjs.map +1 -1
  21. package/dist/cjs/components/table-form/interface.cjs +4 -0
  22. package/dist/cjs/components/table-form/interface.cjs.map +1 -1
  23. package/dist/cjs/index.cjs +2 -0
  24. package/dist/cjs/index.cjs.map +1 -1
  25. package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
  26. package/dist/esm/components/index.mjs +1 -0
  27. package/dist/esm/components/index.mjs.map +1 -1
  28. package/dist/esm/components/layout/AppLayout.mjs +51 -0
  29. package/dist/esm/components/layout/AppLayout.mjs.map +1 -0
  30. package/dist/esm/components/layout/List.mjs +21 -2
  31. package/dist/esm/components/layout/List.mjs.map +1 -1
  32. package/dist/esm/components/layout/components/mobile/MobileList.mjs +60 -0
  33. package/dist/esm/components/layout/components/mobile/MobileList.mjs.map +1 -0
  34. package/dist/esm/components/layout/index.mjs +8 -1
  35. package/dist/esm/components/layout/index.mjs.map +1 -1
  36. package/dist/esm/components/layout/style.mjs +17 -0
  37. package/dist/esm/components/layout/style.mjs.map +1 -0
  38. package/dist/esm/components/select/Select.vue2.mjs.map +1 -1
  39. package/dist/esm/components/table/Table.mjs +1 -1
  40. package/dist/esm/components/table/Table.mjs.map +1 -1
  41. package/dist/esm/components/table-form/TableForm.mjs +6 -2
  42. package/dist/esm/components/table-form/TableForm.mjs.map +1 -1
  43. package/dist/esm/components/table-form/TableFormItem.mjs +2 -1
  44. package/dist/esm/components/table-form/TableFormItem.mjs.map +1 -1
  45. package/dist/esm/components/table-form/interface.mjs +4 -0
  46. package/dist/esm/components/table-form/interface.mjs.map +1 -1
  47. package/dist/esm/index.mjs +1 -0
  48. package/dist/esm/index.mjs.map +1 -1
  49. package/dist/types/components/layout/AppLayout.d.ts +3 -0
  50. package/dist/types/components/layout/AppLayout.d.ts.map +1 -0
  51. package/dist/types/components/layout/List.d.ts +1 -1
  52. package/dist/types/components/layout/List.d.ts.map +1 -1
  53. package/dist/types/components/layout/components/mobile/MobileList.d.ts +3 -0
  54. package/dist/types/components/layout/components/mobile/MobileList.d.ts.map +1 -0
  55. package/dist/types/components/layout/index.d.ts +2 -1
  56. package/dist/types/components/layout/index.d.ts.map +1 -1
  57. package/dist/types/components/layout/style.d.ts +5 -0
  58. package/dist/types/components/layout/style.d.ts.map +1 -0
  59. package/dist/types/components/table-form/TableFormItem.d.ts +9 -0
  60. package/dist/types/components/table-form/TableFormItem.d.ts.map +1 -1
  61. package/dist/types/components/table-form/interface.d.ts +4 -0
  62. package/dist/types/components/table-form/interface.d.ts.map +1 -1
  63. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"List.mjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n if (!route.name && !route.meta.keepAlive) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n {slots.extra?.()}\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => useLayout();\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","meta","keepAlive","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left","_a","extra"],"mappings":"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"}
1
+ {"version":3,"file":"List.mjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport MobileList from \"./components/mobile/MobileList\";\r\nimport { useAppStore, useDeviceStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n if (!route.name && !route.meta.keepAlive) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n {slots.extra?.()}\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => {\r\n const deviceStore = useDeviceStore();\r\n // 使用 storeToRefs 解构出响应式引用\r\n const { isMobile, isTablet, isDesktop } =\r\n storeToRefs(deviceStore);\r\n\r\n if (isMobile.value) {\r\n return (\r\n <MobileList>\r\n {{\r\n table: () => slots.table?.()\r\n }}\r\n </MobileList>\r\n );\r\n }\r\n\r\n if (isDesktop.value || isTablet.value) {\r\n return useLayout();\r\n }\r\n };\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","meta","keepAlive","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left","_a","extra","deviceStore","useDeviceStore","isMobile","isTablet","isDesktop","MobileList"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { defineComponent, computed, createVNode } from 'vue';
2
+ import { useRoute } from 'vue-router';
3
+ import { css, cx } from '@emotion/css';
4
+ import { useDesign } from '../../../../hooks/useDesign.mjs';
5
+
6
+ "use strict";
7
+ function useStyle() {
8
+ return {
9
+ container: css`
10
+ height: 100%;
11
+ display: flex;
12
+ flex-direction: column;
13
+ background-color: red;
14
+ `,
15
+ header: css`
16
+ height: 44px;
17
+ background-color: blue;
18
+ `,
19
+ content: css`
20
+ flex: 1;
21
+ `
22
+ };
23
+ }
24
+ const DMobileList = /* @__PURE__ */ defineComponent({
25
+ name: "DMobileList",
26
+ setup(_, {
27
+ slots
28
+ }) {
29
+ const route = useRoute();
30
+ const title = computed(() => {
31
+ var _a;
32
+ return (_a = route.meta) == null ? void 0 : _a.title;
33
+ });
34
+ return () => {
35
+ const {
36
+ getPrefixCls
37
+ } = useDesign("mobile-list");
38
+ const styles = useStyle();
39
+ const tableContent = slots.table ? slots.table() : null;
40
+ let extractedProps = {};
41
+ if (tableContent) {
42
+ const tableVNode = tableContent.find((vnode) => typeof vnode.type === "object" || typeof vnode.type === "string");
43
+ if (tableVNode) {
44
+ extractedProps = tableVNode.props || {};
45
+ console.log("\u6210\u529F\u62FF\u5230 Table Props:", extractedProps);
46
+ }
47
+ }
48
+ return createVNode("div", {
49
+ "class": cx(getPrefixCls(), styles.container)
50
+ }, [createVNode("div", {
51
+ "class": cx(getPrefixCls("header"), styles.header)
52
+ }, [title.value]), createVNode("div", {
53
+ "class": cx(getPrefixCls("content"), styles.content)
54
+ }, [tableContent])]);
55
+ };
56
+ }
57
+ });
58
+
59
+ export { DMobileList as default };
60
+ //# sourceMappingURL=MobileList.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileList.mjs","sources":["../../../../../../src/components/layout/components/mobile/MobileList.tsx"],"sourcesContent":["import { computed, defineComponent } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { PageHeader } from \"ant-design-vue\";\r\n\r\nimport { css, cx } from \"@emotion/css\";\r\n\r\nimport { useDesign } from \"../../../../hooks/useDesign\";\r\n\r\nfunction useStyle() {\r\n return {\r\n container: css`\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: red;\r\n `,\r\n header: css`\r\n height: 44px;\r\n background-color: blue;\r\n `,\r\n content: css`\r\n flex: 1;\r\n `\r\n };\r\n}\r\nconst DMobileList = defineComponent({\r\n name: \"DMobileList\",\r\n setup(_, { slots }) {\r\n const route = useRoute();\r\n const title = computed(() => route.meta?.title);\r\n\r\n return () => {\r\n const { getPrefixCls } = useDesign(\"mobile-list\");\r\n const styles = useStyle();\r\n\r\n // --- 关键点 1: 只调用一次插槽函数 ---\r\n const tableContent = slots.table\r\n ? slots.table()\r\n : null;\r\n let extractedProps = {};\r\n\r\n // --- 关键点 2: 提取 Props 逻辑 ---\r\n if (tableContent) {\r\n // 过滤掉注释和空文本,找到真正的组件\r\n const tableVNode = tableContent.find(\r\n vnode =>\r\n typeof vnode.type === \"object\" ||\r\n typeof vnode.type === \"string\"\r\n );\r\n\r\n if (tableVNode) {\r\n extractedProps = tableVNode.props || {};\r\n console.log(\r\n \"成功拿到 Table Props:\",\r\n extractedProps\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <div class={cx(getPrefixCls(), styles.container)}>\r\n <div\r\n class={cx(\r\n getPrefixCls(\"header\"),\r\n styles.header\r\n )}\r\n >\r\n {title.value}\r\n </div>\r\n <div\r\n class={cx(\r\n getPrefixCls(\"content\"),\r\n styles.content\r\n )}\r\n >\r\n {/* --- 关键点 3: 直接渲染已经生成的 VNodes --- */}\r\n {tableContent}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport default DMobileList;\r\n"],"names":["useStyle","container","css","header","content","DMobileList","defineComponent","name","setup","_","slots","route","useRoute","title","computed","meta","getPrefixCls","useDesign","styles","tableContent","table","extractedProps","tableVNode","find","vnode","type","props","console","log","_createVNode","cx","value"],"mappings":";;;;;;AAQA,SAASA,QAAAA,GAAW;AAClB,EAAA,OAAO;AAAA,IACLC,SAAAA,EAAWC,GAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAAAA,CAAAA;AAAAA,IAMXC,MAAAA,EAAQD,GAAAA;AAAAA;AAAAA;AAAAA,IAAAA,CAAAA;AAAAA,IAIRE,OAAAA,EAASF,GAAAA;AAAAA;AAAAA,IAAAA;AAAAA,GAGX;AACF;AACA,MAAMG,8BAAcC,eAAAA,CAAgB;AAAA,EAClCC,IAAAA,EAAM,aAAA;AAAA,EACNC,MAAMC,CAAAA,EAAG;AAAA,IAAEC;AAAAA,GAAM,EAAG;AAClB,IAAA,MAAMC,QAAQC,QAAAA,EAAS;AACvB,IAAA,MAAMC,KAAAA,GAAQC,SAAS,MAAA;AA7B3B,MAAA,IAAA,EAAA;AA6BiCH,MAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMI,SAANJ,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAYE,KAAAA;AAAAA,IAAAA,CAAK,CAAA;AAE9C,IAAA,OAAO,MAAM;AACX,MAAA,MAAM;AAAA,QAAEG;AAAAA,OAAa,GAAIC,UAAU,aAAa,CAAA;AAChD,MAAA,MAAMC,SAASlB,QAAAA,EAAS;AAGxB,MAAA,MAAMmB,YAAAA,GAAeT,KAAAA,CAAMU,KAAAA,GACvBV,KAAAA,CAAMU,OAAM,GACZ,IAAA;AACJ,MAAA,IAAIC,iBAAiB,EAAC;AAGtB,MAAA,IAAIF,YAAAA,EAAc;AAEhB,QAAA,MAAMG,UAAAA,GAAaH,YAAAA,CAAaI,IAAAA,CAC9BC,CAAAA,KAAAA,KACE,OAAOA,KAAAA,CAAMC,IAAAA,KAAS,QAAA,IACtB,OAAOD,KAAAA,CAAMC,IAAAA,KAAS,QAC1B,CAAA;AAEA,QAAA,IAAIH,UAAAA,EAAY;AACdD,UAAAA,cAAAA,GAAiBC,UAAAA,CAAWI,SAAS,EAAC;AACtCC,UAAAA,OAAAA,CAAQC,GAAAA,CACN,yCACAP,cACF,CAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,OAAAQ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,EAAAA,CAAGd,YAAAA,EAAa,EAAGE,OAAOjB,SAAS;AAAA,OAAC,EAAA,CAAA4B,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,SAErCC,EAAAA,CACLd,YAAAA,CAAa,QAAQ,CAAA,EACrBE,OAAOf,MACT;AAAA,SAAC,CAEAU,KAAAA,CAAMkB,KAAK,CAAA,CAAA,EAAAF,YAAA,KAAA,EAAA;AAAA,QAAA,SAGLC,EAAAA,CACLd,YAAAA,CAAa,SAAS,CAAA,EACtBE,OAAOd,OACT;AAAA,OAAC,EAAA,CAGAe,YAAY,CAAA,CAAA,CAAA,CAAA;AAAA,IAIrB,CAAA;AAAA,EACF;AACF,CAAC;;;;"}
@@ -1,3 +1,4 @@
1
+ import DAppLayout from './AppLayout.mjs';
1
2
  import list from './List.mjs';
2
3
  import show from './Show.mjs';
3
4
  import './Layout.vue.mjs';
@@ -21,6 +22,12 @@ _sfc_main.install = function(app) {
21
22
  app.component("DLayout", _sfc_main);
22
23
  return app;
23
24
  };
25
+ DAppLayout.install = (app) => {
26
+ app.component(DAppLayout.name, DAppLayout);
27
+ };
28
+ list.install = (app) => {
29
+ app.component(list.name, list);
30
+ };
24
31
 
25
- export { _sfc_main as Layout, list as List, show as Show };
32
+ export { DAppLayout as AppLayout, _sfc_main as Layout, list as List, show as Show };
26
33
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/components/layout/index.ts"],"sourcesContent":["import List from \"./List\";\r\nimport Show from \"./Show\";\r\nimport type { App } from \"vue\";\r\n\r\nimport Layout from \"./Layout.vue\";\r\n\r\nexport * from \"./AppContext\";\r\nexport * from \"./components\";\r\n\r\nList.install = function (app: App) {\r\n app.component(List.name!, List);\r\n return app;\r\n};\r\n\r\nShow.install = function (app: App) {\r\n app.component(Show.name!, Show);\r\n return app;\r\n};\r\nLayout.install = function (app: App) {\r\n app.component(\"DLayout\", Layout);\r\n return app;\r\n};\r\n\r\nexport { Layout, List, Show };\r\n"],"names":["List","Show","Layout"],"mappings":";;;;;;;;;;;AASAA,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AAEAC,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AACAC,SAAA,CAAO,OAAA,GAAU,SAAU,GAAA,EAAU;AACnC,EAAA,GAAA,CAAI,SAAA,CAAU,WAAWA,SAAM,CAAA;AAC/B,EAAA,OAAO,GAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/components/layout/index.ts"],"sourcesContent":["import AppLayout from \"./AppLayout\";\r\n// import List from \"./components/pc/List\";\r\n// import Show from \"./components/pc/Show\";\r\nimport type { App } from \"vue\";\r\nimport List from \"./List\";\r\nimport Show from \"./Show\";\r\nimport Layout from \"./Layout.vue\";\r\n\r\nexport * from \"./AppContext\";\r\nexport * from \"./components\";\r\n\r\nList.install = function (app: App) {\r\n app.component(List.name!, List);\r\n return app;\r\n};\r\n\r\nShow.install = function (app: App) {\r\n app.component(Show.name!, Show);\r\n return app;\r\n};\r\n\r\nLayout.install = function (app: App) {\r\n app.component(\"DLayout\", Layout);\r\n return app;\r\n};\r\n\r\nAppLayout.install = (app: App) => {\r\n app.component(AppLayout.name!, AppLayout);\r\n};\r\n\r\nList.install = (app: App) => {\r\n app.component(List.name!, List);\r\n};\r\n\r\nexport { AppLayout, Layout, List, Show };\r\n"],"names":["List","Show","Layout","AppLayout"],"mappings":";;;;;;;;;;;;AAWAA,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AAEAC,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AAEAC,SAAA,CAAO,OAAA,GAAU,SAAU,GAAA,EAAU;AACnC,EAAA,GAAA,CAAI,SAAA,CAAU,WAAWA,SAAM,CAAA;AAC/B,EAAA,OAAO,GAAA;AACT,CAAA;AAEAC,UAAA,CAAU,OAAA,GAAU,CAAC,GAAA,KAAa;AAChC,EAAA,GAAA,CAAI,SAAA,CAAUA,UAAA,CAAU,IAAA,EAAOA,UAAS,CAAA;AAC1C,CAAA;AAEAH,IAAA,CAAK,OAAA,GAAU,CAAC,GAAA,KAAa;AAC3B,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAChC,CAAA;;;;"}
@@ -0,0 +1,17 @@
1
+ import { css } from '@emotion/css';
2
+
3
+ "use strict";
4
+ const useAppLayoutStyle = () => {
5
+ return {
6
+ appLayout: css`
7
+ height: 100%;
8
+ `,
9
+ mobile: css`
10
+ height: 100%;
11
+ background: #e7e7e7;
12
+ `
13
+ };
14
+ };
15
+
16
+ export { useAppLayoutStyle };
17
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","sources":["../../../../src/components/layout/style.ts"],"sourcesContent":["import { ComputedRef } from \"vue\";\r\n\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport const useAppLayoutStyle = () => {\r\n return {\r\n appLayout: css`\r\n height: 100%;\r\n `,\r\n mobile: css`\r\n height: 100%;\r\n background: #e7e7e7;\r\n `\r\n };\r\n};\r\n"],"names":[],"mappings":";;;AAIO,MAAM,oBAAoB,MAAM;AACrC,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,GAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAGX,MAAA,EAAQ,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIV;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue2.mjs","sources":["../../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\n\nimport {\n useDicStore,\n useKeepAliveStore\n} from \"@ditari/store\";\n\ninterface DicItem {\n value: string | number;\n label: string;\n}\n\nconst props = defineProps({\n value: { required: true, default: undefined },\n name: { type: String, required: true, default: \"\" },\n disabled: { type: Boolean, required: false, default: false },\n placeholder: { type: String, required: false, default: \"请填写默认占位符啊!\" },\n include: { type: Array, required: false, default: () => [] }\n});\n\nconst emits = defineEmits([\"update:value\", \"change\", \"select\"]);\n\nconst { getDicByKey } = useDicStore();\nconst { get: keepNames } = useKeepAliveStore();\n\nconst { modelValue, data, onSelect, onChange } =\n useSelect();\n\nfunction useSelect() {\n const route = useRoute();\n const loadingStatus = ref(false);\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n >(\"fetchDic\", async (name: string) => {\n console.warn(\n `fetchDic 未注入,使用默认实现,name: ${name}`\n );\n return [];\n });\n\n // 字典数据\n let dicData: DicItem[] = [...getDicByKey(props.name)];\n const data = ref<DicItem[]>(dicData);\n\n // 取值\n const modelValue = ref<string | number | undefined>(\n props.value\n );\n\n onActivated(() => {\n // 缓存页面被激活的时候调用\n loadDicData();\n });\n\n onMounted(() => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n loadDicData();\n }\n });\n\n // 监听value值的变化\n watch(\n () => props.value,\n val => {\n modelValue.value = val;\n }\n );\n\n setTimeout(() => {\n if (!loadingStatus.value) {\n loadDicData();\n }\n }, 1000);\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n loadingStatus.value = true;\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n dicData = [...getDicByKey(props.name)];\n\n if (props.include.length > 0) {\n data.value = dicData.filter((item: DicItem) => {\n return props.include.some(\n (i: string | number) => i === item.value\n );\n });\n } else {\n data.value = dicData;\n }\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n // 监听用户搜索事件\n const onSearch = (keywords: string) => {\n sendWorkerSearch(keywords);\n };\n\n // 发送搜索到webworker\n function sendWorkerSearch(keywords: string) {\n keywords = keywords ?? \"\";\n data.value = dicData\n .filter((item: DicItem) => {\n return (\n item.value\n .toString()\n .toLowerCase()\n .indexOf(keywords.toLowerCase()) !== -1 ||\n item.label\n .toLowerCase()\n .includes(keywords.toLowerCase())\n );\n })\n .slice(0, 10);\n if (data.value.length === 0) {\n data.value = [...dicData].slice(0, 10);\n }\n }\n\n // 监听下拉选择事件\n const onSelect = (value: string | number) => {\n // 发射选择的数据\n emits(\"update:value\", value);\n // 处理下拉后返回数据的\n onSelectHandler();\n };\n\n // 监听数据改变\n const onChange = () => {\n emits(\"update:value\", modelValue.value);\n emits(\"change\", modelValue.value);\n };\n\n /**\n * 根据当前选中的value匹配对应的整条数据\n * 然后返回给父组件\n */\n function onSelectHandler() {\n const dicList = getDicByKey(props.name);\n const rs = dicList.find(\n (obj: DicItem) => obj.value === modelValue.value\n );\n emits(\"select\", rs);\n }\n\n watch(\n () => props.include,\n (val: Array<string | number>) => {\n if (val.length > 0) {\n // 只过滤出来include包含的数据\n data.value = dicData.filter((item: DicItem) => {\n return val.some(\n (i: string | number) => i === item.value\n );\n });\n } else {\n data.value = dicData;\n }\n },\n {\n immediate: true\n }\n );\n\n return {\n data,\n modelValue,\n onSearch,\n onSelect,\n onChange\n };\n}\n\n/**\n * 过滤筛选\n * @param inputValue\n * @param options\n */\nconst onFilterOption = (\n inputValue: string,\n options: DicItem\n) => {\n return (\n options.value\n .toString()\n .toLowerCase()\n .indexOf(inputValue.toLowerCase()) !== -1 ||\n options.label\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n );\n};\n</script>\n\n<template>\n <a-select\n v-model:value=\"modelValue\"\n style=\"width: 100%\"\n allow-clear\n show-search\n :options=\"data\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :filter-option=\"onFilterOption\"\n @select=\"onSelect\"\n @change=\"onChange\"\n >\n </a-select>\n</template>\n\n<style scoped></style>\n"],"names":["data","modelValue","onSelect","onChange","_createBlock","_unref"],"mappings":"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"}
1
+ {"version":3,"file":"Select.vue2.mjs","sources":["../../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n inject,\r\n onActivated,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\n\r\nimport {\r\n useDicStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\n\r\ninterface DicItem {\r\n value: string | number;\r\n label: string;\r\n}\r\n\r\nconst props = defineProps({\n value: { required: true, default: undefined },\n name: { type: String, required: true, default: \"\" },\n disabled: { type: Boolean, required: false, default: false },\n placeholder: { type: String, required: false, default: \"请填写默认占位符啊!\" },\n include: { type: Array, required: false, default: () => [] }\n});\r\n\r\nconst emits = defineEmits([\"update:value\", \"change\", \"select\"]);\r\n\r\nconst { getDicByKey } = useDicStore();\r\nconst { get: keepNames } = useKeepAliveStore();\r\n\r\nconst { modelValue, data, onSelect, onChange } =\r\n useSelect();\r\n\r\nfunction useSelect() {\r\n const route = useRoute();\r\n const loadingStatus = ref(false);\r\n // 判断使用组件的页面是否被缓存\r\n const isKeepAlive = keepNames.some(\r\n (name: string) => name === route.name\r\n );\r\n // 注入 fetchDic,提供默认值\r\n const fetchDic = inject<\r\n (name: string) => Promise<unknown[]>\r\n >(\"fetchDic\", async (name: string) => {\r\n console.warn(\r\n `fetchDic 未注入,使用默认实现,name: ${name}`\r\n );\r\n return [];\r\n });\r\n\r\n // 字典数据\r\n let dicData: DicItem[] = [...getDicByKey(props.name)];\r\n const data = ref<DicItem[]>(dicData);\r\n\r\n // 取值\r\n const modelValue = ref<string | number | undefined>(\r\n props.value\r\n );\r\n\r\n onActivated(() => {\r\n // 缓存页面被激活的时候调用\r\n loadDicData();\r\n });\r\n\r\n onMounted(() => {\r\n if (!isKeepAlive) {\r\n // 未缓存页面 挂载的时候调用\r\n loadDicData();\r\n }\r\n });\r\n\r\n // 监听value值的变化\r\n watch(\r\n () => props.value,\r\n val => {\r\n modelValue.value = val;\r\n }\r\n );\r\n\r\n setTimeout(() => {\r\n if (!loadingStatus.value) {\r\n loadDicData();\r\n }\r\n }, 1000);\r\n\r\n // 请求字典数据的函数\r\n async function loadDicData() {\r\n try {\r\n loadingStatus.value = true;\r\n // 调用注入进来的fetchDic方法\r\n await fetchDic(props.name);\r\n dicData = [...getDicByKey(props.name)];\r\n\r\n if (props.include.length > 0) {\r\n data.value = dicData.filter((item: DicItem) => {\r\n return props.include.some(\r\n (i: string | number) => i === item.value\r\n );\r\n });\r\n } else {\r\n data.value = dicData;\r\n }\r\n } catch (error) {\r\n console.error(\"获取字典数据失败:\", error);\r\n }\r\n }\r\n\r\n // 监听用户搜索事件\r\n const onSearch = (keywords: string) => {\r\n sendWorkerSearch(keywords);\r\n };\r\n\r\n // 发送搜索到webworker\r\n function sendWorkerSearch(keywords: string) {\r\n keywords = keywords ?? \"\";\r\n data.value = dicData\r\n .filter((item: DicItem) => {\r\n return (\r\n item.value\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(keywords.toLowerCase()) !== -1 ||\r\n item.label\r\n .toLowerCase()\r\n .includes(keywords.toLowerCase())\r\n );\r\n })\r\n .slice(0, 10);\r\n if (data.value.length === 0) {\r\n data.value = [...dicData].slice(0, 10);\r\n }\r\n }\r\n\r\n // 监听下拉选择事件\r\n const onSelect = (value: string | number) => {\r\n // 发射选择的数据\r\n emits(\"update:value\", value);\r\n // 处理下拉后返回数据的\r\n onSelectHandler();\r\n };\r\n\r\n // 监听数据改变\r\n const onChange = () => {\r\n emits(\"update:value\", modelValue.value);\r\n emits(\"change\", modelValue.value);\r\n };\r\n\r\n /**\r\n * 根据当前选中的value匹配对应的整条数据\r\n * 然后返回给父组件\r\n */\r\n function onSelectHandler() {\r\n const dicList = getDicByKey(props.name);\r\n const rs = dicList.find(\r\n (obj: DicItem) => obj.value === modelValue.value\r\n );\r\n emits(\"select\", rs);\r\n }\r\n\r\n watch(\r\n () => props.include,\r\n (val: Array<string | number>) => {\r\n if (val.length > 0) {\r\n // 只过滤出来include包含的数据\r\n data.value = dicData.filter((item: DicItem) => {\r\n return val.some(\r\n (i: string | number) => i === item.value\r\n );\r\n });\r\n } else {\r\n data.value = dicData;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return {\r\n data,\r\n modelValue,\r\n onSearch,\r\n onSelect,\r\n onChange\r\n };\r\n}\r\n\r\n/**\r\n * 过滤筛选\r\n * @param inputValue\r\n * @param options\r\n */\r\nconst onFilterOption = (\r\n inputValue: string,\r\n options: DicItem\r\n) => {\r\n return (\r\n options.value\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(inputValue.toLowerCase()) !== -1 ||\r\n options.label\r\n .toLowerCase()\r\n .includes(inputValue.toLowerCase())\r\n );\r\n};\r\n</script>\r\n\r\n<template>\r\n <a-select\r\n v-model:value=\"modelValue\"\r\n style=\"width: 100%\"\r\n allow-clear\r\n show-search\r\n :options=\"data\"\r\n :placeholder=\"placeholder\"\r\n :disabled=\"disabled\"\r\n :filter-option=\"onFilterOption\"\r\n @select=\"onSelect\"\r\n @change=\"onChange\"\r\n >\r\n </a-select>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["data","modelValue","onSelect","onChange","_createBlock","_unref"],"mappings":"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"}
@@ -352,7 +352,7 @@ const DTable = /* @__PURE__ */ defineComponent({
352
352
  "rowKey": props.rowKey,
353
353
  "scroll": {
354
354
  y: tableHeight.value,
355
- x: "100%",
355
+ x: "max-content",
356
356
  scrollToFirstRowOnChange: true
357
357
  }
358
358
  }), tableSlots), pagination.value && createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) =>\r\n slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n console.log(\"onSelect\", selectedRowKeys.value);\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","console","log","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) =>\r\n slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n console.log(\"onSelect\", selectedRowKeys.value);\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"max-content\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","console","log","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -86,7 +86,9 @@ const _TableForm = /* @__PURE__ */ defineComponent({
86
86
  "span": neededSpan,
87
87
  "class": cx(colCls, styles.cellBorderStyle)
88
88
  }, {
89
- default: () => [createVNode(FormItem, null, null)]
89
+ default: () => [createVNode(FormItem, {
90
+ "label": " "
91
+ }, null)]
90
92
  }));
91
93
  }
92
94
  currentLineSpan = 0;
@@ -103,7 +105,9 @@ const _TableForm = /* @__PURE__ */ defineComponent({
103
105
  "span": 24 - currentLineSpan,
104
106
  "class": cx(colCls, styles.cellBorderStyle)
105
107
  }, {
106
- default: () => [createVNode(FormItem, null, null)]
108
+ default: () => [createVNode(FormItem, {
109
+ "label": " "
110
+ }, null)]
107
111
  }));
108
112
  }
109
113
  return finalElements;
@@ -1 +1 @@
1
- {"version":3,"file":"TableForm.mjs","sources":["../../../../src/components/table-form/TableForm.tsx"],"sourcesContent":["import {\r\n Comment,\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n isVNode,\r\n provide,\r\n ref,\r\n Text,\r\n VNode\r\n} from \"vue\";\r\nimport {\r\n Col,\r\n Form,\r\n FormInstance,\r\n FormItem,\r\n Row\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DEFAULT_STYLES_CONFIG,\r\n StylesConfig,\r\n tableFormProps\r\n} from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport { css, cx } from \"@emotion/css\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nexport const FormContextKey = Symbol(\r\n \"d-table-form-context\"\r\n);\r\n\r\nexport interface TableFormContext {\r\n isFormParent: true;\r\n span: ComputedRef<number>;\r\n isReadonly: ComputedRef<boolean>;\r\n fieldErrors: ComputedRef<\r\n Record<string, string | undefined>\r\n >;\r\n stylesConfig: ComputedRef<StylesConfig>;\r\n model: ComputedRef<Record<string, unknown>>;\r\n}\r\n\r\nconst getVNodeSpan = (vnode: any): number => {\r\n if (vnode && vnode.props) {\r\n const s = vnode.props.span ?? vnode.props[\"span\"];\r\n if (s !== undefined && s !== null) return Number(s);\r\n }\r\n return 24; // 默认占满一行\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n border-top: 1px solid #d9d9d9;\r\n border-left: 1px solid #d9d9d9;\r\n`;\r\n\r\nconst _TableForm = defineComponent({\r\n name: \"DTableForm\",\r\n props: tableFormProps,\r\n\r\n setup(props, { slots, attrs, expose }) {\r\n const token = useAntdToken();\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n const formRef = ref<FormInstance | null>();\r\n\r\n const defaultSpan = computed(() => 24);\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(\r\n () => attrs.model as Record<string, unknown>\r\n );\r\n\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: defaultSpan,\r\n fieldErrors: ref({}),\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n const flattenVNodes = (children: any): VNode[] => {\r\n let result: VNode[] = [];\r\n const vnodes = Array.isArray(children)\r\n ? children\r\n : [children];\r\n vnodes.forEach(v => {\r\n if (Array.isArray(v)) {\r\n result = result.concat(flattenVNodes(v));\r\n } else if (isVNode(v)) {\r\n if (\r\n v.type === Symbol.for(\"v-fgt\") ||\r\n v.type?.toString() === \"Symbol(Fragment)\"\r\n ) {\r\n result = result.concat(\r\n flattenVNodes(v.children)\r\n );\r\n } else if (\r\n v.type !== Comment &&\r\n v.type !== Text\r\n ) {\r\n result.push(v);\r\n }\r\n }\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * 核心逻辑:重新编排节点序列,在必要位置插入补位 Col\r\n */\r\n const renderItems = () => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n const rawSlots = slots.default ? slots.default() : [];\r\n const vnodes = flattenVNodes(rawSlots);\r\n\r\n const finalElements: VNode[] = [];\r\n let currentLineSpan = 0;\r\n\r\n vnodes.forEach((vnode, index) => {\r\n const span = getVNodeSpan(vnode);\r\n\r\n // 如果当前行放不下这个节点,或者当前节点是 span 24 且之前行未满\r\n // 则需要先给上一行打个补丁\r\n if (\r\n currentLineSpan > 0 &&\r\n (currentLineSpan + span > 24 || span === 24)\r\n ) {\r\n const neededSpan = 24 - currentLineSpan;\r\n if (neededSpan > 0) {\r\n finalElements.push(\r\n <Col\r\n key={`filler-mid-${index}`}\r\n span={neededSpan}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem></FormItem>\r\n </Col>\r\n );\r\n }\r\n currentLineSpan = 0; // 开启新行\r\n }\r\n\r\n finalElements.push(vnode);\r\n\r\n // 累加计算当前行已占 span\r\n currentLineSpan += span;\r\n if (currentLineSpan >= 24) {\r\n currentLineSpan = 0;\r\n }\r\n });\r\n\r\n // 最后一行不满 24,补充最后一块\r\n if (currentLineSpan > 0) {\r\n finalElements.push(\r\n <Col\r\n key=\"filler-last\"\r\n span={24 - currentLineSpan}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem></FormItem>\r\n </Col>\r\n );\r\n }\r\n\r\n return finalElements;\r\n };\r\n\r\n expose({ form: formRef });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>{renderItems()}</Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","FormContextKey","Symbol","getVNodeSpan","vnode","props","span","undefined","Number","containerBorderStyle","css","_TableForm","defineComponent","name","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","defaultSpan","computed","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","fieldErrors","flattenVNodes","children","result","vnodes","Array","isArray","forEach","v","concat","isVNode","type","for","Comment","Text","push","renderItems","colCls","styles","useFormItemStyle","value","rawSlots","default","finalElements","currentLineSpan","index","neededSpan","_createVNode","Col","cx","cellBorderStyle","FormItem","form","_slot","rootCls","Form","_mergeProps","Row","TableForm","withInstall"],"mappings":"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"}
1
+ {"version":3,"file":"TableForm.mjs","sources":["../../../../src/components/table-form/TableForm.tsx"],"sourcesContent":["import {\r\n Comment,\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n isVNode,\r\n provide,\r\n ref,\r\n Text,\r\n VNode\r\n} from \"vue\";\r\nimport {\r\n Col,\r\n Form,\r\n FormInstance,\r\n FormItem,\r\n Row\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DEFAULT_STYLES_CONFIG,\r\n StylesConfig,\r\n tableFormProps\r\n} from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport { css, cx } from \"@emotion/css\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nexport const FormContextKey = Symbol(\r\n \"d-table-form-context\"\r\n);\r\n\r\nexport interface TableFormContext {\r\n isFormParent: true;\r\n span: ComputedRef<number>;\r\n isReadonly: ComputedRef<boolean>;\r\n fieldErrors: ComputedRef<\r\n Record<string, string | undefined>\r\n >;\r\n stylesConfig: ComputedRef<StylesConfig>;\r\n model: ComputedRef<Record<string, unknown>>;\r\n}\r\n\r\nconst getVNodeSpan = (vnode: any): number => {\r\n if (vnode && vnode.props) {\r\n const s = vnode.props.span ?? vnode.props[\"span\"];\r\n if (s !== undefined && s !== null) return Number(s);\r\n }\r\n return 24; // 默认占满一行\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n border-top: 1px solid #d9d9d9;\r\n border-left: 1px solid #d9d9d9;\r\n`;\r\n\r\nconst _TableForm = defineComponent({\r\n name: \"DTableForm\",\r\n props: tableFormProps,\r\n\r\n setup(props, { slots, attrs, expose }) {\r\n const token = useAntdToken();\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n const formRef = ref<FormInstance | null>();\r\n\r\n const defaultSpan = computed(() => 24);\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(\r\n () => attrs.model as Record<string, unknown>\r\n );\r\n\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: defaultSpan,\r\n fieldErrors: ref({}),\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n const flattenVNodes = (children: any): VNode[] => {\r\n let result: VNode[] = [];\r\n const vnodes = Array.isArray(children)\r\n ? children\r\n : [children];\r\n vnodes.forEach(v => {\r\n if (Array.isArray(v)) {\r\n result = result.concat(flattenVNodes(v));\r\n } else if (isVNode(v)) {\r\n if (\r\n v.type === Symbol.for(\"v-fgt\") ||\r\n v.type?.toString() === \"Symbol(Fragment)\"\r\n ) {\r\n result = result.concat(\r\n flattenVNodes(v.children)\r\n );\r\n } else if (\r\n v.type !== Comment &&\r\n v.type !== Text\r\n ) {\r\n result.push(v);\r\n }\r\n }\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * 核心逻辑:重新编排节点序列,在必要位置插入补位 Col\r\n */\r\n const renderItems = () => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n const rawSlots = slots.default ? slots.default() : [];\r\n const vnodes = flattenVNodes(rawSlots);\r\n\r\n const finalElements: VNode[] = [];\r\n let currentLineSpan = 0;\r\n\r\n vnodes.forEach((vnode, index) => {\r\n const span = getVNodeSpan(vnode);\r\n\r\n // 如果当前行放不下这个节点,或者当前节点是 span 24 且之前行未满\r\n // 则需要先给上一行打个补丁\r\n if (\r\n currentLineSpan > 0 &&\r\n (currentLineSpan + span > 24 || span === 24)\r\n ) {\r\n const neededSpan = 24 - currentLineSpan;\r\n if (neededSpan > 0) {\r\n finalElements.push(\r\n <Col\r\n key={`filler-mid-${index}`}\r\n span={neededSpan}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n currentLineSpan = 0; // 开启新行\r\n }\r\n\r\n finalElements.push(vnode);\r\n\r\n // 累加计算当前行已占 span\r\n currentLineSpan += span;\r\n if (currentLineSpan >= 24) {\r\n currentLineSpan = 0;\r\n }\r\n });\r\n\r\n // 最后一行不满 24,补充最后一块\r\n if (currentLineSpan > 0) {\r\n finalElements.push(\r\n <Col\r\n key=\"filler-last\"\r\n span={24 - currentLineSpan}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n\r\n return finalElements;\r\n };\r\n\r\n expose({ form: formRef });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>{renderItems()}</Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","FormContextKey","Symbol","getVNodeSpan","vnode","props","span","undefined","Number","containerBorderStyle","css","_TableForm","defineComponent","name","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","defaultSpan","computed","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","fieldErrors","flattenVNodes","children","result","vnodes","Array","isArray","forEach","v","concat","isVNode","type","for","Comment","Text","push","renderItems","colCls","styles","useFormItemStyle","value","rawSlots","default","finalElements","currentLineSpan","index","neededSpan","_createVNode","Col","cx","cellBorderStyle","FormItem","form","_slot","rootCls","Form","_mergeProps","Row","TableForm","withInstall"],"mappings":"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"}
@@ -53,7 +53,8 @@ const _TableFormItem = /* @__PURE__ */ defineComponent({
53
53
  const modelState = computed(() => formContext == null ? void 0 : formContext.model.value);
54
54
  const styles = useFormItemStyle(stylesConfig.value, token);
55
55
  const colSpan = computed(() => {
56
- return (formContext == null ? void 0 : formContext.span.value) || 24;
56
+ console.log(formContext == null ? void 0 : formContext.span.value);
57
+ return props.span || 24;
57
58
  });
58
59
  const fieldValue = computed(() => {
59
60
  const formatFn = props.format;
@@ -1 +1 @@
1
- {"version":3,"file":"TableFormItem.mjs","sources":["../../../../src/components/table-form/TableFormItem.tsx"],"sourcesContent":["import { computed, defineComponent, inject } from \"vue\";\r\nimport { Col, FormItem } from \"ant-design-vue\";\r\n\r\nimport { tableFormItemProps } from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport {\r\n FormContextKey,\r\n TableFormContext\r\n} from \"./TableForm\";\r\nimport { useDicStore } from \"@ditari/store\";\r\nimport { cx } from \"@emotion/css\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\n/**\r\n * 辅助函数:根据路径数组和对象获取深层值\r\n * @param obj 数据对象\r\n * @param pathName 字段路径,例如 'user.name'\r\n */\r\nconst getDeepValue = (\r\n obj: Record<string, unknown>,\r\n pathName: string\r\n): unknown => {\r\n if (!obj || !pathName) {\r\n return undefined;\r\n }\r\n\r\n // 将 'user.name' 转换为 ['user', 'name']\r\n const path = pathName.split(\".\");\r\n let current: unknown = obj;\r\n\r\n for (const segment of path) {\r\n // 使用类型守卫和断言来安全地访问嵌套属性\r\n if (\r\n current &&\r\n typeof current === \"object\" &&\r\n segment in (current as Record<string, unknown>)\r\n ) {\r\n current = (current as Record<string, unknown>)[\r\n segment\r\n ];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return current;\r\n};\r\n\r\nconst _TableFormItem = defineComponent({\r\n name: \"DTableFormItem\",\r\n props: tableFormItemProps,\r\n setup(props, { slots, attrs }) {\r\n const formContext = inject<TableFormContext | null>(\r\n FormContextKey,\r\n null\r\n );\r\n const { getPrefixCls } = useDesign(\r\n \"table-form-item-col\"\r\n );\r\n const token = useAntdToken();\r\n const { getDicTextByValue } = useDicStore();\r\n\r\n if (!formContext) {\r\n console.error(\r\n \"DTableFormItem must be used inside a DTableForm component.\"\r\n );\r\n }\r\n\r\n // ⭐️ 从 Context 获取只读状态\r\n const isReadonly = computed(\r\n () => formContext?.isReadonly.value ?? false\r\n );\r\n const stylesConfig = computed(\r\n () => formContext?.stylesConfig.value\r\n );\r\n const modelState = computed(\r\n () => formContext?.model.value\r\n );\r\n const styles = useFormItemStyle(\r\n stylesConfig.value!,\r\n token\r\n );\r\n\r\n // ⭐️ 1. 获取并计算 Col 的 span 值\r\n const colSpan = computed(() => {\r\n // 如果成功注入上下文,则使用父组件计算的 span\r\n // 否则默认使用 24 (占满一行,安全回退)\r\n return formContext?.span.value || 24;\r\n });\r\n\r\n // ⭐️ 2. 计算当前 FormItem 绑定的值\r\n const fieldValue = computed(() => {\r\n const formatFn = props.format;\r\n const dicName = props.dicName;\r\n\r\n // 使用 Record<string, unknown> 替换 any\r\n const model = modelState.value as Record<\r\n string,\r\n unknown\r\n >;\r\n const name = attrs.name as string;\r\n\r\n // 确保 model 存在且 name 存在\r\n if (!model || !name) {\r\n return \"\";\r\n }\r\n\r\n // 使用辅助函数获取深层嵌套的值\r\n let value = getDeepValue(model, name);\r\n\r\n // 如果值是 undefined, null 或空字符串,显示一个占位符或空\r\n if (\r\n value === undefined ||\r\n value === null ||\r\n value === \"\"\r\n ) {\r\n return \"-\";\r\n }\r\n\r\n if (formatFn) {\r\n return formatFn?.(value, name);\r\n }\r\n if (dicName && !Array.isArray(value)) {\r\n return getDicTextByValue(dicName, value as string);\r\n }\r\n\r\n // 简单处理数组:如果是数组,转换为逗号分隔的字符串\r\n if (Array.isArray(value)) {\r\n // value 是 Array<unknown>,.join() 会将其转换为字符串\r\n value = value.join(\", \");\r\n }\r\n\r\n // 转换为字符串进行显示\r\n return String(value);\r\n });\r\n\r\n // ⭐️ 3. 条件渲染内容\r\n const renderContent = () => {\r\n const colCls = getPrefixCls(\"content\");\r\n if (isReadonly.value) {\r\n // 只读模式:显示值\r\n return (\r\n <div class={cx(styles.valueDisplayClass, colCls)}>\r\n <span class={styles.textWrapperClass}>\r\n {fieldValue.value}\r\n </span>\r\n </div>\r\n );\r\n }\r\n\r\n // 编辑模式:渲染默认插槽内容 (表单元素)\r\n return slots.default?.();\r\n };\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n // ⭐️ 2. 将计算得到的 colSpan 应用到 Col 组件上\r\n return (\r\n <Col\r\n span={colSpan.value}\r\n class={cx(rootCls, styles.cellBorderStyle)}\r\n >\r\n {/* 在只读模式下,我们不需要 FormItem 来管理校验状态 */}\r\n <FormItem {...attrs}>{renderContent()}</FormItem>\r\n </Col>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableFormItem = withInstall(_TableFormItem);\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","getDeepValue","obj","pathName","undefined","path","split","current","segment","_TableFormItem","defineComponent","name","props","tableFormItemProps","setup","slots","attrs","formContext","inject","FormContextKey","getPrefixCls","useDesign","token","useAntdToken","getDicTextByValue","useDicStore","console","error","isReadonly","computed","value","stylesConfig","modelState","model","styles","useFormItemStyle","colSpan","span","fieldValue","formatFn","format","dicName","Array","isArray","join","String","renderContent","colCls","_createVNode","cx","valueDisplayClass","textWrapperClass","default","_slot","rootCls","Col","cellBorderStyle","FormItem","TableFormItem","withInstall"],"mappings":";;;;;;;;;;;AAmBA,SAAAA,QAAAC,CAAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAAA,KAAA,UAAA,IAAAC,MAAAA,CAAAC,SAAAA,CAAAC,QAAAA,CAAAC,IAAAA,CAAAJ,CAAA,CAAA,KAAA,iBAAA,IAAA,CAAAK,OAAAA,CAAAL,CAAA,CAAA;AAAA;AAKA,MAAMM,YAAAA,GAAeA,CACnBC,GAAAA,EACAC,QAAAA,KACY;AACZ,EAAA,IAAI,CAACD,GAAAA,IAAO,CAACC,QAAAA,EAAU;AACrB,IAAA,OAAOC,KAAAA,CAAAA;AAAAA,EACT;AAGA,EAAA,MAAMC,IAAAA,GAAOF,QAAAA,CAASG,KAAAA,CAAM,GAAG,CAAA;AAC/B,EAAA,IAAIC,OAAAA,GAAmBL,GAAAA;AAEvB,EAAA,KAAA,MAAWM,WAAWH,IAAAA,EAAM;AAE1B,IAAA,IACEE,OAAAA,IACA,OAAOA,OAAAA,KAAY,QAAA,IACnBC,WAAYD,OAAAA,EACZ;AACAA,MAAAA,OAAAA,GAAWA,QACTC,OAAO,CAAA;AAAA,IAEX,CAAA,MAAO;AACL,MAAA,OAAOJ,KAAAA,CAAAA;AAAAA,IACT;AAAA,EACF;AACA,EAAA,OAAOG,OAAAA;AACT,CAAA;AAEA,MAAME,iCAAiBC,eAAAA,CAAgB;AAAA,EACrCC,IAAAA,EAAM,gBAAA;AAAA,EACNC,KAAAA,EAAOC,kBAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAM,EAAG;AAC7B,IAAA,MAAMC,WAAAA,GAAcC,MAAAA,CAClBC,cAAAA,EACA,IACF,CAAA;AACA,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UACvB,qBACF,CAAA;AACA,IAAA,MAAMC,QAAQC,YAAAA,EAAa;AAC3B,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAsBC,WAAAA,EAAY;AAE1C,IAAA,IAAI,CAACR,WAAAA,EAAa;AAChBS,MAAAA,OAAAA,CAAQC,MACN,4DACF,CAAA;AAAA,IACF;AAGA,IAAA,MAAMC,UAAAA,GAAaC,SACjB,MAAA;AA3EN,MAAA,IAAA,EAAA;AA2EYZ,MAAAA,OAAAA,CAAAA,EAAAA,GAAAA,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAaW,UAAAA,CAAWE,UAAxBb,IAAAA,GAAAA,EAAAA,GAAiC,KAAA;AAAA,IAAA,CACzC,CAAA;AACA,IAAA,MAAMc,YAAAA,GAAeF,QAAAA,CACnB,MAAMZ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAac,aAAaD,KAClC,CAAA;AACA,IAAA,MAAME,UAAAA,GAAaH,QAAAA,CACjB,MAAMZ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAagB,MAAMH,KAC3B,CAAA;AACA,IAAA,MAAMI,MAAAA,GAASC,gBAAAA,CACbJ,YAAAA,CAAaD,KAAAA,EACbR,KACF,CAAA;AAGA,IAAA,MAAMc,OAAAA,GAAUP,SAAS,MAAM;AAG7B,MAAA,OAAA,CAAOZ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAaoB,KAAKP,KAAAA,KAAS,EAAA;AAAA,IACpC,CAAC,CAAA;AAGD,IAAA,MAAMQ,UAAAA,GAAaT,SAAS,MAAM;AAChC,MAAA,MAAMU,WAAW3B,KAAAA,CAAM4B,MAAAA;AACvB,MAAA,MAAMC,UAAU7B,KAAAA,CAAM6B,OAAAA;AAGtB,MAAA,MAAMR,QAAQD,UAAAA,CAAWF,KAAAA;AAIzB,MAAA,MAAMnB,OAAOK,KAAAA,CAAML,IAAAA;AAGnB,MAAA,IAAI,CAACsB,KAAAA,IAAS,CAACtB,IAAAA,EAAM;AACnB,QAAA,OAAO,EAAA;AAAA,MACT;AAGA,MAAA,IAAImB,KAAAA,GAAQ7B,YAAAA,CAAagC,KAAAA,EAAOtB,IAAI,CAAA;AAGpC,MAAA,IACEmB,KAAAA,KAAU1B,KAAAA,CAAAA,IACV0B,KAAAA,KAAU,IAAA,IACVA,UAAU,EAAA,EACV;AACA,QAAA,OAAO,GAAA;AAAA,MACT;AAEA,MAAA,IAAIS,QAAAA,EAAU;AACZ,QAAA,OAAOA,qCAAWT,KAAAA,EAAOnB,IAAAA,CAAAA;AAAAA,MAC3B;AACA,MAAA,IAAI8B,OAAAA,IAAW,CAACC,KAAAA,CAAMC,OAAAA,CAAQb,KAAK,CAAA,EAAG;AACpC,QAAA,OAAON,iBAAAA,CAAkBiB,SAASX,KAAe,CAAA;AAAA,MACnD;AAGA,MAAA,IAAIY,KAAAA,CAAMC,OAAAA,CAAQb,KAAK,CAAA,EAAG;AAExBA,QAAAA,KAAAA,GAAQA,KAAAA,CAAMc,KAAK,IAAI,CAAA;AAAA,MACzB;AAGA,MAAA,OAAOC,OAAOf,KAAK,CAAA;AAAA,IACrB,CAAC,CAAA;AAGD,IAAA,MAAMgB,gBAAgBA,MAAM;AA9IhC,MAAA,IAAA,EAAA;AA+IM,MAAA,MAAMC,MAAAA,GAAS3B,aAAa,SAAS,CAAA;AACrC,MAAA,IAAIQ,WAAWE,KAAAA,EAAO;AAEpB,QAAA,OAAAkB,YAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACcC,EAAAA,CAAGf,MAAAA,CAAOgB,iBAAAA,EAAmBH,MAAM;AAAA,SAAC,EAAA,CAAAC,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,SACjCd,MAAAA,CAAOiB;AAAAA,WAAgB,CACjCb,UAAAA,CAAWR,KAAK,CAAA,CAAA,CAAA,CAAA;AAAA,MAIzB;AAGA,MAAA,OAAA,CAAOf,WAAMqC,OAAAA,KAANrC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AAAA,MAAA,IAAAsC,KAAAA;AACX,MAAA,MAAMC,UAAUlC,YAAAA,EAAa;AAE7B,MAAA,OAAA4B,YAAAO,GAAAA,EAAA;AAAA,QAAA,QAEUnB,OAAAA,CAAQN,KAAAA;AAAAA,QAAK,OAAA,EACZmB,EAAAA,CAAGK,OAAAA,EAASpB,MAAAA,CAAOsB,eAAe;AAAA,OAAC,EAAA;AAAA,QAAAJ,OAAAA,EAAAA,MAAA,CAAAJ,WAAAA,CAAAS,QAAAA,EAG5BzC,KAAAA,EAAKtB,OAAAA,CAAA2D,KAAAA,GAAGP,aAAAA,EAAe,CAAA,GAAAO,KAAAA,GAAA;AAAA,UAAAD,OAAAA,EAAAA,MAAA,CAAAC,KAAA;AAAA,SAAA,CAAA;AAAA,OAAA,CAAA;AAAA,IAG3C,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMK,aAAAA,GAAgBC,YAAYlD,cAAc;;;;"}
1
+ {"version":3,"file":"TableFormItem.mjs","sources":["../../../../src/components/table-form/TableFormItem.tsx"],"sourcesContent":["import { computed, defineComponent, inject } from \"vue\";\r\nimport { Col, FormItem } from \"ant-design-vue\";\r\n\r\nimport { tableFormItemProps } from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport {\r\n FormContextKey,\r\n TableFormContext\r\n} from \"./TableForm\";\r\nimport { useDicStore } from \"@ditari/store\";\r\nimport { cx } from \"@emotion/css\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\n/**\r\n * 辅助函数:根据路径数组和对象获取深层值\r\n * @param obj 数据对象\r\n * @param pathName 字段路径,例如 'user.name'\r\n */\r\nconst getDeepValue = (\r\n obj: Record<string, unknown>,\r\n pathName: string\r\n): unknown => {\r\n if (!obj || !pathName) {\r\n return undefined;\r\n }\r\n\r\n // 将 'user.name' 转换为 ['user', 'name']\r\n const path = pathName.split(\".\");\r\n let current: unknown = obj;\r\n\r\n for (const segment of path) {\r\n // 使用类型守卫和断言来安全地访问嵌套属性\r\n if (\r\n current &&\r\n typeof current === \"object\" &&\r\n segment in (current as Record<string, unknown>)\r\n ) {\r\n current = (current as Record<string, unknown>)[\r\n segment\r\n ];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return current;\r\n};\r\n\r\nconst _TableFormItem = defineComponent({\r\n name: \"DTableFormItem\",\r\n props: tableFormItemProps,\r\n setup(props, { slots, attrs }) {\r\n const formContext = inject<TableFormContext | null>(\r\n FormContextKey,\r\n null\r\n );\r\n const { getPrefixCls } = useDesign(\r\n \"table-form-item-col\"\r\n );\r\n const token = useAntdToken();\r\n const { getDicTextByValue } = useDicStore();\r\n\r\n if (!formContext) {\r\n console.error(\r\n \"DTableFormItem must be used inside a DTableForm component.\"\r\n );\r\n }\r\n\r\n // ⭐️ 从 Context 获取只读状态\r\n const isReadonly = computed(\r\n () => formContext?.isReadonly.value ?? false\r\n );\r\n const stylesConfig = computed(\r\n () => formContext?.stylesConfig.value\r\n );\r\n const modelState = computed(\r\n () => formContext?.model.value\r\n );\r\n const styles = useFormItemStyle(\r\n stylesConfig.value!,\r\n token\r\n );\r\n\r\n // ⭐️ 1. 获取并计算 Col 的 span 值\r\n const colSpan = computed(() => {\r\n console.log(formContext?.span.value);\r\n // 如果成功注入上下文,则使用父组件计算的 span\r\n // 否则默认使用 24 (占满一行,安全回退)\r\n return props.span || 24;\r\n });\r\n\r\n // ⭐️ 2. 计算当前 FormItem 绑定的值\r\n const fieldValue = computed(() => {\r\n const formatFn = props.format;\r\n const dicName = props.dicName;\r\n\r\n // 使用 Record<string, unknown> 替换 any\r\n const model = modelState.value as Record<\r\n string,\r\n unknown\r\n >;\r\n const name = attrs.name as string;\r\n\r\n // 确保 model 存在且 name 存在\r\n if (!model || !name) {\r\n return \"\";\r\n }\r\n\r\n // 使用辅助函数获取深层嵌套的值\r\n let value = getDeepValue(model, name);\r\n\r\n // 如果值是 undefined, null 或空字符串,显示一个占位符或空\r\n if (\r\n value === undefined ||\r\n value === null ||\r\n value === \"\"\r\n ) {\r\n return \"-\";\r\n }\r\n\r\n if (formatFn) {\r\n return formatFn?.(value, name);\r\n }\r\n if (dicName && !Array.isArray(value)) {\r\n return getDicTextByValue(dicName, value as string);\r\n }\r\n\r\n // 简单处理数组:如果是数组,转换为逗号分隔的字符串\r\n if (Array.isArray(value)) {\r\n // value 是 Array<unknown>,.join() 会将其转换为字符串\r\n value = value.join(\", \");\r\n }\r\n\r\n // 转换为字符串进行显示\r\n return String(value);\r\n });\r\n\r\n // ⭐️ 3. 条件渲染内容\r\n const renderContent = () => {\r\n const colCls = getPrefixCls(\"content\");\r\n if (isReadonly.value) {\r\n // 只读模式:显示值\r\n return (\r\n <div class={cx(styles.valueDisplayClass, colCls)}>\r\n <span class={styles.textWrapperClass}>\r\n {fieldValue.value}\r\n </span>\r\n </div>\r\n );\r\n }\r\n\r\n // 编辑模式:渲染默认插槽内容 (表单元素)\r\n return slots.default?.();\r\n };\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n // ⭐️ 2. 将计算得到的 colSpan 应用到 Col 组件上\r\n return (\r\n <Col\r\n span={colSpan.value}\r\n class={cx(rootCls, styles.cellBorderStyle)}\r\n >\r\n {/* 在只读模式下,我们不需要 FormItem 来管理校验状态 */}\r\n <FormItem {...attrs}>{renderContent()}</FormItem>\r\n </Col>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableFormItem = withInstall(_TableFormItem);\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","getDeepValue","obj","pathName","undefined","path","split","current","segment","_TableFormItem","defineComponent","name","props","tableFormItemProps","setup","slots","attrs","formContext","inject","FormContextKey","getPrefixCls","useDesign","token","useAntdToken","getDicTextByValue","useDicStore","console","error","isReadonly","computed","value","stylesConfig","modelState","model","styles","useFormItemStyle","colSpan","log","span","fieldValue","formatFn","format","dicName","Array","isArray","join","String","renderContent","colCls","_createVNode","cx","valueDisplayClass","textWrapperClass","default","_slot","rootCls","Col","cellBorderStyle","FormItem","TableFormItem","withInstall"],"mappings":";;;;;;;;;;;AAmBA,SAAAA,QAAAC,CAAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAAA,KAAA,UAAA,IAAAC,MAAAA,CAAAC,SAAAA,CAAAC,QAAAA,CAAAC,IAAAA,CAAAJ,CAAA,CAAA,KAAA,iBAAA,IAAA,CAAAK,OAAAA,CAAAL,CAAA,CAAA;AAAA;AAKA,MAAMM,YAAAA,GAAeA,CACnBC,GAAAA,EACAC,QAAAA,KACY;AACZ,EAAA,IAAI,CAACD,GAAAA,IAAO,CAACC,QAAAA,EAAU;AACrB,IAAA,OAAOC,KAAAA,CAAAA;AAAAA,EACT;AAGA,EAAA,MAAMC,IAAAA,GAAOF,QAAAA,CAASG,KAAAA,CAAM,GAAG,CAAA;AAC/B,EAAA,IAAIC,OAAAA,GAAmBL,GAAAA;AAEvB,EAAA,KAAA,MAAWM,WAAWH,IAAAA,EAAM;AAE1B,IAAA,IACEE,OAAAA,IACA,OAAOA,OAAAA,KAAY,QAAA,IACnBC,WAAYD,OAAAA,EACZ;AACAA,MAAAA,OAAAA,GAAWA,QACTC,OAAO,CAAA;AAAA,IAEX,CAAA,MAAO;AACL,MAAA,OAAOJ,KAAAA,CAAAA;AAAAA,IACT;AAAA,EACF;AACA,EAAA,OAAOG,OAAAA;AACT,CAAA;AAEA,MAAME,iCAAiBC,eAAAA,CAAgB;AAAA,EACrCC,IAAAA,EAAM,gBAAA;AAAA,EACNC,KAAAA,EAAOC,kBAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAM,EAAG;AAC7B,IAAA,MAAMC,WAAAA,GAAcC,MAAAA,CAClBC,cAAAA,EACA,IACF,CAAA;AACA,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UACvB,qBACF,CAAA;AACA,IAAA,MAAMC,QAAQC,YAAAA,EAAa;AAC3B,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAsBC,WAAAA,EAAY;AAE1C,IAAA,IAAI,CAACR,WAAAA,EAAa;AAChBS,MAAAA,OAAAA,CAAQC,MACN,4DACF,CAAA;AAAA,IACF;AAGA,IAAA,MAAMC,UAAAA,GAAaC,SACjB,MAAA;AA3EN,MAAA,IAAA,EAAA;AA2EYZ,MAAAA,OAAAA,CAAAA,EAAAA,GAAAA,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAaW,UAAAA,CAAWE,UAAxBb,IAAAA,GAAAA,EAAAA,GAAiC,KAAA;AAAA,IAAA,CACzC,CAAA;AACA,IAAA,MAAMc,YAAAA,GAAeF,QAAAA,CACnB,MAAMZ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAac,aAAaD,KAClC,CAAA;AACA,IAAA,MAAME,UAAAA,GAAaH,QAAAA,CACjB,MAAMZ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAagB,MAAMH,KAC3B,CAAA;AACA,IAAA,MAAMI,MAAAA,GAASC,gBAAAA,CACbJ,YAAAA,CAAaD,KAAAA,EACbR,KACF,CAAA;AAGA,IAAA,MAAMc,OAAAA,GAAUP,SAAS,MAAM;AAC7BH,MAAAA,OAAAA,CAAQW,GAAAA,CAAIpB,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAaqB,IAAAA,CAAKR,KAAK,CAAA;AAGnC,MAAA,OAAOlB,MAAM0B,IAAAA,IAAQ,EAAA;AAAA,IACvB,CAAC,CAAA;AAGD,IAAA,MAAMC,UAAAA,GAAaV,SAAS,MAAM;AAChC,MAAA,MAAMW,WAAW5B,KAAAA,CAAM6B,MAAAA;AACvB,MAAA,MAAMC,UAAU9B,KAAAA,CAAM8B,OAAAA;AAGtB,MAAA,MAAMT,QAAQD,UAAAA,CAAWF,KAAAA;AAIzB,MAAA,MAAMnB,OAAOK,KAAAA,CAAML,IAAAA;AAGnB,MAAA,IAAI,CAACsB,KAAAA,IAAS,CAACtB,IAAAA,EAAM;AACnB,QAAA,OAAO,EAAA;AAAA,MACT;AAGA,MAAA,IAAImB,KAAAA,GAAQ7B,YAAAA,CAAagC,KAAAA,EAAOtB,IAAI,CAAA;AAGpC,MAAA,IACEmB,KAAAA,KAAU1B,KAAAA,CAAAA,IACV0B,KAAAA,KAAU,IAAA,IACVA,UAAU,EAAA,EACV;AACA,QAAA,OAAO,GAAA;AAAA,MACT;AAEA,MAAA,IAAIU,QAAAA,EAAU;AACZ,QAAA,OAAOA,qCAAWV,KAAAA,EAAOnB,IAAAA,CAAAA;AAAAA,MAC3B;AACA,MAAA,IAAI+B,OAAAA,IAAW,CAACC,KAAAA,CAAMC,OAAAA,CAAQd,KAAK,CAAA,EAAG;AACpC,QAAA,OAAON,iBAAAA,CAAkBkB,SAASZ,KAAe,CAAA;AAAA,MACnD;AAGA,MAAA,IAAIa,KAAAA,CAAMC,OAAAA,CAAQd,KAAK,CAAA,EAAG;AAExBA,QAAAA,KAAAA,GAAQA,KAAAA,CAAMe,KAAK,IAAI,CAAA;AAAA,MACzB;AAGA,MAAA,OAAOC,OAAOhB,KAAK,CAAA;AAAA,IACrB,CAAC,CAAA;AAGD,IAAA,MAAMiB,gBAAgBA,MAAM;AA/IhC,MAAA,IAAA,EAAA;AAgJM,MAAA,MAAMC,MAAAA,GAAS5B,aAAa,SAAS,CAAA;AACrC,MAAA,IAAIQ,WAAWE,KAAAA,EAAO;AAEpB,QAAA,OAAAmB,YAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACcC,EAAAA,CAAGhB,MAAAA,CAAOiB,iBAAAA,EAAmBH,MAAM;AAAA,SAAC,EAAA,CAAAC,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,SACjCf,MAAAA,CAAOkB;AAAAA,WAAgB,CACjCb,UAAAA,CAAWT,KAAK,CAAA,CAAA,CAAA,CAAA;AAAA,MAIzB;AAGA,MAAA,OAAA,CAAOf,WAAMsC,OAAAA,KAANtC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,IACT,CAAA;AAEA,IAAA,OAAO,MAAM;AAAA,MAAA,IAAAuC,KAAAA;AACX,MAAA,MAAMC,UAAUnC,YAAAA,EAAa;AAE7B,MAAA,OAAA6B,YAAAO,GAAAA,EAAA;AAAA,QAAA,QAEUpB,OAAAA,CAAQN,KAAAA;AAAAA,QAAK,OAAA,EACZoB,EAAAA,CAAGK,OAAAA,EAASrB,MAAAA,CAAOuB,eAAe;AAAA,OAAC,EAAA;AAAA,QAAAJ,OAAAA,EAAAA,MAAA,CAAAJ,WAAAA,CAAAS,QAAAA,EAG5B1C,KAAAA,EAAKtB,OAAAA,CAAA4D,KAAAA,GAAGP,aAAAA,EAAe,CAAA,GAAAO,KAAAA,GAAA;AAAA,UAAAD,OAAAA,EAAAA,MAAA,CAAAC,KAAA;AAAA,SAAA,CAAA;AAAA,OAAA,CAAA;AAAA,IAG3C,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMK,aAAAA,GAAgBC,YAAYnD,cAAc;;;;"}