@ditari/bsui 5.1.7 → 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.
@@ -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":";;;;;;;;;;;;AAkCO,MAAMA,cAAAA,GAAiBC,OAC5B,sBACF;AAeA,MAAMC,sBAAuBC,CAAAA,MAAAA,KAA4B;AACvD,EAAA,IAAIC,KAAAA,GAAQ,CAAA;AACZ,EAAA,IAAIC,KAAAA,CAAMC,OAAAA,CAAQH,MAAM,CAAA,EAAG;AACzBA,IAAAA,MAAAA,CAAOI,QAAQC,CAAAA,KAAAA,KAAS;AACtB,MAAA,IAAIC,WAAAA,CAAQD,KAAK,CAAA,EAAG;AAElB,QAAA,IACEA,KAAAA,CAAME,SAASC,WAAAA,IACfH,KAAAA,CAAME,SAASE,QAAAA,IACfJ,KAAAA,CAAMK,aAAa,GAAA,EACnB;AACAT,UAAAA,KAAAA,EAAAA;AAAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAWC,KAAAA,CAAMC,OAAAA,CAAQE,KAAK,CAAA,EAAG;AAE/BJ,QAAAA,KAAAA,IAASF,oBAAoBM,KAAK,CAAA;AAAA,MACpC,WACE,OAAOA,KAAAA,KAAU,YACjBA,KAAAA,CAAMM,IAAAA,OAAW,EAAA,EACjB;AAEAV,QAAAA,KAAAA,EAAAA;AAAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAOA,KAAAA;AACT,CAAA;AAEA,MAAMW,oBAAAA,GAAuBC,OAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAAAA;AAO7B,MAAMC,6BAAaC,mBAAAA,CAAgB;AAAA,EACjCC,IAAAA,EAAM,YAAA;AAAA,EACNC,KAAAA,EAAOC,yBAAAA;AAAAA,EAEPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC,KAAAA;AAAAA,IAAOC;AAAAA,GAAO,EAAG;AACrC,IAAA,MAAMC,QAAQC,sBAAAA,EAAa;AAE3B,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,oBAAU,YAAY,CAAA;AAE/C,IAAA,MAAMC,UAAUC,OAAAA,EAAyB;AAGzC,IAAA,MAAMC,cAAAA,GAAiBC,aAAS,MAC9BC,IAAAA,CAAKC,MAAM,EAAA,GAAKf,KAAAA,CAAMgB,QAAQ,CAChC,CAAA;AAGA,IAAA,MAAMC,UAAAA,GAAaJ,YAAAA,CAAS,MAAMb,KAAAA,CAAMkB,QAAQ,CAAA;AAChD,IAAA,MAAMC,iBAAAA,GAAoBN,aAAuB,MAAM;AAErD,MAAA,MAAMO,cAAcC,IAAAA,CAAKC,KAAAA,CACvBD,IAAAA,CAAKE,SAAAA,CAAUC,gCAAqB,CACtC,CAAA;AAEA,MAAA,OAAOC,cAAAA,CAAML,WAAAA,EAAapB,KAAAA,CAAM0B,YAAY,CAAA;AAAA,IAC9C,CAAC,CAAA;AACD,IAAA,MAAMC,UAAAA,GAAad,YAAAA,CAAS,MAAMT,KAAAA,CAAMwB,KAAK,CAAA;AAG7CC,IAAAA,WAAAA,CAAQjD,cAAAA,EAAgB;AAAA,MACtBkD,YAAAA,EAAc,IAAA;AAAA,MACdC,IAAAA,EAAMnB,cAAAA;AAAAA,MACNoB,aAAa,EAAC;AAAA,MACdf,UAAAA;AAAAA,MACAS,YAAAA,EAAcP,iBAAAA;AAAAA,MACdS,KAAAA,EAAOD;AAAAA,KACR,CAAA;AAGD,IAAA,MAAMM,UAAAA,GAAapB,aAAS,MAAM;AAChC,MAAA,MAAMqB,MAAAA,GAAS1B,aAAa,UAAU,CAAA;AACtC,MAAA,MAAM2B,MAAAA,GAASC,sBAAAA,CACbjB,iBAAAA,CAAkBkB,KAAAA,EAClB/B,KACF,CAAA;AAEA,MAAA,MAAMgC,cAAcnC,KAAAA,CAAMoC,OAAAA,GACtBpC,KAAAA,CAAMoC,OAAAA,KACN,EAAA;AACJ,MAAA,MAAMC,UAAAA,GAAa1D,oBAAoBwD,WAAW,CAAA;AAClD,MAAA,MAAMtB,WAAWhB,KAAAA,CAAMgB,QAAAA;AAGvB,MAAA,MAAMyB,YAAYD,UAAAA,GAAaxB,QAAAA;AAC/B,MAAA,MAAM0B,WAAAA,GACJD,SAAAA,KAAc,CAAA,GAAI,CAAA,GAAIzB,QAAAA,GAAWyB,SAAAA;AAEnC,MAAA,MAAMV,OAAOnB,cAAAA,CAAeyB,KAAAA;AAC5B,MAAA,MAAMM,cAAc,EAAA;AAGpB,MAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIF,WAAAA,EAAaE,CAAAA,EAAAA,EAAK;AACpCD,QAAAA,WAAAA,CAAYE,IAAAA,CAAIC,gBAAAC,gBAAAA,EAAA;AAAA,UAAA,KAAA,EAEP,UAAUH,CAAC,CAAA,CAAA;AAAA,UAAE,MAAA,EACZb,IAAAA;AAAAA,UAAI,OAAA,EACHiB,MAAAA,CAAGd,MAAAA,EAAQC,MAAAA,CAAOc,eAAe;AAAA,SAAC,EAAA;AAAA,UAAAV,OAAAA,EAAAA,MAAA,CAAAO,eAAAA,CAAAI,qBAAAA,EAAA;AAAA,YAAA,OAAA,EAExB;AAAA,WAAK,EAAA,IAAA,CAAA;AAAA,SAAA,CAE1B,CAAA;AAAA,MACF;AACA,MAAA,OAAOP,WAAAA;AAAAA,IACT,CAAC,CAAA;AAEDtC,IAAAA,MAAAA,CAAO;AAAA,MACL8C,IAAAA,EAAMzC;AAAAA,KACP,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAM0C,UAAU5C,YAAAA,EAAa;AAE7B,MAAA,OAAAsC,eAAAA,CAAAO,mBAAAC,cAAAA,CAAA;AAAA,QAAA,OAAA,EAEWN,MAAAA,CAAGI,OAAAA,EAASzD,oBAAoB;AAAA,SACnCS,KAAAA,EAAK;AAAA,QAAA,KAAA,EACJM;AAAAA,OAAO,CAAA,EAAA;AAAA,QAAA6B,OAAAA,EAAAA,MAAA,CAAAO,eAAAA,CAAAS,kBAAA,IAAA,EAAA;AAAA,UAAAhB,OAAAA,EAAAA,MAAA,CAITpC,KAAAA,CAAMoC,OAAAA,GAAUpC,MAAMoC,OAAAA,EAAQ,GAAI,IAAA,EAElCN,UAAAA,CAAWI,KAAK;AAAA,SAAA,CAAA;AAAA,OAAA,CAAA;AAAA,IAIzB,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMmB,SAAAA,GAAYC,wBAAY5D,UAAU;;;;;"}
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;;;;;;"}
@@ -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;;;;"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "5.1.7",
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.3",
32
+ "@ditari/store": "^5.1.4",
33
33
  "@ditari/core": "^5.1.3"
34
34
  }
35
35
  }