m-eleplus-crud 0.0.12 → 0.0.13

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 (66) hide show
  1. package/dist/index.full.js +1 -1
  2. package/dist/index.full.min.js +1 -1
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +1 -1
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +1 -1
  7. package/es/index.mjs +5 -5
  8. package/es/packages/components/crud/index.mjs +2 -2
  9. package/es/packages/components/crud/src/crud.mjs +53 -621
  10. package/es/packages/components/crud/src/crud.mjs.map +1 -1
  11. package/es/packages/components/crud/src/crud2.mjs +621 -53
  12. package/es/packages/components/crud/src/crud2.mjs.map +1 -1
  13. package/es/packages/components/form/src/form.mjs +1 -1
  14. package/es/packages/components/form/src/form.mjs.map +1 -1
  15. package/es/packages/components/index.mjs +5 -5
  16. package/es/packages/components/picture/index.mjs +2 -2
  17. package/es/packages/components/picture/src/picture.mjs +19 -26
  18. package/es/packages/components/picture/src/picture.mjs.map +1 -1
  19. package/es/packages/components/picture/src/picture2.mjs +26 -19
  20. package/es/packages/components/picture/src/picture2.mjs.map +1 -1
  21. package/es/packages/components/qrcode/index.mjs +2 -2
  22. package/es/packages/components/qrcode/src/qrcode.mjs +62 -22
  23. package/es/packages/components/qrcode/src/qrcode.mjs.map +1 -1
  24. package/es/packages/components/qrcode/src/qrcode2.mjs +22 -62
  25. package/es/packages/components/qrcode/src/qrcode2.mjs.map +1 -1
  26. package/es/packages/components/search/index.mjs +2 -2
  27. package/es/packages/components/search/src/search.mjs +438 -25
  28. package/es/packages/components/search/src/search.mjs.map +1 -1
  29. package/es/packages/components/search/src/search2.mjs +25 -438
  30. package/es/packages/components/search/src/search2.mjs.map +1 -1
  31. package/es/packages/components/table/index.mjs +2 -2
  32. package/es/packages/components/table/src/table.mjs +37 -420
  33. package/es/packages/components/table/src/table.mjs.map +1 -1
  34. package/es/packages/components/table/src/table2.mjs +420 -37
  35. package/es/packages/components/table/src/table2.mjs.map +1 -1
  36. package/lib/index.js +5 -5
  37. package/lib/packages/components/crud/index.js +2 -2
  38. package/lib/packages/components/crud/src/crud.js +54 -621
  39. package/lib/packages/components/crud/src/crud.js.map +1 -1
  40. package/lib/packages/components/crud/src/crud2.js +621 -54
  41. package/lib/packages/components/crud/src/crud2.js.map +1 -1
  42. package/lib/packages/components/form/src/form.js +1 -1
  43. package/lib/packages/components/form/src/form.js.map +1 -1
  44. package/lib/packages/components/index.js +5 -5
  45. package/lib/packages/components/picture/index.js +2 -2
  46. package/lib/packages/components/picture/src/picture.js +20 -26
  47. package/lib/packages/components/picture/src/picture.js.map +1 -1
  48. package/lib/packages/components/picture/src/picture2.js +26 -20
  49. package/lib/packages/components/picture/src/picture2.js.map +1 -1
  50. package/lib/packages/components/qrcode/index.js +2 -2
  51. package/lib/packages/components/qrcode/src/qrcode.js +66 -23
  52. package/lib/packages/components/qrcode/src/qrcode.js.map +1 -1
  53. package/lib/packages/components/qrcode/src/qrcode2.js +23 -66
  54. package/lib/packages/components/qrcode/src/qrcode2.js.map +1 -1
  55. package/lib/packages/components/search/index.js +2 -2
  56. package/lib/packages/components/search/src/search.js +438 -26
  57. package/lib/packages/components/search/src/search.js.map +1 -1
  58. package/lib/packages/components/search/src/search2.js +26 -438
  59. package/lib/packages/components/search/src/search2.js.map +1 -1
  60. package/lib/packages/components/table/index.js +2 -2
  61. package/lib/packages/components/table/src/table.js +38 -425
  62. package/lib/packages/components/table/src/table.js.map +1 -1
  63. package/lib/packages/components/table/src/table2.js +425 -38
  64. package/lib/packages/components/table/src/table2.js.map +1 -1
  65. package/package.json +1 -1
  66. package/web-types.json +1 -1
@@ -1,628 +1,60 @@
1
- import { defineComponent, useSlots, computed, ref, watch, onMounted, resolveComponent, openBlock, createElementBlock, createVNode, unref, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, createCommentVNode, createBlock, createTextVNode, toDisplayString, mergeProps, createElementVNode, nextTick } from 'vue';
2
- import { cloneDeep, get, set } from 'lodash-unified';
3
- import { crudProps, crudEmits } from './crud2.mjs';
4
- import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
5
- import { ElMessageBox } from '../../../../node_modules/.pnpm/element-plus@2.9.1_vue@3.5.13_typescript@5.5.4_/node_modules/element-plus/es/components/message-box/index.mjs';
6
- import { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';
7
- import { useLocale } from '../../../hooks/use-locale/index.mjs';
1
+ import { isNumber } from '../../../utils/types.mjs';
2
+ import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
3
+ import { useSizeProp } from '../../../hooks/use-size/index.mjs';
4
+ import { isArray, isObject, isFunction, isString } from '@vue/shared';
8
5
 
9
- const COMPONENT_NAME = "MCrud";
10
- const __default__ = defineComponent({
11
- name: COMPONENT_NAME
12
- });
13
- const _sfc_main = defineComponent({
14
- ...__default__,
15
- props: crudProps,
16
- emits: crudEmits,
17
- setup(__props, { expose: __expose, emit: __emit }) {
18
- const props = __props;
19
- const emit = __emit;
20
- const slots = useSlots();
21
- const globalConfig = useGlobalConfig();
22
- const { t } = useLocale();
23
- const searchSlots = computed(() => {
24
- const keys = Object.keys(slots);
25
- const result = {};
26
- for (const key of keys) {
27
- if (key.endsWith("Search")) {
28
- result[key.replace("Search", "")] = slots[key];
29
- }
30
- }
31
- return result;
32
- });
33
- const formSlots = computed(() => {
34
- const keys = Object.keys(slots);
35
- const result = {};
36
- for (const key of keys) {
37
- if (key.endsWith("Form")) {
38
- result[key.replace("Form", "")] = slots[key];
39
- }
40
- }
41
- return result;
42
- });
43
- const tableSlots = computed(() => {
44
- const whites = ["topLeft", "topRight", "addBtn"];
45
- const keys = Object.keys(slots);
46
- const result = {};
47
- for (const key of keys) {
48
- if (!whites.includes(key) && !key.endsWith("Search") && !key.endsWith("Form")) {
49
- result[key] = slots[key];
50
- }
51
- }
52
- return result;
53
- });
54
- const crudOption = ref({
6
+ const crudProps = buildProps({
7
+ size: useSizeProp,
8
+ loading: {
9
+ type: Boolean,
10
+ default: false
11
+ },
12
+ data: {
13
+ type: Array,
14
+ required: true
15
+ },
16
+ search: {
17
+ type: Object,
18
+ default: () => ({})
19
+ },
20
+ total: {
21
+ type: Number,
22
+ default: 0
23
+ },
24
+ modelValue: {
25
+ type: Object,
26
+ required: true
27
+ },
28
+ permission: {
29
+ type: Object,
30
+ default: () => ({
55
31
  addBtn: true,
56
32
  editBtn: true,
57
- delBtn: true,
58
- addBtnText: t("m.crud.addBtnText"),
59
- addBtnIcon: "Plus",
60
- addDialogTitle: t("m.crud.addDialogTitle"),
61
- editDialogTitle: t("m.crud.editDialogTitle"),
62
- viewDialogTitle: t("m.crud.viewDialogTitle"),
63
- dialogWidth: "800px",
64
- column: []
65
- });
66
- const dialogType = ref("add");
67
- const searchRef = ref();
68
- const formRef = ref();
69
- const tableRef = ref();
70
- const dialogVisible = ref(false);
71
- const tableHeight = ref(void 0);
72
- const _modelForm = ref();
73
- const _rowIndex = ref(-1);
74
- const dialogTitle = computed(() => {
75
- if (dialogType.value === "add") {
76
- return crudOption.value.addDialogTitle;
77
- }
78
- if (dialogType.value === "edit") {
79
- return crudOption.value.editDialogTitle;
80
- }
81
- return crudOption.value.viewDialogTitle;
82
- });
83
- const modelForm = computed({
84
- get() {
85
- return props.modelValue;
86
- },
87
- set(value) {
88
- emit("update:modelValue", value);
89
- }
90
- });
91
- const __firstModelForm = ref({});
92
- __firstModelForm.value = props.modelValue;
93
- const tableOption = ref({
94
- menu: true,
95
- column: []
96
- });
97
- const searchOption = ref({
98
- column: []
99
- });
100
- const formOption = computed(() => {
101
- let option = {
102
- column: []
103
- };
104
- option = transFormOption(
105
- Object.assign({}, option, copyObjectExcept(crudOption.value, ["column"]))
106
- );
107
- for (let i = 0; i < crudOption.value.column.length; i++) {
108
- const item = cloneDeep(crudOption.value.column[i]);
109
- const formColumn = transFormColumn(item);
110
- if (["index", "single", "selection"].includes(item.type || "")) {
111
- continue;
112
- }
113
- if (dialogType.value === "add") {
114
- if (!item.addHide) {
115
- option.column.push(formColumn);
116
- }
117
- } else if (dialogType.value === "edit") {
118
- if (!item.editHide) {
119
- option.column.push(formColumn);
120
- }
121
- } else {
122
- if (!item.viewHide) {
123
- option.column.push(formColumn);
124
- }
125
- }
126
- }
127
- return option;
128
- });
129
- const searchProxys = new Proxy(props.search, {
130
- get(target, key) {
131
- return get(target, key);
132
- },
133
- set(target, key, value) {
134
- set(target, key, value);
135
- return true;
136
- }
137
- });
138
- const selectData = computed({
139
- get() {
140
- return props.select;
141
- },
142
- set(value) {
143
- emit("update:select", value);
144
- }
145
- });
146
- const transSearchColumn = (column) => {
147
- const result = cloneDeep(column);
148
- if (column.searchOrder) {
149
- result.order = column.searchOrder;
150
- } else {
151
- delete result.order;
152
- }
153
- if (column.searchValue) {
154
- result.value = column.searchValue;
155
- } else {
156
- delete result.value;
157
- }
158
- if (column.searchPlaceholder) {
159
- result.placeholder = column.searchPlaceholder;
160
- } else {
161
- delete result.placeholder;
162
- }
163
- if (column.searchRules) {
164
- result.rules = column.searchRules;
165
- } else {
166
- delete result.rules;
167
- }
168
- if (column.searchSpan) {
169
- result.span = column.searchSpan;
170
- } else {
171
- delete result.span;
172
- }
173
- if (column.searchLabelWidth) {
174
- result.labelWidth = column.searchLabelWidth;
175
- } else {
176
- delete result.labelWidth;
177
- }
178
- if (column.searchClearable) {
179
- result.clearable = column.searchClearable;
180
- } else {
181
- delete result.clearable;
182
- }
183
- return result;
184
- };
185
- const transFormColumn = (column) => {
186
- const result = cloneDeep(column);
187
- if (column.formOrder) {
188
- result.order = column.formOrder;
189
- } else {
190
- delete result.order;
191
- }
192
- if (column.formValue) {
193
- result.value = column.formValue;
194
- } else {
195
- delete result.value;
196
- }
197
- if (column.formPlaceholder) {
198
- result.placeholder = column.formPlaceholder;
199
- } else {
200
- delete result.placeholder;
201
- }
202
- if (column.formRules) {
203
- result.rules = column.formRules;
204
- } else {
205
- delete result.rules;
206
- }
207
- if (column.formLabelWidth) {
208
- result.labelWidth = column.formLabelWidth;
209
- } else {
210
- delete result.labelWidth;
211
- }
212
- if (column.formClearable) {
213
- result.clearable = column.formClearable;
214
- } else {
215
- delete result.clearable;
216
- }
217
- if (column.formSpan || column.addSpan || column.editSpan || column.viewSpan) {
218
- if (column.formSpan) {
219
- result.span = column.formSpan;
220
- }
221
- if (dialogType.value === "add" && column.addSpan) {
222
- result.span = column.addSpan;
223
- } else if (dialogType.value === "edit" && column.editSpan) {
224
- result.span = column.editSpan;
225
- } else if (dialogType.value === "view" && column.viewSpan) {
226
- result.span = column.viewSpan;
227
- }
228
- } else {
229
- delete result.span;
230
- }
231
- if (column.addDisabled || column.editDisabled) {
232
- if (dialogType.value === "add" && column.addDisabled) {
233
- result.disabled = column.addDisabled;
234
- } else if (dialogType.value === "edit" && column.editDisabled) {
235
- result.disabled = column.editDisabled;
236
- }
237
- }
238
- return result;
239
- };
240
- const transSearchOption = (option) => {
241
- const result = cloneDeep(option);
242
- if (option.searchLabelWidth) {
243
- result.labelWidth = option.searchLabelWidth;
244
- } else {
245
- delete result.labelWidth;
246
- }
247
- return result;
248
- };
249
- const transFormOption = (option) => {
250
- const result = cloneDeep(option);
251
- if (option.formLabelWidth) {
252
- result.labelWidth = option.formLabelWidth;
253
- } else {
254
- delete result.labelWidth;
255
- }
256
- return result;
257
- };
258
- const currentPageChange = (page) => {
259
- var _a;
260
- (_a = searchRef.value) == null ? void 0 : _a.search(page);
261
- };
262
- const pageSizeChange = (pageSize) => {
263
- var _a;
264
- searchProxys.limit = pageSize;
265
- (_a = searchRef.value) == null ? void 0 : _a.search();
266
- };
267
- const handleSearch = (form) => {
268
- var _a;
269
- (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
270
- emit("search", form);
271
- };
272
- const handleReset = () => {
273
- var _a;
274
- (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
275
- emit("reset");
276
- };
277
- const setTableHeight = () => {
278
- nextTick(() => {
279
- var _a, _b;
280
- if (crudOption.value.height === "auto") {
281
- const tableStyle = (_a = tableRef.value) == null ? void 0 : _a.$el;
282
- const calcHeight = crudOption.value.calcHeight || ((_b = globalConfig.value) == null ? void 0 : _b.calcHeight) || 0;
283
- tableHeight.value = document.documentElement.clientHeight - ((tableStyle == null ? void 0 : tableStyle.offsetTop) || 0) - 72 - calcHeight;
284
- } else {
285
- tableHeight.value = crudOption.value.height;
286
- }
287
- });
288
- };
289
- const rowAdd = () => {
290
- dialogType.value = "add";
291
- dialogVisible.value = true;
292
- };
293
- const rowEdit = (row, index) => {
294
- _modelForm.value = cloneDeep(row);
295
- _rowIndex.value = index;
296
- dialogType.value = "edit";
297
- modelForm.value = cloneDeep(row);
298
- dialogVisible.value = true;
299
- };
300
- const rowView = (row, index) => {
301
- _modelForm.value = cloneDeep(row);
302
- _rowIndex.value = index;
303
- dialogType.value = "view";
304
- modelForm.value = cloneDeep(row);
305
- dialogVisible.value = true;
306
- };
307
- const rowDel = (row, index) => {
308
- ElMessageBox.confirm("\u6B64\u64CD\u4F5C\u5C06\u5220\u9664\u8BE5\u6570\u636E, \u662F\u5426\u7EE7\u7EED?", "\u63D0\u793A", {
309
- confirmButtonText: "\u786E\u5B9A",
310
- cancelButtonText: "\u53D6\u6D88",
311
- type: "warning"
312
- }).then(() => {
313
- emit("rowDel", row, index);
314
- }).catch(() => {
315
- });
316
- };
317
- const dialogEnter = async (done, loading) => {
318
- const valid = await formRef.value.validForm();
319
- if (!valid) {
320
- loading();
321
- return;
322
- }
323
- if (props.beforeEnter && !await props.beforeEnter()) {
324
- loading();
325
- return;
326
- }
327
- if (dialogType.value === "add") {
328
- emit("rowSave", modelForm.value, done, loading);
329
- } else if (dialogType.value === "edit") {
330
- emit("rowEdit", modelForm.value, done, loading);
331
- }
332
- };
333
- const dialogCancel = () => {
334
- emit("rowCancel", _modelForm.value || {}, _rowIndex.value, dialogType.value);
335
- };
336
- const dialogClose = () => {
337
- _modelForm.value = null;
338
- _rowIndex.value = -1;
339
- if (formRef.value) {
340
- formRef.value.clear();
341
- modelForm.value = cloneDeep(__firstModelForm.value);
342
- } else {
343
- emit("update:modelValue", cloneDeep(__firstModelForm.value));
344
- }
345
- };
346
- const copyObjectExcept = (sourceObj, excludeKeys = []) => {
347
- const result = {};
348
- Object.keys(sourceObj).forEach((key) => {
349
- if (!excludeKeys.includes(key)) {
350
- result[key] = sourceObj[key];
351
- }
352
- });
353
- return result;
354
- };
355
- watch(
356
- () => props.option,
357
- (newVal) => {
358
- if (newVal) {
359
- crudOption.value = Object.assign({}, crudOption.value, newVal);
360
- tableOption.value = Object.assign(
361
- {},
362
- tableOption.value,
363
- copyObjectExcept(crudOption.value, ["column"])
364
- );
365
- searchOption.value = transSearchOption(
366
- Object.assign(
367
- {},
368
- searchOption.value,
369
- copyObjectExcept(crudOption.value, ["column"])
370
- )
371
- );
372
- const searchColumns = [];
373
- const tableColumns = [];
374
- if (newVal.column && newVal.column.length) {
375
- for (let i = 0; i < newVal.column.length; i++) {
376
- const item = newVal.column[i];
377
- if (item.search && !["index", "single", "selection"].includes(item.type || "")) {
378
- searchColumns.push(transSearchColumn(item));
379
- }
380
- if (!item.hide) {
381
- tableColumns.push(item);
382
- }
383
- }
384
- searchOption.value.column = searchColumns;
385
- tableOption.value.column = tableColumns;
386
- }
387
- }
388
- },
389
- {
390
- immediate: true,
391
- deep: true
392
- }
393
- );
394
- onMounted(() => {
395
- if (crudOption.value.height) {
396
- setTableHeight();
397
- }
398
- });
399
- __expose({
400
- rowAdd,
401
- rowEdit,
402
- rowView,
403
- rowDel
404
- });
405
- return (_ctx, _cache) => {
406
- const _component_MSearch = resolveComponent("MSearch");
407
- const _component_el_button = resolveComponent("el-button");
408
- const _component_el_link = resolveComponent("el-link");
409
- const _component_MTable = resolveComponent("MTable");
410
- const _component_m_pagination = resolveComponent("m-pagination");
411
- const _component_MForm = resolveComponent("MForm");
412
- const _component_MDialog = resolveComponent("MDialog");
413
- return openBlock(), createElementBlock("div", { class: "m-crud" }, [
414
- createVNode(_component_MSearch, {
415
- ref_key: "searchRef",
416
- ref: searchRef,
417
- model: unref(searchProxys),
418
- option: searchOption.value,
419
- size: _ctx.size || unref(globalConfig).size,
420
- permission: _ctx.permission,
421
- onSearch: handleSearch,
422
- onReset: handleReset
423
- }, createSlots({
424
- _: 2
425
- }, [
426
- renderList(Object.keys(searchSlots.value), (slotKey, index) => {
427
- return {
428
- name: slotKey,
429
- fn: withCtx((scope) => [
430
- renderSlot(_ctx.$slots, slotKey + "Search", normalizeProps(guardReactiveProps(scope)))
431
- ])
432
- };
433
- })
434
- ]), 1032, ["model", "option", "size", "permission"]),
435
- createCommentVNode("\u9876\u90E8\u64CD\u4F5C\u533A\u57DF"),
436
- crudOption.value.addBtn || unref(slots).topLeft || unref(slots).topRight ? (openBlock(), createElementBlock("div", {
437
- key: 0,
438
- class: "m-search-top"
439
- }, [
440
- crudOption.value.addBtn || unref(slots).topLeft ? (openBlock(), createElementBlock("div", {
441
- key: 0,
442
- class: "m-search-left"
443
- }, [
444
- crudOption.value.addBtn && !unref(slots).addBtn && _ctx.permission["add"] !== false ? (openBlock(), createBlock(_component_el_button, {
445
- key: 0,
446
- size: _ctx.size || unref(globalConfig).size,
447
- type: "primary",
448
- icon: crudOption.value.addBtnIcon,
449
- onClick: ($event) => rowAdd()
450
- }, {
451
- default: withCtx(() => [
452
- createTextVNode(
453
- toDisplayString(crudOption.value.addBtnText),
454
- 1
455
- )
456
- ]),
457
- _: 1
458
- }, 8, ["size", "icon", "onClick"])) : createCommentVNode("v-if", true),
459
- _ctx.permission["add"] !== false ? renderSlot(_ctx.$slots, "addBtn", normalizeProps(mergeProps({ key: 1 }, { size: _ctx.size || unref(globalConfig).size }))) : createCommentVNode("v-if", true),
460
- renderSlot(_ctx.$slots, "topLeft", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
461
- ])) : (openBlock(), createElementBlock("div", {
462
- key: 1,
463
- class: "m-search-left"
464
- })),
465
- createElementVNode("div", { class: "m-search-right" }, [
466
- renderSlot(_ctx.$slots, "topRight", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
467
- ])
468
- ])) : createCommentVNode("v-if", true),
469
- createCommentVNode(""),
470
- createCommentVNode("\u8868\u683C"),
471
- createVNode(_component_MTable, {
472
- ref_key: "tableRef",
473
- ref: tableRef,
474
- select: selectData.value,
475
- "onUpdate:select": ($event) => selectData.value = $event,
476
- data: _ctx.data,
477
- size: _ctx.size || unref(globalConfig).size,
478
- loading: _ctx.loading,
479
- permission: _ctx.permission,
480
- option: tableOption.value,
481
- height: tableHeight.value,
482
- "max-height": tableHeight.value
483
- }, createSlots({
484
- menu: withCtx((scope) => [
485
- crudOption.value.editBtn && !unref(slots).editBtn && _ctx.permission["edit"] !== false ? (openBlock(), createBlock(_component_el_link, {
486
- key: 0,
487
- class: "m-control-btns",
488
- type: "primary",
489
- size: _ctx.size || unref(globalConfig).size,
490
- underline: "never",
491
- icon: "Edit",
492
- onClick: ($event) => rowEdit(scope.row, scope.$index)
493
- }, {
494
- default: withCtx(() => [
495
- createTextVNode(
496
- toDisplayString(unref(t)("m.crud.editBtnText")),
497
- 1
498
- )
499
- ]),
500
- _: 2
501
- }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
502
- crudOption.value.editBtn && unref(slots).editBtn && _ctx.permission["edit"] !== false ? renderSlot(_ctx.$slots, "editBtn", normalizeProps(mergeProps({ key: 1 }, scope))) : createCommentVNode("v-if", true),
503
- crudOption.value.delBtn && !unref(slots).delBtn && _ctx.permission["del"] !== false ? (openBlock(), createBlock(_component_el_link, {
504
- key: 2,
505
- class: "m-control-btns",
506
- type: "primary",
507
- underline: "never",
508
- size: _ctx.size || unref(globalConfig).size,
509
- icon: "Delete",
510
- onClick: ($event) => rowDel(scope.row, scope.$index)
511
- }, {
512
- default: withCtx(() => [
513
- createTextVNode(
514
- toDisplayString(unref(t)("m.crud.delBtnText")),
515
- 1
516
- )
517
- ]),
518
- _: 2
519
- }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
520
- crudOption.value.delBtn && unref(slots).delBtn && _ctx.permission["del"] !== false ? renderSlot(_ctx.$slots, "delBtn", normalizeProps(mergeProps({ key: 3 }, scope))) : createCommentVNode("v-if", true),
521
- crudOption.value.menu && unref(slots).menu && !(unref(slots).editBtn || unref(slots).delBtn) ? renderSlot(_ctx.$slots, "menu", normalizeProps(mergeProps({ key: 4 }, scope))) : createCommentVNode("v-if", true)
522
- ]),
523
- _: 2
524
- }, [
525
- renderList(Object.keys(tableSlots.value), (slotKey, index) => {
526
- return {
527
- name: slotKey,
528
- fn: withCtx((scope) => [
529
- renderSlot(_ctx.$slots, slotKey, normalizeProps(guardReactiveProps(scope)))
530
- ])
531
- };
532
- })
533
- ]), 1032, ["select", "onUpdate:select", "data", "size", "loading", "permission", "option", "height", "max-height"]),
534
- createCommentVNode(""),
535
- createCommentVNode("\u5206\u9875\u533A\u57DF"),
536
- unref(searchProxys).page && _ctx.total ? (openBlock(), createElementBlock("div", {
537
- key: 1,
538
- class: "m-pagination-box"
539
- }, [
540
- createVNode(_component_m_pagination, {
541
- small: (_ctx.size || unref(globalConfig).size) === "small",
542
- total: _ctx.total,
543
- "current-page": unref(searchProxys).page,
544
- "page-size": unref(searchProxys).limit,
545
- disabled: _ctx.loading,
546
- onCurrentPage: currentPageChange,
547
- onPageSize: pageSizeChange
548
- }, null, 8, ["small", "total", "current-page", "page-size", "disabled"])
549
- ])) : createCommentVNode("v-if", true),
550
- createCommentVNode("\u65B0\u589E/\u7F16\u8F91/\u67E5\u770B\u5BF9\u8BDD\u6846"),
551
- createVNode(_component_MDialog, {
552
- modelValue: dialogVisible.value,
553
- "onUpdate:modelValue": ($event) => dialogVisible.value = $event,
554
- size: _ctx.size || unref(globalConfig).size,
555
- title: dialogTitle.value,
556
- width: crudOption.value.dialogWidth,
557
- "save-btn": dialogType.value !== "view",
558
- "cancel-btn": dialogType.value !== "view",
559
- "save-btn-text": unref(t)("m.crud.dialogSaveBtnText"),
560
- "cancel-btn-text": unref(t)("m.crud.dialogCancelBtnText"),
561
- "save-btn-icon": dialogType.value === "add" ? "CirclePlus" : "CircleCheck",
562
- onEnter: dialogEnter,
563
- onCancel: dialogCancel,
564
- onClose: dialogClose
565
- }, {
566
- default: withCtx(({ loading }) => [
567
- createCommentVNode("\u6240\u6709\u7C7B\u578B\u9876\u90E8"),
568
- renderSlot(_ctx.$slots, "allTop", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
569
- createCommentVNode(""),
570
- createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
571
- dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formTop", normalizeProps(mergeProps({ key: 0 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
572
- createCommentVNode(""),
573
- createCommentVNode("\u65B0\u589E\u7C7B\u578B\u9876\u90E8"),
574
- dialogType.value === "add" ? renderSlot(_ctx.$slots, "addTop", normalizeProps(mergeProps({ key: 1 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
575
- createCommentVNode(""),
576
- createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
577
- dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editTop", normalizeProps(mergeProps({ key: 2 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
578
- createCommentVNode(""),
579
- createCommentVNode("\u67E5\u770B\u7C7B\u578B\u9876\u90E8"),
580
- dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewTop", normalizeProps(mergeProps({ key: 3 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
581
- createCommentVNode(""),
582
- createVNode(_component_MForm, {
583
- ref_key: "formRef",
584
- ref: formRef,
585
- loading,
586
- size: _ctx.size || unref(globalConfig).size,
587
- option: formOption.value,
588
- model: modelForm.value,
589
- readonly: dialogType.value === "view"
590
- }, createSlots({
591
- _: 2
592
- }, [
593
- renderList(Object.keys(formSlots.value), (slotKey, index) => {
594
- return {
595
- name: slotKey,
596
- fn: withCtx((scope) => [
597
- renderSlot(_ctx.$slots, slotKey + "Form", normalizeProps(guardReactiveProps(scope)))
598
- ])
599
- };
600
- })
601
- ]), 1032, ["loading", "size", "option", "model", "readonly"]),
602
- createCommentVNode("\u6240\u6709\u7C7B\u578B\u5E95\u90E8"),
603
- renderSlot(_ctx.$slots, "allBottom", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
604
- createCommentVNode(""),
605
- createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
606
- dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formBottom", normalizeProps(mergeProps({ key: 4 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
607
- createCommentVNode(""),
608
- createCommentVNode("\u65B0\u589E\u7C7B\u578B\u5E95\u90E8"),
609
- dialogType.value === "add" ? renderSlot(_ctx.$slots, "addBottom", normalizeProps(mergeProps({ key: 5 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
610
- createCommentVNode(""),
611
- createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
612
- dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editBottom", normalizeProps(mergeProps({ key: 6 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
613
- createCommentVNode(""),
614
- createCommentVNode("\u67E5\u770B\u7C7B\u578B\u5E95\u90E8"),
615
- dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewBottom", normalizeProps(mergeProps({ key: 7 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
616
- createCommentVNode("")
617
- ]),
618
- _: 3
619
- }, 8, ["modelValue", "onUpdate:modelValue", "size", "title", "width", "save-btn", "cancel-btn", "save-btn-text", "cancel-btn-text", "save-btn-icon"]),
620
- createCommentVNode("")
621
- ]);
622
- };
33
+ delBtn: true
34
+ })
35
+ },
36
+ select: {
37
+ type: Array,
38
+ default: () => []
39
+ },
40
+ beforeEnter: {
41
+ type: Function
42
+ },
43
+ option: {
44
+ type: definePropType(Object),
45
+ required: false
623
46
  }
624
47
  });
625
- var Crud = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "crud.vue"]]);
48
+ const crudEmits = {
49
+ "update:select": (arr) => isArray(arr),
50
+ "update:modelValue": (value) => isObject(value),
51
+ search: (form) => isObject(form),
52
+ reset: () => true,
53
+ rowSave: (form, done, loading) => isObject(form) && isFunction(done) && isFunction(loading),
54
+ rowEdit: (form, done, loading) => isObject(form) && isFunction(done) && isFunction(loading),
55
+ rowCancel: (form, index, type) => isObject(form) && isNumber(index) && isString(type),
56
+ rowDel: (row, index) => isObject(row) && isNumber(index)
57
+ };
626
58
 
627
- export { Crud as default };
59
+ export { crudEmits, crudProps };
628
60
  //# sourceMappingURL=crud.mjs.map