@vue-start/element-pro 0.1.2 → 0.2.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/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.2.0](https://github.com/zxeryu/vue-start/compare/@vue-start/element-pro@0.1.2...@vue-start/element-pro@0.2.0) (2022-08-22)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **element-pro:** loading ([c512f63](https://github.com/zxeryu/vue-start/commit/c512f638f06acab64242bf85b2475b860097061e))
11
+ - **element-pro:** serial number for table ([32e12aa](https://github.com/zxeryu/vue-start/commit/32e12aa6bdd494464bc2839eaaed5d8ce66330a5))
12
+
13
+ ### Features
14
+
15
+ - **pro:** modal/page curd ([07b696c](https://github.com/zxeryu/vue-start/commit/07b696cf2a327d4ec083ec75f3d5b73c870bfcb3))
16
+
17
+ ### Performance Improvements
18
+
19
+ - **pro:** columnState for table,form ([7f4431e](https://github.com/zxeryu/vue-start/commit/7f4431ebf2d426b93a24e381712d705700561ec9))
20
+
6
21
  ## [0.1.2](https://github.com/zxeryu/vue-start/compare/@vue-start/element-pro@0.1.1...@vue-start/element-pro@0.1.2) (2022-08-17)
7
22
 
8
23
  ### Bug Fixes
package/dist/index.d.ts CHANGED
@@ -232,7 +232,7 @@ declare const proListProps: () => {
232
232
  tableProps: {
233
233
  type: PropType<Omit<Partial<ExtractPropTypes<{
234
234
  operate: {
235
- type: PropType<ITableOperate>; /******************* search pagination ********************/
235
+ type: PropType<ITableOperate>;
236
236
  };
237
237
  columnEmptyText: {
238
238
  type: StringConstructor;
@@ -243,12 +243,24 @@ declare const proListProps: () => {
243
243
  columns: {
244
244
  type: PropType<TTableColumns>;
245
245
  };
246
+ columnState: {
247
+ type: PropType<Record<string, any>>;
248
+ };
246
249
  elementMap: {
247
250
  type: PropType<TElementMap>;
248
251
  };
249
252
  loading: {
250
253
  type: BooleanConstructor;
251
254
  };
255
+ serialNumber: {
256
+ type: BooleanConstructor;
257
+ };
258
+ pagination: {
259
+ type: PropType<{
260
+ page?: number | undefined;
261
+ pageSize?: number | undefined;
262
+ }>;
263
+ };
252
264
  provideExtra: {
253
265
  type: PropType<IProTableProvideExtra>;
254
266
  };
@@ -286,7 +298,7 @@ declare const ProList: vue.DefineComponent<Partial<ExtractPropTypes<{
286
298
  tableProps: {
287
299
  type: PropType<Omit<Partial<ExtractPropTypes<{
288
300
  operate: {
289
- type: PropType<ITableOperate>; /******************* search pagination ********************/
301
+ type: PropType<ITableOperate>;
290
302
  };
291
303
  columnEmptyText: {
292
304
  type: StringConstructor;
@@ -297,12 +309,24 @@ declare const ProList: vue.DefineComponent<Partial<ExtractPropTypes<{
297
309
  columns: {
298
310
  type: PropType<TTableColumns>;
299
311
  };
312
+ columnState: {
313
+ type: PropType<Record<string, any>>;
314
+ };
300
315
  elementMap: {
301
316
  type: PropType<TElementMap>;
302
317
  };
303
318
  loading: {
304
319
  type: BooleanConstructor;
305
320
  };
321
+ serialNumber: {
322
+ type: BooleanConstructor;
323
+ };
324
+ pagination: {
325
+ type: PropType<{
326
+ page?: number | undefined;
327
+ pageSize?: number | undefined;
328
+ }>;
329
+ };
306
330
  provideExtra: {
307
331
  type: PropType<IProTableProvideExtra>;
308
332
  };
@@ -338,7 +362,7 @@ declare const ProList: vue.DefineComponent<Partial<ExtractPropTypes<{
338
362
  tableProps: {
339
363
  type: PropType<Omit<Partial<ExtractPropTypes<{
340
364
  operate: {
341
- type: PropType<ITableOperate>; /******************* search pagination ********************/
365
+ type: PropType<ITableOperate>;
342
366
  };
343
367
  columnEmptyText: {
344
368
  type: StringConstructor;
@@ -349,12 +373,24 @@ declare const ProList: vue.DefineComponent<Partial<ExtractPropTypes<{
349
373
  columns: {
350
374
  type: PropType<TTableColumns>;
351
375
  };
376
+ columnState: {
377
+ type: PropType<Record<string, any>>;
378
+ };
352
379
  elementMap: {
353
380
  type: PropType<TElementMap>;
354
381
  };
355
382
  loading: {
356
383
  type: BooleanConstructor;
357
384
  };
385
+ serialNumber: {
386
+ type: BooleanConstructor;
387
+ };
388
+ pagination: {
389
+ type: PropType<{
390
+ page?: number | undefined;
391
+ pageSize?: number | undefined;
392
+ }>;
393
+ };
358
394
  provideExtra: {
359
395
  type: PropType<IProTableProvideExtra>;
360
396
  };
@@ -454,6 +490,95 @@ declare const ProGrid: vue.DefineComponent<Partial<ExtractPropTypes<{
454
490
  };
455
491
  }>>>, {}>;
456
492
 
493
+ declare const createLoadingId: (prefix?: string) => string;
494
+ declare const proLoadingProps: () => {
495
+ loading: {
496
+ type: BooleanConstructor;
497
+ };
498
+ target: {
499
+ type: PropType<string | HTMLElement>;
500
+ };
501
+ body: {
502
+ type: BooleanConstructor;
503
+ };
504
+ fullscreen: {
505
+ type: BooleanConstructor;
506
+ };
507
+ lock: {
508
+ type: BooleanConstructor;
509
+ };
510
+ text: {
511
+ type: StringConstructor;
512
+ };
513
+ spinner: {
514
+ type: StringConstructor;
515
+ };
516
+ background: {
517
+ type: StringConstructor;
518
+ };
519
+ customClass: {
520
+ type: StringConstructor;
521
+ };
522
+ };
523
+ declare type ProLoadingProps = Partial<ExtractPropTypes<ReturnType<typeof proLoadingProps>>>;
524
+ declare const ProLoading: vue.DefineComponent<Partial<ExtractPropTypes<{
525
+ loading: {
526
+ type: BooleanConstructor;
527
+ };
528
+ target: {
529
+ type: PropType<string | HTMLElement>;
530
+ };
531
+ body: {
532
+ type: BooleanConstructor;
533
+ };
534
+ fullscreen: {
535
+ type: BooleanConstructor;
536
+ };
537
+ lock: {
538
+ type: BooleanConstructor;
539
+ };
540
+ text: {
541
+ type: StringConstructor;
542
+ };
543
+ spinner: {
544
+ type: StringConstructor;
545
+ };
546
+ background: {
547
+ type: StringConstructor;
548
+ };
549
+ customClass: {
550
+ type: StringConstructor;
551
+ };
552
+ }>>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, vue.EmitsOptions, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<Partial<ExtractPropTypes<{
553
+ loading: {
554
+ type: BooleanConstructor;
555
+ };
556
+ target: {
557
+ type: PropType<string | HTMLElement>;
558
+ };
559
+ body: {
560
+ type: BooleanConstructor;
561
+ };
562
+ fullscreen: {
563
+ type: BooleanConstructor;
564
+ };
565
+ lock: {
566
+ type: BooleanConstructor;
567
+ };
568
+ text: {
569
+ type: StringConstructor;
570
+ };
571
+ spinner: {
572
+ type: StringConstructor;
573
+ };
574
+ background: {
575
+ type: StringConstructor;
576
+ };
577
+ customClass: {
578
+ type: StringConstructor;
579
+ };
580
+ }>>>, {}>;
581
+
457
582
  declare const proFormItemProps: () => {
458
583
  name: {
459
584
  type: PropType<string | (string | number)[]>;
@@ -1381,12 +1506,24 @@ declare const ProCurdList: vue.DefineComponent<Partial<vue.ExtractPropTypes<{
1381
1506
  columns: {
1382
1507
  type: vue.PropType<_vue_start_pro.TTableColumns>;
1383
1508
  };
1509
+ columnState: {
1510
+ type: vue.PropType<Record<string, any>>;
1511
+ };
1384
1512
  elementMap: {
1385
1513
  type: vue.PropType<_vue_start_pro.TElementMap>;
1386
1514
  };
1387
1515
  loading: {
1388
1516
  type: BooleanConstructor;
1389
1517
  };
1518
+ serialNumber: {
1519
+ type: BooleanConstructor;
1520
+ };
1521
+ pagination: {
1522
+ type: vue.PropType<{
1523
+ page?: number | undefined;
1524
+ pageSize?: number | undefined;
1525
+ }>;
1526
+ };
1390
1527
  provideExtra: {
1391
1528
  type: vue.PropType<_vue_start_pro.IProTableProvideExtra>;
1392
1529
  };
@@ -1430,12 +1567,24 @@ declare const ProCurdList: vue.DefineComponent<Partial<vue.ExtractPropTypes<{
1430
1567
  columns: {
1431
1568
  type: vue.PropType<_vue_start_pro.TTableColumns>;
1432
1569
  };
1570
+ columnState: {
1571
+ type: vue.PropType<Record<string, any>>;
1572
+ };
1433
1573
  elementMap: {
1434
1574
  type: vue.PropType<_vue_start_pro.TElementMap>;
1435
1575
  };
1436
1576
  loading: {
1437
1577
  type: BooleanConstructor;
1438
1578
  };
1579
+ serialNumber: {
1580
+ type: BooleanConstructor;
1581
+ };
1582
+ pagination: {
1583
+ type: vue.PropType<{
1584
+ page?: number | undefined;
1585
+ pageSize?: number | undefined;
1586
+ }>;
1587
+ };
1439
1588
  provideExtra: {
1440
1589
  type: vue.PropType<_vue_start_pro.IProTableProvideExtra>;
1441
1590
  };
@@ -1479,4 +1628,4 @@ declare const ProSelect: vue.DefineComponent<any, {}, {}, {}, {}, vue.ComponentO
1479
1628
  [x: string]: any;
1480
1629
  }>;
1481
1630
 
1482
- export { ButtonProps, ContinueAddButton, DescriptionsProps, ModalProps, OkButton, PaginationProps, ProCurdDesc, ProCurdDescConnect, ProCurdForm, ProCurdFormConnect, ProCurdFormProps, ProCurdList, ProCurdListConnect, ProCurdModal, ProCurdModalConnect, ProForm, ProFormCascader, ProFormCheckbox, ProFormDatePicker, ProFormItem, ProFormItemProps, ProFormList, ProFormListProps, ProFormProps, ProFormRadio, ProFormSelect, ProFormSwitch, ProFormText, ProFormTextNumber, ProFormTimePicker, ProFormTreeSelect, ProGrid, ProGridProps, ProList, ProListProps, ProOperateButton, ProOperateButtonProps, ProSearchForm, ProSearchFormProps, ProSelect, ProSelectProps, ProSubmitButton, ProTable, ProTableProps, TPageState, createFormItemComponent, defaultPage };
1631
+ export { ButtonProps, ContinueAddButton, DescriptionsProps, ModalProps, OkButton, PaginationProps, ProCurdDesc, ProCurdDescConnect, ProCurdForm, ProCurdFormConnect, ProCurdFormProps, ProCurdList, ProCurdListConnect, ProCurdModal, ProCurdModalConnect, ProForm, ProFormCascader, ProFormCheckbox, ProFormDatePicker, ProFormItem, ProFormItemProps, ProFormList, ProFormListProps, ProFormProps, ProFormRadio, ProFormSelect, ProFormSwitch, ProFormText, ProFormTextNumber, ProFormTimePicker, ProFormTreeSelect, ProGrid, ProGridProps, ProList, ProListProps, ProLoading, ProLoadingProps, ProOperateButton, ProOperateButtonProps, ProSearchForm, ProSearchFormProps, ProSelect, ProSelectProps, ProSubmitButton, ProTable, ProTableProps, TPageState, createFormItemComponent, createLoadingId, defaultPage };
package/dist/index.es.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, createVNode, Fragment, mergeProps, isVNode, ref, reactive, toRaw, computed } from 'vue';
2
- import { ElTableColumn, ElTable, ElPagination, ElRow, ElCol, ElFormItem, ElForm, ElSelect, ElOption, ElInput, ElInputNumber, ElDatePicker, ElTimePicker, ElTreeSelect, ElCheckboxGroup, ElRadioGroup, ElSwitch, ElCascader, ElButton, ElDescriptions, ElDescriptionsItem, ElDialog } from 'element-plus';
3
- import { map, omit, get, keys, pick, isNumber, merge, size, isUndefined, mergeWith, isArray, concat } from 'lodash';
4
- import { useProTable, ProTable as ProTable$1, ProForm as ProForm$1, getFormItemEl, getColumnFormItemName, getValidValues, ProSearchForm as ProSearchForm$1, createFormItemCompFn, useProForm, ProFormList as ProFormList$1, useProCurd, CurdAddAction, CurdCurrentMode, useProModule, CurdAction, CurdSubAction } from '@vue-start/pro';
5
- import { setReactiveValue } from '@vue-start/hooks';
2
+ import { ElLoading, ElTableColumn, ElTable, ElPagination, ElRow, ElCol, ElFormItem, ElForm, ElSelect, ElOption, ElInput, ElInputNumber, ElDatePicker, ElTimePicker, ElTreeSelect, ElCheckboxGroup, ElRadioGroup, ElSwitch, ElCascader, ElButton, ElDescriptions, ElDescriptionsItem, ElDialog } from 'element-plus';
3
+ import { isString, map, omit, get, keys, pick, isNumber, size, isUndefined, mergeWith, isArray, concat } from 'lodash';
4
+ import { generateId, useProTable, ProTable as ProTable$1, useProForm, getFormItemEl, getColumnFormItemName, ProForm as ProForm$1, getValidValues, ProSearchForm as ProSearchForm$1, createFormItemCompFn, ProFormList as ProFormList$1, useProCurd, CurdAddAction, CurdCurrentMode, useProModule, CurdAction, CurdSubAction } from '@vue-start/pro';
5
+ import { useEffect, setReactiveValue } from '@vue-start/hooks';
6
6
 
7
7
  function ownKeys(object, enumerableOnly) {
8
8
  var keys = Object.keys(object);
@@ -78,7 +78,98 @@ function _nonIterableSpread() {
78
78
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
79
79
  }
80
80
 
81
- var Content = defineComponent(function () {
81
+ var createLoadingId = function createLoadingId() {
82
+ var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "comp";
83
+ return prefix + "-" + generateId();
84
+ };
85
+
86
+ var proLoadingProps = function proLoadingProps() {
87
+ return {
88
+ loading: {
89
+ type: Boolean
90
+ },
91
+ target: {
92
+ type: [String, Object]
93
+ },
94
+ body: {
95
+ type: Boolean
96
+ },
97
+ fullscreen: {
98
+ type: Boolean
99
+ },
100
+ lock: {
101
+ type: Boolean
102
+ },
103
+ text: {
104
+ type: String
105
+ },
106
+ spinner: {
107
+ type: String
108
+ },
109
+ background: {
110
+ type: String
111
+ },
112
+ customClass: {
113
+ type: String
114
+ }
115
+ };
116
+ };
117
+
118
+ var ProLoading = defineComponent({
119
+ props: _objectSpread2({}, proLoadingProps()),
120
+ setup: function setup(props, _ref) {
121
+ var slots = _ref.slots;
122
+ var id = createLoadingId();
123
+ useEffect(function () {
124
+ if (!props.loading) {
125
+ return;
126
+ }
127
+
128
+ var element = props.target;
129
+
130
+ if (!slots["default"]) {
131
+ //监听
132
+ if (props.target && isString(props.target)) {
133
+ element = document.querySelector("#" + props.target);
134
+ }
135
+ } else {
136
+ //包裹
137
+ element = document.getElementById(id);
138
+ }
139
+
140
+ if (!element) {
141
+ return;
142
+ }
143
+
144
+ var instance = ElLoading.service({
145
+ target: element,
146
+ body: props.body,
147
+ fullscreen: props.fullscreen,
148
+ lock: props.lock,
149
+ text: props.text,
150
+ spinner: props.spinner,
151
+ background: props.background,
152
+ customClass: props.customClass
153
+ });
154
+ return function () {
155
+ instance && instance.close();
156
+ };
157
+ }, function () {
158
+ return props.loading;
159
+ });
160
+ return function () {
161
+ if (!slots["default"]) {
162
+ return null;
163
+ }
164
+
165
+ return createVNode("div", {
166
+ "id": id
167
+ }, [slots["default"]()]);
168
+ };
169
+ }
170
+ });
171
+
172
+ var Content$1 = defineComponent(function () {
82
173
  var _useProTable = useProTable(),
83
174
  columns = _useProTable.columns;
84
175
 
@@ -118,25 +209,30 @@ var ProTable = defineComponent({
118
209
  var slots = _ref.slots,
119
210
  expose = _ref.expose,
120
211
  attrs = _ref.attrs;
212
+ var id = createLoadingId("table");
121
213
  var tableRef = ref();
214
+ expose({
215
+ tableRef: tableRef
216
+ });
122
217
  var originKeys = keys(ProTable$1.props);
123
218
  return function () {
124
- var _slots$default;
219
+ var _slots$top, _slots$default;
125
220
 
126
- return createVNode(ProTable$1, mergeProps(attrs, pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
221
+ return createVNode(ProTable$1, mergeProps(pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
127
222
  "provideExtra": _objectSpread2({
128
223
  tableRef: tableRef
129
224
  }, props.provideExtra)
130
225
  }), {
131
226
  "default": function _default() {
132
227
  return [createVNode(ElTable, mergeProps({
133
- "ref": function ref(el) {
134
- expose(el);
135
- tableRef.value = el;
136
- }
137
- }, omit(props, originKeys)), _objectSpread2({
228
+ "ref": tableRef,
229
+ "id": id
230
+ }, attrs, omit(props, originKeys)), _objectSpread2({
138
231
  "default": function _default() {
139
- return [createVNode(Content, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
232
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), createVNode(Content$1, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots), props.loading && createVNode(ProLoading, {
233
+ "target": id,
234
+ "loading": true
235
+ }, null)];
140
236
  }
141
237
  }, omit(slots, "default")))];
142
238
  }
@@ -229,7 +325,12 @@ var ProList = defineComponent({
229
325
  "default": function _default() {
230
326
  return [props.extraInSearch && extra];
231
327
  }
232
- }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots["default"] ? slots["default"]() : createVNode(ProTable, omit(tableProps, "slots"), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), createVNode("div", {
328
+ }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots["default"] ? slots["default"]() : createVNode(ProTable, mergeProps({
329
+ "pagination": {
330
+ page: pageState.page,
331
+ pageSize: pageState.pageSize
332
+ }
333
+ }, omit(tableProps, "slots")), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), createVNode("div", {
233
334
  "class": "pro-list-footer"
234
335
  }, [(_slots$footerLeft = slots.footerLeft) === null || _slots$footerLeft === void 0 ? void 0 : _slots$footerLeft.call(slots), isNumber(paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.total) && paginationProps.total > 0 && createVNode(Fragment, null, [slots.pagination ? slots.pagination(pagination) : createVNode(ElPagination, pagination, null)]), (_slots$footerRight = slots.footerRight) === null || _slots$footerRight === void 0 ? void 0 : _slots$footerRight.call(slots)])]);
235
336
  };
@@ -275,7 +376,7 @@ var ProGrid = defineComponent({
275
376
  return createVNode(ElRow, props.row, _isSlot$1(_slot = map(props.items, function (item) {
276
377
  return createVNode(ElCol, mergeProps({
277
378
  "key": item.rowKey
278
- }, merge(props.col, item.col)), {
379
+ }, props.col, item.col), {
279
380
  "default": function _default() {
280
381
  return [item.vNode];
281
382
  }
@@ -310,6 +411,43 @@ var ProFormItem = defineComponent({
310
411
  }
311
412
  });
312
413
  //emit;
414
+ var Content = defineComponent({
415
+ props: _objectSpread2(_objectSpread2({}, ProGrid.props), {}, {
416
+ needRules: {
417
+ type: Boolean
418
+ }
419
+ }),
420
+ setup: function setup(props) {
421
+ var _useProForm = useProForm(),
422
+ formElementMap = _useProForm.formElementMap,
423
+ columns = _useProForm.columns;
424
+
425
+ return function () {
426
+ if (!formElementMap || size(columns.value) <= 0) {
427
+ return null;
428
+ }
429
+
430
+ if (!props.row) {
431
+ return map(columns.value, function (item) {
432
+ return getFormItemEl(formElementMap, item, props.needRules);
433
+ });
434
+ }
435
+
436
+ return createVNode(ProGrid, {
437
+ "row": props.row,
438
+ "col": props.col,
439
+ "items": map(columns.value, function (item) {
440
+ var vNode = getFormItemEl(formElementMap, item, props.needRules);
441
+ return {
442
+ rowKey: getColumnFormItemName(item),
443
+ vNode: vNode,
444
+ col: get(item, ["extra", "col"])
445
+ };
446
+ })
447
+ }, null);
448
+ };
449
+ }
450
+ });
313
451
  var ProForm = defineComponent({
314
452
  inheritAttrs: false,
315
453
  props: _objectSpread2(_objectSpread2(_objectSpread2({}, ElForm.props), omit(ProForm$1.props, "model")), omit(ProGrid.props, "items")),
@@ -346,8 +484,9 @@ var ProForm = defineComponent({
346
484
  };
347
485
 
348
486
  var originKeys = keys(omit(ProForm$1.props, "model"));
487
+ var gridKeys = keys(ProGrid.props);
349
488
  return function () {
350
- var _slots$default;
489
+ var _slots$top, _slots$default;
351
490
 
352
491
  return createVNode(ProForm$1, mergeProps(pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
353
492
  "model": formState,
@@ -359,24 +498,13 @@ var ProForm = defineComponent({
359
498
  "default": function _default() {
360
499
  return [createVNode(ElForm, mergeProps({
361
500
  "ref": handleRef
362
- }, attrs, omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"])), {
501
+ }, attrs, omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"], _toConsumableArray(gridKeys))), {
363
502
  "model": formState
364
503
  }), {
365
504
  "default": function _default() {
366
- return [props.formElementMap && size(props.columns) > 0 && createVNode(Fragment, null, [props.row ? createVNode(ProGrid, {
367
- "row": props.row,
368
- "col": props.col,
369
- "items": map(props.columns, function (item) {
370
- var vNode = getFormItemEl(props.formElementMap, item, props.needRules);
371
- return {
372
- rowKey: getColumnFormItemName(item),
373
- vNode: vNode,
374
- col: get(item, ["extra", "col"])
375
- };
376
- })
377
- }, null) : createVNode(Fragment, null, [map(props.columns, function (item) {
378
- return getFormItemEl(props.formElementMap, item, props.needRules);
379
- })])]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
505
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), createVNode(Content, mergeProps(pick(props, gridKeys), {
506
+ "needRules": props.needRules
507
+ }), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
380
508
  }
381
509
  })];
382
510
  }
@@ -819,6 +947,7 @@ var ProCurdList = defineComponent({
819
947
  var _curdState$listData, _curdState$listData2;
820
948
 
821
949
  var tableProps = props.tableProps;
950
+ var paginationProps = props.paginationProps;
822
951
  return createVNode(ProList, mergeProps({
823
952
  "onList": function onList(values) {
824
953
  sendCurdEvent({
@@ -848,8 +977,8 @@ var ProCurdList = defineComponent({
848
977
  if (!item.onClick) {
849
978
  nextItem.onClick = function (record) {
850
979
  sendCurdEvent({
851
- action: CurdAction.LIST,
852
- type: "operate-".concat(item.value),
980
+ action: "operate",
981
+ type: item.value,
853
982
  record: record
854
983
  });
855
984
  };
@@ -867,7 +996,7 @@ var ProCurdList = defineComponent({
867
996
  loading: curdState.listLoading,
868
997
  data: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
869
998
  }),
870
- "paginationProps": _objectSpread2(_objectSpread2({}, props.paginationProps), {}, {
999
+ "paginationProps": _objectSpread2(_objectSpread2({}, paginationProps), {}, {
871
1000
  total: (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total
872
1001
  })
873
1002
  }), slots);
@@ -993,4 +1122,4 @@ var ProCurdModalConnect = defineComponent({
993
1122
  }
994
1123
  });
995
1124
 
996
- export { ContinueAddButton, OkButton, ProCurdDesc, ProCurdDescConnect, ProCurdForm, ProCurdFormConnect, ProCurdList, ProCurdListConnect, ProCurdModal, ProCurdModalConnect, ProForm, ProFormCascader, ProFormCheckbox, ProFormDatePicker, ProFormItem, ProFormList, ProFormRadio, ProFormSelect, ProFormSwitch, ProFormText, ProFormTextNumber, ProFormTimePicker, ProFormTreeSelect, ProGrid, ProList, ProOperateButton, ProSearchForm, ProSelect, ProSubmitButton, ProTable, createFormItemComponent, defaultPage };
1125
+ export { ContinueAddButton, OkButton, ProCurdDesc, ProCurdDescConnect, ProCurdForm, ProCurdFormConnect, ProCurdList, ProCurdListConnect, ProCurdModal, ProCurdModalConnect, ProForm, ProFormCascader, ProFormCheckbox, ProFormDatePicker, ProFormItem, ProFormList, ProFormRadio, ProFormSelect, ProFormSwitch, ProFormText, ProFormTextNumber, ProFormTimePicker, ProFormTreeSelect, ProGrid, ProList, ProLoading, ProOperateButton, ProSearchForm, ProSelect, ProSubmitButton, ProTable, createFormItemComponent, createLoadingId, defaultPage };
package/dist/index.js CHANGED
@@ -82,7 +82,98 @@ function _nonIterableSpread() {
82
82
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
83
83
  }
84
84
 
85
- var Content = vue.defineComponent(function () {
85
+ var createLoadingId = function createLoadingId() {
86
+ var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "comp";
87
+ return prefix + "-" + pro.generateId();
88
+ };
89
+
90
+ var proLoadingProps = function proLoadingProps() {
91
+ return {
92
+ loading: {
93
+ type: Boolean
94
+ },
95
+ target: {
96
+ type: [String, Object]
97
+ },
98
+ body: {
99
+ type: Boolean
100
+ },
101
+ fullscreen: {
102
+ type: Boolean
103
+ },
104
+ lock: {
105
+ type: Boolean
106
+ },
107
+ text: {
108
+ type: String
109
+ },
110
+ spinner: {
111
+ type: String
112
+ },
113
+ background: {
114
+ type: String
115
+ },
116
+ customClass: {
117
+ type: String
118
+ }
119
+ };
120
+ };
121
+
122
+ var ProLoading = vue.defineComponent({
123
+ props: _objectSpread2({}, proLoadingProps()),
124
+ setup: function setup(props, _ref) {
125
+ var slots = _ref.slots;
126
+ var id = createLoadingId();
127
+ hooks.useEffect(function () {
128
+ if (!props.loading) {
129
+ return;
130
+ }
131
+
132
+ var element = props.target;
133
+
134
+ if (!slots["default"]) {
135
+ //监听
136
+ if (props.target && lodash.isString(props.target)) {
137
+ element = document.querySelector("#" + props.target);
138
+ }
139
+ } else {
140
+ //包裹
141
+ element = document.getElementById(id);
142
+ }
143
+
144
+ if (!element) {
145
+ return;
146
+ }
147
+
148
+ var instance = elementPlus.ElLoading.service({
149
+ target: element,
150
+ body: props.body,
151
+ fullscreen: props.fullscreen,
152
+ lock: props.lock,
153
+ text: props.text,
154
+ spinner: props.spinner,
155
+ background: props.background,
156
+ customClass: props.customClass
157
+ });
158
+ return function () {
159
+ instance && instance.close();
160
+ };
161
+ }, function () {
162
+ return props.loading;
163
+ });
164
+ return function () {
165
+ if (!slots["default"]) {
166
+ return null;
167
+ }
168
+
169
+ return vue.createVNode("div", {
170
+ "id": id
171
+ }, [slots["default"]()]);
172
+ };
173
+ }
174
+ });
175
+
176
+ var Content$1 = vue.defineComponent(function () {
86
177
  var _useProTable = pro.useProTable(),
87
178
  columns = _useProTable.columns;
88
179
 
@@ -122,25 +213,30 @@ var ProTable = vue.defineComponent({
122
213
  var slots = _ref.slots,
123
214
  expose = _ref.expose,
124
215
  attrs = _ref.attrs;
216
+ var id = createLoadingId("table");
125
217
  var tableRef = vue.ref();
218
+ expose({
219
+ tableRef: tableRef
220
+ });
126
221
  var originKeys = lodash.keys(pro.ProTable.props);
127
222
  return function () {
128
- var _slots$default;
223
+ var _slots$top, _slots$default;
129
224
 
130
- return vue.createVNode(pro.ProTable, vue.mergeProps(attrs, lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
225
+ return vue.createVNode(pro.ProTable, vue.mergeProps(lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
131
226
  "provideExtra": _objectSpread2({
132
227
  tableRef: tableRef
133
228
  }, props.provideExtra)
134
229
  }), {
135
230
  "default": function _default() {
136
231
  return [vue.createVNode(elementPlus.ElTable, vue.mergeProps({
137
- "ref": function ref(el) {
138
- expose(el);
139
- tableRef.value = el;
140
- }
141
- }, lodash.omit(props, originKeys)), _objectSpread2({
232
+ "ref": tableRef,
233
+ "id": id
234
+ }, attrs, lodash.omit(props, originKeys)), _objectSpread2({
142
235
  "default": function _default() {
143
- return [vue.createVNode(Content, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
236
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), vue.createVNode(Content$1, null, null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots), props.loading && vue.createVNode(ProLoading, {
237
+ "target": id,
238
+ "loading": true
239
+ }, null)];
144
240
  }
145
241
  }, lodash.omit(slots, "default")))];
146
242
  }
@@ -233,7 +329,12 @@ var ProList = vue.defineComponent({
233
329
  "default": function _default() {
234
330
  return [props.extraInSearch && extra];
235
331
  }
236
- }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots["default"] ? slots["default"]() : vue.createVNode(ProTable, lodash.omit(tableProps, "slots"), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), vue.createVNode("div", {
332
+ }), (_slots$divide = slots.divide) === null || _slots$divide === void 0 ? void 0 : _slots$divide.call(slots), !props.extraInSearch && extra, slots["default"] ? slots["default"]() : vue.createVNode(ProTable, vue.mergeProps({
333
+ "pagination": {
334
+ page: pageState.page,
335
+ pageSize: pageState.pageSize
336
+ }
337
+ }, lodash.omit(tableProps, "slots")), tableProps === null || tableProps === void 0 ? void 0 : tableProps.slots), (_slots$divide2 = slots.divide2) === null || _slots$divide2 === void 0 ? void 0 : _slots$divide2.call(slots), vue.createVNode("div", {
237
338
  "class": "pro-list-footer"
238
339
  }, [(_slots$footerLeft = slots.footerLeft) === null || _slots$footerLeft === void 0 ? void 0 : _slots$footerLeft.call(slots), lodash.isNumber(paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.total) && paginationProps.total > 0 && vue.createVNode(vue.Fragment, null, [slots.pagination ? slots.pagination(pagination) : vue.createVNode(elementPlus.ElPagination, pagination, null)]), (_slots$footerRight = slots.footerRight) === null || _slots$footerRight === void 0 ? void 0 : _slots$footerRight.call(slots)])]);
239
340
  };
@@ -279,7 +380,7 @@ var ProGrid = vue.defineComponent({
279
380
  return vue.createVNode(elementPlus.ElRow, props.row, _isSlot$1(_slot = lodash.map(props.items, function (item) {
280
381
  return vue.createVNode(elementPlus.ElCol, vue.mergeProps({
281
382
  "key": item.rowKey
282
- }, lodash.merge(props.col, item.col)), {
383
+ }, props.col, item.col), {
283
384
  "default": function _default() {
284
385
  return [item.vNode];
285
386
  }
@@ -314,6 +415,43 @@ var ProFormItem = vue.defineComponent({
314
415
  }
315
416
  });
316
417
  //emit;
418
+ var Content = vue.defineComponent({
419
+ props: _objectSpread2(_objectSpread2({}, ProGrid.props), {}, {
420
+ needRules: {
421
+ type: Boolean
422
+ }
423
+ }),
424
+ setup: function setup(props) {
425
+ var _useProForm = pro.useProForm(),
426
+ formElementMap = _useProForm.formElementMap,
427
+ columns = _useProForm.columns;
428
+
429
+ return function () {
430
+ if (!formElementMap || lodash.size(columns.value) <= 0) {
431
+ return null;
432
+ }
433
+
434
+ if (!props.row) {
435
+ return lodash.map(columns.value, function (item) {
436
+ return pro.getFormItemEl(formElementMap, item, props.needRules);
437
+ });
438
+ }
439
+
440
+ return vue.createVNode(ProGrid, {
441
+ "row": props.row,
442
+ "col": props.col,
443
+ "items": lodash.map(columns.value, function (item) {
444
+ var vNode = pro.getFormItemEl(formElementMap, item, props.needRules);
445
+ return {
446
+ rowKey: pro.getColumnFormItemName(item),
447
+ vNode: vNode,
448
+ col: lodash.get(item, ["extra", "col"])
449
+ };
450
+ })
451
+ }, null);
452
+ };
453
+ }
454
+ });
317
455
  var ProForm = vue.defineComponent({
318
456
  inheritAttrs: false,
319
457
  props: _objectSpread2(_objectSpread2(_objectSpread2({}, elementPlus.ElForm.props), lodash.omit(pro.ProForm.props, "model")), lodash.omit(ProGrid.props, "items")),
@@ -350,8 +488,9 @@ var ProForm = vue.defineComponent({
350
488
  };
351
489
 
352
490
  var originKeys = lodash.keys(lodash.omit(pro.ProForm.props, "model"));
491
+ var gridKeys = lodash.keys(ProGrid.props);
353
492
  return function () {
354
- var _slots$default;
493
+ var _slots$top, _slots$default;
355
494
 
356
495
  return vue.createVNode(pro.ProForm, vue.mergeProps(lodash.pick.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["provideExtra"])), {
357
496
  "model": formState,
@@ -363,24 +502,13 @@ var ProForm = vue.defineComponent({
363
502
  "default": function _default() {
364
503
  return [vue.createVNode(elementPlus.ElForm, vue.mergeProps({
365
504
  "ref": handleRef
366
- }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"])), {
505
+ }, attrs, lodash.omit.apply(void 0, [props].concat(_toConsumableArray(originKeys), ["model"], _toConsumableArray(gridKeys))), {
367
506
  "model": formState
368
507
  }), {
369
508
  "default": function _default() {
370
- return [props.formElementMap && lodash.size(props.columns) > 0 && vue.createVNode(vue.Fragment, null, [props.row ? vue.createVNode(ProGrid, {
371
- "row": props.row,
372
- "col": props.col,
373
- "items": lodash.map(props.columns, function (item) {
374
- var vNode = pro.getFormItemEl(props.formElementMap, item, props.needRules);
375
- return {
376
- rowKey: pro.getColumnFormItemName(item),
377
- vNode: vNode,
378
- col: lodash.get(item, ["extra", "col"])
379
- };
380
- })
381
- }, null) : vue.createVNode(vue.Fragment, null, [lodash.map(props.columns, function (item) {
382
- return pro.getFormItemEl(props.formElementMap, item, props.needRules);
383
- })])]), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
509
+ return [(_slots$top = slots.top) === null || _slots$top === void 0 ? void 0 : _slots$top.call(slots), vue.createVNode(Content, vue.mergeProps(lodash.pick(props, gridKeys), {
510
+ "needRules": props.needRules
511
+ }), null), (_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
384
512
  }
385
513
  })];
386
514
  }
@@ -823,6 +951,7 @@ var ProCurdList = vue.defineComponent({
823
951
  var _curdState$listData, _curdState$listData2;
824
952
 
825
953
  var tableProps = props.tableProps;
954
+ var paginationProps = props.paginationProps;
826
955
  return vue.createVNode(ProList, vue.mergeProps({
827
956
  "onList": function onList(values) {
828
957
  sendCurdEvent({
@@ -852,8 +981,8 @@ var ProCurdList = vue.defineComponent({
852
981
  if (!item.onClick) {
853
982
  nextItem.onClick = function (record) {
854
983
  sendCurdEvent({
855
- action: pro.CurdAction.LIST,
856
- type: "operate-".concat(item.value),
984
+ action: "operate",
985
+ type: item.value,
857
986
  record: record
858
987
  });
859
988
  };
@@ -871,7 +1000,7 @@ var ProCurdList = vue.defineComponent({
871
1000
  loading: curdState.listLoading,
872
1001
  data: (_curdState$listData = curdState.listData) === null || _curdState$listData === void 0 ? void 0 : _curdState$listData.dataSource
873
1002
  }),
874
- "paginationProps": _objectSpread2(_objectSpread2({}, props.paginationProps), {}, {
1003
+ "paginationProps": _objectSpread2(_objectSpread2({}, paginationProps), {}, {
875
1004
  total: (_curdState$listData2 = curdState.listData) === null || _curdState$listData2 === void 0 ? void 0 : _curdState$listData2.total
876
1005
  })
877
1006
  }), slots);
@@ -1022,10 +1151,12 @@ exports.ProFormTimePicker = ProFormTimePicker;
1022
1151
  exports.ProFormTreeSelect = ProFormTreeSelect;
1023
1152
  exports.ProGrid = ProGrid;
1024
1153
  exports.ProList = ProList;
1154
+ exports.ProLoading = ProLoading;
1025
1155
  exports.ProOperateButton = ProOperateButton;
1026
1156
  exports.ProSearchForm = ProSearchForm;
1027
1157
  exports.ProSelect = ProSelect;
1028
1158
  exports.ProSubmitButton = ProSubmitButton;
1029
1159
  exports.ProTable = ProTable;
1030
1160
  exports.createFormItemComponent = createFormItemComponent;
1161
+ exports.createLoadingId = createLoadingId;
1031
1162
  exports.defaultPage = defaultPage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue-start/element-pro",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "> TODO: description",
5
5
  "author": "zx <zxpstudy@163.com>",
6
6
  "homepage": "https://github.com/zxeryu/vue-start#readme",
@@ -27,11 +27,10 @@
27
27
  "peerDependencies": {
28
28
  "@vue-start/hooks": "*",
29
29
  "@vue-start/pro": "*",
30
- "@vue-start/request": "*",
31
30
  "element-plus": ">=2.x",
32
31
  "lodash": ">= 4.x",
33
32
  "rxjs": ">=7.x",
34
33
  "vue": ">= 3.x"
35
34
  },
36
- "gitHead": "38c111cd89647f67ccdc5f7c708064056692e1cc"
35
+ "gitHead": "111a06e1350911d6315f2e19a2c3abbaa64d8092"
37
36
  }