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.
Files changed (62) hide show
  1. package/API.md +130 -0
  2. package/README.md +234 -0
  3. package/dist/adapters/ant-design-vue.d.ts +8 -0
  4. package/dist/adapters/element-plus.d.ts +8 -0
  5. package/dist/adapters/index.d.ts +4 -0
  6. package/dist/adapters/index.js +7 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/adapters/naive.d.ts +8 -0
  9. package/dist/adapters/types.d.ts +162 -0
  10. package/dist/components/AutoCrud.vue.d.ts +398 -0
  11. package/dist/components/CopyText.vue.d.ts +6 -0
  12. package/dist/components/CrudModal.vue.d.ts +47 -0
  13. package/dist/components/DecodeText.vue.d.ts +8 -0
  14. package/dist/components/DynamicForm.vue.d.ts +63 -0
  15. package/dist/components/DynamicFormItem.vue.d.ts +20 -0
  16. package/dist/components/DynamicTable.vue.d.ts +30 -0
  17. package/dist/context.d.ts +36 -0
  18. package/dist/core/date-format-utils.d.ts +8 -0
  19. package/dist/core/form-runtime-cache.d.ts +27 -0
  20. package/dist/core/form-utils.d.ts +51 -0
  21. package/dist/core/object-utils.d.ts +43 -0
  22. package/dist/core/table-utils.d.ts +19 -0
  23. package/dist/core/types.d.ts +443 -0
  24. package/dist/generator/fields.d.ts +27 -0
  25. package/dist/generator/index.d.ts +14 -0
  26. package/dist/generator/index.js +740 -0
  27. package/dist/generator/index.js.map +1 -0
  28. package/dist/generator/openapi.d.ts +10 -0
  29. package/dist/generator/operations.d.ts +8 -0
  30. package/dist/generator/schema.d.ts +32 -0
  31. package/dist/generator/string-utils.d.ts +11 -0
  32. package/dist/generator/templates.d.ts +6 -0
  33. package/dist/generator/types.d.ts +185 -0
  34. package/dist/generator/writer.d.ts +8 -0
  35. package/dist/hooks/index.d.ts +3 -0
  36. package/dist/hooks/index.js +7 -0
  37. package/dist/hooks/index.js.map +1 -0
  38. package/dist/hooks/useModalForm.d.ts +11 -0
  39. package/dist/hooks/useSearchForm.d.ts +10 -0
  40. package/dist/hooks/useTable.d.ts +11 -0
  41. package/dist/index-Dc-solHn.js +299 -0
  42. package/dist/index-Dc-solHn.js.map +1 -0
  43. package/dist/index.d.ts +12 -0
  44. package/dist/index.js +985 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/plugin.d.ts +17 -0
  47. package/dist/style.css +1 -0
  48. package/dist/useTable-BwDSqD1q.js +214 -0
  49. package/dist/useTable-BwDSqD1q.js.map +1 -0
  50. package/dist/utils/clipboard.d.ts +16 -0
  51. package/dist/utils/index.d.ts +4 -0
  52. package/dist/utils/index.js +532 -0
  53. package/dist/utils/index.js.map +1 -0
  54. package/dist/utils/message.d.ts +9 -0
  55. package/dist/utils/request.d.ts +8 -0
  56. package/dist/utils/sm4-core.d.ts +12 -0
  57. package/dist/utils/sm4.d.ts +29 -0
  58. package/docs/AI_AGENT_GUIDE.md +210 -0
  59. package/mcp/auto-crud-mcp.mjs +502 -0
  60. package/mcp/auto-gen-crud-mcp.mjs +586 -0
  61. package/package.json +93 -0
  62. 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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"}
@@ -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';