@vxe-ui/plugin-render-element 4.2.3 → 4.2.4

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.
@@ -71,6 +71,15 @@ function defineTableRender(VxeUI) {
71
71
  function formatText(cellValue) {
72
72
  return '' + (isEmptyValue(cellValue) ? '' : cellValue);
73
73
  }
74
+ function updateFilterChangeOption(params, checked, option) {
75
+ var $table = params.$table;
76
+ $table.updateFilterOptionStatus(option, checked);
77
+ }
78
+ function saveFilterEvent(params) {
79
+ var $table = params.$table,
80
+ column = params.column;
81
+ $table.saveFilterByEvent(new Event('change'), column);
82
+ }
74
83
  function getCellLabelVNs(renderOpts, params, cellLabel) {
75
84
  var placeholder = renderOpts.placeholder;
76
85
  return [(0, _vue.h)('span', {
@@ -79,32 +88,45 @@ function defineTableRender(VxeUI) {
79
88
  "class": 'vxe-cell--placeholder'
80
89
  }, formatText(VxeUI.getI18n(placeholder)))] : formatText(cellLabel))];
81
90
  }
82
- function getOns(renderOpts, params, inputFunc, changeFunc) {
91
+ var blurEvent = 'blur';
92
+ var clearEvent = 'clear';
93
+ /**
94
+ * 组件事件处理
95
+ * @param renderOpts
96
+ * @param params
97
+ * @param modelFunc
98
+ * @param changeFunc
99
+ */
100
+ function getComponentOns(renderOpts, params, eFns, eventOns) {
83
101
  var events = renderOpts.events;
84
102
  var modelEvent = getModelEvent(renderOpts);
85
103
  var changeEvent = getChangeEvent(renderOpts);
86
- var isSameEvent = changeEvent === modelEvent;
104
+ var _ref = eFns || {},
105
+ modelFunc = _ref.model,
106
+ changeFunc = _ref.change,
107
+ blurFunc = _ref.blur,
108
+ clearFunc = _ref.clear;
87
109
  var ons = {};
88
110
  _xeUtils["default"].objectEach(events, function (func, key) {
89
111
  ons[getOnName(key)] = function () {
112
+ if (!_xeUtils["default"].isFunction(func)) {
113
+ console.error("Parameter \"".concat(func, "\" is not a method"));
114
+ }
90
115
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
91
116
  args[_key] = arguments[_key];
92
117
  }
93
118
  func.apply(void 0, [params].concat(args));
94
119
  };
95
120
  });
96
- if (inputFunc) {
121
+ if (modelFunc) {
97
122
  ons[getOnName(modelEvent)] = function (targetEvnt) {
98
- inputFunc(targetEvnt);
123
+ modelFunc(targetEvnt);
99
124
  if (events && events[modelEvent]) {
100
125
  events[modelEvent](params, targetEvnt);
101
126
  }
102
- if (isSameEvent && changeFunc) {
103
- changeFunc(targetEvnt);
104
- }
105
127
  };
106
128
  }
107
- if (!isSameEvent && changeFunc) {
129
+ if (changeFunc) {
108
130
  ons[getOnName(changeEvent)] = function () {
109
131
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
110
132
  args[_key2] = arguments[_key2];
@@ -115,25 +137,89 @@ function defineTableRender(VxeUI) {
115
137
  }
116
138
  };
117
139
  }
118
- return ons;
140
+ if (blurFunc) {
141
+ ons[getOnName(blurEvent)] = function () {
142
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
143
+ args[_key3] = arguments[_key3];
144
+ }
145
+ blurFunc.apply(void 0, args);
146
+ if (events && events[blurEvent]) {
147
+ events[blurEvent].apply(events, [params].concat(args));
148
+ }
149
+ };
150
+ }
151
+ if (clearFunc) {
152
+ ons[getOnName(clearEvent)] = function () {
153
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
154
+ args[_key4] = arguments[_key4];
155
+ }
156
+ clearFunc.apply(void 0, args);
157
+ if (events && events[clearEvent]) {
158
+ events[clearEvent].apply(events, [params].concat(args));
159
+ }
160
+ };
161
+ }
162
+ return eventOns ? Object.assign(ons, eventOns) : ons;
119
163
  }
120
164
  function getEditOns(renderOpts, params) {
121
165
  var $table = params.$table,
122
166
  row = params.row,
123
167
  column = params.column;
124
- return getOns(renderOpts, params, function (value) {
125
- // 处理 model 值双向绑定
126
- _xeUtils["default"].set(row, column.field, value);
127
- }, function () {
128
- // 处理 change 事件相关逻辑
129
- $table.updateStatus(params);
168
+ return getComponentOns(renderOpts, params, {
169
+ model: function model(value) {
170
+ // 处理 model 值双向绑定
171
+ _xeUtils["default"].set(row, column.field, value);
172
+ },
173
+ change: function change() {
174
+ // 处理 change 事件相关逻辑
175
+ $table.updateStatus(params);
176
+ }
130
177
  });
131
178
  }
132
179
  function getFilterOns(renderOpts, params, option, changeFunc) {
133
- return getOns(renderOpts, params, function (value) {
134
- // 处理 model 值双向绑定
135
- option.data = value;
136
- }, changeFunc);
180
+ return getComponentOns(renderOpts, params, {
181
+ model: function model(value) {
182
+ // 处理 model 值双向绑定
183
+ option.data = value;
184
+ },
185
+ change: changeFunc
186
+ });
187
+ }
188
+ function getFloatingFilterOns(renderOpts, params, option) {
189
+ var $table = params.$table,
190
+ column = params.column;
191
+ if ((0, _comp.hasInputType)(renderOpts)) {
192
+ return getComponentOns(renderOpts, params, {
193
+ model: function model(value) {
194
+ // 处理 model 值双向绑定
195
+ option.data = value;
196
+ },
197
+ change: function change() {
198
+ updateFilterChangeOption(params, !isEmptyValue(option.data), option);
199
+ },
200
+ clear: function clear() {
201
+ updateFilterChangeOption(params, !isEmptyValue(option.data), option);
202
+ saveFilterEvent(params);
203
+ },
204
+ blur: function blur() {
205
+ $table.saveFilterByEvent(new Event('change'), column);
206
+ }
207
+ });
208
+ }
209
+ return getComponentOns(renderOpts, params, {
210
+ model: function model(value) {
211
+ // 处理 model 值双向绑定
212
+ option.data = value;
213
+ },
214
+ clear: function clear() {
215
+ updateFilterChangeOption(params, !isEmptyValue(option.data), option);
216
+ $table.saveFilterByEvent(new Event('change'), column);
217
+ },
218
+ change: function change() {
219
+ updateFilterChangeOption(params, !isEmptyValue(option.data), option);
220
+ $table.saveFilterByEvent(new Event('change'), column);
221
+ }
222
+ });
137
223
  }
138
224
  function matchCascaderData(index, list, values, labels) {
139
225
  var val = values[index];
@@ -279,14 +365,16 @@ function defineTableRender(VxeUI) {
279
365
  var row = params.row,
280
366
  column = params.column;
281
367
  var name = renderOpts.name,
282
- attrs = renderOpts.attrs;
368
+ attrs = renderOpts.attrs,
369
+ props = renderOpts.props;
283
370
  var cellValue = _xeUtils["default"].get(row, column.field);
284
- return [(0, _vue.h)((0, _comp.getCurrComponent)(name), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, cellValue, defaultProps)), getEditOns(renderOpts, params)))];
371
+ return [(0, _vue.h)((0, _comp.getCurrComponent)(name), _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, attrs), props), getCellEditFilterProps(renderOpts, params, cellValue, defaultProps)), getEditOns(renderOpts, params)))];
285
372
  };
286
373
  }
287
374
  function defaultButtonEditRender(renderOpts, params) {
288
- var attrs = renderOpts.attrs;
289
- return [(0, _vue.h)((0, _comp.getCurrComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, null)), getOns(renderOpts, params)), cellText(renderOpts.content))];
375
+ var attrs = renderOpts.attrs,
376
+ props = renderOpts.props;
377
+ return [(0, _vue.h)((0, _comp.getCurrComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, attrs), props), getCellEditFilterProps(renderOpts, params, null)), getComponentOns(renderOpts, params)), cellText(renderOpts.content))];
290
378
  }
291
379
  function defaultButtonsEditRender(renderOpts, params) {
292
380
  var children = renderOpts.children;
@@ -301,20 +389,31 @@ function defineTableRender(VxeUI) {
301
389
  return function (renderOpts, params) {
302
390
  var column = params.column;
303
391
  var name = renderOpts.name,
304
- attrs = renderOpts.attrs;
392
+ attrs = renderOpts.attrs,
393
+ props = renderOpts.props;
305
394
  return [(0, _vue.h)('div', {
306
395
  "class": 'vxe-table--filter-element-wrapper'
307
396
  }, column.filters.map(function (option, oIndex) {
308
397
  var optionValue = option.data;
309
- return (0, _vue.h)((0, _comp.getCurrComponent)(name), _objectSpread(_objectSpread(_objectSpread({
398
+ return (0, _vue.h)((0, _comp.getCurrComponent)(name), _objectSpread(_objectSpread(_objectSpread(_objectSpread({
310
399
  key: oIndex
311
- }, attrs), getCellEditFilterProps(renderOpts, params, optionValue, defaultProps)), getFilterOns(renderOpts, params, option, function () {
400
+ }, attrs), props), getCellEditFilterProps(renderOpts, params, optionValue, defaultProps)), getFilterOns(renderOpts, params, option, function () {
312
401
  // 处理 change 事件相关逻辑
313
402
  handleConfirmFilter(params, !!option.data, option);
314
403
  })));
315
404
  }))];
316
405
  };
317
406
  }
407
+ function createFloatingFilterRender(defaultProps) {
408
+ return function (renderOpts, params) {
409
+ var option = params.option;
410
+ var name = renderOpts.name,
411
+ attrs = renderOpts.attrs,
412
+ props = renderOpts.props;
413
+ var optionValue = option.data;
414
+ return [(0, _vue.h)((0, _comp.getCurrComponent)(name), _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, attrs), props), getCellEditFilterProps(renderOpts, params, optionValue, defaultProps)), getFloatingFilterOns(renderOpts, params, option)))];
415
+ };
416
+ }
318
417
  function handleConfirmFilter(params, checked, option) {
319
418
  var $panel = params.$panel;
320
419
  $panel.changeOption(null, checked, option);
@@ -367,11 +466,17 @@ function defineTableRender(VxeUI) {
367
466
  return options && options.original ? _xeUtils["default"].get(row, column.field) : getExportCellValue(column.editRender || column.cellRender, params);
368
467
  };
369
468
  }
469
+ function defaultFilterOptions() {
470
+ return [{
471
+ data: null
472
+ }];
473
+ }
370
474
  VxeUI.renderer.mixin({
371
475
  ElAutocomplete: {
372
476
  tableAutoFocus: 'input',
373
477
  renderTableDefault: createEditRender(),
374
478
  renderTableEdit: createEditRender(),
479
+ createTableFilterOptions: defaultFilterOptions,
375
480
  renderTableFilter: createFilterRender(),
376
481
  tableFilterDefaultMethod: defaultExactFilterMethod
377
482
  },
@@ -379,14 +484,18 @@ function defineTableRender(VxeUI) {
379
484
  tableAutoFocus: 'input',
380
485
  renderTableDefault: createEditRender(),
381
486
  renderTableEdit: createEditRender(),
487
+ createTableFilterOptions: defaultFilterOptions,
382
488
  renderTableFilter: createFilterRender(),
489
+ renderTableFloatingFilter: createFloatingFilterRender(),
383
490
  tableFilterDefaultMethod: defaultFuzzyFilterMethod
384
491
  },
385
492
  ElInputNumber: {
386
493
  tableAutoFocus: 'input',
387
494
  renderTableDefault: createEditRender(),
388
495
  renderTableEdit: createEditRender(),
496
+ createTableFilterOptions: defaultFilterOptions,
389
497
  renderTableFilter: createFilterRender(),
498
+ renderTableFloatingFilter: createFloatingFilterRender(),
390
499
  tableFilterDefaultMethod: defaultFuzzyFilterMethod
391
500
  },
392
501
  ElSelect: {
@@ -432,6 +541,7 @@ function defineTableRender(VxeUI) {
432
541
  renderTableCell: function renderTableCell(renderOpts, params) {
433
542
  return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
434
543
  },
544
+ createTableFilterOptions: defaultFilterOptions,
435
545
  renderTableFilter: function renderTableFilter(renderOpts, params) {
436
546
  var _renderOpts$options3 = renderOpts.options,
437
547
  options = _renderOpts$options3 === void 0 ? [] : _renderOpts$options3,
@@ -518,6 +628,7 @@ function defineTableRender(VxeUI) {
518
628
  renderTableCell: function renderTableCell(renderOpts, params) {
519
629
  return getCellLabelVNs(renderOpts, params, getDatePickerCellValue(renderOpts, params));
520
630
  },
631
+ createTableFilterOptions: defaultFilterOptions,
521
632
  renderTableFilter: function renderTableFilter(renderOpts, params) {
522
633
  var column = params.column;
523
634
  var name = renderOpts.name,
@@ -534,6 +645,7 @@ function defineTableRender(VxeUI) {
534
645
  })));
535
646
  }))];
536
647
  },
648
+ renderTableFloatingFilter: createFloatingFilterRender(),
537
649
  tableFilterDefaultMethod: function tableFilterDefaultMethod(params) {
538
650
  var option = params.option,
539
651
  row = params.row,
@@ -574,6 +686,7 @@ function defineTableRender(VxeUI) {
574
686
  ElRate: {
575
687
  renderTableDefault: createEditRender(),
576
688
  renderTableEdit: createEditRender(),
689
+ createTableFilterOptions: defaultFilterOptions,
577
690
  renderTableFilter: createFilterRender(),
578
691
  tableFilterDefaultMethod: defaultExactFilterMethod
579
692
  },
@@ -601,6 +714,7 @@ function defineTableRender(VxeUI) {
601
714
  ElSlider: {
602
715
  renderTableDefault: createEditRender(),
603
716
  renderTableEdit: createEditRender(),
717
+ createTableFilterOptions: defaultFilterOptions,
604
718
  renderTableFilter: createFilterRender(),
605
719
  tableFilterDefaultMethod: defaultExactFilterMethod
606
720
  },
package/dist/util/comp.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getCurrComponent = getCurrComponent;
7
+ exports.hasInputType = hasInputType;
7
8
  var _vue = require("vue");
8
9
  var _store = require("../store");
9
10
  function getCurrComponent(name) {
@@ -12,4 +13,13 @@ function getCurrComponent(name) {
12
13
  return comp;
13
14
  }
14
15
  return (0, _vue.resolveComponent)(name);
16
+ }
17
+ function hasInputType(renderOpts) {
18
+ switch (renderOpts.name) {
19
+ case 'ElInput':
20
+ case 'ElInputNumber':
21
+ case 'ElTextarea':
22
+ return true;
23
+ }
24
+ return false;
15
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxe-ui/plugin-render-element",
3
- "version": "4.2.3",
3
+ "version": "4.2.4",
4
4
  "description": "Vxe UI plug-in for compatibility with the element-plus component.",
5
5
  "scripts": {
6
6
  "lib": "gulp build"