auto-gen-crud 0.1.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/API.md +130 -0
- package/README.md +234 -0
- package/dist/adapters/ant-design-vue.d.ts +8 -0
- package/dist/adapters/element-plus.d.ts +8 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/naive.d.ts +8 -0
- package/dist/adapters/types.d.ts +162 -0
- package/dist/components/AutoCrud.vue.d.ts +398 -0
- package/dist/components/CopyText.vue.d.ts +6 -0
- package/dist/components/CrudModal.vue.d.ts +47 -0
- package/dist/components/DecodeText.vue.d.ts +8 -0
- package/dist/components/DynamicForm.vue.d.ts +63 -0
- package/dist/components/DynamicFormItem.vue.d.ts +20 -0
- package/dist/components/DynamicTable.vue.d.ts +30 -0
- package/dist/context.d.ts +36 -0
- package/dist/core/date-format-utils.d.ts +8 -0
- package/dist/core/form-runtime-cache.d.ts +27 -0
- package/dist/core/form-utils.d.ts +51 -0
- package/dist/core/object-utils.d.ts +43 -0
- package/dist/core/table-utils.d.ts +19 -0
- package/dist/core/types.d.ts +443 -0
- package/dist/generator/fields.d.ts +27 -0
- package/dist/generator/index.d.ts +14 -0
- package/dist/generator/index.js +740 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/openapi.d.ts +10 -0
- package/dist/generator/operations.d.ts +8 -0
- package/dist/generator/schema.d.ts +32 -0
- package/dist/generator/string-utils.d.ts +11 -0
- package/dist/generator/templates.d.ts +6 -0
- package/dist/generator/types.d.ts +185 -0
- package/dist/generator/writer.d.ts +8 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useModalForm.d.ts +11 -0
- package/dist/hooks/useSearchForm.d.ts +10 -0
- package/dist/hooks/useTable.d.ts +11 -0
- package/dist/index-Dc-solHn.js +299 -0
- package/dist/index-Dc-solHn.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +985 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +17 -0
- package/dist/style.css +1 -0
- package/dist/useTable-BwDSqD1q.js +214 -0
- package/dist/useTable-BwDSqD1q.js.map +1 -0
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +532 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/message.d.ts +9 -0
- package/dist/utils/request.d.ts +8 -0
- package/dist/utils/sm4-core.d.ts +12 -0
- package/dist/utils/sm4.d.ts +29 -0
- package/docs/AI_AGENT_GUIDE.md +210 -0
- package/mcp/auto-crud-mcp.mjs +502 -0
- package/mcp/auto-gen-crud-mcp.mjs +586 -0
- package/package.json +93 -0
- package/skills/auto-gen-crud-agent/SKILL.md +114 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
const n = {
|
|
2
|
+
input: "AInput",
|
|
3
|
+
textarea: "ATextarea",
|
|
4
|
+
select: "ASelect",
|
|
5
|
+
multipleSelect: "ASelect",
|
|
6
|
+
radio: "ARadioGroup",
|
|
7
|
+
checkbox: "ACheckboxGroup",
|
|
8
|
+
inputNumber: "AInputNumber",
|
|
9
|
+
datePicker: "ADatePicker",
|
|
10
|
+
timePicker: "ATimePicker",
|
|
11
|
+
switch: "ASwitch",
|
|
12
|
+
cascader: "ACascader",
|
|
13
|
+
slider: "ASlider"
|
|
14
|
+
}, d = {
|
|
15
|
+
name: "ant-design-vue",
|
|
16
|
+
components: {
|
|
17
|
+
card: "ACard",
|
|
18
|
+
form: "AForm",
|
|
19
|
+
formItem: "AFormItem",
|
|
20
|
+
button: "AButton",
|
|
21
|
+
table: "ATable",
|
|
22
|
+
pagination: "APagination",
|
|
23
|
+
drawer: "ADrawer",
|
|
24
|
+
modal: "AModal",
|
|
25
|
+
popconfirm: "APopconfirm",
|
|
26
|
+
image: "AImage",
|
|
27
|
+
tooltip: "ATooltip",
|
|
28
|
+
fields: n,
|
|
29
|
+
option: "ASelectOption",
|
|
30
|
+
radio: "ARadio",
|
|
31
|
+
checkbox: "ACheckbox"
|
|
32
|
+
},
|
|
33
|
+
form: {
|
|
34
|
+
getFormProps: ({ model: e, rules: t, disabled: r }) => ({ model: e, rules: t, disabled: r, labelAlign: "right" }),
|
|
35
|
+
getFormItemProps: (e, { prop: t, label: r }) => ({ name: t, label: `${r}:`, ...e.formItemProps || {} }),
|
|
36
|
+
getModelBinding: (e) => ({ prop: e === "switch" ? "checked" : "value", event: e === "switch" ? "onUpdate:checked" : "onUpdate:value" }),
|
|
37
|
+
getFieldProps: (e, { placeholder: t, disabled: r, options: o }) => {
|
|
38
|
+
const a = e.component || e.valueKey;
|
|
39
|
+
return {
|
|
40
|
+
placeholder: t,
|
|
41
|
+
disabled: r,
|
|
42
|
+
options: ["select", "multipleSelect", "cascader", "radio", "checkbox"].includes(a || "") ? o : void 0,
|
|
43
|
+
mode: a === "multipleSelect" ? "multiple" : void 0,
|
|
44
|
+
...e.componentProps || {},
|
|
45
|
+
...e.props || {}
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
getLayoutStyle: (e) => ({ "--vac-form-columns": e?.columns || 4 }),
|
|
49
|
+
async validate(e) {
|
|
50
|
+
const t = e;
|
|
51
|
+
return t?.validate && await t.validate(), !0;
|
|
52
|
+
},
|
|
53
|
+
clearValidate(e) {
|
|
54
|
+
e?.clearValidate?.();
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
table: {
|
|
58
|
+
useColumnConfig: !0,
|
|
59
|
+
getTableProps: ({ columns: e, data: t, loading: r, rowKey: o, scrollY: a, scrollX: i }) => ({
|
|
60
|
+
columns: e,
|
|
61
|
+
dataSource: t,
|
|
62
|
+
loading: r,
|
|
63
|
+
rowKey: o,
|
|
64
|
+
pagination: !1,
|
|
65
|
+
bordered: !0,
|
|
66
|
+
scroll: a || i ? { y: a, x: i } : void 0
|
|
67
|
+
}),
|
|
68
|
+
getTableColumnProps: (e) => ({ dataIndex: e.field || e.key, title: e.title, width: e.width, fixed: e.fixed, align: e.align, ...e.props || {} }),
|
|
69
|
+
getPaginationProps: (e) => ({ total: e.total, current: e.page, pageSize: e.pageSize, pageSizeOptions: e.pageSizes?.map(String), showSizeChanger: e.showSizePicker, showQuickJumper: e.showQuickJumper }),
|
|
70
|
+
getPaginationEvents: ({ onPageChange: e, onPageSizeChange: t }) => ({
|
|
71
|
+
// DynamicTable 使用 `v-on="events"`,这里返回模板事件名;Ant Design Vue 的分页切换主要来自 change。
|
|
72
|
+
"update:current": e,
|
|
73
|
+
"update:pageSize": t,
|
|
74
|
+
change: e,
|
|
75
|
+
showSizeChange: (r, o) => t(o)
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
modal: {
|
|
79
|
+
getModalProps: ({ visible: e, title: t, width: r, onUpdateVisible: o }) => ({ open: e, title: t, width: r || "60%", "onUpdate:open": o })
|
|
80
|
+
},
|
|
81
|
+
render: {
|
|
82
|
+
getButtonProps: ({ type: e, size: t, disabled: r }) => ({ type: e === "primary" ? "primary" : e === "link" || e === "text" ? "link" : "default", danger: e === "danger", size: t === "medium" ? "middle" : t, disabled: r }),
|
|
83
|
+
getPopconfirmProps: ({ title: e, confirmText: t, cancelText: r, onConfirm: o }) => ({ title: e, okText: t || "确认", cancelText: r || "取消", onConfirm: o }),
|
|
84
|
+
getImageProps: ({ src: e, width: t, height: r }) => ({ src: e, width: t, height: r }),
|
|
85
|
+
customRenderKey: "customRender",
|
|
86
|
+
normalizeActionType: (e) => e.type || "link"
|
|
87
|
+
},
|
|
88
|
+
feedback: {
|
|
89
|
+
success: (e) => console.info(e),
|
|
90
|
+
warning: (e) => console.warn(e),
|
|
91
|
+
error: (e) => console.error(e)
|
|
92
|
+
}
|
|
93
|
+
}, s = {
|
|
94
|
+
input: "ElInput",
|
|
95
|
+
textarea: "ElInput",
|
|
96
|
+
select: "ElSelect",
|
|
97
|
+
multipleSelect: "ElSelect",
|
|
98
|
+
radio: "ElRadioGroup",
|
|
99
|
+
checkbox: "ElCheckboxGroup",
|
|
100
|
+
inputNumber: "ElInputNumber",
|
|
101
|
+
datePicker: "ElDatePicker",
|
|
102
|
+
timePicker: "ElTimePicker",
|
|
103
|
+
switch: "ElSwitch",
|
|
104
|
+
cascader: "ElCascader",
|
|
105
|
+
slider: "ElSlider"
|
|
106
|
+
}, u = {
|
|
107
|
+
name: "element-plus",
|
|
108
|
+
components: {
|
|
109
|
+
card: "ElCard",
|
|
110
|
+
form: "ElForm",
|
|
111
|
+
formItem: "ElFormItem",
|
|
112
|
+
button: "ElButton",
|
|
113
|
+
table: "ElTable",
|
|
114
|
+
tableColumn: "ElTableColumn",
|
|
115
|
+
pagination: "ElPagination",
|
|
116
|
+
drawer: "ElDrawer",
|
|
117
|
+
modal: "ElDialog",
|
|
118
|
+
popconfirm: "ElPopconfirm",
|
|
119
|
+
image: "ElImage",
|
|
120
|
+
tooltip: "ElTooltip",
|
|
121
|
+
fields: s,
|
|
122
|
+
option: "ElOption",
|
|
123
|
+
radio: "ElRadio",
|
|
124
|
+
checkbox: "ElCheckbox"
|
|
125
|
+
},
|
|
126
|
+
form: {
|
|
127
|
+
getFormProps: ({ model: e, rules: t, disabled: r }) => ({ model: e, rules: t, disabled: r, labelPosition: "right" }),
|
|
128
|
+
getFormItemProps: (e, { prop: t, label: r }) => ({ prop: t, label: `${r}:`, ...e.formItemProps || {} }),
|
|
129
|
+
getModelBinding: () => ({ prop: "modelValue", event: "onUpdate:modelValue" }),
|
|
130
|
+
getFieldProps: (e, { placeholder: t, disabled: r }) => {
|
|
131
|
+
const o = e.component || e.valueKey;
|
|
132
|
+
return {
|
|
133
|
+
clearable: o !== "switch",
|
|
134
|
+
placeholder: t,
|
|
135
|
+
disabled: r,
|
|
136
|
+
type: o === "textarea" ? "textarea" : void 0,
|
|
137
|
+
multiple: o === "multipleSelect" ? !0 : void 0,
|
|
138
|
+
...e.componentProps || {},
|
|
139
|
+
...e.props || {}
|
|
140
|
+
};
|
|
141
|
+
},
|
|
142
|
+
getLayoutStyle: (e) => ({ "--vac-form-columns": e?.columns || 4 }),
|
|
143
|
+
async validate(e) {
|
|
144
|
+
const t = e;
|
|
145
|
+
return t?.validate ? !!await t.validate() : !0;
|
|
146
|
+
},
|
|
147
|
+
clearValidate(e) {
|
|
148
|
+
e?.clearValidate?.();
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
table: {
|
|
152
|
+
useColumnConfig: !1,
|
|
153
|
+
getTableProps: ({ data: e, loading: t, rowKey: r, scrollY: o }) => ({ data: e, border: !0, stripe: !0, loading: t, rowKey: r, height: o }),
|
|
154
|
+
getTableColumnProps: (e) => ({ prop: e.field || e.key, label: e.title, width: e.width, fixed: e.fixed, align: e.align, ...e.props || {} }),
|
|
155
|
+
getPaginationProps: (e) => ({
|
|
156
|
+
total: e.total,
|
|
157
|
+
currentPage: e.page,
|
|
158
|
+
pageSize: e.pageSize,
|
|
159
|
+
pageSizes: e.pageSizes,
|
|
160
|
+
layout: ["total", e.showSizePicker ? "sizes" : "", "prev", "pager", "next", e.showQuickJumper ? "jumper" : ""].filter(Boolean).join(", ")
|
|
161
|
+
}),
|
|
162
|
+
getPaginationEvents: ({ onPageChange: e, onPageSizeChange: t }) => ({
|
|
163
|
+
// DynamicTable 使用 `v-on="events"`,这里返回模板事件名,避免把 render props 写法误传成普通 prop。
|
|
164
|
+
"update:currentPage": e,
|
|
165
|
+
"update:pageSize": t,
|
|
166
|
+
currentChange: e,
|
|
167
|
+
sizeChange: t
|
|
168
|
+
})
|
|
169
|
+
},
|
|
170
|
+
modal: {
|
|
171
|
+
getModalProps: ({ visible: e, title: t, width: r, onUpdateVisible: o }) => ({ modelValue: e, title: t, size: r || "60%", width: r || "60%", "onUpdate:modelValue": o })
|
|
172
|
+
},
|
|
173
|
+
render: {
|
|
174
|
+
getButtonProps: ({ type: e, size: t, disabled: r }) => ({ type: e === "danger" ? "danger" : e === "default" ? void 0 : e, size: t === "medium" ? "default" : t, disabled: r }),
|
|
175
|
+
getPopconfirmProps: ({ title: e, confirmText: t, cancelText: r, onConfirm: o }) => ({ title: e, confirmButtonText: t || "确认", cancelButtonText: r || "取消", onConfirm: o }),
|
|
176
|
+
getImageProps: ({ src: e, width: t, height: r, objectFit: o, preview: a }) => ({ src: e, style: { width: `${t}px`, height: `${r}px`, objectFit: o }, previewSrcList: a ? [e] : void 0 }),
|
|
177
|
+
customRenderKey: "render",
|
|
178
|
+
normalizeActionType: (e) => e.type || "primary"
|
|
179
|
+
},
|
|
180
|
+
feedback: {
|
|
181
|
+
success: (e) => globalThis.ElMessage?.success?.(e),
|
|
182
|
+
warning: (e) => globalThis.ElMessage?.warning?.(e),
|
|
183
|
+
error: (e) => globalThis.ElMessage?.error?.(e)
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
function l(e) {
|
|
187
|
+
return typeof e != "string" ? e : e.replace(/YYYY/g, "yyyy").replace(/YY/g, "yy").replace(/DD/g, "dd");
|
|
188
|
+
}
|
|
189
|
+
const p = {
|
|
190
|
+
input: "NInput",
|
|
191
|
+
textarea: "NInput",
|
|
192
|
+
select: "NSelect",
|
|
193
|
+
multipleSelect: "NSelect",
|
|
194
|
+
radio: "NRadioGroup",
|
|
195
|
+
checkbox: "NCheckboxGroup",
|
|
196
|
+
inputNumber: "NInputNumber",
|
|
197
|
+
datePicker: "NDatePicker",
|
|
198
|
+
timePicker: "NTimePicker",
|
|
199
|
+
switch: "NSwitch",
|
|
200
|
+
cascader: "NCascader",
|
|
201
|
+
slider: "NSlider"
|
|
202
|
+
};
|
|
203
|
+
function c(e, t) {
|
|
204
|
+
return e !== "datePicker" && e !== "timePicker" ? t : {
|
|
205
|
+
...t,
|
|
206
|
+
format: l(t.format),
|
|
207
|
+
valueFormat: l(t.valueFormat)
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const m = {
|
|
211
|
+
name: "naive",
|
|
212
|
+
components: {
|
|
213
|
+
card: "NCard",
|
|
214
|
+
form: "NForm",
|
|
215
|
+
formItem: "NFormItem",
|
|
216
|
+
button: "NButton",
|
|
217
|
+
table: "NDataTable",
|
|
218
|
+
pagination: "NPagination",
|
|
219
|
+
drawer: "NDrawer",
|
|
220
|
+
drawerContent: "NDrawerContent",
|
|
221
|
+
modal: "NModal",
|
|
222
|
+
popconfirm: "NPopconfirm",
|
|
223
|
+
image: "NImage",
|
|
224
|
+
tooltip: "NTooltip",
|
|
225
|
+
fields: p,
|
|
226
|
+
option: "NOption",
|
|
227
|
+
radio: "NRadio",
|
|
228
|
+
checkbox: "NCheckbox"
|
|
229
|
+
},
|
|
230
|
+
form: {
|
|
231
|
+
getFormProps: ({ model: e, rules: t, disabled: r }) => ({ model: e, rules: t, disabled: r, labelPlacement: "left", requireMarkPlacement: "left" }),
|
|
232
|
+
getFormItemProps: (e, { prop: t, label: r }) => ({ path: t, label: `${r}:`, ...e.formItemProps || {} }),
|
|
233
|
+
getModelBinding: () => ({ prop: "value", event: "onUpdate:value" }),
|
|
234
|
+
getFieldProps: (e, { placeholder: t, disabled: r, options: o }) => {
|
|
235
|
+
const a = e.component || e.valueKey, i = {
|
|
236
|
+
placeholder: t,
|
|
237
|
+
disabled: r,
|
|
238
|
+
options: ["select", "multipleSelect", "cascader"].includes(a || "") ? o : void 0,
|
|
239
|
+
type: a === "textarea" ? "textarea" : void 0,
|
|
240
|
+
multiple: a === "multipleSelect" ? !0 : void 0,
|
|
241
|
+
...e.componentProps || {},
|
|
242
|
+
...e.props || {}
|
|
243
|
+
};
|
|
244
|
+
return c(a, i);
|
|
245
|
+
},
|
|
246
|
+
getLayoutStyle: (e) => ({ "--vac-form-columns": e?.columns || 4 }),
|
|
247
|
+
async validate(e) {
|
|
248
|
+
const t = e;
|
|
249
|
+
return t?.validate && await t.validate(), !0;
|
|
250
|
+
},
|
|
251
|
+
clearValidate(e) {
|
|
252
|
+
e?.restoreValidation?.();
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
table: {
|
|
256
|
+
useColumnConfig: !0,
|
|
257
|
+
getTableProps: ({ columns: e, data: t, loading: r, rowKey: o, scrollY: a, scrollX: i }) => ({ columns: e, data: t, loading: r, rowKey: o, remote: !0, bordered: !0, singleLine: !1, maxHeight: a, scrollX: i }),
|
|
258
|
+
getTableColumnProps: (e) => ({ key: e.field || e.key, title: e.title, width: e.width, fixed: e.fixed, align: e.align, ...e.props || {} }),
|
|
259
|
+
getPaginationProps: (e) => ({ itemCount: e.total, page: e.page, pageSize: e.pageSize, pageSizes: e.pageSizes, showSizePicker: e.showSizePicker, showQuickJumper: e.showQuickJumper }),
|
|
260
|
+
getPaginationEvents: ({ onPageChange: e, onPageSizeChange: t }) => ({
|
|
261
|
+
// DynamicTable 使用 `v-on="events"` 绑定对象,key 必须是事件名,而不是 render 函数里的 onXxx prop。
|
|
262
|
+
"update:page": e,
|
|
263
|
+
"update:pageSize": t,
|
|
264
|
+
// 部分版本会同时触发 change,这里补充兜底,确保点击页码一定能回到 useTable.setPage。
|
|
265
|
+
change: e
|
|
266
|
+
})
|
|
267
|
+
},
|
|
268
|
+
modal: {
|
|
269
|
+
getModalProps: ({ visible: e, title: t, width: r, onUpdateVisible: o }) => ({
|
|
270
|
+
show: e,
|
|
271
|
+
title: t,
|
|
272
|
+
// width: width || "60%",
|
|
273
|
+
preset: "card",
|
|
274
|
+
closable: !0,
|
|
275
|
+
maskClosable: !0,
|
|
276
|
+
style: { width: r || "60%", maxWidth: "calc(100vw - 32px)" },
|
|
277
|
+
"onUpdate:show": o
|
|
278
|
+
})
|
|
279
|
+
},
|
|
280
|
+
render: {
|
|
281
|
+
getButtonProps: ({ type: e, size: t, disabled: r }) => ({ type: e === "danger" ? "error" : e === "default" ? void 0 : e, size: t === "medium" ? "medium" : t, disabled: r }),
|
|
282
|
+
getPopconfirmProps: ({ title: e, confirmText: t, cancelText: r, onConfirm: o }) => ({ content: e, positiveText: t || "确认", negativeText: r || "取消", onPositiveClick: o }),
|
|
283
|
+
getImageProps: ({ src: e, width: t, height: r, objectFit: o, preview: a }) => ({ src: e, width: t, height: r, objectFit: o, previewDisabled: !a }),
|
|
284
|
+
customRenderKey: "render",
|
|
285
|
+
normalizeActionType: (e) => e.type || "primary"
|
|
286
|
+
},
|
|
287
|
+
feedback: {
|
|
288
|
+
success: (e) => console.info(e),
|
|
289
|
+
warning: (e) => console.warn(e),
|
|
290
|
+
error: (e) => console.error(e)
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
export {
|
|
294
|
+
d as a,
|
|
295
|
+
m as b,
|
|
296
|
+
u as e,
|
|
297
|
+
l as n
|
|
298
|
+
};
|
|
299
|
+
//# sourceMappingURL=index-Dc-solHn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Dc-solHn.js","sources":["../src/adapters/ant-design-vue.ts","../src/adapters/element-plus.ts","../src/core/date-format-utils.ts","../src/adapters/naive.ts"],"sourcesContent":["import type { CrudUIAdapter } from \"./types\";\nimport type { CrudFormComponent } from \"../core/types\";\n\nconst fields: Record<CrudFormComponent, string> = {\n input: \"AInput\",\n textarea: \"ATextarea\",\n select: \"ASelect\",\n multipleSelect: \"ASelect\",\n radio: \"ARadioGroup\",\n checkbox: \"ACheckboxGroup\",\n inputNumber: \"AInputNumber\",\n datePicker: \"ADatePicker\",\n timePicker: \"ATimePicker\",\n switch: \"ASwitch\",\n cascader: \"ACascader\",\n slider: \"ASlider\",\n};\n\n/**\n * Ant Design Vue Adapter。\n *\n * 与 Element Plus 最大差异:Drawer/Modal 使用 `open/onUpdate:open`,\n * Table 更偏对象 columns + `customRender`,按钮危险态使用 `danger` 布尔值。\n */\nexport const antDesignVueAdapter: CrudUIAdapter = {\n name: \"ant-design-vue\",\n components: {\n card: \"ACard\",\n form: \"AForm\",\n formItem: \"AFormItem\",\n button: \"AButton\",\n table: \"ATable\",\n pagination: \"APagination\",\n drawer: \"ADrawer\",\n modal: \"AModal\",\n popconfirm: \"APopconfirm\",\n image: \"AImage\",\n tooltip: \"ATooltip\",\n fields,\n option: \"ASelectOption\",\n radio: \"ARadio\",\n checkbox: \"ACheckbox\",\n },\n form: {\n getFormProps: ({ model, rules, disabled }) => ({ model, rules, disabled, labelAlign: \"right\" }),\n getFormItemProps: (item, { prop, label }) => ({ name: prop, label: `${label}:`, ...(item.formItemProps || {}) }),\n getModelBinding: component => ({ prop: component === \"switch\" ? \"checked\" : \"value\", event: component === \"switch\" ? \"onUpdate:checked\" : \"onUpdate:value\" }),\n getFieldProps: (item, { placeholder, disabled, options }) => {\n const component = item.component || item.valueKey;\n return {\n placeholder,\n disabled,\n options: [\"select\", \"multipleSelect\", \"cascader\", \"radio\", \"checkbox\"].includes(component || \"\") ? options : undefined,\n mode: component === \"multipleSelect\" ? \"multiple\" : undefined,\n ...(item.componentProps || {}),\n ...(item.props || {}),\n };\n },\n getLayoutStyle: layout => ({ \"--vac-form-columns\": layout?.columns || 4 }),\n async validate(formRef) {\n const form = formRef as { validate?: () => Promise<unknown> } | null;\n if (!form?.validate) return true;\n await form.validate();\n return true;\n },\n clearValidate(formRef) {\n (formRef as { clearValidate?: () => void } | null)?.clearValidate?.();\n },\n },\n table: {\n useColumnConfig: true,\n getTableProps: ({ columns, data, loading, rowKey, scrollY, scrollX }) => ({\n columns,\n dataSource: data,\n loading,\n rowKey,\n pagination: false,\n bordered: true,\n scroll: scrollY || scrollX ? { y: scrollY, x: scrollX } : undefined,\n }),\n getTableColumnProps: column => ({ dataIndex: column.field || column.key, title: column.title, width: column.width, fixed: column.fixed, align: column.align, ...(column.props || {}) }),\n getPaginationProps: pagination => ({ total: pagination.total, current: pagination.page, pageSize: pagination.pageSize, pageSizeOptions: pagination.pageSizes?.map(String), showSizeChanger: pagination.showSizePicker, showQuickJumper: pagination.showQuickJumper }),\n getPaginationEvents: ({ onPageChange, onPageSizeChange }) => ({\n // DynamicTable 使用 `v-on=\"events\"`,这里返回模板事件名;Ant Design Vue 的分页切换主要来自 change。\n \"update:current\": onPageChange,\n \"update:pageSize\": onPageSizeChange,\n change: onPageChange,\n showSizeChange: (_current: number, size: number) => onPageSizeChange(size),\n }),\n },\n modal: {\n getModalProps: ({ visible, title, width, onUpdateVisible }) => ({ open: visible, title, width: width || \"60%\", \"onUpdate:open\": onUpdateVisible }),\n },\n render: {\n getButtonProps: ({ type, size, disabled }) => ({ type: type === \"primary\" ? \"primary\" : type === \"link\" || type === \"text\" ? \"link\" : \"default\", danger: type === \"danger\", size: size === \"medium\" ? \"middle\" : size, disabled }),\n getPopconfirmProps: ({ title, confirmText, cancelText, onConfirm }) => ({ title, okText: confirmText || \"确认\", cancelText: cancelText || \"取消\", onConfirm }),\n getImageProps: ({ src, width, height }) => ({ src, width, height }),\n customRenderKey: \"customRender\",\n normalizeActionType: action => action.type || \"link\",\n },\n feedback: {\n success: message => console.info(message),\n warning: message => console.warn(message),\n error: message => console.error(message),\n },\n};\n","import type { CrudUIAdapter } from \"./types\";\nimport type { CrudFormComponent } from \"../core/types\";\n\nconst fields: Record<CrudFormComponent, string> = {\n input: \"ElInput\",\n textarea: \"ElInput\",\n select: \"ElSelect\",\n multipleSelect: \"ElSelect\",\n radio: \"ElRadioGroup\",\n checkbox: \"ElCheckboxGroup\",\n inputNumber: \"ElInputNumber\",\n datePicker: \"ElDatePicker\",\n timePicker: \"ElTimePicker\",\n switch: \"ElSwitch\",\n cascader: \"ElCascader\",\n slider: \"ElSlider\",\n};\n\n/**\n * Element Plus Adapter。\n *\n * 默认 Adapter:不传 `createAutoCrud({ ui })` 时使用它。\n * 约定使用者已在业务应用中安装并注册 Element Plus。\n */\nexport const elementPlusAdapter: CrudUIAdapter = {\n name: \"element-plus\",\n components: {\n card: \"ElCard\",\n form: \"ElForm\",\n formItem: \"ElFormItem\",\n button: \"ElButton\",\n table: \"ElTable\",\n tableColumn: \"ElTableColumn\",\n pagination: \"ElPagination\",\n drawer: \"ElDrawer\",\n modal: \"ElDialog\",\n popconfirm: \"ElPopconfirm\",\n image: \"ElImage\",\n tooltip: \"ElTooltip\",\n fields,\n option: \"ElOption\",\n radio: \"ElRadio\",\n checkbox: \"ElCheckbox\",\n },\n form: {\n getFormProps: ({ model, rules, disabled }) => ({ model, rules, disabled, labelPosition: \"right\" }),\n getFormItemProps: (item, { prop, label }) => ({ prop, label: `${label}:`, ...(item.formItemProps || {}) }),\n getModelBinding: () => ({ prop: \"modelValue\", event: \"onUpdate:modelValue\" }),\n getFieldProps: (item, { placeholder, disabled }) => {\n const component = item.component || item.valueKey;\n return {\n clearable: component !== \"switch\",\n placeholder,\n disabled,\n type: component === \"textarea\" ? \"textarea\" : undefined,\n multiple: component === \"multipleSelect\" ? true : undefined,\n ...(item.componentProps || {}),\n ...(item.props || {}),\n };\n },\n getLayoutStyle: layout => ({ \"--vac-form-columns\": layout?.columns || 4 }),\n async validate(formRef) {\n const form = formRef as { validate?: () => Promise<boolean> | boolean } | null;\n if (!form?.validate) return true;\n return Boolean(await form.validate());\n },\n clearValidate(formRef) {\n (formRef as { clearValidate?: () => void } | null)?.clearValidate?.();\n },\n },\n table: {\n useColumnConfig: false,\n getTableProps: ({ data, loading, rowKey, scrollY }) => ({ data, border: true, stripe: true, loading, rowKey, height: scrollY }),\n getTableColumnProps: column => ({ prop: column.field || column.key, label: column.title, width: column.width, fixed: column.fixed, align: column.align, ...(column.props || {}) }),\n getPaginationProps: pagination => ({\n total: pagination.total,\n currentPage: pagination.page,\n pageSize: pagination.pageSize,\n pageSizes: pagination.pageSizes,\n layout: [\"total\", pagination.showSizePicker ? \"sizes\" : \"\", \"prev\", \"pager\", \"next\", pagination.showQuickJumper ? \"jumper\" : \"\"].filter(Boolean).join(\", \"),\n }),\n getPaginationEvents: ({ onPageChange, onPageSizeChange }) => ({\n // DynamicTable 使用 `v-on=\"events\"`,这里返回模板事件名,避免把 render props 写法误传成普通 prop。\n \"update:currentPage\": onPageChange,\n \"update:pageSize\": onPageSizeChange,\n currentChange: onPageChange,\n sizeChange: onPageSizeChange,\n }),\n },\n modal: {\n getModalProps: ({ visible, title, width, onUpdateVisible }) => ({ modelValue: visible, title, size: width || \"60%\", width: width || \"60%\", \"onUpdate:modelValue\": onUpdateVisible }),\n },\n render: {\n getButtonProps: ({ type, size, disabled }) => ({ type: type === \"danger\" ? \"danger\" : type === \"default\" ? undefined : type, size: size === \"medium\" ? \"default\" : size, disabled }),\n getPopconfirmProps: ({ title, confirmText, cancelText, onConfirm }) => ({ title, confirmButtonText: confirmText || \"确认\", cancelButtonText: cancelText || \"取消\", onConfirm }),\n getImageProps: ({ src, width, height, objectFit, preview }) => ({ src, style: { width: `${width}px`, height: `${height}px`, objectFit }, previewSrcList: preview ? [src] : undefined }),\n customRenderKey: \"render\",\n normalizeActionType: action => action.type || \"primary\",\n },\n feedback: {\n success: message => (globalThis as { ElMessage?: { success?: (message: string) => void } }).ElMessage?.success?.(message),\n warning: message => (globalThis as { ElMessage?: { warning?: (message: string) => void } }).ElMessage?.warning?.(message),\n error: message => (globalThis as { ElMessage?: { error?: (message: string) => void } }).ElMessage?.error?.(message),\n },\n};\n","/**\n * 把业务侧常见的 dayjs / Element Plus 日期格式转换成 date-fns 兼容格式。\n *\n * 设计边界:\n * - 这里只处理当前 CRUD 配置里高频出现、且会直接导致 Naive UI 报错的 token。\n * - 不做完整日期格式编译器,避免把大小写语义相近但业务含义不同的 token 误改掉。\n */\nexport function normalizeDateFnsFormat(format: unknown): unknown {\n if (typeof format !== \"string\") return format;\n\n return format\n .replace(/YYYY/g, \"yyyy\")\n .replace(/YY/g, \"yy\")\n .replace(/DD/g, \"dd\");\n}\n\n","import type { CrudUIAdapter } from \"./types\";\nimport type { CrudFormComponent } from \"../core/types\";\nimport { normalizeDateFnsFormat } from \"../core/date-format-utils\";\n\nconst fields: Record<CrudFormComponent, string> = {\n input: \"NInput\",\n textarea: \"NInput\",\n select: \"NSelect\",\n multipleSelect: \"NSelect\",\n radio: \"NRadioGroup\",\n checkbox: \"NCheckboxGroup\",\n inputNumber: \"NInputNumber\",\n datePicker: \"NDatePicker\",\n timePicker: \"NTimePicker\",\n switch: \"NSwitch\",\n cascader: \"NCascader\",\n slider: \"NSlider\",\n};\n\n/** Naive UI 的日期类组件需要把 format/valueFormat 统一转换为 date-fns token。 */\nfunction normalizeNaiveDatePickerProps(component: CrudFormComponent | undefined, props: Record<string, unknown>): Record<string, unknown> {\n if (component !== \"datePicker\" && component !== \"timePicker\") return props;\n\n return {\n ...props,\n format: normalizeDateFnsFormat(props.format),\n valueFormat: normalizeDateFnsFormat(props.valueFormat),\n };\n}\n\n/**\n * Naive UI Adapter。\n *\n * 与 Element Plus 最大差异:多数表单字段使用 `value/onUpdate:value`,\n * Drawer/Modal 显隐使用 `show/onUpdate:show`,分页总数叫 `itemCount`。\n */\nexport const naiveAdapter: CrudUIAdapter = {\n name: \"naive\",\n components: {\n card: \"NCard\",\n form: \"NForm\",\n formItem: \"NFormItem\",\n button: \"NButton\",\n table: \"NDataTable\",\n pagination: \"NPagination\",\n drawer: \"NDrawer\",\n drawerContent: \"NDrawerContent\",\n modal: \"NModal\",\n popconfirm: \"NPopconfirm\",\n image: \"NImage\",\n tooltip: \"NTooltip\",\n fields,\n option: \"NOption\",\n radio: \"NRadio\",\n checkbox: \"NCheckbox\",\n },\n form: {\n getFormProps: ({ model, rules, disabled }) => ({ model, rules, disabled, labelPlacement: \"left\", requireMarkPlacement: \"left\" }),\n getFormItemProps: (item, { prop, label }) => ({ path: prop, label: `${label}:`, ...(item.formItemProps || {}) }),\n getModelBinding: () => ({ prop: \"value\", event: \"onUpdate:value\" }),\n getFieldProps: (item, { placeholder, disabled, options }) => {\n const component = item.component || item.valueKey;\n const fieldProps = {\n placeholder,\n disabled,\n options: [\"select\", \"multipleSelect\", \"cascader\"].includes(component || \"\") ? options : undefined,\n type: component === \"textarea\" ? \"textarea\" : undefined,\n multiple: component === \"multipleSelect\" ? true : undefined,\n ...(item.componentProps || {}),\n ...(item.props || {}),\n };\n\n return normalizeNaiveDatePickerProps(component, fieldProps);\n },\n getLayoutStyle: layout => ({ \"--vac-form-columns\": layout?.columns || 4 }),\n async validate(formRef) {\n const form = formRef as { validate?: () => Promise<void> | void } | null;\n if (!form?.validate) return true;\n await form.validate();\n return true;\n },\n clearValidate(formRef) {\n (formRef as { restoreValidation?: () => void } | null)?.restoreValidation?.();\n },\n },\n table: {\n useColumnConfig: true,\n getTableProps: ({ columns, data, loading, rowKey, scrollY, scrollX }) => ({ columns, data, loading, rowKey, remote: true, bordered: true, singleLine: false, maxHeight: scrollY, scrollX }),\n getTableColumnProps: column => ({ key: column.field || column.key, title: column.title, width: column.width, fixed: column.fixed, align: column.align, ...(column.props || {}) }),\n getPaginationProps: pagination => ({ itemCount: pagination.total, page: pagination.page, pageSize: pagination.pageSize, pageSizes: pagination.pageSizes, showSizePicker: pagination.showSizePicker, showQuickJumper: pagination.showQuickJumper }),\n getPaginationEvents: ({ onPageChange, onPageSizeChange }) => ({\n // DynamicTable 使用 `v-on=\"events\"` 绑定对象,key 必须是事件名,而不是 render 函数里的 onXxx prop。\n \"update:page\": onPageChange,\n \"update:pageSize\": onPageSizeChange,\n // 部分版本会同时触发 change,这里补充兜底,确保点击页码一定能回到 useTable.setPage。\n change: onPageChange,\n }),\n },\n modal: {\n getModalProps: ({ visible, title, width, onUpdateVisible }) => ({\n show: visible,\n title,\n // width: width || \"60%\",\n preset: \"card\",\n closable: true,\n maskClosable: true,\n style: { width: width || \"60%\", maxWidth: \"calc(100vw - 32px)\" },\n \"onUpdate:show\": onUpdateVisible,\n }),\n },\n render: {\n getButtonProps: ({ type, size, disabled }) => ({ type: type === \"danger\" ? \"error\" : type === \"default\" ? undefined : type, size: size === \"medium\" ? \"medium\" : size, disabled }),\n getPopconfirmProps: ({ title, confirmText, cancelText, onConfirm }) => ({ content: title, positiveText: confirmText || \"确认\", negativeText: cancelText || \"取消\", onPositiveClick: onConfirm }),\n getImageProps: ({ src, width, height, objectFit, preview }) => ({ src, width, height, objectFit, previewDisabled: !preview }),\n customRenderKey: \"render\",\n normalizeActionType: action => action.type || \"primary\",\n },\n feedback: {\n success: message => console.info(message),\n warning: message => console.warn(message),\n error: message => console.error(message),\n },\n};\n"],"names":["fields","antDesignVueAdapter","model","rules","disabled","item","prop","label","component","placeholder","options","layout","formRef","form","columns","data","loading","rowKey","scrollY","scrollX","column","pagination","onPageChange","onPageSizeChange","_current","size","visible","title","width","onUpdateVisible","type","confirmText","cancelText","onConfirm","src","height","action","message","elementPlusAdapter","objectFit","preview","normalizeDateFnsFormat","format","normalizeNaiveDatePickerProps","props","naiveAdapter","fieldProps"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as AutoCrud } from './components/AutoCrud.vue';
|
|
2
|
+
export { default as CrudModal } from './components/CrudModal.vue';
|
|
3
|
+
export { default as DecodeText } from './components/DecodeText.vue';
|
|
4
|
+
export { default as DynamicForm } from './components/DynamicForm.vue';
|
|
5
|
+
export { default as DynamicTable } from './components/DynamicTable.vue';
|
|
6
|
+
export { default as CopyText } from './components/CopyText.vue';
|
|
7
|
+
export { useAutoCrudContext } from './context';
|
|
8
|
+
export { createAutoCrud } from './plugin';
|
|
9
|
+
export * from './adapters';
|
|
10
|
+
export * from './core/types';
|
|
11
|
+
export * from './hooks';
|
|
12
|
+
export * from './utils';
|