@ditari/bsui 5.1.6 → 5.1.9

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 (30) hide show
  1. package/dist/cjs/components/dic/DicReplace.cjs +9 -6
  2. package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
  3. package/dist/cjs/components/select/Select.vue2.cjs +33 -14
  4. package/dist/cjs/components/select/Select.vue2.cjs.map +1 -1
  5. package/dist/cjs/components/table-form/TableForm.cjs +65 -39
  6. package/dist/cjs/components/table-form/TableForm.cjs.map +1 -1
  7. package/dist/cjs/components/table-form/interface.cjs +0 -5
  8. package/dist/cjs/components/table-form/interface.cjs.map +1 -1
  9. package/dist/cjs/components/table-form/style.cjs +6 -1
  10. package/dist/cjs/components/table-form/style.cjs.map +1 -1
  11. package/dist/esm/components/dic/DicReplace.mjs +10 -7
  12. package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
  13. package/dist/esm/components/select/Select.vue2.mjs +34 -15
  14. package/dist/esm/components/select/Select.vue2.mjs.map +1 -1
  15. package/dist/esm/components/table-form/TableForm.mjs +66 -40
  16. package/dist/esm/components/table-form/TableForm.mjs.map +1 -1
  17. package/dist/esm/components/table-form/interface.mjs +0 -5
  18. package/dist/esm/components/table-form/interface.mjs.map +1 -1
  19. package/dist/esm/components/table-form/style.mjs +6 -1
  20. package/dist/esm/components/table-form/style.mjs.map +1 -1
  21. package/dist/types/components/dic/DicReplace.d.ts +3 -3
  22. package/dist/types/components/dic/DicReplace.d.ts.map +1 -1
  23. package/dist/types/components/select/Select.vue.d.ts.map +1 -1
  24. package/dist/types/components/table-form/TableForm.d.ts +0 -11
  25. package/dist/types/components/table-form/TableForm.d.ts.map +1 -1
  26. package/dist/types/components/table-form/interface.d.ts +0 -5
  27. package/dist/types/components/table-form/interface.d.ts.map +1 -1
  28. package/dist/types/components/table-form/style.d.ts +1 -1
  29. package/dist/types/components/table-form/style.d.ts.map +1 -1
  30. package/package.json +2 -2
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var vueRouter = require('vue-router');
7
+ var pinia = require('pinia');
7
8
  var store = require('@ditari/store');
8
9
 
9
10
  "use strict";
@@ -37,22 +38,24 @@ var DicReplace = /* @__PURE__ */ vue.defineComponent({
37
38
  },
38
39
  // 值
39
40
  value: {
40
- type: String || Number,
41
+ type: [String, Number],
41
42
  default: ""
42
43
  }
43
44
  },
44
45
  setup(props) {
45
46
  const {
46
- get: keepNames
47
- } = store.useKeepAliveStore();
47
+ list
48
+ } = pinia.storeToRefs(store.useNavTabStore());
48
49
  const {
49
50
  getDicTextByValue
50
51
  } = store.useDicStore();
51
52
  const route = vueRouter.useRoute();
52
- const isKeepAlive = keepNames.some((name) => name === route.name);
53
+ const isKeepAlive = list.value.some((item) => {
54
+ var _a;
55
+ return item.fullPath === route.fullPath && ((_a = item.meta) == null ? void 0 : _a.keepAlive);
56
+ });
53
57
  const dicValueTxt = vue.ref("");
54
- const fetchDic = vue.inject("fetchDic", (name) => __async(null, null, function* () {
55
- console.warn(`fetchDic \u672A\u6CE8\u5165\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u5B9E\u73B0\uFF0Cname: ${name}`);
58
+ const fetchDic = vue.inject("fetchDic", (_name) => __async(null, null, function* () {
56
59
  return [];
57
60
  }));
58
61
  vue.onActivated(() => __async(null, null, function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"DicReplace.cjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\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\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: String || Number,\n default: \"\"\n }\n },\n setup(props) {\n const { get: keepNames } = useKeepAliveStore();\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n const dicValueTxt = ref<string>(\"\");\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 onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","get","keepNames","useKeepAliveStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","dicValueTxt","ref","fetchDic","inject","console","warn","onActivated","loadDicData","onMounted","replace","error","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"DicReplace.cjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useDicStore, useNavTabStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: [String, Number],\n default: \"\"\n }\n },\n setup(props) {\n const { list } = storeToRefs(useNavTabStore());\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = list.value.some(\n item =>\n item.fullPath === route.fullPath &&\n item.meta?.keepAlive\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n >(\"fetchDic\", async (_name: string) => {\n // console.warn(\n // `fetchDic 未注入,使用默认实现,name: ${name}`\n // );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string | number) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string | number) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","list","storeToRefs","useNavTabStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","item","fullPath","meta","keepAlive","dicValueTxt","ref","fetchDic","inject","_name","onActivated","loadDicData","onMounted","replace","error","console","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
@@ -85,7 +85,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
85
85
  loadingStatus.value = true;
86
86
  yield fetchDic(props.name);
87
87
  dicData = [...getDicByKey(props.name)];
88
- data2.value = dicData;
88
+ data2.value = dicData.filter((item) => {
89
+ return props.include.some(
90
+ (i) => i === item.value
91
+ );
92
+ });
89
93
  } catch (error) {
90
94
  console.error("\u83B7\u53D6\u5B57\u5178\u6570\u636E\u5931\u8D25:", error);
91
95
  }
@@ -148,19 +152,34 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
148
152
  };
149
153
  return (_ctx, _cache) => {
150
154
  const _component_a_select = vue.resolveComponent("a-select");
151
- return vue.openBlock(), vue.createBlock(_component_a_select, {
152
- value: vue.unref(modelValue),
153
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => vue.isRef(modelValue) ? modelValue.value = $event : null),
154
- style: { "width": "100%" },
155
- "allow-clear": "",
156
- "show-search": "",
157
- options: vue.unref(data),
158
- placeholder: __props.placeholder,
159
- disabled: __props.disabled,
160
- "filter-option": onFilterOption,
161
- onSelect: vue.unref(onSelect),
162
- onChange: vue.unref(onChange)
163
- }, null, 8, ["value", "options", "placeholder", "disabled", "onSelect", "onChange"]);
155
+ return vue.openBlock(), vue.createElementBlock(
156
+ vue.Fragment,
157
+ null,
158
+ [
159
+ vue.createElementVNode(
160
+ "div",
161
+ null,
162
+ vue.toDisplayString(vue.unref(data)),
163
+ 1
164
+ /* TEXT */
165
+ ),
166
+ vue.createVNode(_component_a_select, {
167
+ value: vue.unref(modelValue),
168
+ "onUpdate:value": _cache[0] || (_cache[0] = ($event) => vue.isRef(modelValue) ? modelValue.value = $event : null),
169
+ style: { "width": "100%" },
170
+ "allow-clear": "",
171
+ "show-search": "",
172
+ options: vue.unref(data),
173
+ placeholder: __props.placeholder,
174
+ disabled: __props.disabled,
175
+ "filter-option": onFilterOption,
176
+ onSelect: vue.unref(onSelect),
177
+ onChange: vue.unref(onChange)
178
+ }, null, 8, ["value", "options", "placeholder", "disabled", "onSelect", "onChange"])
179
+ ],
180
+ 64
181
+ /* STABLE_FRAGMENT */
182
+ );
164
183
  };
165
184
  }
166
185
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue2.cjs","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 data.value = dicData;\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":["useDicStore","useKeepAliveStore","useRoute","ref","inject","data","modelValue","onActivated","onMounted","watch","onSelect","onChange","_createBlock","_unref"],"mappings":"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"}
1
+ {"version":3,"file":"Select.vue2.cjs","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 data.value = dicData.filter((item: DicItem) => {\n return props.include.some(\n (i: string | number) => i === item.value\n );\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 <div>\n {{ data }}\n </div>\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":["useDicStore","useKeepAliveStore","useRoute","ref","inject","data","modelValue","onActivated","onMounted","watch","onSelect","onChange","_createElementVNode","_unref","_createVNode"],"mappings":"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"}
@@ -10,28 +10,20 @@ var useDesign = require('../../hooks/useDesign.cjs');
10
10
  var withInstall = require('../../utils/withInstall.cjs');
11
11
 
12
12
  "use strict";
13
+ function _isSlot(s) {
14
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
15
+ }
13
16
  const FormContextKey = Symbol("d-table-form-context");
14
- const getValidVNodesCount = (vnodes) => {
15
- let count = 0;
16
- if (Array.isArray(vnodes)) {
17
- vnodes.forEach((vnode) => {
18
- if (vue.isVNode(vnode)) {
19
- if (vnode.type !== vue.Comment && vnode.type !== vue.Text && vnode.children !== " ") {
20
- count++;
21
- }
22
- } else if (Array.isArray(vnode)) {
23
- count += getValidVNodesCount(vnode);
24
- } else if (typeof vnode === "string" && vnode.trim() !== "") {
25
- count++;
26
- }
27
- });
17
+ const getVNodeSpan = (vnode) => {
18
+ var _a;
19
+ if (vnode && vnode.props) {
20
+ const s = (_a = vnode.props.span) != null ? _a : vnode.props["span"];
21
+ if (s !== void 0 && s !== null) return Number(s);
28
22
  }
29
- return count;
23
+ return 24;
30
24
  };
31
25
  const containerBorderStyle = css.css`
32
- /* 顶部边框 */
33
26
  border-top: 1px solid #d9d9d9;
34
- /* 左侧边框 */
35
27
  border-left: 1px solid #d9d9d9;
36
28
  `;
37
29
  const _TableForm = /* @__PURE__ */ vue.defineComponent({
@@ -47,7 +39,7 @@ const _TableForm = /* @__PURE__ */ vue.defineComponent({
47
39
  getPrefixCls
48
40
  } = useDesign.useDesign("table-form");
49
41
  const formRef = vue.ref();
50
- const calculatedSpan = vue.computed(() => Math.floor(24 / props.colCount));
42
+ const defaultSpan = vue.computed(() => 24);
51
43
  const isReadonly = vue.computed(() => props.readonly);
52
44
  const finalStylesConfig = vue.computed(() => {
53
45
  const defaultCopy = JSON.parse(JSON.stringify(_interface.DEFAULT_STYLES_CONFIG));
@@ -56,47 +48,81 @@ const _TableForm = /* @__PURE__ */ vue.defineComponent({
56
48
  const modelState = vue.computed(() => attrs.model);
57
49
  vue.provide(FormContextKey, {
58
50
  isFormParent: true,
59
- span: calculatedSpan,
60
- fieldErrors: {},
51
+ span: defaultSpan,
52
+ fieldErrors: vue.ref({}),
61
53
  isReadonly,
62
54
  stylesConfig: finalStylesConfig,
63
55
  model: modelState
64
56
  });
65
- const fillerCols = vue.computed(() => {
57
+ const flattenVNodes = (children) => {
58
+ let result = [];
59
+ const vnodes = Array.isArray(children) ? children : [children];
60
+ vnodes.forEach((v) => {
61
+ var _a;
62
+ if (Array.isArray(v)) {
63
+ result = result.concat(flattenVNodes(v));
64
+ } else if (vue.isVNode(v)) {
65
+ if (v.type === Symbol.for("v-fgt") || ((_a = v.type) == null ? void 0 : _a.toString()) === "Symbol(Fragment)") {
66
+ result = result.concat(flattenVNodes(v.children));
67
+ } else if (v.type !== vue.Comment && v.type !== vue.Text) {
68
+ result.push(v);
69
+ }
70
+ }
71
+ });
72
+ return result;
73
+ };
74
+ const renderItems = () => {
66
75
  const colCls = getPrefixCls("item-col");
67
76
  const styles = style.useFormItemStyle(finalStylesConfig.value, token);
68
- const defaultSlot = slots.default ? slots.default() : [];
69
- const itemCounts = getValidVNodesCount(defaultSlot);
70
- const colCount = props.colCount;
71
- const remainder = itemCounts % colCount;
72
- const fillerCount = remainder === 0 ? 0 : colCount - remainder;
73
- const span = calculatedSpan.value;
74
- const fillerNodes = [];
75
- for (let i = 0; i < fillerCount; i++) {
76
- fillerNodes.push(vue.createVNode(antDesignVue.Col, {
77
- "key": `filler-${i}`,
78
- "span": span,
77
+ const rawSlots = slots.default ? slots.default() : [];
78
+ const vnodes = flattenVNodes(rawSlots);
79
+ const finalElements = [];
80
+ let currentLineSpan = 0;
81
+ vnodes.forEach((vnode, index) => {
82
+ const span = getVNodeSpan(vnode);
83
+ if (currentLineSpan > 0 && (currentLineSpan + span > 24 || span === 24)) {
84
+ const neededSpan = 24 - currentLineSpan;
85
+ if (neededSpan > 0) {
86
+ finalElements.push(vue.createVNode(antDesignVue.Col, {
87
+ "key": `filler-mid-${index}`,
88
+ "span": neededSpan,
89
+ "class": css.cx(colCls, styles.cellBorderStyle)
90
+ }, {
91
+ default: () => [vue.createVNode(antDesignVue.FormItem, null, null)]
92
+ }));
93
+ }
94
+ currentLineSpan = 0;
95
+ }
96
+ finalElements.push(vnode);
97
+ currentLineSpan += span;
98
+ if (currentLineSpan >= 24) {
99
+ currentLineSpan = 0;
100
+ }
101
+ });
102
+ if (currentLineSpan > 0) {
103
+ finalElements.push(vue.createVNode(antDesignVue.Col, {
104
+ "key": "filler-last",
105
+ "span": 24 - currentLineSpan,
79
106
  "class": css.cx(colCls, styles.cellBorderStyle)
80
107
  }, {
81
- default: () => [vue.createVNode(antDesignVue.FormItem, {
82
- "label": " "
83
- }, null)]
108
+ default: () => [vue.createVNode(antDesignVue.FormItem, null, null)]
84
109
  }));
85
110
  }
86
- return fillerNodes;
87
- });
111
+ return finalElements;
112
+ };
88
113
  expose({
89
114
  form: formRef
90
115
  });
91
116
  return () => {
117
+ let _slot;
92
118
  const rootCls = getPrefixCls();
93
119
  return vue.createVNode(antDesignVue.Form, vue.mergeProps({
94
120
  "class": css.cx(rootCls, containerBorderStyle)
95
121
  }, attrs, {
96
122
  "ref": formRef
97
123
  }), {
98
- default: () => [vue.createVNode(antDesignVue.Row, null, {
99
- default: () => [slots.default ? slots.default() : null, fillerCols.value]
124
+ default: () => [vue.createVNode(antDesignVue.Row, null, _isSlot(_slot = renderItems()) ? _slot : {
125
+ default: () => [_slot]
100
126
  })]
101
127
  });
102
128
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TableForm.cjs","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} 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\n// ⭐️ Context 接口,包含错误状态映射\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\n// 辅助函数:计算插槽中有效 VNode 的数量\r\nconst getValidVNodesCount = (vnodes: unknown): number => {\r\n let count = 0;\r\n if (Array.isArray(vnodes)) {\r\n vnodes.forEach(vnode => {\r\n if (isVNode(vnode)) {\r\n // 忽略注释、文本节点、或仅空白的节点\r\n if (\r\n vnode.type !== Comment &&\r\n vnode.type !== Text &&\r\n vnode.children !== \" \"\r\n ) {\r\n count++;\r\n }\r\n } else if (Array.isArray(vnode)) {\r\n // 处理 Fragment 或嵌套数组\r\n count += getValidVNodesCount(vnode);\r\n } else if (\r\n typeof vnode === \"string\" &&\r\n vnode.trim() !== \"\"\r\n ) {\r\n // 处理非空字符串(虽然不常见,但保险起见)\r\n count++;\r\n }\r\n });\r\n }\r\n return count;\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n /* 顶部边框 */\r\n border-top: 1px solid #d9d9d9;\r\n /* 左侧边框 */\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\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n // 表单对象\r\n const formRef = ref<FormInstance | null>();\r\n\r\n //动态计算一个col的span值是多少\r\n const calculatedSpan = computed(() =>\r\n Math.floor(24 / props.colCount)\r\n );\r\n\r\n // ⭐️ 新增:计算只读状态\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n // 1. 创建默认配置的深拷贝\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n // 2. 使用 Lodash merge (或 mergeWith) 合并用户传入的配置\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(() => attrs.model);\r\n\r\n // ⭐️ FIX 2: 提供 Context 时,传递 ComputedRef 本身,而不是它的 .value\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: calculatedSpan,\r\n fieldErrors: {},\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n // ⭐️ 核心逻辑:计算并渲染占位符\r\n const fillerCols = computed(() => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n\r\n const defaultSlot = slots.default\r\n ? slots.default()\r\n : [];\r\n const itemCounts = getValidVNodesCount(defaultSlot);\r\n const colCount = props.colCount;\r\n\r\n // 计算当前行已占用的位置 (余数)\r\n const remainder = itemCounts % colCount;\r\n const fillerCount =\r\n remainder === 0 ? 0 : colCount - remainder;\r\n\r\n const span = calculatedSpan.value;\r\n const fillerNodes = [];\r\n\r\n // 渲染所需数量的空 Col\r\n for (let i = 0; i < fillerCount; i++) {\r\n fillerNodes.push(\r\n <Col\r\n key={`filler-${i}`}\r\n span={span}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n return fillerNodes;\r\n });\r\n\r\n expose({\r\n form: formRef\r\n });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>\r\n {/* 渲染所有传入的 FormItem */}\r\n {slots.default ? slots.default() : null}\r\n {/* 渲染计算出的占位 Col */}\r\n {fillerCols.value}\r\n </Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["FormContextKey","Symbol","getValidVNodesCount","vnodes","count","Array","isArray","forEach","vnode","isVNode","type","Comment","Text","children","trim","containerBorderStyle","css","_TableForm","defineComponent","name","props","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","calculatedSpan","computed","Math","floor","colCount","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","span","fieldErrors","fillerCols","colCls","styles","useFormItemStyle","value","defaultSlot","default","itemCounts","remainder","fillerCount","fillerNodes","i","push","_createVNode","Col","cx","cellBorderStyle","FormItem","form","rootCls","Form","_mergeProps","Row","TableForm","withInstall"],"mappings":"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"}
1
+ {"version":3,"file":"TableForm.cjs","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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"}
@@ -37,11 +37,6 @@ const DEFAULT_STYLES_CONFIG = {
37
37
  focusBorderColor: "#1677ff"
38
38
  };
39
39
  const tableFormProps = {
40
- colCount: {
41
- type: Number,
42
- default: 4,
43
- required: true
44
- },
45
40
  readonly: {
46
41
  type: Boolean,
47
42
  default: false
@@ -1 +1 @@
1
- {"version":3,"file":"interface.cjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (value: unknown, name: unknown) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter>,\r\n // 默认值\r\n default: (value: unknown, _name: unknown) => value\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n colCount: {\r\n type: Number,\r\n default: 4,\r\n required: true as const\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<ExtractPropTypes<typeof tableFormItemProps>>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAeO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,CAAC,KAAA,EAAgB,KAAA,KAAmB;AAAA;AAEjD;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;;;"}
1
+ {"version":3,"file":"interface.cjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (\r\n value: unknown,\r\n name: unknown\r\n) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter>,\r\n // 默认值\r\n default: (value: unknown, _name: unknown) => value\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<\r\n ExtractPropTypes<typeof tableFormItemProps>\r\n>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAkBO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,CAAC,KAAA,EAAgB,KAAA,KAAmB;AAAA;AAEjD;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;;;"}
@@ -4,7 +4,12 @@ var css = require('@emotion/css');
4
4
 
5
5
  "use strict";
6
6
  const useFormItemStyle = (styles, _token) => {
7
- const { rowHeight, labelBgColor, borderColor, focusBorderColor } = styles;
7
+ const {
8
+ rowHeight,
9
+ labelBgColor,
10
+ borderColor,
11
+ focusBorderColor
12
+ } = styles;
8
13
  const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;
9
14
  const inputFocusStyles = `
10
15
  &:focus{
@@ -1 +1 @@
1
- {"version":3,"file":"style.cjs","sources":["../../../../src/components/table-form/style.ts"],"sourcesContent":["import { ComputedRef } from \"vue\";\r\n\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport { StylesConfig } from \"./interface\";\r\n\r\n/**\r\n * 表单项样式\r\n */\r\nexport const useFormItemStyle = (styles: StylesConfig, _token: ComputedRef<GlobalToken>) => {\r\n const { rowHeight, labelBgColor, borderColor, focusBorderColor } = styles;\r\n //TODO _token 后续得兼容下主题色\r\n const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;\r\n const inputFocusStyles = `\r\n &:focus{\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n `;\r\n\r\n return {\r\n cellBorderStyle: css`\r\n //min-height: ${rowHeight}px;\r\n /* 现有单元格边框 */\r\n border-right: 1px solid ${borderColor};\r\n border-bottom: 1px solid ${borderColor};\r\n\r\n .ant-form-item {\r\n height: 100%;\r\n margin-bottom: 0 !important;\r\n\r\n .ant-form-item-row {\r\n height: 100%;\r\n\r\n .ant-form-item-label {\r\n height: 100%;\r\n border-right: 1px solid ${borderColor};\r\n background-color: ${labelBgColor};\r\n\r\n & > label {\r\n height: ${rowHeight}px;\r\n }\r\n }\r\n\r\n .ant-form-item-control-input {\r\n height: 100%;\r\n\r\n .ant-form-item-control-input-content {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n .ant-radio-group {\r\n margin-left: 10px;\r\n }\r\n\r\n input,\r\n .ant-picker,\r\n .ant-select {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n .ant-select-selector {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n .ant-input,\r\n .ant-select-selector,\r\n .ant-input-number,\r\n .ant-picker {\r\n border: 0;\r\n border-radius: 0;\r\n\r\n ${inputFocusStyles}\r\n // 数字输入框要单独处理\r\n .ant-input-number-input {\r\n border: 0;\r\n border-radius: 0;\r\n ${inputFocusStyles};\r\n }\r\n }\r\n\r\n .ant-picker-focused,\r\n .ant-select-focused {\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n\r\n .ant-input[disabled] {\r\n ${inputFocusStyles}\r\n }\r\n }\r\n\r\n .ant-input-status-error,\r\n .ant-picker-status-error,\r\n .ant-select-status-error {\r\n box-shadow: 0 0 0 1px red;\r\n border-radius: 0;\r\n }\r\n }\r\n `,\r\n valueDisplayClass: css`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n padding: 0 11px 0 11px;\r\n align-items: center;\r\n `,\r\n // 内部元素:实现文本溢出\r\n textWrapperClass: css`\r\n /* ⭐️ 核心修复:确保内部元素可以被压缩,且强制文本在一行 */\r\n flex-grow: 1; /* 占据可用空间 */\r\n min-width: 0;\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n `\r\n };\r\n};\r\n"],"names":["css"],"mappings":";;;;;AAUO,MAAM,gBAAA,GAAmB,CAAC,MAAA,EAAsB,MAAA,KAAqC;AAC1F,EAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,WAAA,EAAa,kBAAiB,GAAI,MAAA;AAEnE,EAAA,MAAM,cAAA,GAAiB,cAAc,gBAAgB,CAAA,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB;AAAA;AAAA,kBAAA,EAEP,cAAc,CAAA;AAAA;AAAA,EAAA,CAAA;AAIhC,EAAA,OAAO;AAAA,IACL,eAAA,EAAiBA,OAAA;AAAA,oBAAA,EACC,SAAS,CAAA;AAAA;AAAA,8BAAA,EAEC,WAAW,CAAA;AAAA,+BAAA,EACV,WAAW,CAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,oCAAA,EAWN,WAAW,CAAA;AAAA,8BAAA,EACjB,YAAY,CAAA;;AAAA;AAAA,sBAAA,EAGpB,SAAS,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,YAAA,EAqCnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKd,gBAAgB,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAAA,EAMN,cAAc,CAAA;AAAA;;AAAA;AAAA,YAAA,EAI1B,gBAAgB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAY1B,iBAAA,EAAmBA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAQnB,gBAAA,EAAkBA,OAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GASpB;AACF;;;;"}
1
+ {"version":3,"file":"style.cjs","sources":["../../../../src/components/table-form/style.ts"],"sourcesContent":["import { ComputedRef } from \"vue\";\r\n\r\nimport { StylesConfig } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\n/**\r\n * 表单项样式\r\n */\r\nexport const useFormItemStyle = (\r\n styles: StylesConfig,\r\n _token: ComputedRef<GlobalToken>\r\n) => {\r\n const {\r\n rowHeight,\r\n labelBgColor,\r\n borderColor,\r\n focusBorderColor\r\n } = styles;\r\n //TODO _token 后续得兼容下主题色\r\n const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;\r\n const inputFocusStyles = `\r\n &:focus{\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n `;\r\n\r\n return {\r\n cellBorderStyle: css`\r\n //min-height: ${rowHeight}px;\r\n /* 现有单元格边框 */\r\n border-right: 1px solid ${borderColor};\r\n border-bottom: 1px solid ${borderColor};\r\n\r\n .ant-form-item {\r\n height: 100%;\r\n margin-bottom: 0 !important;\r\n\r\n .ant-form-item-row {\r\n height: 100%;\r\n\r\n .ant-form-item-label {\r\n height: 100%;\r\n border-right: 1px solid ${borderColor};\r\n background-color: ${labelBgColor};\r\n\r\n & > label {\r\n height: ${rowHeight}px;\r\n }\r\n }\r\n\r\n .ant-form-item-control-input {\r\n height: 100%;\r\n\r\n .ant-form-item-control-input-content {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n .ant-radio-group {\r\n margin-left: 10px;\r\n }\r\n\r\n input,\r\n .ant-picker,\r\n .ant-select {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n .ant-select-selector {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n .ant-input,\r\n .ant-select-selector,\r\n .ant-input-number,\r\n .ant-picker {\r\n border: 0;\r\n border-radius: 0;\r\n\r\n ${inputFocusStyles}\r\n // 数字输入框要单独处理\r\n .ant-input-number-input {\r\n border: 0;\r\n border-radius: 0;\r\n ${inputFocusStyles};\r\n }\r\n }\r\n\r\n .ant-picker-focused,\r\n .ant-select-focused {\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n\r\n .ant-input[disabled] {\r\n ${inputFocusStyles}\r\n }\r\n }\r\n\r\n .ant-input-status-error,\r\n .ant-picker-status-error,\r\n .ant-select-status-error {\r\n box-shadow: 0 0 0 1px red;\r\n border-radius: 0;\r\n }\r\n }\r\n `,\r\n valueDisplayClass: css`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n padding: 0 11px 0 11px;\r\n align-items: center;\r\n `,\r\n // 内部元素:实现文本溢出\r\n textWrapperClass: css`\r\n /* ⭐️ 核心修复:确保内部元素可以被压缩,且强制文本在一行 */\r\n flex-grow: 1; /* 占据可用空间 */\r\n min-width: 0;\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n `\r\n };\r\n};\r\n"],"names":["css"],"mappings":";;;;;AASO,MAAM,gBAAA,GAAmB,CAC9B,MAAA,EACA,MAAA,KACG;AACH,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AAEJ,EAAA,MAAM,cAAA,GAAiB,cAAc,gBAAgB,CAAA,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB;AAAA;AAAA,kBAAA,EAEP,cAAc,CAAA;AAAA;AAAA,EAAA,CAAA;AAIhC,EAAA,OAAO;AAAA,IACL,eAAA,EAAiBA,OAAA;AAAA,oBAAA,EACC,SAAS,CAAA;AAAA;AAAA,8BAAA,EAEC,WAAW,CAAA;AAAA,+BAAA,EACV,WAAW,CAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,oCAAA,EAWN,WAAW,CAAA;AAAA,8BAAA,EACjB,YAAY,CAAA;;AAAA;AAAA,sBAAA,EAGpB,SAAS,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,YAAA,EAqCnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKd,gBAAgB,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAAA,EAMN,cAAc,CAAA;AAAA;;AAAA;AAAA,YAAA,EAI1B,gBAAgB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAY1B,iBAAA,EAAmBA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAQnB,gBAAA,EAAkBA,OAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GASpB;AACF;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { defineComponent, ref, inject, onActivated, onMounted, watch, createVNode } from 'vue';
2
2
  import { useRoute } from 'vue-router';
3
- import { useKeepAliveStore, useDicStore } from '@ditari/store';
3
+ import { storeToRefs } from 'pinia';
4
+ import { useNavTabStore, useDicStore } from '@ditari/store';
4
5
 
5
6
  "use strict";
6
7
  var __async = (__this, __arguments, generator) => {
@@ -33,22 +34,24 @@ var DicReplace = /* @__PURE__ */ defineComponent({
33
34
  },
34
35
  // 值
35
36
  value: {
36
- type: String || Number,
37
+ type: [String, Number],
37
38
  default: ""
38
39
  }
39
40
  },
40
41
  setup(props) {
41
42
  const {
42
- get: keepNames
43
- } = useKeepAliveStore();
43
+ list
44
+ } = storeToRefs(useNavTabStore());
44
45
  const {
45
46
  getDicTextByValue
46
47
  } = useDicStore();
47
48
  const route = useRoute();
48
- const isKeepAlive = keepNames.some((name) => name === route.name);
49
+ const isKeepAlive = list.value.some((item) => {
50
+ var _a;
51
+ return item.fullPath === route.fullPath && ((_a = item.meta) == null ? void 0 : _a.keepAlive);
52
+ });
49
53
  const dicValueTxt = ref("");
50
- const fetchDic = inject("fetchDic", (name) => __async(null, null, function* () {
51
- console.warn(`fetchDic \u672A\u6CE8\u5165\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u5B9E\u73B0\uFF0Cname: ${name}`);
54
+ const fetchDic = inject("fetchDic", (_name) => __async(null, null, function* () {
52
55
  return [];
53
56
  }));
54
57
  onActivated(() => __async(null, null, function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\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\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: String || Number,\n default: \"\"\n }\n },\n setup(props) {\n const { get: keepNames } = useKeepAliveStore();\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n const dicValueTxt = ref<string>(\"\");\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 onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","get","keepNames","useKeepAliveStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","dicValueTxt","ref","fetchDic","inject","console","warn","onActivated","loadDicData","onMounted","replace","error","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useDicStore, useNavTabStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: [String, Number],\n default: \"\"\n }\n },\n setup(props) {\n const { list } = storeToRefs(useNavTabStore());\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = list.value.some(\n item =>\n item.fullPath === route.fullPath &&\n item.meta?.keepAlive\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n >(\"fetchDic\", async (_name: string) => {\n // console.warn(\n // `fetchDic 未注入,使用默认实现,name: ${name}`\n // );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string | number) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string | number) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","list","storeToRefs","useNavTabStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","item","fullPath","meta","keepAlive","dicValueTxt","ref","fetchDic","inject","_name","onActivated","loadDicData","onMounted","replace","error","console","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, inject, onActivated, onMounted, watch, resolveComponent, createBlock, openBlock, unref, isRef } from 'vue';
1
+ import { defineComponent, ref, inject, onActivated, onMounted, watch, resolveComponent, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, toDisplayString, unref, isRef } from 'vue';
2
2
  import { useRoute } from 'vue-router';
3
3
  import { useDicStore, useKeepAliveStore } from '@ditari/store';
4
4
 
@@ -81,7 +81,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
81
81
  loadingStatus.value = true;
82
82
  yield fetchDic(props.name);
83
83
  dicData = [...getDicByKey(props.name)];
84
- data2.value = dicData;
84
+ data2.value = dicData.filter((item) => {
85
+ return props.include.some(
86
+ (i) => i === item.value
87
+ );
88
+ });
85
89
  } catch (error) {
86
90
  console.error("\u83B7\u53D6\u5B57\u5178\u6570\u636E\u5931\u8D25:", error);
87
91
  }
@@ -144,19 +148,34 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
144
148
  };
145
149
  return (_ctx, _cache) => {
146
150
  const _component_a_select = resolveComponent("a-select");
147
- return openBlock(), createBlock(_component_a_select, {
148
- value: unref(modelValue),
149
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
150
- style: { "width": "100%" },
151
- "allow-clear": "",
152
- "show-search": "",
153
- options: unref(data),
154
- placeholder: __props.placeholder,
155
- disabled: __props.disabled,
156
- "filter-option": onFilterOption,
157
- onSelect: unref(onSelect),
158
- onChange: unref(onChange)
159
- }, null, 8, ["value", "options", "placeholder", "disabled", "onSelect", "onChange"]);
151
+ return openBlock(), createElementBlock(
152
+ Fragment,
153
+ null,
154
+ [
155
+ createElementVNode(
156
+ "div",
157
+ null,
158
+ toDisplayString(unref(data)),
159
+ 1
160
+ /* TEXT */
161
+ ),
162
+ createVNode(_component_a_select, {
163
+ value: unref(modelValue),
164
+ "onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
165
+ style: { "width": "100%" },
166
+ "allow-clear": "",
167
+ "show-search": "",
168
+ options: unref(data),
169
+ placeholder: __props.placeholder,
170
+ disabled: __props.disabled,
171
+ "filter-option": onFilterOption,
172
+ onSelect: unref(onSelect),
173
+ onChange: unref(onChange)
174
+ }, null, 8, ["value", "options", "placeholder", "disabled", "onSelect", "onChange"])
175
+ ],
176
+ 64
177
+ /* STABLE_FRAGMENT */
178
+ );
160
179
  };
161
180
  }
162
181
  });
@@ -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 data.value = dicData;\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\">\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 data.value = dicData.filter((item: DicItem) => {\n return props.include.some(\n (i: string | number) => i === item.value\n );\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 <div>\n {{ data }}\n </div>\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","_createElementVNode","_unref","_createVNode"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { isVNode, Comment, Text, defineComponent, ref, computed, provide, createVNode, mergeProps } from 'vue';
1
+ import { isVNode, defineComponent, ref, computed, provide, Comment, Text, createVNode, mergeProps } from 'vue';
2
2
  import { Col, FormItem, Form, Row } from 'ant-design-vue';
3
3
  import { DEFAULT_STYLES_CONFIG, tableFormProps } from './interface.mjs';
4
4
  import { useFormItemStyle } from './style.mjs';
@@ -8,28 +8,20 @@ import { useAntdToken, useDesign } from '../../hooks/useDesign.mjs';
8
8
  import { withInstall } from '../../utils/withInstall.mjs';
9
9
 
10
10
  "use strict";
11
+ function _isSlot(s) {
12
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
13
+ }
11
14
  const FormContextKey = Symbol("d-table-form-context");
12
- const getValidVNodesCount = (vnodes) => {
13
- let count = 0;
14
- if (Array.isArray(vnodes)) {
15
- vnodes.forEach((vnode) => {
16
- if (isVNode(vnode)) {
17
- if (vnode.type !== Comment && vnode.type !== Text && vnode.children !== " ") {
18
- count++;
19
- }
20
- } else if (Array.isArray(vnode)) {
21
- count += getValidVNodesCount(vnode);
22
- } else if (typeof vnode === "string" && vnode.trim() !== "") {
23
- count++;
24
- }
25
- });
15
+ const getVNodeSpan = (vnode) => {
16
+ var _a;
17
+ if (vnode && vnode.props) {
18
+ const s = (_a = vnode.props.span) != null ? _a : vnode.props["span"];
19
+ if (s !== void 0 && s !== null) return Number(s);
26
20
  }
27
- return count;
21
+ return 24;
28
22
  };
29
23
  const containerBorderStyle = css`
30
- /* 顶部边框 */
31
24
  border-top: 1px solid #d9d9d9;
32
- /* 左侧边框 */
33
25
  border-left: 1px solid #d9d9d9;
34
26
  `;
35
27
  const _TableForm = /* @__PURE__ */ defineComponent({
@@ -45,7 +37,7 @@ const _TableForm = /* @__PURE__ */ defineComponent({
45
37
  getPrefixCls
46
38
  } = useDesign("table-form");
47
39
  const formRef = ref();
48
- const calculatedSpan = computed(() => Math.floor(24 / props.colCount));
40
+ const defaultSpan = computed(() => 24);
49
41
  const isReadonly = computed(() => props.readonly);
50
42
  const finalStylesConfig = computed(() => {
51
43
  const defaultCopy = JSON.parse(JSON.stringify(DEFAULT_STYLES_CONFIG));
@@ -54,47 +46,81 @@ const _TableForm = /* @__PURE__ */ defineComponent({
54
46
  const modelState = computed(() => attrs.model);
55
47
  provide(FormContextKey, {
56
48
  isFormParent: true,
57
- span: calculatedSpan,
58
- fieldErrors: {},
49
+ span: defaultSpan,
50
+ fieldErrors: ref({}),
59
51
  isReadonly,
60
52
  stylesConfig: finalStylesConfig,
61
53
  model: modelState
62
54
  });
63
- const fillerCols = computed(() => {
55
+ const flattenVNodes = (children) => {
56
+ let result = [];
57
+ const vnodes = Array.isArray(children) ? children : [children];
58
+ vnodes.forEach((v) => {
59
+ var _a;
60
+ if (Array.isArray(v)) {
61
+ result = result.concat(flattenVNodes(v));
62
+ } else if (isVNode(v)) {
63
+ if (v.type === Symbol.for("v-fgt") || ((_a = v.type) == null ? void 0 : _a.toString()) === "Symbol(Fragment)") {
64
+ result = result.concat(flattenVNodes(v.children));
65
+ } else if (v.type !== Comment && v.type !== Text) {
66
+ result.push(v);
67
+ }
68
+ }
69
+ });
70
+ return result;
71
+ };
72
+ const renderItems = () => {
64
73
  const colCls = getPrefixCls("item-col");
65
74
  const styles = useFormItemStyle(finalStylesConfig.value, token);
66
- const defaultSlot = slots.default ? slots.default() : [];
67
- const itemCounts = getValidVNodesCount(defaultSlot);
68
- const colCount = props.colCount;
69
- const remainder = itemCounts % colCount;
70
- const fillerCount = remainder === 0 ? 0 : colCount - remainder;
71
- const span = calculatedSpan.value;
72
- const fillerNodes = [];
73
- for (let i = 0; i < fillerCount; i++) {
74
- fillerNodes.push(createVNode(Col, {
75
- "key": `filler-${i}`,
76
- "span": span,
75
+ const rawSlots = slots.default ? slots.default() : [];
76
+ const vnodes = flattenVNodes(rawSlots);
77
+ const finalElements = [];
78
+ let currentLineSpan = 0;
79
+ vnodes.forEach((vnode, index) => {
80
+ const span = getVNodeSpan(vnode);
81
+ if (currentLineSpan > 0 && (currentLineSpan + span > 24 || span === 24)) {
82
+ const neededSpan = 24 - currentLineSpan;
83
+ if (neededSpan > 0) {
84
+ finalElements.push(createVNode(Col, {
85
+ "key": `filler-mid-${index}`,
86
+ "span": neededSpan,
87
+ "class": cx(colCls, styles.cellBorderStyle)
88
+ }, {
89
+ default: () => [createVNode(FormItem, null, null)]
90
+ }));
91
+ }
92
+ currentLineSpan = 0;
93
+ }
94
+ finalElements.push(vnode);
95
+ currentLineSpan += span;
96
+ if (currentLineSpan >= 24) {
97
+ currentLineSpan = 0;
98
+ }
99
+ });
100
+ if (currentLineSpan > 0) {
101
+ finalElements.push(createVNode(Col, {
102
+ "key": "filler-last",
103
+ "span": 24 - currentLineSpan,
77
104
  "class": cx(colCls, styles.cellBorderStyle)
78
105
  }, {
79
- default: () => [createVNode(FormItem, {
80
- "label": " "
81
- }, null)]
106
+ default: () => [createVNode(FormItem, null, null)]
82
107
  }));
83
108
  }
84
- return fillerNodes;
85
- });
109
+ return finalElements;
110
+ };
86
111
  expose({
87
112
  form: formRef
88
113
  });
89
114
  return () => {
115
+ let _slot;
90
116
  const rootCls = getPrefixCls();
91
117
  return createVNode(Form, mergeProps({
92
118
  "class": cx(rootCls, containerBorderStyle)
93
119
  }, attrs, {
94
120
  "ref": formRef
95
121
  }), {
96
- default: () => [createVNode(Row, null, {
97
- default: () => [slots.default ? slots.default() : null, fillerCols.value]
122
+ default: () => [createVNode(Row, null, _isSlot(_slot = renderItems()) ? _slot : {
123
+ default: () => [_slot]
98
124
  })]
99
125
  });
100
126
  };
@@ -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} 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\n// ⭐️ Context 接口,包含错误状态映射\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\n// 辅助函数:计算插槽中有效 VNode 的数量\r\nconst getValidVNodesCount = (vnodes: unknown): number => {\r\n let count = 0;\r\n if (Array.isArray(vnodes)) {\r\n vnodes.forEach(vnode => {\r\n if (isVNode(vnode)) {\r\n // 忽略注释、文本节点、或仅空白的节点\r\n if (\r\n vnode.type !== Comment &&\r\n vnode.type !== Text &&\r\n vnode.children !== \" \"\r\n ) {\r\n count++;\r\n }\r\n } else if (Array.isArray(vnode)) {\r\n // 处理 Fragment 或嵌套数组\r\n count += getValidVNodesCount(vnode);\r\n } else if (\r\n typeof vnode === \"string\" &&\r\n vnode.trim() !== \"\"\r\n ) {\r\n // 处理非空字符串(虽然不常见,但保险起见)\r\n count++;\r\n }\r\n });\r\n }\r\n return count;\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n /* 顶部边框 */\r\n border-top: 1px solid #d9d9d9;\r\n /* 左侧边框 */\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\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n // 表单对象\r\n const formRef = ref<FormInstance | null>();\r\n\r\n //动态计算一个col的span值是多少\r\n const calculatedSpan = computed(() =>\r\n Math.floor(24 / props.colCount)\r\n );\r\n\r\n // ⭐️ 新增:计算只读状态\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n // 1. 创建默认配置的深拷贝\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n // 2. 使用 Lodash merge (或 mergeWith) 合并用户传入的配置\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(() => attrs.model);\r\n\r\n // ⭐️ FIX 2: 提供 Context 时,传递 ComputedRef 本身,而不是它的 .value\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: calculatedSpan,\r\n fieldErrors: {},\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n // ⭐️ 核心逻辑:计算并渲染占位符\r\n const fillerCols = computed(() => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n\r\n const defaultSlot = slots.default\r\n ? slots.default()\r\n : [];\r\n const itemCounts = getValidVNodesCount(defaultSlot);\r\n const colCount = props.colCount;\r\n\r\n // 计算当前行已占用的位置 (余数)\r\n const remainder = itemCounts % colCount;\r\n const fillerCount =\r\n remainder === 0 ? 0 : colCount - remainder;\r\n\r\n const span = calculatedSpan.value;\r\n const fillerNodes = [];\r\n\r\n // 渲染所需数量的空 Col\r\n for (let i = 0; i < fillerCount; i++) {\r\n fillerNodes.push(\r\n <Col\r\n key={`filler-${i}`}\r\n span={span}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n return fillerNodes;\r\n });\r\n\r\n expose({\r\n form: formRef\r\n });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>\r\n {/* 渲染所有传入的 FormItem */}\r\n {slots.default ? slots.default() : null}\r\n {/* 渲染计算出的占位 Col */}\r\n {fillerCols.value}\r\n </Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["FormContextKey","Symbol","getValidVNodesCount","vnodes","count","Array","isArray","forEach","vnode","isVNode","type","Comment","Text","children","trim","containerBorderStyle","css","_TableForm","defineComponent","name","props","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","calculatedSpan","computed","Math","floor","colCount","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","span","fieldErrors","fillerCols","colCls","styles","useFormItemStyle","value","defaultSlot","default","itemCounts","remainder","fillerCount","fillerNodes","i","push","_createVNode","Col","cx","cellBorderStyle","FormItem","form","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></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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"}
@@ -35,11 +35,6 @@ const DEFAULT_STYLES_CONFIG = {
35
35
  focusBorderColor: "#1677ff"
36
36
  };
37
37
  const tableFormProps = {
38
- colCount: {
39
- type: Number,
40
- default: 4,
41
- required: true
42
- },
43
38
  readonly: {
44
39
  type: Boolean,
45
40
  default: false
@@ -1 +1 @@
1
- {"version":3,"file":"interface.mjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (value: unknown, name: unknown) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter>,\r\n // 默认值\r\n default: (value: unknown, _name: unknown) => value\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n colCount: {\r\n type: Number,\r\n default: 4,\r\n required: true as const\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<ExtractPropTypes<typeof tableFormItemProps>>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAeO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,CAAC,KAAA,EAAgB,KAAA,KAAmB;AAAA;AAEjD;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;"}
1
+ {"version":3,"file":"interface.mjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (\r\n value: unknown,\r\n name: unknown\r\n) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter>,\r\n // 默认值\r\n default: (value: unknown, _name: unknown) => value\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<\r\n ExtractPropTypes<typeof tableFormItemProps>\r\n>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,CAAC,KAAA,EAAgB,KAAA,KAAmB;AAAA;AAEjD;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;"}
@@ -2,7 +2,12 @@ import { css } from '@emotion/css';
2
2
 
3
3
  "use strict";
4
4
  const useFormItemStyle = (styles, _token) => {
5
- const { rowHeight, labelBgColor, borderColor, focusBorderColor } = styles;
5
+ const {
6
+ rowHeight,
7
+ labelBgColor,
8
+ borderColor,
9
+ focusBorderColor
10
+ } = styles;
6
11
  const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;
7
12
  const inputFocusStyles = `
8
13
  &:focus{
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","sources":["../../../../src/components/table-form/style.ts"],"sourcesContent":["import { ComputedRef } from \"vue\";\r\n\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport { StylesConfig } from \"./interface\";\r\n\r\n/**\r\n * 表单项样式\r\n */\r\nexport const useFormItemStyle = (styles: StylesConfig, _token: ComputedRef<GlobalToken>) => {\r\n const { rowHeight, labelBgColor, borderColor, focusBorderColor } = styles;\r\n //TODO _token 后续得兼容下主题色\r\n const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;\r\n const inputFocusStyles = `\r\n &:focus{\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n `;\r\n\r\n return {\r\n cellBorderStyle: css`\r\n //min-height: ${rowHeight}px;\r\n /* 现有单元格边框 */\r\n border-right: 1px solid ${borderColor};\r\n border-bottom: 1px solid ${borderColor};\r\n\r\n .ant-form-item {\r\n height: 100%;\r\n margin-bottom: 0 !important;\r\n\r\n .ant-form-item-row {\r\n height: 100%;\r\n\r\n .ant-form-item-label {\r\n height: 100%;\r\n border-right: 1px solid ${borderColor};\r\n background-color: ${labelBgColor};\r\n\r\n & > label {\r\n height: ${rowHeight}px;\r\n }\r\n }\r\n\r\n .ant-form-item-control-input {\r\n height: 100%;\r\n\r\n .ant-form-item-control-input-content {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n .ant-radio-group {\r\n margin-left: 10px;\r\n }\r\n\r\n input,\r\n .ant-picker,\r\n .ant-select {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n .ant-select-selector {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n .ant-input,\r\n .ant-select-selector,\r\n .ant-input-number,\r\n .ant-picker {\r\n border: 0;\r\n border-radius: 0;\r\n\r\n ${inputFocusStyles}\r\n // 数字输入框要单独处理\r\n .ant-input-number-input {\r\n border: 0;\r\n border-radius: 0;\r\n ${inputFocusStyles};\r\n }\r\n }\r\n\r\n .ant-picker-focused,\r\n .ant-select-focused {\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n\r\n .ant-input[disabled] {\r\n ${inputFocusStyles}\r\n }\r\n }\r\n\r\n .ant-input-status-error,\r\n .ant-picker-status-error,\r\n .ant-select-status-error {\r\n box-shadow: 0 0 0 1px red;\r\n border-radius: 0;\r\n }\r\n }\r\n `,\r\n valueDisplayClass: css`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n padding: 0 11px 0 11px;\r\n align-items: center;\r\n `,\r\n // 内部元素:实现文本溢出\r\n textWrapperClass: css`\r\n /* ⭐️ 核心修复:确保内部元素可以被压缩,且强制文本在一行 */\r\n flex-grow: 1; /* 占据可用空间 */\r\n min-width: 0;\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n `\r\n };\r\n};\r\n"],"names":[],"mappings":";;;AAUO,MAAM,gBAAA,GAAmB,CAAC,MAAA,EAAsB,MAAA,KAAqC;AAC1F,EAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,WAAA,EAAa,kBAAiB,GAAI,MAAA;AAEnE,EAAA,MAAM,cAAA,GAAiB,cAAc,gBAAgB,CAAA,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB;AAAA;AAAA,kBAAA,EAEP,cAAc,CAAA;AAAA;AAAA,EAAA,CAAA;AAIhC,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,GAAA;AAAA,oBAAA,EACC,SAAS,CAAA;AAAA;AAAA,8BAAA,EAEC,WAAW,CAAA;AAAA,+BAAA,EACV,WAAW,CAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,oCAAA,EAWN,WAAW,CAAA;AAAA,8BAAA,EACjB,YAAY,CAAA;;AAAA;AAAA,sBAAA,EAGpB,SAAS,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,YAAA,EAqCnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKd,gBAAgB,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAAA,EAMN,cAAc,CAAA;AAAA;;AAAA;AAAA,YAAA,EAI1B,gBAAgB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAY1B,iBAAA,EAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAQnB,gBAAA,EAAkB,GAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GASpB;AACF;;;;"}
1
+ {"version":3,"file":"style.mjs","sources":["../../../../src/components/table-form/style.ts"],"sourcesContent":["import { ComputedRef } from \"vue\";\r\n\r\nimport { StylesConfig } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\n/**\r\n * 表单项样式\r\n */\r\nexport const useFormItemStyle = (\r\n styles: StylesConfig,\r\n _token: ComputedRef<GlobalToken>\r\n) => {\r\n const {\r\n rowHeight,\r\n labelBgColor,\r\n borderColor,\r\n focusBorderColor\r\n } = styles;\r\n //TODO _token 后续得兼容下主题色\r\n const boxShadowStyle = `0 0 0 1px ${focusBorderColor}`;\r\n const inputFocusStyles = `\r\n &:focus{\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n `;\r\n\r\n return {\r\n cellBorderStyle: css`\r\n //min-height: ${rowHeight}px;\r\n /* 现有单元格边框 */\r\n border-right: 1px solid ${borderColor};\r\n border-bottom: 1px solid ${borderColor};\r\n\r\n .ant-form-item {\r\n height: 100%;\r\n margin-bottom: 0 !important;\r\n\r\n .ant-form-item-row {\r\n height: 100%;\r\n\r\n .ant-form-item-label {\r\n height: 100%;\r\n border-right: 1px solid ${borderColor};\r\n background-color: ${labelBgColor};\r\n\r\n & > label {\r\n height: ${rowHeight}px;\r\n }\r\n }\r\n\r\n .ant-form-item-control-input {\r\n height: 100%;\r\n\r\n .ant-form-item-control-input-content {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n .ant-radio-group {\r\n margin-left: 10px;\r\n }\r\n\r\n input,\r\n .ant-picker,\r\n .ant-select {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n .ant-select-selector {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n }\r\n }\r\n\r\n .ant-input,\r\n .ant-select-selector,\r\n .ant-input-number,\r\n .ant-picker {\r\n border: 0;\r\n border-radius: 0;\r\n\r\n ${inputFocusStyles}\r\n // 数字输入框要单独处理\r\n .ant-input-number-input {\r\n border: 0;\r\n border-radius: 0;\r\n ${inputFocusStyles};\r\n }\r\n }\r\n\r\n .ant-picker-focused,\r\n .ant-select-focused {\r\n box-shadow: ${boxShadowStyle};\r\n }\r\n\r\n .ant-input[disabled] {\r\n ${inputFocusStyles}\r\n }\r\n }\r\n\r\n .ant-input-status-error,\r\n .ant-picker-status-error,\r\n .ant-select-status-error {\r\n box-shadow: 0 0 0 1px red;\r\n border-radius: 0;\r\n }\r\n }\r\n `,\r\n valueDisplayClass: css`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n padding: 0 11px 0 11px;\r\n align-items: center;\r\n `,\r\n // 内部元素:实现文本溢出\r\n textWrapperClass: css`\r\n /* ⭐️ 核心修复:确保内部元素可以被压缩,且强制文本在一行 */\r\n flex-grow: 1; /* 占据可用空间 */\r\n min-width: 0;\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n `\r\n };\r\n};\r\n"],"names":[],"mappings":";;;AASO,MAAM,gBAAA,GAAmB,CAC9B,MAAA,EACA,MAAA,KACG;AACH,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AAEJ,EAAA,MAAM,cAAA,GAAiB,cAAc,gBAAgB,CAAA,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB;AAAA;AAAA,kBAAA,EAEP,cAAc,CAAA;AAAA;AAAA,EAAA,CAAA;AAIhC,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,GAAA;AAAA,oBAAA,EACC,SAAS,CAAA;AAAA;AAAA,8BAAA,EAEC,WAAW,CAAA;AAAA,+BAAA,EACV,WAAW,CAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,oCAAA,EAWN,WAAW,CAAA;AAAA,8BAAA,EACjB,YAAY,CAAA;;AAAA;AAAA,sBAAA,EAGpB,SAAS,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,YAAA,EAqCnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKd,gBAAgB,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,wBAAA,EAMN,cAAc,CAAA;AAAA;;AAAA;AAAA,YAAA,EAI1B,gBAAgB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAY1B,iBAAA,EAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAQnB,gBAAA,EAAkB,GAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GASpB;AACF;;;;"}
@@ -4,7 +4,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4
4
  default: string;
5
5
  };
6
6
  value: {
7
- type: StringConstructor;
7
+ type: (StringConstructor | NumberConstructor)[];
8
8
  default: string;
9
9
  };
10
10
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -13,12 +13,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
13
13
  default: string;
14
14
  };
15
15
  value: {
16
- type: StringConstructor;
16
+ type: (StringConstructor | NumberConstructor)[];
17
17
  default: string;
18
18
  };
19
19
  }>> & Readonly<{}>, {
20
20
  name: string;
21
- value: string;
21
+ value: string | number;
22
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
23
  export default _default;
24
24
  //# sourceMappingURL=DicReplace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DicReplace.d.ts","sourceRoot":"","sources":["../../../../src/components/dic/DicReplace.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoFG"}
1
+ {"version":3,"file":"DicReplace.d.ts","sourceRoot":"","sources":["../../../../src/components/dic/DicReplace.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAkBA,wBAuFG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.vue.ts"],"names":[],"mappings":"AAeA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAFQ,MAAM,GAAG,MAAM;eACf,MAAM;;eADN,MAAM,GAAG,MAAM;eACf,MAAM;;sBAsHY,MAAM,GAAG,MAAM;;;;mBAvHjC,MAAM,GAAG,MAAM;mBACf,MAAM;;mBADN,MAAM,GAAG,MAAM;mBACf,MAAM;;;6BA4Fe,MAAM;0BA0BT,MAAM,GAAG,MAAM;;;iCA2D5B,MAAM,WACT,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA9KlB,wBAgME"}
1
+ {"version":3,"file":"Select.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.vue.ts"],"names":[],"mappings":"AAeA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAFQ,MAAM,GAAG,MAAM;eACf,MAAM;;eADN,MAAM,GAAG,MAAM;eACf,MAAM;;sBA2HY,MAAM,GAAG,MAAM;;;;mBA5HjC,MAAM,GAAG,MAAM;mBACf,MAAM;;mBADN,MAAM,GAAG,MAAM;mBACf,MAAM;;;6BAiGe,MAAM;0BA0BT,MAAM,GAAG,MAAM;;;iCA2D5B,MAAM,WACT,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnLlB,wBAqME"}
@@ -10,11 +10,6 @@ export interface TableFormContext {
10
10
  model: ComputedRef<Record<string, unknown>>;
11
11
  }
12
12
  export declare const TableForm: import("../../utils/withInstall").SFCWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
13
- colCount: {
14
- type: NumberConstructor;
15
- default: number;
16
- required: true;
17
- };
18
13
  readonly: {
19
14
  type: BooleanConstructor;
20
15
  default: boolean;
@@ -30,11 +25,6 @@ export declare const TableForm: import("../../utils/withInstall").SFCWithInstall
30
25
  };
31
26
  };
32
27
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
- colCount: {
34
- type: NumberConstructor;
35
- default: number;
36
- required: true;
37
- };
38
28
  readonly: {
39
29
  type: BooleanConstructor;
40
30
  default: boolean;
@@ -50,7 +40,6 @@ export declare const TableForm: import("../../utils/withInstall").SFCWithInstall
50
40
  };
51
41
  };
52
42
  }>> & Readonly<{}>, {
53
- colCount: number;
54
43
  readonly: boolean;
55
44
  stylesConfig: StylesConfig;
56
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"TableForm.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/TableForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAMZ,MAAM,KAAK,CAAC;AASb,OAAO,EAEL,YAAY,EAEb,MAAM,aAAa,CAAC;AAYrB,eAAO,MAAM,cAAc,eAE1B,CAAC;AAGF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CACnC,CAAC;IACF,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C;AA0ID,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAA0B,CAAC"}
1
+ {"version":3,"file":"TableForm.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/TableForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAOZ,MAAM,KAAK,CAAC;AASb,OAAO,EAEL,YAAY,EAEb,MAAM,aAAa,CAAC;AAYrB,eAAO,MAAM,cAAc,eAE1B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CACnC,CAAC;IACF,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C;AAyJD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAA0B,CAAC"}
@@ -30,11 +30,6 @@ export interface StylesConfig {
30
30
  focusBorderColor?: string;
31
31
  }
32
32
  export declare const tableFormProps: {
33
- colCount: {
34
- type: NumberConstructor;
35
- default: number;
36
- required: true;
37
- };
38
33
  readonly: {
39
34
  type: BooleanConstructor;
40
35
  default: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;AAGnE,eAAO,MAAM,kBAAkB;;;;;;cAOT,QAAQ,CAAC,SAAS,CAAC;yBAEpB,OAAO,SAAS,OAAO;;CAE3C,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,YAMnC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;cAWP,QAAQ,CAAC,YAAY,CAAC;;YAzBxC;;eAEG;wBACS,MAAM;0BAEJ,MAAM;0BAEN,MAAM;2BAEL,MAAM;+BAEF,MAAM;;;CAiB1B,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,KACV,OAAO,CAAC;AAGb,eAAO,MAAM,kBAAkB;;;;;;cAOT,QAAQ,CAAC,SAAS,CAAC;yBAEpB,OAAO,SAAS,OAAO;;CAE3C,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,YAMnC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc;;;;;;cAMP,QAAQ,CAAC,YAAY,CAAC;;YApBxC;;eAEG;wBACS,MAAM;0BAEJ,MAAM;0BAEN,MAAM;2BAEL,MAAM;+BAEF,MAAM;;;CAY1B,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,gBAAgB,CAAC,OAAO,kBAAkB,CAAC,CAC5C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ComputedRef } from "vue";
2
- import type { GlobalToken } from "ant-design-vue/es/theme/interface";
3
2
  import { StylesConfig } from "./interface";
3
+ import type { GlobalToken } from "ant-design-vue/es/theme/interface";
4
4
  /**
5
5
  * 表单项样式
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAAY,YAAY,UAAU,WAAW,CAAC,WAAW,CAAC;;;;CAgHtF,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../src/components/table-form/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,gBAAgB,WACnB,YAAY,UACZ,WAAW,CAAC,WAAW,CAAC;;;;CAsHjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "5.1.6",
3
+ "version": "5.1.9",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,7 +29,7 @@
29
29
  "./theme/*": "./dist/style/*"
30
30
  },
31
31
  "dependencies": {
32
- "@ditari/store": "^5.1.2",
32
+ "@ditari/store": "^5.1.4",
33
33
  "@ditari/core": "^5.1.3"
34
34
  }
35
35
  }