@silver-formily/element-plus 4.0.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/__builtins__/shared/loading.mjs.map +1 -1
- package/esm/__builtins__/shared/transform-component.mjs +1 -1
- package/esm/__builtins__/shared/transform-component.mjs.map +1 -1
- package/esm/__builtins__/shared/utils.mjs +11 -6
- package/esm/__builtins__/shared/utils.mjs.map +1 -1
- package/esm/array-base/array-base-inner.mjs.map +1 -1
- package/esm/array-base/array-base-move-down.mjs +1 -1
- package/esm/array-base/array-base-move-down.mjs.map +1 -1
- package/esm/array-base/array-base-move-up.mjs +1 -1
- package/esm/array-base/array-base-move-up.mjs.map +1 -1
- package/esm/array-base/array-base-remove.mjs +1 -1
- package/esm/array-base/array-base-remove.mjs.map +1 -1
- package/esm/array-base/types.d.ts +2 -2
- package/esm/array-base/utils.d.ts +1 -1
- package/esm/array-base/utils.mjs +1 -1
- package/esm/array-base/utils.mjs.map +1 -1
- package/esm/array-cards/array-cards.mjs +1 -1
- package/esm/array-cards/array-cards.mjs.map +1 -1
- package/esm/array-collapse/array-collapse-item.mjs +1 -1
- package/esm/array-collapse/array-collapse-item.mjs.map +1 -1
- package/esm/array-collapse/array-collapse.mjs +3 -4
- package/esm/array-collapse/array-collapse.mjs.map +1 -1
- package/esm/array-items/array-items.mjs +3 -8
- package/esm/array-items/array-items.mjs.map +1 -1
- package/esm/array-list-tabs/array-list-tabs.mjs +57 -51
- package/esm/array-list-tabs/array-list-tabs.mjs.map +1 -1
- package/esm/array-list-tabs/utils.mjs.map +1 -1
- package/esm/array-table/array-table.mjs +4 -18
- package/esm/array-table/array-table.mjs.map +1 -1
- package/esm/array-table/utils.mjs.map +1 -1
- package/esm/array-tabs/array-tabs.mjs +1 -1
- package/esm/array-tabs/array-tabs.mjs.map +1 -1
- package/esm/autocomplete/autocomplete.mjs.map +1 -1
- package/esm/autocomplete/index.d.ts +3 -4
- package/esm/checkbox/checkbox-group.mjs +1 -1
- package/esm/checkbox/checkbox-group.mjs.map +1 -1
- package/esm/checkbox/index.d.ts +57 -57
- package/esm/color-picker/index.d.ts +20 -20
- package/esm/color-picker-panel/index.d.ts +9 -9
- package/esm/date-picker-panel/index.d.ts +1 -1
- package/esm/editable/editable-popover.mjs +1 -1
- package/esm/editable/editable-popover.mjs.map +1 -1
- package/esm/editable/editable.mjs +1 -1
- package/esm/editable/editable.mjs.map +1 -1
- package/esm/form/form.mjs.map +1 -1
- package/esm/form/form.vue.d.ts +1 -1
- package/esm/form-collapse/form-collapse.mjs +1 -1
- package/esm/form-collapse/form-collapse.mjs.map +1 -1
- package/esm/form-collapse/utils.d.ts +2 -2
- package/esm/form-collapse/utils.mjs +2 -2
- package/esm/form-collapse/utils.mjs.map +1 -1
- package/esm/form-dialog/dialog-content.mjs +1 -1
- package/esm/form-dialog/dialog-content.mjs.map +1 -1
- package/esm/form-dialog/index.mjs +3 -3
- package/esm/form-dialog/index.mjs.map +1 -1
- package/esm/form-dialog/types.d.ts +2 -2
- package/esm/form-drawer/drawer-content.mjs +1 -1
- package/esm/form-drawer/drawer-content.mjs.map +1 -1
- package/esm/form-drawer/index.mjs +3 -3
- package/esm/form-drawer/index.mjs.map +1 -1
- package/esm/form-drawer/types.d.ts +2 -2
- package/esm/form-grid/form-grid-column.mjs +6 -4
- package/esm/form-grid/form-grid-column.mjs.map +1 -1
- package/esm/form-item/form-item.mjs +1 -1
- package/esm/form-item/form-item.mjs.map +1 -1
- package/esm/form-item/index.mjs +1 -1
- package/esm/form-item/index.mjs.map +1 -1
- package/esm/form-item/utils.mjs +1 -1
- package/esm/form-item/utils.mjs.map +1 -1
- package/esm/form-layout/form-layout.mjs +1 -1
- package/esm/form-layout/form-layout.mjs.map +1 -1
- package/esm/form-layout/form-layout.vue.d.ts +1 -1
- package/esm/form-layout/utils.mjs +1 -1
- package/esm/form-layout/utils.mjs.map +1 -1
- package/esm/form-step/form-step.mjs +1 -1
- package/esm/form-step/form-step.mjs.map +1 -1
- package/esm/form-step/types.d.ts +1 -1
- package/esm/form-step/utils.d.ts +1 -1
- package/esm/form-step/utils.mjs +1 -1
- package/esm/form-step/utils.mjs.map +1 -1
- package/esm/form-tab/hooks.mjs.map +1 -1
- package/esm/form-tab/utils.mjs +1 -1
- package/esm/form-tab/utils.mjs.map +1 -1
- package/esm/input-number/index.d.ts +21 -21
- package/esm/input-tag/index.d.ts +1 -2
- package/esm/input-tag/input-tag.mjs.map +1 -1
- package/esm/mention/index.d.ts +3 -4
- package/esm/mention/mention.mjs.map +1 -1
- package/esm/pagination/components/pager2.mjs.map +1 -1
- package/esm/pagination/components/sizes2.mjs +1 -1
- package/esm/pagination/components/sizes2.mjs.map +1 -1
- package/esm/picker-select/picker-select.mjs +1 -1
- package/esm/picker-select/picker-select.mjs.map +1 -1
- package/esm/picker-select/types.d.ts +1 -1
- package/esm/preview-text/cascader.mjs.map +1 -1
- package/esm/preview-text/color-picker.mjs +1 -1
- package/esm/preview-text/color-picker.mjs.map +1 -1
- package/esm/preview-text/input.mjs +1 -1
- package/esm/preview-text/input.mjs.map +1 -1
- package/esm/preview-text/rate.mjs +1 -1
- package/esm/preview-text/rate.mjs.map +1 -1
- package/esm/preview-text/select.mjs +9 -4
- package/esm/preview-text/select.mjs.map +1 -1
- package/esm/preview-text/time-picker.mjs +1 -1
- package/esm/preview-text/time-picker.mjs.map +1 -1
- package/esm/preview-text/tree.mjs.map +1 -1
- package/esm/query-form/hooks.mjs +1 -1
- package/esm/query-form/hooks.mjs.map +1 -1
- package/esm/query-form/index.d.ts +5 -5
- package/esm/query-form/query-form-light.mjs +14 -7
- package/esm/query-form/query-form-light.mjs.map +1 -1
- package/esm/query-form/query-form.mjs +14 -7
- package/esm/query-form/query-form.mjs.map +1 -1
- package/esm/query-form/types.d.ts +9 -2
- package/esm/query-form-item/index.d.ts +4 -4
- package/esm/query-form-item/query-form-item.mjs +2 -2
- package/esm/query-form-item/query-form-item.mjs.map +1 -1
- package/esm/query-form-item/types.d.ts +2 -2
- package/esm/radio/index.d.ts +60 -60
- package/esm/radio/radio-group.mjs +5 -3
- package/esm/radio/radio-group.mjs.map +1 -1
- package/esm/rate/index.d.ts +10 -10
- package/esm/select/index.d.ts +7 -7
- package/esm/select-table/index.d.ts +3 -3
- package/esm/select-table/select-table.mjs +1 -1
- package/esm/select-table/select-table.mjs.map +1 -1
- package/esm/select-table/types.d.ts +1 -1
- package/esm/submit/submit.mjs.map +1 -1
- package/esm/switch/index.d.ts +27 -27
- package/esm/time-select/index.d.ts +20 -20
- package/esm/transfer/index.d.ts +21 -21
- package/esm/tree/tree.mjs +1 -1
- package/esm/tree/tree.mjs.map +1 -1
- package/esm/tree-select/tree-select.mjs.map +1 -1
- package/esm/upload/upload.mjs +1 -1
- package/esm/upload/upload.mjs.map +1 -1
- package/package.json +18 -14
|
@@ -4,9 +4,9 @@ import { isTabTitleComponent, prefixCls } from "./utils.mjs";
|
|
|
4
4
|
import "./style.css";
|
|
5
5
|
import { ElBadge, ElEmpty, ElScrollbar } from "element-plus";
|
|
6
6
|
import { autorunEffect, formilyComputed } from "@silver-formily/reactive-vue";
|
|
7
|
-
import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
7
|
+
import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, ref, renderList, toDisplayString, unref, watch, withCtx } from "vue";
|
|
8
8
|
import { RecursionField, useField, useFieldSchema } from "@silver-formily/vue";
|
|
9
|
-
import { isArr } from "@formily/shared";
|
|
9
|
+
import { isArr } from "@silver-formily/shared";
|
|
10
10
|
//#region src/array-list-tabs/array-list-tabs.vue
|
|
11
11
|
const _hoisted_1 = [
|
|
12
12
|
"id",
|
|
@@ -39,72 +39,70 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
39
|
const schema = schemaRef.value;
|
|
40
40
|
const activeIndex = ref(0);
|
|
41
41
|
const { getKey, keyMap } = ArrayBase.useKey(schemaRef.value);
|
|
42
|
+
const dataSource = ref([]);
|
|
43
|
+
autorunEffect(() => {
|
|
44
|
+
dataSource.value = isArr(field.value) ? field.value.map((item, index) => ({
|
|
45
|
+
key: getKey(item, index),
|
|
46
|
+
record: item,
|
|
47
|
+
title: getTabTitle(item)
|
|
48
|
+
})) : [];
|
|
49
|
+
});
|
|
42
50
|
const errorCountList = formilyComputed(() => {
|
|
43
|
-
if (
|
|
44
|
-
|
|
51
|
+
if (!isArr(field.value)) return [];
|
|
52
|
+
if (props.showTitleFieldInTab) return field.value.map((_, index) => {
|
|
53
|
+
const address = field.address.concat(index).toString();
|
|
45
54
|
return field.form.queryFeedbacks({
|
|
46
55
|
type: "error",
|
|
47
|
-
|
|
56
|
+
address: `${address}.**`
|
|
57
|
+
}).filter((feedback) => {
|
|
58
|
+
return feedback.address !== `${address}.${props.tabTitleField}` && feedback.path !== `${address}.${props.tabTitleField}`;
|
|
48
59
|
}).length;
|
|
49
60
|
});
|
|
50
|
-
return field.value.map((
|
|
51
|
-
const
|
|
61
|
+
return field.value.map((_, index) => {
|
|
62
|
+
const address = field.address.concat(index).toString();
|
|
52
63
|
return field.form.queryFeedbacks({
|
|
53
64
|
type: "error",
|
|
54
|
-
|
|
65
|
+
address: `${address}.**`
|
|
55
66
|
}).length;
|
|
56
67
|
});
|
|
57
68
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
index,
|
|
66
|
-
item?.[props.tabTitleField],
|
|
67
|
-
errorCountList.value[index]
|
|
68
|
-
].join("|");
|
|
69
|
-
}).join(",");
|
|
70
|
-
});
|
|
71
|
-
autorunEffect(() => {
|
|
72
|
-
if (field.value.length > 0 && activeIndex.value >= field.value.length) activeIndex.value = field.value.length - 1;
|
|
73
|
-
});
|
|
69
|
+
watch(() => dataSource.value.length, (length) => {
|
|
70
|
+
if (length === 0) {
|
|
71
|
+
activeIndex.value = 0;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (activeIndex.value >= length) activeIndex.value = length - 1;
|
|
75
|
+
}, { flush: "sync" });
|
|
74
76
|
function getTabTitle(item) {
|
|
75
77
|
return `${item?.[props.tabTitleField] || "未命名条目"}`;
|
|
76
78
|
}
|
|
77
79
|
return (_ctx, _cache) => {
|
|
78
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls)) }, [(
|
|
79
|
-
key: props.modelValue.length,
|
|
80
|
-
"key-map": unref(keyMap)
|
|
81
|
-
}, {
|
|
80
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls)) }, [createVNode(unref(ArrayBase), { "key-map": unref(keyMap) }, {
|
|
82
81
|
default: withCtx(() => [
|
|
83
82
|
createElementVNode("ul", { class: normalizeClass(`${unref(prefixCls)}_list`) }, [createVNode(unref(ElScrollbar), { class: normalizeClass(`${unref(prefixCls)}_list--scroll-wrapper`) }, {
|
|
84
|
-
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
83
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(dataSource.value, (item, index) => {
|
|
85
84
|
return openBlock(), createBlock(unref(ArrayBase).Item, {
|
|
86
|
-
key:
|
|
85
|
+
key: item.key,
|
|
87
86
|
index,
|
|
88
|
-
record: item
|
|
87
|
+
record: item.record
|
|
89
88
|
}, {
|
|
90
|
-
default: withCtx(() => [(
|
|
89
|
+
default: withCtx(() => [createElementVNode("li", {
|
|
91
90
|
id: `${unref(field).props.name}-tab-${index}`,
|
|
92
|
-
key: arrayBaseKey.value,
|
|
93
91
|
class: normalizeClass([`${unref(prefixCls)}_list-item`, activeIndex.value === index && "is-active"]),
|
|
94
92
|
role: "tab",
|
|
95
93
|
"aria-controls": `${unref(field).props.name}-tab-panel-${index}`,
|
|
96
94
|
onClick: () => activeIndex.value = index
|
|
97
95
|
}, [
|
|
98
|
-
createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}_list-item--content`) }, [
|
|
96
|
+
createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}_list-item--content`) }, [unref(errorCountList)[index] !== 0 ? (openBlock(), createBlock(unref(ElBadge), {
|
|
97
|
+
key: 0,
|
|
99
98
|
class: normalizeClass([`${unref(prefixCls)}-errors-badge`]),
|
|
100
99
|
value: unref(errorCountList)[index],
|
|
101
|
-
offset: [5, 0]
|
|
102
|
-
hidden: unref(errorCountList)[index] === 0
|
|
100
|
+
offset: [5, 0]
|
|
103
101
|
}, {
|
|
104
102
|
default: withCtx(() => [!props.showTitleFieldInTab ? (openBlock(), createElementBlock("span", {
|
|
105
103
|
key: 0,
|
|
106
104
|
class: normalizeClass(`${unref(prefixCls)}_list-item--title`)
|
|
107
|
-
}, toDisplayString(
|
|
105
|
+
}, toDisplayString(item.title), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [!unref(isArr)(unref(schema).items) ? (openBlock(), createBlock(unref(RecursionField), {
|
|
108
106
|
key: 0,
|
|
109
107
|
schema: unref(schema).items,
|
|
110
108
|
name: index,
|
|
@@ -116,11 +114,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
116
114
|
"filter-properties"
|
|
117
115
|
])) : createCommentVNode("v-if", true)], 64))]),
|
|
118
116
|
_: 2
|
|
119
|
-
}, 1032, [
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
}, 1032, ["class", "value"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [!props.showTitleFieldInTab ? (openBlock(), createElementBlock("span", {
|
|
118
|
+
key: 0,
|
|
119
|
+
class: normalizeClass(`${unref(prefixCls)}_list-item--title`)
|
|
120
|
+
}, toDisplayString(item.title), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [!unref(isArr)(unref(schema).items) ? (openBlock(), createBlock(unref(RecursionField), {
|
|
121
|
+
key: 0,
|
|
122
|
+
schema: unref(schema).items,
|
|
123
|
+
name: index,
|
|
124
|
+
"filter-properties": (schema) => unref(isTabTitleComponent)(schema, props.tabTitleField),
|
|
125
|
+
"only-render-properties": ""
|
|
126
|
+
}, null, 8, [
|
|
127
|
+
"schema",
|
|
128
|
+
"name",
|
|
129
|
+
"filter-properties"
|
|
130
|
+
])) : createCommentVNode("v-if", true)], 64))], 64))], 2),
|
|
124
131
|
createCommentVNode(" remove icon "),
|
|
125
132
|
!unref(isArr)(unref(schema).items) ? (openBlock(), createBlock(unref(RecursionField), {
|
|
126
133
|
key: 0,
|
|
@@ -133,7 +140,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
133
140
|
"name",
|
|
134
141
|
"filter-properties"
|
|
135
142
|
])) : createCommentVNode("v-if", true)
|
|
136
|
-
], 10, _hoisted_1)
|
|
143
|
+
], 10, _hoisted_1)]),
|
|
137
144
|
_: 2
|
|
138
145
|
}, 1032, ["index", "record"]);
|
|
139
146
|
}), 128))]),
|
|
@@ -145,19 +152,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
145
152
|
name: "addition"
|
|
146
153
|
}, null, 8, ["schema"])) : createCommentVNode("v-if", true)], 64);
|
|
147
154
|
}), 128))], 2),
|
|
148
|
-
|
|
155
|
+
dataSource.value.length === 0 ? (openBlock(), createElementBlock("div", {
|
|
149
156
|
key: 0,
|
|
150
157
|
class: normalizeClass(`${unref(prefixCls)}-tabpane`)
|
|
151
158
|
}, [createVNode(unref(ElEmpty), { "image-size": 100 })], 2)) : createCommentVNode("v-if", true),
|
|
152
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
159
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(dataSource.value, (item, index) => {
|
|
153
160
|
return openBlock(), createBlock(unref(ArrayBase).Item, {
|
|
154
|
-
key:
|
|
161
|
+
key: item.key,
|
|
155
162
|
index,
|
|
156
|
-
record: item
|
|
163
|
+
record: item.record
|
|
157
164
|
}, {
|
|
158
|
-
default: withCtx(() => [createCommentVNode(" tab-panel "), (
|
|
165
|
+
default: withCtx(() => [createCommentVNode(" tab-panel "), createElementVNode("div", {
|
|
159
166
|
id: `${unref(field).props.name}-tab-panel-${index}`,
|
|
160
|
-
key: unref(getKey)(item, index),
|
|
161
167
|
class: normalizeClass(`${unref(prefixCls)}-tabpane`),
|
|
162
168
|
style: normalizeStyle({ display: activeIndex.value === index ? void 0 : "none" }),
|
|
163
169
|
role: "tabpanel",
|
|
@@ -175,13 +181,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
175
181
|
"schema",
|
|
176
182
|
"name",
|
|
177
183
|
"filter-properties"
|
|
178
|
-
])], 14, _hoisted_2)
|
|
184
|
+
])], 14, _hoisted_2)]),
|
|
179
185
|
_: 2
|
|
180
186
|
}, 1032, ["index", "record"]);
|
|
181
187
|
}), 128))
|
|
182
188
|
]),
|
|
183
189
|
_: 1
|
|
184
|
-
}, 8, ["key-map"])
|
|
190
|
+
}, 8, ["key-map"])], 2);
|
|
185
191
|
};
|
|
186
192
|
}
|
|
187
193
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-list-tabs.mjs","names":[],"sources":["../../src/array-list-tabs/array-list-tabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ArrayField } from '@formily/core'\nimport type { ISchema } from '@formily/json-schema'\nimport { isArr } from '@formily/shared'\nimport { autorunEffect, formilyComputed } from '@silver-formily/reactive-vue'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElBadge, ElEmpty, ElScrollbar } from 'element-plus'\nimport { ref } from 'vue'\nimport { ArrayBase } from '../array-base'\nimport { getArrayItemSchema, isAdditionComponent, isRemoveComponent } from '../array-base/utils'\nimport { isTabTitleComponent, prefixCls } from './utils'\nimport './style.scss'\n\ndefineOptions({\n name: 'FArrayListTabs',\n})\n\nconst props = defineProps({\n tabTitleField: {\n required: true,\n type: String,\n },\n showTitleFieldInTab: {\n type: Boolean,\n default: false,\n },\n modelValue: {\n type: Array,\n default: () => [],\n },\n})\n\nconst fieldRef = useField<ArrayField>()\nconst schemaRef = useFieldSchema()\nconst field = fieldRef.value\nconst schema = schemaRef.value\n\nconst activeIndex = ref(0)\nconst { getKey, keyMap } = ArrayBase.useKey(schemaRef.value)\n\nconst errorCountList = formilyComputed(() => {\n if (props.showTitleFieldInTab) {\n return field.value.map((item, index) => {\n const path = field.path.concat(index)\n return field.form.queryFeedbacks({\n type: 'error',\n path: `${path}.*(!${props.tabTitleField})`,\n }).length\n })\n }\n return field.value.map((item, index) => {\n const path = field.path.concat(index)\n return field.form.queryFeedbacks({\n type: 'error',\n path: `${path}.**`,\n }).length\n })\n})\n\n// 保证arrayBase在必要时重新渲染\nconst arrayBaseKey = ref()\n\nautorunEffect(() => {\n if (props.showTitleFieldInTab) {\n const key = field.value.map((item, index) => {\n const keyParts = [\n index,\n errorCountList.value[index],\n ]\n return keyParts.join('|')\n }).join(',')\n arrayBaseKey.value = key\n }\n else {\n const key = field.value.map((item, index) => {\n const keyParts = [\n index,\n item?.[props.tabTitleField],\n errorCountList.value[index],\n ]\n return keyParts.join('|')\n }).join(',')\n arrayBaseKey.value = key\n }\n})\n\nautorunEffect(() => {\n if (field.value.length > 0 && activeIndex.value >= field.value.length) {\n activeIndex.value = field.value.length - 1\n }\n})\n\nfunction getTabTitle(item) {\n return `${item?.[props.tabTitleField] || '未命名条目'}`\n}\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <ArrayBase :key=\"props.modelValue.length\" :key-map=\"keyMap\">\n <ul :class=\"`${prefixCls}_list`\">\n <ElScrollbar :class=\"`${prefixCls}_list--scroll-wrapper`\">\n <ArrayBase.Item\n v-for=\"(item, index) in props.modelValue\"\n :key=\"index\"\n :index=\"index\"\n :record=\"item\"\n >\n <li\n :id=\"`${field.props.name}-tab-${index}`\"\n :key=\"arrayBaseKey\"\n :class=\"[\n `${prefixCls}_list-item`,\n activeIndex === index && 'is-active',\n ]\"\n role=\"tab\"\n :aria-controls=\"`${field.props.name}-tab-panel-${index}`\"\n @click=\"() => activeIndex = index\"\n >\n <div :class=\"`${prefixCls}_list-item--content`\">\n <ElBadge\n :class=\"[`${prefixCls}-errors-badge`]\"\n :value=\"errorCountList[index]\"\n :offset=\"[5, 0]\"\n :hidden=\"errorCountList[index] === 0\"\n >\n <template v-if=\"!props.showTitleFieldInTab\">\n <span :class=\"`${prefixCls}_list-item--title`\">{{ getTabTitle(item) }}</span>\n </template>\n <template v-else>\n <RecursionField\n v-if=\"!isArr(schema.items)\"\n :schema=\"schema.items\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => isTabTitleComponent(schema, props.tabTitleField)\"\n only-render-properties\n />\n </template>\n </ElBadge>\n </div>\n <!-- remove icon -->\n <RecursionField\n v-if=\"!isArr(schema.items)\"\n :schema=\"schema.items\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => isRemoveComponent(schema)\"\n only-render-properties\n />\n </li>\n </ArrayBase.Item>\n </ElScrollbar>\n <template v-for=\"(property, key) in schema.properties\" :key=\"key\">\n <RecursionField\n v-if=\"isAdditionComponent(property)\"\n :schema=\"property\"\n name=\"addition\"\n />\n </template>\n </ul>\n <div v-if=\"props.modelValue.length === 0\" :class=\"`${prefixCls}-tabpane`\">\n <ElEmpty :image-size=\"100\" />\n </div>\n <ArrayBase.Item\n v-for=\"(item, index) in props.modelValue\"\n :key=\"getKey(item, index)\"\n :index=\"index\"\n :record=\"item\"\n >\n <!-- tab-panel -->\n <div\n :id=\"`${field.props.name}-tab-panel-${index}`\"\n :key=\"getKey(item, index)\"\n :class=\"`${prefixCls}-tabpane`\"\n :style=\"{ display: activeIndex === index ? undefined : 'none' }\"\n role=\"tabpanel\"\n :aria-labelledby=\"`${field.props.name}-tab-${index}`\"\n >\n <RecursionField\n :schema=\"getArrayItemSchema(schema, index)\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => {\n if (isRemoveComponent(schema)) {\n return false\n }\n if (props.showTitleFieldInTab) {\n return !isTabTitleComponent(schema, props.tabTitleField)\n }\n return true\n }\"\n only-render-properties\n />\n </div>\n </ArrayBase.Item>\n </ArrayBase>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"array-list-tabs.mjs","names":[],"sources":["../../src/array-list-tabs/array-list-tabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ArrayField } from '@silver-formily/core'\nimport type { ISchema } from '@silver-formily/json-schema'\nimport { autorunEffect, formilyComputed } from '@silver-formily/reactive-vue'\nimport { isArr } from '@silver-formily/shared'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElBadge, ElEmpty, ElScrollbar } from 'element-plus'\nimport { ref, watch } from 'vue'\nimport { ArrayBase } from '../array-base'\nimport { getArrayItemSchema, isAdditionComponent, isRemoveComponent } from '../array-base/utils'\nimport { isTabTitleComponent, prefixCls } from './utils'\nimport './style.scss'\n\ndefineOptions({\n name: 'FArrayListTabs',\n})\n\nconst props = defineProps({\n tabTitleField: {\n required: true,\n type: String,\n },\n showTitleFieldInTab: {\n type: Boolean,\n default: false,\n },\n modelValue: {\n type: Array,\n default: () => [],\n },\n})\n\nconst fieldRef = useField<ArrayField>()\nconst schemaRef = useFieldSchema()\nconst field = fieldRef.value\nconst schema = schemaRef.value\n\nconst activeIndex = ref(0)\nconst { getKey, keyMap } = ArrayBase.useKey(schemaRef.value)\nconst dataSource = ref<Array<{ key: string, record: any, title: string }>>([])\n\nautorunEffect(() => {\n dataSource.value = isArr(field.value)\n ? field.value.map((item, index) => ({\n key: getKey(item, index),\n record: item,\n title: getTabTitle(item),\n }))\n : []\n})\n\nconst errorCountList = formilyComputed(() => {\n if (!isArr(field.value))\n return []\n if (props.showTitleFieldInTab) {\n return field.value.map((_, index) => {\n const address = field.address.concat(index).toString()\n return field.form.queryFeedbacks({\n type: 'error',\n address: `${address}.**`,\n }).filter((feedback) => {\n return feedback.address !== `${address}.${props.tabTitleField}`\n && feedback.path !== `${address}.${props.tabTitleField}`\n }).length\n })\n }\n return field.value.map((_, index) => {\n const address = field.address.concat(index).toString()\n return field.form.queryFeedbacks({\n type: 'error',\n address: `${address}.**`,\n }).length\n })\n})\n\nwatch(() => dataSource.value.length, (length) => {\n if (length === 0) {\n activeIndex.value = 0\n return\n }\n if (activeIndex.value >= length) {\n activeIndex.value = length - 1\n }\n}, { flush: 'sync' })\n\nfunction getTabTitle(item) {\n return `${item?.[props.tabTitleField] || '未命名条目'}`\n}\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <ArrayBase :key-map=\"keyMap\">\n <ul :class=\"`${prefixCls}_list`\">\n <ElScrollbar :class=\"`${prefixCls}_list--scroll-wrapper`\">\n <ArrayBase.Item\n v-for=\"(item, index) in dataSource\"\n :key=\"item.key\"\n :index=\"index\"\n :record=\"item.record\"\n >\n <li\n :id=\"`${field.props.name}-tab-${index}`\"\n :class=\"[\n `${prefixCls}_list-item`,\n activeIndex === index && 'is-active',\n ]\"\n role=\"tab\"\n :aria-controls=\"`${field.props.name}-tab-panel-${index}`\"\n @click=\"() => activeIndex = index\"\n >\n <div :class=\"`${prefixCls}_list-item--content`\">\n <ElBadge\n v-if=\"errorCountList[index] !== 0\"\n :class=\"[`${prefixCls}-errors-badge`]\"\n :value=\"errorCountList[index]\"\n :offset=\"[5, 0]\"\n >\n <template v-if=\"!props.showTitleFieldInTab\">\n <span :class=\"`${prefixCls}_list-item--title`\">{{ item.title }}</span>\n </template>\n <template v-else>\n <RecursionField\n v-if=\"!isArr(schema.items)\"\n :schema=\"schema.items\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => isTabTitleComponent(schema, props.tabTitleField)\"\n only-render-properties\n />\n </template>\n </ElBadge>\n <template v-else>\n <template v-if=\"!props.showTitleFieldInTab\">\n <span :class=\"`${prefixCls}_list-item--title`\">{{ item.title }}</span>\n </template>\n <template v-else>\n <RecursionField\n v-if=\"!isArr(schema.items)\"\n :schema=\"schema.items\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => isTabTitleComponent(schema, props.tabTitleField)\"\n only-render-properties\n />\n </template>\n </template>\n </div>\n <!-- remove icon -->\n <RecursionField\n v-if=\"!isArr(schema.items)\"\n :schema=\"schema.items\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => isRemoveComponent(schema)\"\n only-render-properties\n />\n </li>\n </ArrayBase.Item>\n </ElScrollbar>\n <template v-for=\"(property, key) in schema.properties\" :key=\"key\">\n <RecursionField\n v-if=\"isAdditionComponent(property)\"\n :schema=\"property\"\n name=\"addition\"\n />\n </template>\n </ul>\n <div v-if=\"dataSource.length === 0\" :class=\"`${prefixCls}-tabpane`\">\n <ElEmpty :image-size=\"100\" />\n </div>\n <ArrayBase.Item\n v-for=\"(item, index) in dataSource\"\n :key=\"item.key\"\n :index=\"index\"\n :record=\"item.record\"\n >\n <!-- tab-panel -->\n <div\n :id=\"`${field.props.name}-tab-panel-${index}`\"\n :class=\"`${prefixCls}-tabpane`\"\n :style=\"{ display: activeIndex === index ? undefined : 'none' }\"\n role=\"tabpanel\"\n :aria-labelledby=\"`${field.props.name}-tab-${index}`\"\n >\n <RecursionField\n :schema=\"getArrayItemSchema(schema, index)\"\n :name=\"index\"\n :filter-properties=\"(schema: ISchema) => {\n if (isRemoveComponent(schema)) {\n return false\n }\n if (props.showTitleFieldInTab) {\n return !isTabTitleComponent(schema, props.tabTitleField)\n }\n return true\n }\"\n only-render-properties\n />\n </div>\n </ArrayBase.Item>\n </ArrayBase>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/array-list-tabs/utils.ts"],"sourcesContent":["import type { ISchema } from '@formily/json-schema'\nimport { stylePrefix } from '../__builtins__'\n\nexport const prefixCls = `${stylePrefix}-array-list-tabs`\n\nexport function isTabTitleComponent(schema: ISchema, tabTitleField: string) {\n if (schema.type !== 'void') {\n return schema.name === tabTitleField\n }\n if (schema.properties) {\n return tabTitleField in schema.properties\n }\n return false\n}\n"],"mappings":";;AAGA,MAAa,YAAY,GAAG,YAAY;AAExC,SAAgB,oBAAoB,QAAiB,eAAuB;AAC1E,KAAI,OAAO,SAAS,OAClB,QAAO,OAAO,SAAS;AAEzB,KAAI,OAAO,WACT,QAAO,iBAAiB,OAAO;AAEjC,QAAO"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/array-list-tabs/utils.ts"],"sourcesContent":["import type { ISchema } from '@silver-formily/json-schema'\nimport { stylePrefix } from '../__builtins__'\n\nexport const prefixCls = `${stylePrefix}-array-list-tabs`\n\nexport function isTabTitleComponent(schema: ISchema, tabTitleField: string) {\n if (schema.type !== 'void') {\n return schema.name === tabTitleField\n }\n if (schema.properties) {\n return tabTitleField in schema.properties\n }\n return false\n}\n"],"mappings":";;AAGA,MAAa,YAAY,GAAG,YAAY;AAExC,SAAgB,oBAAoB,QAAiB,eAAuB;AAC1E,KAAI,OAAO,SAAS,OAClB,QAAO,OAAO,SAAS;AAEzB,KAAI,OAAO,WACT,QAAO,iBAAiB,OAAO;AAEjC,QAAO"}
|
|
@@ -5,10 +5,10 @@ import { ArrayBase } from "../array-base/index.mjs";
|
|
|
5
5
|
import pagination_default from "../pagination/pagination.mjs";
|
|
6
6
|
import { hasRequiredProperty, isColumnComponent, isTableComponent, prefixCls } from "./utils.mjs";
|
|
7
7
|
import { ElTable, ElTableColumn, vLoading } from "element-plus";
|
|
8
|
-
import { autorunEffect, formilyComputed
|
|
8
|
+
import { autorunEffect, formilyComputed } from "@silver-formily/reactive-vue";
|
|
9
9
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, watch, withCtx, withDirectives } from "vue";
|
|
10
10
|
import { RecursionField, useField, useFieldSchema } from "@silver-formily/vue";
|
|
11
|
-
import { isArr
|
|
11
|
+
import { isArr } from "@silver-formily/shared";
|
|
12
12
|
import { omit } from "lodash-es";
|
|
13
13
|
import { VueDraggable } from "vue-draggable-plus";
|
|
14
14
|
//#region src/array-table/array-table.vue
|
|
@@ -55,18 +55,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
55
55
|
columnProps: (field?.component)?.[1] || schema["x-component-props"] || {}
|
|
56
56
|
}];
|
|
57
57
|
}
|
|
58
|
-
const triggerUpdateKey = ref(0);
|
|
59
|
-
reactionWatch(() => {
|
|
60
|
-
const path = field.path.entire;
|
|
61
|
-
return field.query(`${path}.*`).map((item) => {
|
|
62
|
-
return {
|
|
63
|
-
name: item.component[0],
|
|
64
|
-
visible: item.visible
|
|
65
|
-
};
|
|
66
|
-
}).filter((item) => item.name.includes("Column"));
|
|
67
|
-
}, async () => {
|
|
68
|
-
triggerUpdateKey.value++;
|
|
69
|
-
}, { equals: isEqual });
|
|
70
58
|
const dataSource = ref([]);
|
|
71
59
|
const pageSize = ref(props.paginationProps?.pageSize ?? 10);
|
|
72
60
|
const currentPage = ref(props.paginationProps?.currentPage ?? 1);
|
|
@@ -138,11 +126,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
138
126
|
async function handleDragEnd(evt) {
|
|
139
127
|
const { oldIndex, newIndex } = evt;
|
|
140
128
|
await field.move(oldIndex, newIndex);
|
|
141
|
-
triggerUpdateKey.value++;
|
|
142
129
|
}
|
|
143
130
|
return (_ctx, _cache) => {
|
|
144
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls)) }, [(
|
|
145
|
-
key: triggerUpdateKey.value,
|
|
131
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls)) }, [createVNode(unref(ArrayBase), {
|
|
146
132
|
"key-map": unref(keyMap),
|
|
147
133
|
add: onAddItemClick
|
|
148
134
|
}, {
|
|
@@ -226,7 +212,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
226
212
|
}), 128))
|
|
227
213
|
]),
|
|
228
214
|
_: 1
|
|
229
|
-
}, 8, ["key-map"])
|
|
215
|
+
}, 8, ["key-map"])], 2);
|
|
230
216
|
};
|
|
231
217
|
}
|
|
232
218
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-table.mjs","names":[],"sources":["../../src/array-table/array-table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ArrayField } from '@formily/core'\nimport type { Schema } from '@formily/json-schema'\nimport type { TableInstance } from 'element-plus'\nimport type { IArrayTableProps } from './types'\nimport { isArr, isEqual } from '@formily/shared'\nimport { autorunEffect, formilyComputed, reactionWatch } from '@silver-formily/reactive-vue'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElTable, ElTableColumn, vLoading } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { VueDraggable } from 'vue-draggable-plus'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { ArrayBase } from '../array-base'\nimport { isAdditionComponent } from '../array-base/utils'\nimport ElPagination from '../pagination/pagination'\nimport { hasRequiredProperty, isColumnComponent, isTableComponent, prefixCls } from './utils'\n\ndefineOptions({\n name: 'FArrayTable',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IArrayTableProps>(), {\n modelValue: () => [],\n pagination: true,\n})\nconst { props: elTableProps } = useCleanAttrs()\nconst paginationProps = computed(() => omit(props.paginationProps, ['pageSize', 'currentPage']))\nconst fieldRef = useField<ArrayField>()\nconst field = fieldRef.value\nconst schemaRef = useFieldSchema()\nconst additionSchemas = computed<Record<string, Schema>>(() => schemaRef.value?.properties ?? {})\nconst { getKey, keyMap } = ArrayBase.useKey(schemaRef.value)\n\nconst elTableRef = ref<TableInstance>()\n\nfunction extractTableSources(schema: Schema): any[] {\n if (isTableComponent(schema)) {\n return createTableSource(schema)\n }\n return schema.properties\n ? Object.values(schema.properties).flatMap(element => extractTableSources(element))\n : []\n}\n\nfunction createTableSource(schema: Schema): any[] {\n const propName = schema['x-component-props']?.prop || schema.name\n /* istanbul ignore if -- @preserve */\n if (!propName)\n return []\n\n const field = fieldRef.value.query(fieldRef.value.address.concat(propName)).take()\n\n return [{\n name: propName,\n display: field?.display || schema['x-display'],\n required: hasRequiredProperty(schema),\n field,\n fieldProps: field?.props || schema.toFieldProps(),\n schema,\n columnProps: (field?.component as any[])?.[1] || schema['x-component-props'] || {},\n }]\n}\n\nconst triggerUpdateKey = ref(0)\nreactionWatch(() => {\n const path = field.path.entire\n return field.query(`${path}.*`).map((item) => {\n return {\n name: item.component[0],\n visible: item.visible,\n }\n }).filter(item => item.name.includes('Column'))\n}, async () => {\n triggerUpdateKey.value++\n}, { equals: isEqual })\n\nconst dataSource = ref([])\nconst pageSize = ref(props.paginationProps?.pageSize ?? 10)\nconst currentPage = ref(props.paginationProps?.currentPage ?? 1)\n\nfunction updateDataSource() {\n /* istanbul ignore if -- @preserve */\n if (!isArr(field.value)) {\n dataSource.value = []\n return\n }\n if (props.pagination === false) {\n dataSource.value = [...field.value]\n return\n }\n dataSource.value = field.value.slice((currentPage.value - 1) * pageSize.value, (currentPage.value) * pageSize.value)\n}\nwatch([pageSize, currentPage], updateDataSource)\nautorunEffect(updateDataSource)\n\nconst sources = formilyComputed(() => {\n const schema = schemaRef.value.items\n const items = isArr(schema) ? schema : [schema]\n return items.reduce((columns, schema) => {\n const item = extractTableSources(schema)\n return columns.concat(item)\n }, []).filter(item => item.display !== 'none')\n})\n\nconst columns = computed(() => {\n const currentSources = sources.value ?? []\n return currentSources\n .map((source, index) => ({ source, index }))\n .filter(({ source }) => source.display === 'visible' && isColumnComponent(source.schema))\n .map(({ source, index: key }) => {\n const { name, columnProps, required, field } = source\n const { title, asterisk, ...restProps } = columnProps\n const props = {\n label: title,\n ...restProps,\n prop: name,\n }\n return {\n key,\n props,\n field,\n asterisk: asterisk ?? required,\n }\n })\n})\n\nconst stateManagerColumns = computed(() => {\n const currentSources = sources.value ?? []\n return currentSources.filter((column) => {\n return column.display !== 'none' && isColumnComponent(column.schema)\n })\n})\n\nconst baseIndex = computed(() => {\n return (currentPage.value - 1) * pageSize.value\n})\n\nasync function onAddItemClick() {\n if (props.pagination === false) {\n await nextTick()\n const scrollWarpDOM = elTableRef.value?.$el.querySelector('.el-scrollbar__wrap')\n scrollWarpDOM?.scrollTo({\n top: scrollWarpDOM.scrollHeight,\n behavior: 'smooth',\n })\n return\n }\n /* istanbul ignore if -- @preserve */\n if (!isArr(field.value)) {\n currentPage.value = 1\n return\n }\n currentPage.value = Math.ceil(field.value.length / pageSize.value)\n}\n\nasync function handleDragEnd(evt: { oldIndex: number, newIndex: number }) {\n const { oldIndex, newIndex } = evt\n await field.move(oldIndex, newIndex)\n triggerUpdateKey.value++\n}\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <ArrayBase :key=\"triggerUpdateKey\" :key-map=\"keyMap\" :add=\"onAddItemClick\">\n <VueDraggable\n :model-value=\"dataSource\" target=\"tbody\" :handle=\"`.${stylePrefix}-array-base-sort-handle`\"\n :animation=\"150\" @end=\"handleDragEnd\"\n >\n <ElTable ref=\"elTableRef\" v-loading=\"field.loading\" :row-key=\"getKey\" :data=\"dataSource\" v-bind=\"elTableProps\">\n <template v-for=\"(column, colIndex) of columns\" :key=\"column.key\">\n <ElTableColumn v-bind=\"column.props\">\n <template #default=\"{ row, $index }\">\n <ArrayBase.Item :key=\"getKey(row)\" :index=\"$index + baseIndex\" :record=\"row\">\n <RecursionField\n :key=\"`${getKey(row)}`\" :schema=\"sources[colIndex].schema\"\n :name=\"$index + baseIndex\" only-render-properties\n />\n </ArrayBase.Item>\n </template>\n <template #header=\"{ column: col }\">\n <template v-if=\"column.field.content?.header\">\n <component :is=\"column.field.content.header\" v-bind=\"{ ...col, field }\" />\n </template>\n <span v-else-if=\"column.asterisk\">\n <span :class=\"`${prefixCls}-asterisk`\">*</span>\n {{ col.label }}\n </span>\n </template>\n </ElTableColumn>\n </template>\n </ElTable>\n </VueDraggable>\n\n <!-- 状态管理器 -->\n <template v-for=\"(column, key) of stateManagerColumns\" :key=\"key\">\n <RecursionField :name=\"column.name\" :schema=\"column.schema\" :only-render-self=\"true\" />\n </template>\n <ElPagination\n v-if=\"props.pagination\" v-model:current-page=\"currentPage\" v-model:page-size=\"pageSize\"\n :class=\"`${prefixCls}-pagination`\" background layout=\"total, sizes, prev, pager, next\"\n :total=\"props.modelValue.length\" v-bind=\"paginationProps\"\n />\n <template v-for=\"(itemSchema, key) of additionSchemas\" :key=\"key\">\n <RecursionField v-if=\"isAdditionComponent(itemSchema)\" :schema=\"itemSchema\" name=\"addition\" />\n </template>\n </ArrayBase>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"array-table.mjs","names":[],"sources":["../../src/array-table/array-table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ArrayField } from '@silver-formily/core'\nimport type { Schema } from '@silver-formily/json-schema'\nimport type { TableInstance } from 'element-plus'\nimport type { IArrayTableProps } from './types'\nimport { autorunEffect, formilyComputed } from '@silver-formily/reactive-vue'\nimport { isArr } from '@silver-formily/shared'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElTable, ElTableColumn, vLoading } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { VueDraggable } from 'vue-draggable-plus'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { ArrayBase } from '../array-base'\nimport { isAdditionComponent } from '../array-base/utils'\nimport ElPagination from '../pagination/pagination'\nimport { hasRequiredProperty, isColumnComponent, isTableComponent, prefixCls } from './utils'\n\ndefineOptions({\n name: 'FArrayTable',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IArrayTableProps>(), {\n modelValue: () => [],\n pagination: true,\n})\nconst { props: elTableProps } = useCleanAttrs()\nconst paginationProps = computed(() => omit(props.paginationProps, ['pageSize', 'currentPage']))\nconst fieldRef = useField<ArrayField>()\nconst field = fieldRef.value\nconst schemaRef = useFieldSchema()\nconst additionSchemas = computed<Record<string, Schema>>(() => schemaRef.value?.properties ?? {})\nconst { getKey, keyMap } = ArrayBase.useKey(schemaRef.value)\n\nconst elTableRef = ref<TableInstance>()\n\nfunction extractTableSources(schema: Schema): any[] {\n if (isTableComponent(schema)) {\n return createTableSource(schema)\n }\n return schema.properties\n ? Object.values(schema.properties).flatMap(element => extractTableSources(element))\n : []\n}\n\nfunction createTableSource(schema: Schema): any[] {\n const propName = schema['x-component-props']?.prop || schema.name\n /* istanbul ignore if -- @preserve */\n if (!propName)\n return []\n\n const field = fieldRef.value.query(fieldRef.value.address.concat(propName)).take()\n\n return [{\n name: propName,\n display: field?.display || schema['x-display'],\n required: hasRequiredProperty(schema),\n field,\n fieldProps: field?.props || schema.toFieldProps(),\n schema,\n columnProps: (field?.component as any[])?.[1] || schema['x-component-props'] || {},\n }]\n}\n\nconst dataSource = ref([])\nconst pageSize = ref(props.paginationProps?.pageSize ?? 10)\nconst currentPage = ref(props.paginationProps?.currentPage ?? 1)\n\nfunction updateDataSource() {\n /* istanbul ignore if -- @preserve */\n if (!isArr(field.value)) {\n dataSource.value = []\n return\n }\n if (props.pagination === false) {\n dataSource.value = [...field.value]\n return\n }\n dataSource.value = field.value.slice((currentPage.value - 1) * pageSize.value, (currentPage.value) * pageSize.value)\n}\nwatch([pageSize, currentPage], updateDataSource)\nautorunEffect(updateDataSource)\n\nconst sources = formilyComputed(() => {\n const schema = schemaRef.value.items\n const items = isArr(schema) ? schema : [schema]\n return items.reduce((columns, schema) => {\n const item = extractTableSources(schema)\n return columns.concat(item)\n }, []).filter(item => item.display !== 'none')\n})\n\nconst columns = computed(() => {\n const currentSources = sources.value ?? []\n return currentSources\n .map((source, index) => ({ source, index }))\n .filter(({ source }) => source.display === 'visible' && isColumnComponent(source.schema))\n .map(({ source, index: key }) => {\n const { name, columnProps, required, field } = source\n const { title, asterisk, ...restProps } = columnProps\n const props = {\n label: title,\n ...restProps,\n prop: name,\n }\n return {\n key,\n props,\n field,\n asterisk: asterisk ?? required,\n }\n })\n})\n\nconst stateManagerColumns = computed(() => {\n const currentSources = sources.value ?? []\n return currentSources.filter((column) => {\n return column.display !== 'none' && isColumnComponent(column.schema)\n })\n})\n\nconst baseIndex = computed(() => {\n return (currentPage.value - 1) * pageSize.value\n})\n\nasync function onAddItemClick() {\n if (props.pagination === false) {\n await nextTick()\n const scrollWarpDOM = elTableRef.value?.$el.querySelector('.el-scrollbar__wrap')\n scrollWarpDOM?.scrollTo({\n top: scrollWarpDOM.scrollHeight,\n behavior: 'smooth',\n })\n return\n }\n /* istanbul ignore if -- @preserve */\n if (!isArr(field.value)) {\n currentPage.value = 1\n return\n }\n currentPage.value = Math.ceil(field.value.length / pageSize.value)\n}\n\nasync function handleDragEnd(evt: { oldIndex: number, newIndex: number }) {\n const { oldIndex, newIndex } = evt\n await field.move(oldIndex, newIndex)\n}\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <ArrayBase :key-map=\"keyMap\" :add=\"onAddItemClick\">\n <VueDraggable\n :model-value=\"dataSource\" target=\"tbody\" :handle=\"`.${stylePrefix}-array-base-sort-handle`\"\n :animation=\"150\" @end=\"handleDragEnd\"\n >\n <ElTable ref=\"elTableRef\" v-loading=\"field.loading\" :row-key=\"getKey\" :data=\"dataSource\" v-bind=\"elTableProps\">\n <template v-for=\"(column, colIndex) of columns\" :key=\"column.key\">\n <ElTableColumn v-bind=\"column.props\">\n <template #default=\"{ row, $index }\">\n <ArrayBase.Item :key=\"getKey(row)\" :index=\"$index + baseIndex\" :record=\"row\">\n <RecursionField\n :key=\"`${getKey(row)}`\" :schema=\"sources[colIndex].schema\"\n :name=\"$index + baseIndex\" only-render-properties\n />\n </ArrayBase.Item>\n </template>\n <template #header=\"{ column: col }\">\n <template v-if=\"column.field.content?.header\">\n <component :is=\"column.field.content.header\" v-bind=\"{ ...col, field }\" />\n </template>\n <span v-else-if=\"column.asterisk\">\n <span :class=\"`${prefixCls}-asterisk`\">*</span>\n {{ col.label }}\n </span>\n </template>\n </ElTableColumn>\n </template>\n </ElTable>\n </VueDraggable>\n\n <!-- 状态管理器 -->\n <template v-for=\"(column, key) of stateManagerColumns\" :key=\"key\">\n <RecursionField :name=\"column.name\" :schema=\"column.schema\" :only-render-self=\"true\" />\n </template>\n <ElPagination\n v-if=\"props.pagination\" v-model:current-page=\"currentPage\" v-model:page-size=\"pageSize\"\n :class=\"`${prefixCls}-pagination`\" background layout=\"total, sizes, prev, pager, next\"\n :total=\"props.modelValue.length\" v-bind=\"paginationProps\"\n />\n <template v-for=\"(itemSchema, key) of additionSchemas\" :key=\"key\">\n <RecursionField v-if=\"isAdditionComponent(itemSchema)\" :schema=\"itemSchema\" name=\"addition\" />\n </template>\n </ArrayBase>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/array-table/utils.ts"],"sourcesContent":["import type { Schema } from '@formily/json-schema'\nimport { stylePrefix } from '../__builtins__'\nimport { isAdditionComponent, isOperationComponent } from '../array-base/utils'\n\nexport const prefixCls = `${stylePrefix}-array-table`\n\nexport function isColumnComponent(schema: Schema) {\n return schema['x-component']?.indexOf('Column') > -1\n}\n\nexport function isTableComponent(schema: Schema): boolean {\n return isColumnComponent(schema) || isOperationComponent(schema) || isAdditionComponent(schema)\n}\n\nexport function hasRequiredProperty(schema: Schema): boolean {\n return schema.reduceProperties((hasRequired, property) =>\n hasRequired || !!property.required, false)\n}\n"],"mappings":";;;AAIA,MAAa,YAAY,GAAG,YAAY;AAExC,SAAgB,kBAAkB,QAAgB;AAChD,QAAO,OAAO,gBAAgB,QAAQ,SAAS,GAAG;;AAGpD,SAAgB,iBAAiB,QAAyB;AACxD,QAAO,kBAAkB,OAAO,IAAI,qBAAqB,OAAO,IAAI,oBAAoB,OAAO;;AAGjG,SAAgB,oBAAoB,QAAyB;AAC3D,QAAO,OAAO,kBAAkB,aAAa,aAC3C,eAAe,CAAC,CAAC,SAAS,UAAU,MAAM"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/array-table/utils.ts"],"sourcesContent":["import type { Schema } from '@silver-formily/json-schema'\nimport { stylePrefix } from '../__builtins__'\nimport { isAdditionComponent, isOperationComponent } from '../array-base/utils'\n\nexport const prefixCls = `${stylePrefix}-array-table`\n\nexport function isColumnComponent(schema: Schema) {\n return schema['x-component']?.indexOf('Column') > -1\n}\n\nexport function isTableComponent(schema: Schema): boolean {\n return isColumnComponent(schema) || isOperationComponent(schema) || isAdditionComponent(schema)\n}\n\nexport function hasRequiredProperty(schema: Schema): boolean {\n return schema.reduceProperties((hasRequired, property) =>\n hasRequired || !!property.required, false)\n}\n"],"mappings":";;;AAIA,MAAa,YAAY,GAAG,YAAY;AAExC,SAAgB,kBAAkB,QAAgB;AAChD,QAAO,OAAO,gBAAgB,QAAQ,SAAS,GAAG;;AAGpD,SAAgB,iBAAiB,QAAyB;AACxD,QAAO,kBAAkB,OAAO,IAAI,qBAAqB,OAAO,IAAI,oBAAoB,OAAO;;AAGjG,SAAgB,oBAAoB,QAAyB;AAC3D,QAAO,OAAO,kBAAkB,aAAa,aAC3C,eAAe,CAAC,CAAC,SAAS,UAAU,MAAM"}
|
|
@@ -5,7 +5,7 @@ import { ElBadge, ElTabPane, ElTabs } from "element-plus";
|
|
|
5
5
|
import { reactionWatch } from "@silver-formily/reactive-vue";
|
|
6
6
|
import { Fragment, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
7
7
|
import { RecursionField, useField, useFieldSchema } from "@silver-formily/vue";
|
|
8
|
-
import { isEqual, isFn } from "@formily/shared";
|
|
8
|
+
import { isEqual, isFn } from "@silver-formily/shared";
|
|
9
9
|
//#region src/array-tabs/array-tabs.vue
|
|
10
10
|
const _hoisted_1 = { key: 0 };
|
|
11
11
|
const _hoisted_2 = { key: 1 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-tabs.mjs","names":["$attrs"],"sources":["../../src/array-tabs/array-tabs.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ArrayField } from '@formily/core'\nimport type { TabPaneName } from 'element-plus'\nimport {
|
|
1
|
+
{"version":3,"file":"array-tabs.mjs","names":["$attrs"],"sources":["../../src/array-tabs/array-tabs.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ArrayField } from '@silver-formily/core'\nimport type { TabPaneName } from 'element-plus'\nimport { reactionWatch } from '@silver-formily/reactive-vue'\nimport { isEqual, isFn } from '@silver-formily/shared'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElBadge, ElTabPane, ElTabs } from 'element-plus'\nimport { ref } from 'vue'\nimport { useCleanAttrs } from '../__builtins__'\nimport { stylePrefix } from '../__builtins__/configs'\nimport { getArrayItemSchema } from '../array-base/utils'\n\ndefineOptions({\n name: 'FArrayTabs',\n inheritAttrs: false,\n})\n\nconst fieldRef = useField<ArrayField>()\nconst schemaRef = useFieldSchema()\n\nconst prefixCls = `${stylePrefix}-array-tabs`\nconst activeKey = ref<TabPaneName>('tab-0')\n\nconst field = fieldRef.value\n/* istanbul ignore else -- @preserve */\nif (field.value.length === 0) {\n field.value.push(null)\n}\nconst schema = schemaRef.value\nfunction getTabTitle(index: number) {\n return `${field.title || 'Untitled'} ${index + 1}`\n}\n\nconst errorCountList = ref<number[]>([])\nreactionWatch<number[]>(() => {\n return field.value.map((item, index) => {\n const panelErrors = field.form.queryFeedbacks({\n type: 'error',\n address: `${field.address.concat(index)}.**`,\n })\n return panelErrors.length\n })\n}, (newVal) => {\n errorCountList.value = newVal\n}, {\n equals: isEqual,\n})\nconst { props: elTabProps } = useCleanAttrs(['value', 'modelValue', 'onUpdate:modelValue'])\n</script>\n\n<template>\n <ElTabs\n v-bind=\"elTabProps\"\n :model-value=\"activeKey\"\n :class=\"prefixCls\"\n type=\"card\"\n :addable=\"true\"\n @tab-remove=\"(target) => {\n const index = target.toString().match(/tab-(\\d+)/)?.[1]\n field.remove(Number(index))\n if (activeKey === target) {\n activeKey = `tab-${Number(index) - 1}`\n }\n\n if (isFn($attrs['tab-remove'])) {\n $attrs['tab-remove'](target)\n }\n }\"\n @tab-add=\"() => {\n const id = field.value.length\n field.value.push(null)\n activeKey = `tab-${id}`\n if (isFn($attrs['tab-add'])) {\n $attrs['tab-add']()\n }\n }\"\n @change=\"() => {}\"\n >\n <ElTabPane\n v-for=\"(item, index) of field.value\"\n :key=\"`tab-${index}`\"\n :closable=\"index !== 0\"\n :name=\"`tab-${index}`\"\n >\n <template #default>\n <RecursionField\n :schema=\"getArrayItemSchema(schema, index)\"\n :name=\"index\"\n />\n </template>\n <template #label>\n <span v-if=\"errorCountList[index] > 0\">\n <ElBadge\n :class=\"[`${prefixCls}-errors-badge`]\"\n :value=\"errorCountList[index]\"\n >\n {{ getTabTitle(index) }}\n </ElBadge>\n </span>\n <span v-else>\n {{ getTabTitle(index) }}\n </span>\n </template>\n </ElTabPane>\n </ElTabs>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAiBA,MAAM,WAAW,UAAqB;EACtC,MAAM,YAAY,gBAAe;EAEjC,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,YAAY,IAAiB,QAAO;EAE1C,MAAM,QAAQ,SAAS;;AAEvB,MAAI,MAAM,MAAM,WAAW,EACzB,OAAM,MAAM,KAAK,KAAI;EAEvB,MAAM,SAAS,UAAU;EACzB,SAAS,YAAY,OAAe;AAClC,UAAO,GAAG,MAAM,SAAS,WAAW,GAAG,QAAQ;;EAGjD,MAAM,iBAAiB,IAAc,EAAE,CAAA;AACvC,sBAA8B;AAC5B,UAAO,MAAM,MAAM,KAAK,MAAM,UAAU;AAKtC,WAJoB,MAAM,KAAK,eAAe;KAC5C,MAAM;KACN,SAAS,GAAG,MAAM,QAAQ,OAAO,MAAM,CAAC;KACzC,CAAA,CACkB;KACpB;MACC,WAAW;AACb,kBAAe,QAAQ;KACtB,EACD,QAAQ,SACT,CAAA;EACD,MAAM,EAAE,OAAO,eAAe,cAAc;GAAC;GAAS;GAAc;GAAsB,CAAA;;uBAIxF,YAqDS,MAAA,OAAA,EArDT,WACU,MAoDD,WApDW,EAAA;IACjB,eAAa,UAAA;IACb,OAAO;IACR,MAAK;IACJ,SAAS;IACT,aAAU,OAAA,OAAA,OAAA,MAAG,WAAM;WAAmB,QAAQ,OAAO,UAAQ,CAAG,MAAK,YAAA,GAAA;AAAyB,WAAA,MAAK,CAAC,OAAO,OAAO,MAAK,CAAA;SAAa,UAAA,UAAc,OAAkB,WAAA,QAAS,OAAU,OAAO,MAAK,GAAA;SAA2B,MAAA,KAAI,CAACA,KAAAA,OAAM,cAAA,CAA2BA,MAAAA,OAAM,cAAe,OAAM;;IAW/R,UAAO,OAAA,OAAA,OAAA,WAAA;WAAsB,KAAK,MAAA,MAAK,CAAC,MAAM;AAAa,WAAA,MAAK,CAAC,MAAM,KAAI,KAAA;AAAa,eAAA,QAAS,OAAU;SAAe,MAAA,KAAI,CAACA,KAAAA,OAAM,WAAA,CAAwBA,MAAAA,OAAM,YAAA;;IAQnK,gBAAQ;;2BAG6B,EAAA,UAAA,KAAA,EADtC,mBAyBY,UAAA,MAAA,WAxBc,MAAA,MAAK,CAAC,QAAtB,MAAM,UAAK;yBADrB,YAyBY,MAAA,UAAA,EAAA;MAvBT,KAAG,OAAS;MACZ,UAAU,UAAK;MACf,MAAI,OAAS;;MAEH,SAAO,cAId,CAHF,YAGE,MAAA,eAAA,EAAA;OAFC,QAAQ,MAAA,mBAAkB,CAAC,MAAA,OAAM,EAAE,MAAK;OACxC,MAAM;;MAGA,OAAK,cAQP,CAPK,eAAA,MAAe,SAAK,KAAA,WAAA,EAAhC,mBAOO,QAAA,YAAA,CANL,YAKU,MAAA,QAAA,EAAA;OAJP,OAAK,eAAA,CAAA,GAAM,UAAS,eAAA,CAAA;OACpB,OAAO,eAAA,MAAe;;8BAEC,CAAA,gBAAA,gBAArB,YAAY,MAAK,CAAA,EAAA,EAAA,CAAA,CAAA;;sDAGxB,mBAEO,QAAA,YAAA,gBADF,YAAY,MAAK,CAAA,EAAA,EAAA,EAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.mjs","names":[],"sources":["../../src/autocomplete/autocomplete.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Field } from '@formily/core'\nimport type { AutocompleteInstance } from 'element-plus'\nimport type { AutocompleteData, AutocompleteFetchSuggestions } from 'element-plus/es/components/autocomplete'\nimport { useField } from '@silver-formily/vue'\nimport { ElAutocomplete } from 'element-plus'\nimport { computed, ref } from 'vue'\nimport { useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FAutocomplete',\n inheritAttrs: false,\n})\n\nconst props = defineProps<{\n options?: AutocompleteData\n}>()\n\nconst slots = defineSlots<{\n default?: (scope: { item: AutocompleteData[number], field: Field | undefined }) => any\n header?: (scope: { field: Field | undefined }) => any\n footer?: (scope: { field: Field | undefined }) => any\n loading?: () => any\n prefix?: () => any\n suffix?: () => any\n prepend?: () => any\n append?: () => any\n}>()\n\nconst { props: attrs } = useCleanAttrs()\nconst fieldRef = useField<Field>()\nconst autocompleteRef = ref<AutocompleteInstance>()\n\nfieldRef.value?.inject({\n getElAutocompleteRef: () => autocompleteRef,\n})\n\nconst normalizedFetchSuggestions = computed<AutocompleteFetchSuggestions | undefined>(() => {\n const attrFetch = attrs.value.fetchSuggestions as AutocompleteFetchSuggestions | undefined\n if (attrFetch) {\n return ((queryString, cb) => {\n return (attrFetch as (...args: any[]) => any)(queryString, cb, fieldRef.value)\n }) as AutocompleteFetchSuggestions\n }\n\n /* istanbul ignore next -- @preserve defensive: allow autocomplete to run without options and remote fetch */\n if (!props.options) {\n return\n }\n\n return (queryString: string, cb) => {\n fieldRef.value.loading = true\n const keyword = (queryString ?? '').toLowerCase()\n const valueKey = (attrs.value.valueKey ?? 'value') as string\n const results = keyword\n ? props.options!.filter(option => matchOption(option, valueKey, keyword))\n : props.options!\n cb(results)\n fieldRef.value.loading = false\n }\n})\n\nfunction matchOption(option: AutocompleteData[number], valueKey: string, keyword: string) {\n const target = option?.[valueKey]\n /* istanbul ignore next -- @preserve defensive: tolerate invalid option shape from external data source */\n if (target === undefined || target === null) {\n return false\n }\n return String(target).toLowerCase().includes(keyword)\n}\n\nconst autocompleteProps = computed(() => ({\n ...attrs.value,\n loading: attrs.value.loading ?? fieldRef.value?.loading,\n fetchSuggestions: normalizedFetchSuggestions.value,\n}))\n</script>\n\n<template>\n <ElAutocomplete ref=\"autocompleteRef\" v-bind=\"autocompleteProps\">\n <template v-if=\"slots.default\" #default=\"slotProps\">\n <slot name=\"default\" v-bind=\"{ ...slotProps, field: fieldRef }\" />\n </template>\n <template v-if=\"slots.header\" #header>\n <slot name=\"header\" :field=\"fieldRef\" />\n </template>\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" :field=\"fieldRef\" />\n </template>\n <template v-if=\"slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template v-if=\"slots.suffix\" #suffix>\n <slot name=\"suffix\" />\n </template>\n <template v-if=\"slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n <template v-if=\"slots.loading\" #loading>\n <slot name=\"loading\" />\n </template>\n </ElAutocomplete>\n</template>\n"],"mappings":";;;;;;;;;;;EAcA,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAA;EAWd,MAAM,EAAE,OAAO,UAAU,eAAc;EACvC,MAAM,WAAW,UAAgB;EACjC,MAAM,kBAAkB,KAA0B;AAElD,WAAS,OAAO,OAAO,EACrB,4BAA4B,iBAC7B,CAAA;EAED,MAAM,6BAA6B,eAAyD;GAC1F,MAAM,YAAY,MAAM,MAAM;AAC9B,OAAI,UACF,UAAS,aAAa,OAAO;AAC3B,WAAQ,UAAsC,aAAa,IAAI,SAAS,MAAK;;;AAKjF,OAAI,CAAC,MAAM,QACT;AAGF,WAAQ,aAAqB,OAAO;AAClC,aAAS,MAAM,UAAU;IACzB,MAAM,WAAW,eAAe,IAAI,aAAY;IAChD,MAAM,WAAY,MAAM,MAAM,YAAY;AAI1C,OAHgB,UACZ,MAAM,QAAS,QAAO,WAAU,YAAY,QAAQ,UAAU,QAAQ,CAAA,GACtE,MAAM,QACA;AACV,aAAS,MAAM,UAAU;;IAE5B;EAED,SAAS,YAAY,QAAkC,UAAkB,SAAiB;GACxF,MAAM,SAAS,SAAS;;AAExB,OAAI,WAAW,KAAA,KAAa,WAAW,KACrC,QAAO;AAET,UAAO,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,QAAO;;EAGtD,MAAM,oBAAoB,gBAAgB;GACxC,GAAG,MAAM;GACT,SAAS,MAAM,MAAM,WAAW,SAAS,OAAO;GAChD,kBAAkB,2BAA2B;GAC9C,EAAC;;uBAIA,YAyBiB,MAAA,eAAA,EAzBjB,WAyBiB;aAzBG;IAAJ,KAAI;MAA0B,kBAAA,MAAiB,EAAA,YAAA,EAAA,GAAA,GAAA,EAAA;IAC7C,MAAM,UAAA;WAAU;kBAAS,cAAS,CAChD,WAAkE,KAAA,QAAA,WAAA,eAAA,mBAAA;MAAA,GAAhC;MAAS,OAAS,MAAA,SAAQ;MAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;IAE9C,MAAM,SAAA;WAAS;uBACW,CAAxC,WAAwC,KAAA,QAAA,UAAA,EAAnB,OAAO,MAAA,SAAQ,EAAA,CAAA,CAAA,CAAA;;;IAEtB,MAAM,SAAA;WAAS;uBACW,CAAxC,WAAwC,KAAA,QAAA,UAAA,EAAnB,OAAO,MAAA,SAAQ,EAAA,CAAA,CAAA,CAAA;;;IAEtB,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,UAAA;WAAU;uBACP,CAAvB,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA;;;IAET,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,UAAA;WAAU;uBACP,CAAvB,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"autocomplete.mjs","names":[],"sources":["../../src/autocomplete/autocomplete.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Field } from '@silver-formily/core'\nimport type { AutocompleteInstance } from 'element-plus'\nimport type { AutocompleteData, AutocompleteFetchSuggestions } from 'element-plus/es/components/autocomplete'\nimport { useField } from '@silver-formily/vue'\nimport { ElAutocomplete } from 'element-plus'\nimport { computed, ref } from 'vue'\nimport { useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FAutocomplete',\n inheritAttrs: false,\n})\n\nconst props = defineProps<{\n options?: AutocompleteData\n}>()\n\nconst slots = defineSlots<{\n default?: (scope: { item: AutocompleteData[number], field: Field | undefined }) => any\n header?: (scope: { field: Field | undefined }) => any\n footer?: (scope: { field: Field | undefined }) => any\n loading?: () => any\n prefix?: () => any\n suffix?: () => any\n prepend?: () => any\n append?: () => any\n}>()\n\nconst { props: attrs } = useCleanAttrs()\nconst fieldRef = useField<Field>()\nconst autocompleteRef = ref<AutocompleteInstance>()\n\nfieldRef.value?.inject({\n getElAutocompleteRef: () => autocompleteRef,\n})\n\nconst normalizedFetchSuggestions = computed<AutocompleteFetchSuggestions | undefined>(() => {\n const attrFetch = attrs.value.fetchSuggestions as AutocompleteFetchSuggestions | undefined\n if (attrFetch) {\n return ((queryString, cb) => {\n return (attrFetch as (...args: any[]) => any)(queryString, cb, fieldRef.value)\n }) as AutocompleteFetchSuggestions\n }\n\n /* istanbul ignore next -- @preserve defensive: allow autocomplete to run without options and remote fetch */\n if (!props.options) {\n return\n }\n\n return (queryString: string, cb) => {\n fieldRef.value.loading = true\n const keyword = (queryString ?? '').toLowerCase()\n const valueKey = (attrs.value.valueKey ?? 'value') as string\n const results = keyword\n ? props.options!.filter(option => matchOption(option, valueKey, keyword))\n : props.options!\n cb(results)\n fieldRef.value.loading = false\n }\n})\n\nfunction matchOption(option: AutocompleteData[number], valueKey: string, keyword: string) {\n const target = option?.[valueKey]\n /* istanbul ignore next -- @preserve defensive: tolerate invalid option shape from external data source */\n if (target === undefined || target === null) {\n return false\n }\n return String(target).toLowerCase().includes(keyword)\n}\n\nconst autocompleteProps = computed(() => ({\n ...attrs.value,\n loading: attrs.value.loading ?? fieldRef.value?.loading,\n fetchSuggestions: normalizedFetchSuggestions.value,\n}))\n</script>\n\n<template>\n <ElAutocomplete ref=\"autocompleteRef\" v-bind=\"autocompleteProps\">\n <template v-if=\"slots.default\" #default=\"slotProps\">\n <slot name=\"default\" v-bind=\"{ ...slotProps, field: fieldRef }\" />\n </template>\n <template v-if=\"slots.header\" #header>\n <slot name=\"header\" :field=\"fieldRef\" />\n </template>\n <template v-if=\"slots.footer\" #footer>\n <slot name=\"footer\" :field=\"fieldRef\" />\n </template>\n <template v-if=\"slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template v-if=\"slots.suffix\" #suffix>\n <slot name=\"suffix\" />\n </template>\n <template v-if=\"slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n <template v-if=\"slots.loading\" #loading>\n <slot name=\"loading\" />\n </template>\n </ElAutocomplete>\n</template>\n"],"mappings":";;;;;;;;;;;EAcA,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAA;EAWd,MAAM,EAAE,OAAO,UAAU,eAAc;EACvC,MAAM,WAAW,UAAgB;EACjC,MAAM,kBAAkB,KAA0B;AAElD,WAAS,OAAO,OAAO,EACrB,4BAA4B,iBAC7B,CAAA;EAED,MAAM,6BAA6B,eAAyD;GAC1F,MAAM,YAAY,MAAM,MAAM;AAC9B,OAAI,UACF,UAAS,aAAa,OAAO;AAC3B,WAAQ,UAAsC,aAAa,IAAI,SAAS,MAAK;;;AAKjF,OAAI,CAAC,MAAM,QACT;AAGF,WAAQ,aAAqB,OAAO;AAClC,aAAS,MAAM,UAAU;IACzB,MAAM,WAAW,eAAe,IAAI,aAAY;IAChD,MAAM,WAAY,MAAM,MAAM,YAAY;AAI1C,OAHgB,UACZ,MAAM,QAAS,QAAO,WAAU,YAAY,QAAQ,UAAU,QAAQ,CAAA,GACtE,MAAM,QACA;AACV,aAAS,MAAM,UAAU;;IAE5B;EAED,SAAS,YAAY,QAAkC,UAAkB,SAAiB;GACxF,MAAM,SAAS,SAAS;;AAExB,OAAI,WAAW,KAAA,KAAa,WAAW,KACrC,QAAO;AAET,UAAO,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,QAAO;;EAGtD,MAAM,oBAAoB,gBAAgB;GACxC,GAAG,MAAM;GACT,SAAS,MAAM,MAAM,WAAW,SAAS,OAAO;GAChD,kBAAkB,2BAA2B;GAC9C,EAAC;;uBAIA,YAyBiB,MAAA,eAAA,EAzBjB,WAyBiB;aAzBG;IAAJ,KAAI;MAA0B,kBAAA,MAAiB,EAAA,YAAA,EAAA,GAAA,GAAA,EAAA;IAC7C,MAAM,UAAA;WAAU;kBAAS,cAAS,CAChD,WAAkE,KAAA,QAAA,WAAA,eAAA,mBAAA;MAAA,GAAhC;MAAS,OAAS,MAAA,SAAQ;MAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;IAE9C,MAAM,SAAA;WAAS;uBACW,CAAxC,WAAwC,KAAA,QAAA,UAAA,EAAnB,OAAO,MAAA,SAAQ,EAAA,CAAA,CAAA,CAAA;;;IAEtB,MAAM,SAAA;WAAS;uBACW,CAAxC,WAAwC,KAAA,QAAA,UAAA,EAAnB,OAAO,MAAA,SAAQ,EAAA,CAAA,CAAA,CAAA;;;IAEtB,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,UAAA;WAAU;uBACP,CAAvB,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA;;;IAET,MAAM,SAAA;WAAS;uBACP,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAER,MAAM,UAAA;WAAU;uBACP,CAAvB,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as _$element_plus0 from "element-plus";
|
|
2
2
|
import * as _$vue from "vue";
|
|
3
|
-
import * as _$_formily_core0 from "@formily/core";
|
|
4
3
|
|
|
5
4
|
//#region src/autocomplete/index.d.ts
|
|
6
5
|
declare const Autocomplete: {
|
|
@@ -25,13 +24,13 @@ declare const Autocomplete: {
|
|
|
25
24
|
$slots: {
|
|
26
25
|
default?: (scope: {
|
|
27
26
|
item: _$element_plus0.AutocompleteData[number];
|
|
28
|
-
field:
|
|
27
|
+
field: Field | undefined;
|
|
29
28
|
}) => any;
|
|
30
29
|
header?: (scope: {
|
|
31
|
-
field:
|
|
30
|
+
field: Field | undefined;
|
|
32
31
|
}) => any;
|
|
33
32
|
footer?: (scope: {
|
|
34
|
-
field:
|
|
33
|
+
field: Field | undefined;
|
|
35
34
|
}) => any;
|
|
36
35
|
loading?: () => any;
|
|
37
36
|
prefix?: () => any;
|
|
@@ -2,7 +2,7 @@ import { lt } from "../__builtins__/shared/simple-version-compare.mjs";
|
|
|
2
2
|
import { useCleanAttrs } from "../__builtins__/shared/utils.mjs";
|
|
3
3
|
import { ElCheckbox, ElCheckboxButton, ElCheckboxGroup, version } from "element-plus";
|
|
4
4
|
import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useSlots, withCtx } from "vue";
|
|
5
|
-
import { isPlainObj } from "@formily/shared";
|
|
5
|
+
import { isPlainObj } from "@silver-formily/shared";
|
|
6
6
|
//#region src/checkbox/checkbox-group.vue
|
|
7
7
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
8
8
|
name: "FCheckboxGroup",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-group.mjs","names":[],"sources":["../../src/checkbox/checkbox-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { CheckboxProps } from 'element-plus'\nimport type { PropType } from 'vue'\nimport { isPlainObj } from '@formily/shared'\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup, version } from 'element-plus'\nimport { computed, useSlots } from 'vue'\nimport { lt, useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FCheckboxGroup',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n options: {\n type: Array as PropType<Array<CheckboxProps>>,\n default: () => [],\n },\n optionType: {\n type: String as PropType<'default' | 'button'>,\n default: 'default',\n },\n})\n\nconst OptionType = computed(() => {\n return props.optionType === 'button' ? ElCheckboxButton : ElCheckbox\n})\nconst IS_LESS_THAN_2_6_0 = lt(version, '2.6.0')\nconst compatiableProps = computed(() => {\n return props.options.map((option) => {\n if (!isPlainObj(option)) {\n return {\n label: option,\n value: option,\n }\n }\n /* istanbul ignore if -- @preserve */\n if (IS_LESS_THAN_2_6_0) {\n return {\n ...option,\n label: option.value,\n }\n }\n return option\n })\n})\n\nconst slots = useSlots()\nconst { props: checkboxProps } = useCleanAttrs()\n</script>\n\n<template>\n <ElCheckboxGroup v-bind=\"checkboxProps\">\n <template v-if=\"!slots.option\">\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n {{ isPlainObj(props.options[index]) ? props.options[index]?.label : option.label }}\n </component>\n </template>\n <template v-else>\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n <slot name=\"option\" :option=\"option\" />\n </component>\n </template>\n </ElCheckboxGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAWd,MAAM,aAAa,eAAe;AAChC,UAAO,MAAM,eAAe,WAAW,mBAAmB;IAC3D;EACD,MAAM,qBAAqB,GAAG,SAAS,QAAO;EAC9C,MAAM,mBAAmB,eAAe;AACtC,UAAO,MAAM,QAAQ,KAAK,WAAW;AACnC,QAAI,CAAC,WAAW,OAAO,CACrB,QAAO;KACL,OAAO;KACP,OAAO;KACT;;AAGF,QAAI,mBACF,QAAO;KACL,GAAG;KACH,OAAO,OAAO;KAChB;AAEF,WAAO;KACR;IACF;EAED,MAAM,QAAQ,UAAS;EACvB,MAAM,EAAE,OAAO,kBAAkB,eAAc;;uBAI7C,YAWkB,MAAA,gBAAA,EAAA,eAAA,mBAXO,MAAA,cAAa,CAAA,CAAA,EAAA;2BAKzB,CAAA,CAJM,MAAA,MAAK,CAAC,UAAA,UAAA,KAAA,EACrB,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BACd,CAAA,gBAAA,gBAAhF,MAAA,WAAU,CAAC,MAAM,QAAQ,OAAK,GAAK,MAAM,QAAQ,QAAQ,QAAQ,OAAO,MAAK,EAAA,EAAA,CAAA,CAAA;;;kCAIlF,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC1D,CAAvC,WAAuC,KAAA,QAAA,UAAA,EAAV,QAAM,CAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"checkbox-group.mjs","names":[],"sources":["../../src/checkbox/checkbox-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { CheckboxProps } from 'element-plus'\nimport type { PropType } from 'vue'\nimport { isPlainObj } from '@silver-formily/shared'\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup, version } from 'element-plus'\nimport { computed, useSlots } from 'vue'\nimport { lt, useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FCheckboxGroup',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n options: {\n type: Array as PropType<Array<CheckboxProps>>,\n default: () => [],\n },\n optionType: {\n type: String as PropType<'default' | 'button'>,\n default: 'default',\n },\n})\n\nconst OptionType = computed(() => {\n return props.optionType === 'button' ? ElCheckboxButton : ElCheckbox\n})\nconst IS_LESS_THAN_2_6_0 = lt(version, '2.6.0')\nconst compatiableProps = computed(() => {\n return props.options.map((option) => {\n if (!isPlainObj(option)) {\n return {\n label: option,\n value: option,\n }\n }\n /* istanbul ignore if -- @preserve */\n if (IS_LESS_THAN_2_6_0) {\n return {\n ...option,\n label: option.value,\n }\n }\n return option\n })\n})\n\nconst slots = useSlots()\nconst { props: checkboxProps } = useCleanAttrs()\n</script>\n\n<template>\n <ElCheckboxGroup v-bind=\"checkboxProps\">\n <template v-if=\"!slots.option\">\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n {{ isPlainObj(props.options[index]) ? props.options[index]?.label : option.label }}\n </component>\n </template>\n <template v-else>\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n <slot name=\"option\" :option=\"option\" />\n </component>\n </template>\n </ElCheckboxGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAWd,MAAM,aAAa,eAAe;AAChC,UAAO,MAAM,eAAe,WAAW,mBAAmB;IAC3D;EACD,MAAM,qBAAqB,GAAG,SAAS,QAAO;EAC9C,MAAM,mBAAmB,eAAe;AACtC,UAAO,MAAM,QAAQ,KAAK,WAAW;AACnC,QAAI,CAAC,WAAW,OAAO,CACrB,QAAO;KACL,OAAO;KACP,OAAO;KACT;;AAGF,QAAI,mBACF,QAAO;KACL,GAAG;KACH,OAAO,OAAO;KAChB;AAEF,WAAO;KACR;IACF;EAED,MAAM,QAAQ,UAAS;EACvB,MAAM,EAAE,OAAO,kBAAkB,eAAc;;uBAI7C,YAWkB,MAAA,gBAAA,EAAA,eAAA,mBAXO,MAAA,cAAa,CAAA,CAAA,EAAA;2BAKzB,CAAA,CAJM,MAAA,MAAK,CAAC,UAAA,UAAA,KAAA,EACrB,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BACd,CAAA,gBAAA,gBAAhF,MAAA,WAAU,CAAC,MAAM,QAAQ,OAAK,GAAK,MAAM,QAAQ,QAAQ,QAAQ,OAAO,MAAK,EAAA,EAAA,CAAA,CAAA;;;kCAIlF,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC1D,CAAvC,WAAuC,KAAA,QAAA,UAAA,EAAV,QAAM,CAAA,CAAA,CAAA"}
|