vxe-table 4.16.19 → 4.17.0-beta.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 (81) hide show
  1. package/es/grid/src/grid.js +8 -0
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/filter/hook.js +108 -58
  7. package/es/table/module/filter/panel.js +45 -25
  8. package/es/table/render/index.js +93 -9
  9. package/es/table/src/cell.js +9 -3
  10. package/es/table/src/column.js +2 -0
  11. package/es/table/src/columnInfo.js +14 -6
  12. package/es/table/src/header.js +118 -3
  13. package/es/table/src/props.js +2 -0
  14. package/es/table/src/table.js +29 -26
  15. package/es/table/src/util.js +8 -5
  16. package/es/table/style.css +2 -1
  17. package/es/table/style.min.css +1 -1
  18. package/es/ui/index.js +4 -1
  19. package/es/ui/src/log.js +1 -1
  20. package/es/ui/src/vn.js +11 -0
  21. package/es/vxe-table/style.css +2 -1
  22. package/es/vxe-table/style.min.css +1 -1
  23. package/lib/grid/src/grid.js +12 -0
  24. package/lib/grid/src/grid.min.js +1 -1
  25. package/lib/index.css +1 -1
  26. package/lib/index.min.css +1 -1
  27. package/lib/index.umd.js +525 -137
  28. package/lib/index.umd.min.js +1 -1
  29. package/lib/style.css +1 -1
  30. package/lib/style.min.css +1 -1
  31. package/lib/table/module/filter/hook.js +123 -66
  32. package/lib/table/module/filter/hook.min.js +1 -1
  33. package/lib/table/module/filter/panel.js +59 -26
  34. package/lib/table/module/filter/panel.min.js +1 -1
  35. package/lib/table/render/index.js +109 -8
  36. package/lib/table/render/index.min.js +1 -1
  37. package/lib/table/src/cell.js +15 -3
  38. package/lib/table/src/cell.min.js +1 -1
  39. package/lib/table/src/column.js +2 -0
  40. package/lib/table/src/column.min.js +1 -1
  41. package/lib/table/src/columnInfo.js +18 -5
  42. package/lib/table/src/columnInfo.min.js +1 -1
  43. package/lib/table/src/header.js +133 -3
  44. package/lib/table/src/header.min.js +1 -1
  45. package/lib/table/src/props.js +2 -0
  46. package/lib/table/src/props.min.js +1 -1
  47. package/lib/table/src/table.js +10 -10
  48. package/lib/table/src/table.min.js +1 -1
  49. package/lib/table/src/util.js +18 -14
  50. package/lib/table/src/util.min.js +1 -1
  51. package/lib/table/style/style.css +2 -1
  52. package/lib/table/style/style.min.css +1 -1
  53. package/lib/ui/index.js +4 -1
  54. package/lib/ui/index.min.js +1 -1
  55. package/lib/ui/src/log.js +1 -1
  56. package/lib/ui/src/log.min.js +1 -1
  57. package/lib/ui/src/vn.js +12 -0
  58. package/lib/ui/src/vn.min.js +1 -1
  59. package/lib/vxe-table/style/style.css +2 -1
  60. package/lib/vxe-table/style/style.min.css +1 -1
  61. package/package.json +2 -2
  62. package/packages/grid/src/grid.ts +8 -0
  63. package/packages/table/module/filter/hook.ts +110 -64
  64. package/packages/table/module/filter/panel.ts +56 -28
  65. package/packages/table/render/index.ts +110 -15
  66. package/packages/table/src/cell.ts +9 -3
  67. package/packages/table/src/column.ts +2 -0
  68. package/packages/table/src/columnInfo.ts +19 -7
  69. package/packages/table/src/header.ts +137 -8
  70. package/packages/table/src/props.ts +2 -0
  71. package/packages/table/src/table.ts +30 -26
  72. package/packages/table/src/util.ts +8 -5
  73. package/packages/ui/index.ts +3 -0
  74. package/packages/ui/src/vn.ts +12 -0
  75. package/styles/components/table-module/filter.scss +4 -1
  76. /package/es/{iconfont.1758609514163.ttf → iconfont.1759031444881.ttf} +0 -0
  77. /package/es/{iconfont.1758609514163.woff → iconfont.1759031444881.woff} +0 -0
  78. /package/es/{iconfont.1758609514163.woff2 → iconfont.1759031444881.woff2} +0 -0
  79. /package/lib/{iconfont.1758609514163.ttf → iconfont.1759031444881.ttf} +0 -0
  80. /package/lib/{iconfont.1758609514163.woff → iconfont.1759031444881.woff} +0 -0
  81. /package/lib/{iconfont.1758609514163.woff2 → iconfont.1759031444881.woff2} +0 -0
@@ -30,57 +30,19 @@ hooks.add('tableFilterModule', {
30
30
  computeFilterOpts,
31
31
  computeMouseOpts
32
32
  } = $xeTable.getComputeMaps();
33
- // 确认筛选
34
- const handleFilterConfirmFilter = evnt => {
35
- const {
36
- filterStore
37
- } = reactData;
38
- filterStore.options.forEach(option => {
39
- option.checked = option._checked;
40
- });
41
- $xeTable.confirmFilterEvent(evnt);
42
- };
43
- // (单选)筛选发生改变
44
- const changeRadioOption = (evnt, checked, item) => {
45
- const {
46
- filterStore
47
- } = reactData;
48
- filterStore.options.forEach(option => {
49
- option._checked = false;
50
- });
51
- item._checked = checked;
52
- $xeTable.checkFilterOptions();
53
- handleFilterConfirmFilter(evnt);
54
- };
55
- // (多选)筛选发生改变
56
- const changeMultipleOption = (evnt, checked, item) => {
57
- item._checked = checked;
58
- $xeTable.checkFilterOptions();
59
- };
60
- /**
61
- * 重置筛选
62
- * 当筛选面板中的重置按钮被按下时触发
63
- * @param {Event} evnt 事件
64
- */
65
- const handleFilterResetFilter = evnt => {
66
- const {
67
- filterStore
68
- } = reactData;
69
- $xeTable.handleClearFilter(filterStore.column);
70
- $xeTable.confirmFilterEvent(evnt);
71
- if (evnt) {
72
- $xeTable.dispatchEvent('clear-filter', {
73
- filterList: []
74
- }, evnt);
75
- }
76
- };
77
33
  const filterPrivateMethods = {
78
34
  checkFilterOptions() {
79
35
  const {
80
36
  filterStore
81
37
  } = reactData;
82
- filterStore.isAllSelected = filterStore.options.every(item => item._checked);
83
- filterStore.isIndeterminate = !filterStore.isAllSelected && filterStore.options.some(item => item._checked);
38
+ const {
39
+ column
40
+ } = filterStore;
41
+ if (column) {
42
+ const filterOptions = column.filters || [];
43
+ filterStore.isAllSelected = filterOptions.every(item => item._checked);
44
+ filterStore.isIndeterminate = !filterStore.isAllSelected && filterOptions.some(item => item._checked);
45
+ }
84
46
  },
85
47
  /**
86
48
  * 点击筛选事件
@@ -223,11 +185,13 @@ hooks.add('tableFilterModule', {
223
185
  const filterOpts = computeFilterOpts.value;
224
186
  const mouseOpts = computeMouseOpts.value;
225
187
  const {
226
- field
188
+ field,
189
+ filters
227
190
  } = column;
191
+ const filterOptions = filters || [];
228
192
  const values = [];
229
193
  const datas = [];
230
- column.filters.forEach(item => {
194
+ filterOptions.forEach(item => {
231
195
  if (item.checked) {
232
196
  values.push(item.value);
233
197
  datas.push(item.data);
@@ -282,32 +246,84 @@ hooks.add('tableFilterModule', {
282
246
  /**
283
247
  * 确认筛选
284
248
  * 当筛选面板中的确定按钮被按下时触发
285
- * @param {Event} evnt 事件
286
249
  */
287
- confirmFilterEvent(evnt) {
250
+ confirmFilterEvent(evnt, column) {
251
+ if (column) {
252
+ $xeTable.handleColumnConfirmFilter(column, evnt);
253
+ }
254
+ },
255
+ // (单选)筛选发生改变
256
+ handleFilterChangeRadioOption(evnt, checked, item) {
288
257
  const {
289
258
  filterStore
290
259
  } = reactData;
291
260
  const {
292
261
  column
293
262
  } = filterStore;
294
- $xeTable.handleColumnConfirmFilter(column, evnt);
263
+ if (column) {
264
+ const filterOptions = column.filters || [];
265
+ filterOptions.forEach(option => {
266
+ option._checked = false;
267
+ });
268
+ item._checked = checked;
269
+ $xeTable.checkFilterOptions();
270
+ $xeTable.handleFilterConfirmFilter(evnt, column);
271
+ }
272
+ },
273
+ // (多选)筛选发生改变
274
+ handleFilterChangeMultipleOption(evnt, checked, item) {
275
+ item._checked = checked;
276
+ $xeTable.checkFilterOptions();
295
277
  },
296
- handleFilterChangeRadioOption: changeRadioOption,
297
- handleFilterChangeMultipleOption: changeMultipleOption,
298
278
  // 筛选发生改变
299
279
  handleFilterChangeOption(evnt, checked, item) {
300
280
  const {
301
281
  filterStore
302
282
  } = reactData;
303
- if (filterStore.multiple) {
304
- changeMultipleOption(evnt, checked, item);
305
- } else {
306
- changeRadioOption(evnt, checked, item);
283
+ const {
284
+ fullColumnIdData
285
+ } = internalData;
286
+ let column = filterStore.column;
287
+ if (!column) {
288
+ const colRest = fullColumnIdData[item._colId];
289
+ if (colRest) {
290
+ column = colRest.column;
291
+ filterStore.column = column;
292
+ }
293
+ }
294
+ if (column) {
295
+ if (column.filterMultiple) {
296
+ $xeTable.handleFilterChangeMultipleOption(evnt, checked, item);
297
+ } else {
298
+ $xeTable.handleFilterChangeRadioOption(evnt, checked, item);
299
+ }
300
+ }
301
+ },
302
+ // 确认筛选
303
+ handleFilterConfirmFilter(evnt, column) {
304
+ if (column) {
305
+ const filterOptions = column.filters || [];
306
+ filterOptions.forEach(option => {
307
+ option.checked = option._checked;
308
+ });
309
+ $xeTable.confirmFilterEvent(evnt, column);
307
310
  }
308
311
  },
309
- handleFilterConfirmFilter,
310
- handleFilterResetFilter
312
+ /**
313
+ * 重置筛选
314
+ * 当筛选面板中的重置按钮被按下时触发
315
+ */
316
+ handleFilterResetFilter(evnt, column) {
317
+ if (column) {
318
+ $xeTable.handleClearFilter(column);
319
+ $xeTable.confirmFilterEvent(evnt, column);
320
+ if (evnt) {
321
+ $xeTable.dispatchEvent('clear-filter', {
322
+ filterList: []
323
+ }, evnt);
324
+ }
325
+ }
326
+ }
311
327
  };
312
328
  const filterMethods = {
313
329
  /**
@@ -344,7 +360,7 @@ hooks.add('tableFilterModule', {
344
360
  } = reactData;
345
361
  const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
346
362
  if (column && column.filters) {
347
- column.filters = (0, _util.toFilters)(options || []);
363
+ column.filters = (0, _util.toFilters)(options || [], column.id);
348
364
  if (isUpdate) {
349
365
  return $xeTable.handleColumnConfirmFilter(column, null);
350
366
  } else {
@@ -393,20 +409,60 @@ hooks.add('tableFilterModule', {
393
409
  }
394
410
  return (0, _vue.nextTick)();
395
411
  },
412
+ saveFilter(fieldOrColumn) {
413
+ if (fieldOrColumn) {
414
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
415
+ $xeTable.handleFilterConfirmFilter(null, column);
416
+ }
417
+ return (0, _vue.nextTick)();
418
+ },
419
+ saveFilterByEvent(evnt, fieldOrColumn) {
420
+ if (fieldOrColumn) {
421
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
422
+ $xeTable.handleFilterConfirmFilter(evnt, column);
423
+ }
424
+ return (0, _vue.nextTick)();
425
+ },
426
+ resetFilter(fieldOrColumn) {
427
+ if (fieldOrColumn) {
428
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
429
+ $xeTable.handleFilterResetFilter(null, column);
430
+ }
431
+ return (0, _vue.nextTick)();
432
+ },
433
+ resetFilterByEvent(evnt, fieldOrColumn) {
434
+ if (fieldOrColumn) {
435
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
436
+ $xeTable.handleFilterResetFilter(evnt, column);
437
+ }
438
+ return (0, _vue.nextTick)();
439
+ },
396
440
  saveFilterPanel() {
397
- handleFilterConfirmFilter(null);
441
+ const {
442
+ filterStore
443
+ } = reactData;
444
+ $xeTable.handleFilterConfirmFilter(null, filterStore.column || null);
398
445
  return (0, _vue.nextTick)();
399
446
  },
400
447
  saveFilterPanelByEvent(evnt) {
401
- handleFilterConfirmFilter(evnt);
448
+ const {
449
+ filterStore
450
+ } = reactData;
451
+ $xeTable.handleFilterConfirmFilter(evnt, filterStore.column || null);
402
452
  return (0, _vue.nextTick)();
403
453
  },
404
454
  resetFilterPanel() {
405
- handleFilterResetFilter(null);
455
+ const {
456
+ filterStore
457
+ } = reactData;
458
+ $xeTable.handleFilterResetFilter(null, filterStore.column || null);
406
459
  return (0, _vue.nextTick)();
407
460
  },
408
461
  resetFilterPanelByEvent(evnt) {
409
- handleFilterResetFilter(evnt);
462
+ const {
463
+ filterStore
464
+ } = reactData;
465
+ $xeTable.handleFilterResetFilter(evnt, filterStore.column || null);
410
466
  return (0, _vue.nextTick)();
411
467
  },
412
468
  getCheckedFilters() {
@@ -419,10 +475,11 @@ hooks.add('tableFilterModule', {
419
475
  field,
420
476
  filters
421
477
  } = column;
478
+ const filterOptions = filters || [];
422
479
  const valueList = [];
423
480
  const dataList = [];
424
- if (filters && filters.length) {
425
- filters.forEach(item => {
481
+ if (filterOptions) {
482
+ filterOptions.forEach(item => {
426
483
  if (item.checked) {
427
484
  valueList.push(item.value);
428
485
  dataList.push(item.data);
@@ -1 +1 @@
1
- var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,hooks}=_ui.VxeUI,tableFilterMethodKeys=["openFilter","setFilter","clearFilter","saveFilterPanel","saveFilterPanelByEvent","resetFilterPanel","resetFilterPanelByEvent","getCheckedFilters","updateFilterOptionStatus"];hooks.add("tableFilterModule",{setupTable(_){let C=_.xeGrid||_.xeGantt,{props:d,reactData:h,internalData:a}=_,{refElem:n,refTableFilter:k}=_.getRefMaps(),{computeFilterOpts:b,computeMouseOpts:f}=_.getComputeMaps(),i=e=>{var t=h.filterStore;t.options.forEach(e=>{e.checked=e._checked}),_.confirmFilterEvent(e)},o=(e,t,l)=>{var r=h.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,_.checkFilterOptions(),i(e)},u=(e,t,l)=>{l._checked=t,_.checkFilterOptions()},t=e=>{var t=h.filterStore;_.handleClearFilter(t.column),_.confirmFilterEvent(e),e&&_.dispatchEvent("clear-filter",{filterList:[]},e)};var e={checkFilterOptions(){var e=h.filterStore;e.isAllSelected=e.options.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&e.options.some(e=>e._checked)},triggerFilterEvent(e,t,l){let{initStore:r,filterStore:F}=h,g=a.elemStore;if(F.column===t&&F.visible)F.visible=!1;else{let u=n.value,{scrollTop:s,scrollLeft:c,visibleHeight:d,visibleWidth:h}=(0,_dom.getDomNode)();let f=b.value.transfer,v=u.getBoundingClientRect(),p=e.currentTarget;var i=t?t.filterRender:null;let m=i&&(0,_utils.isEnableConf)(i)?renderer.get(i.name):null;_.handleFilterOptions(t),a._currFilterParams=l,F.style=null,F.visible=!0,r.filter=!0,(0,_vue.nextTick)(()=>{if((0,_util.getRefElem)(g["main-header-scroll"])){var r=k.value,r=r?r.getRefMaps().refElem.value:null;if(r){var i=p.getBoundingClientRect(),n=r.querySelector(".vxe-table--filter-header"),a=r.querySelector(".vxe-table--filter-footer"),r=r.offsetWidth,o=r/2;let e=0,t=0,l=0;f?(e=i.left-o+c,t=i.top+p.clientHeight+s,l=Math.min(Math.max(v.height,Math.floor(d/2)),Math.max(80,d-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-28)),e<16?e=16:e>h-r-16&&(e=h-r-16)):(e=i.left-v.left-o,t=i.top-v.top+p.clientHeight,l=Math.max(40,u.clientHeight-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-14),e<1?e=1:e>u.clientWidth-r-1&&(e=u.clientWidth-r-1),C&&(o=C.getRefMaps().refElem.value)&&(i=o.getBoundingClientRect(),t+=v.top-i.top)),F.style={top:(0,_dom.toCssUnit)(t),left:(0,_dom.toCssUnit)(e)},m&&!m.tableFilterAutoHeight&&(l=0),F.maxHeight=l}}})}_.dispatchEvent("filter-visible",{column:t,field:t.field,property:t.field,filterList:_.getCheckedFilters(),visible:F.visible},e)},handleClearFilter(e){if(e){var{filters:l,filterRender:r}=e;if(l){r=(0,_utils.isEnableConf)(r)?renderer.get(r.name):null;let t=e.filterResetMethod||(r?r.tableFilterResetMethod||r.filterResetMethod:null);l.forEach(e=>{e._checked=!1,e.checked=!1,t||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),t&&t({options:l,column:e,$table:_})}}},handleColumnConfirmFilter(e,t){var l=d.mouseConfig;let{scrollXLoad:r,scrollYLoad:i}=h;var n=b.value,a=f.value,o=e.field;let u=[],s=[];e.filters.forEach(e=>{e.checked&&(u.push(e.value),s.push(e.data))});var c=_.getCheckedFilters(),e={$table:_,$event:t,column:e,field:o,property:o,values:u,datas:s,filters:c,filterList:c};return n.remote||(_.handleTableData(!0),_.checkSelectionStatus()),l&&a.area&&_.handleFilterEvent&&_.handleFilterEvent(t,e),t&&_.dispatchEvent("filter-change",e,t),_.closeFilter(),_.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=h;if(r||e||i||t)return(r||e)&&_.updateScrollXSpace(),(i||t)&&_.updateScrollYSpace(),_.refreshScroll()}).then(()=>(_.updateCellAreas(),_.recalculate(!0))).then(()=>{setTimeout(()=>_.recalculate(),50)})},confirmFilterEvent(e){var t=h.filterStore,t=t.column;_.handleColumnConfirmFilter(t,e)},handleFilterChangeRadioOption:o,handleFilterChangeMultipleOption:u,handleFilterChangeOption(e,t,l){var r=h.filterStore;r.multiple?u(0,t,l):o(e,t,l)},handleFilterConfirmFilter:i,handleFilterResetFilter:t};return Object.assign(Object.assign({},{openFilter(e){let r=(0,_util.handleFieldOrColumn)(_,e);if(r&&r.filters){let t=a.elemStore,l=r.fixed;return _.scrollToColumn(r).then(()=>{var e=(0,_util.getRefElem)(t[`${l||"main"}-header-wrapper`]||t["main-header-wrapper"]);e&&(e=e.querySelector(`.vxe-header--column.${r.id} .vxe-cell--filter`),(0,_dom.triggerEvent)(e,"click"))})}return(0,_vue.nextTick)()},setFilter(e,t,l){var r=h.filterStore,e=(0,_util.handleFieldOrColumn)(_,e);if(e&&e.filters){if(e.filters=(0,_util.toFilters)(t||[]),l)return _.handleColumnConfirmFilter(e,null);r.visible&&_.handleFilterOptions(e)}return(0,_vue.nextTick)()},clearFilter(e){var t=h.filterStore,l=a.tableFullColumn,r=b.value;let i;return e?(i=(0,_util.handleFieldOrColumn)(_,e))&&_.handleClearFilter(i):l.forEach(_.handleClearFilter),e&&i===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),r.remote?(0,_vue.nextTick)():_.updateData()},saveFilterPanel(){return i(null),(0,_vue.nextTick)()},saveFilterPanelByEvent(e){return i(e),(0,_vue.nextTick)()},resetFilterPanel(){return t(null),(0,_vue.nextTick)()},resetFilterPanelByEvent(e){return t(e),(0,_vue.nextTick)()},getCheckedFilters(){var e=a.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e;let r=[],i=[];l&&l.length&&(l.forEach(e=>{e.checked&&(r.push(e.value),i.push(e.data))}),r.length)&&n.push({column:e,field:t,property:t,values:r,datas:i})}),n},updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,(0,_vue.nextTick)()}}),e)},setupGrid(e){return e.extendTableMethods(tableFilterMethodKeys)},setupGantt(e){return e.extendTableMethods(tableFilterMethodKeys)}});
1
+ var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,hooks}=_ui.VxeUI,tableFilterMethodKeys=["openFilter","setFilter","clearFilter","saveFilterPanel","saveFilterPanelByEvent","resetFilterPanel","resetFilterPanelByEvent","getCheckedFilters","updateFilterOptionStatus"];hooks.add("tableFilterModule",{setupTable(g){let C=g.xeGrid||g.xeGantt,{props:d,reactData:h,internalData:a}=g,{refElem:n,refTableFilter:k}=g.getRefMaps(),{computeFilterOpts:b,computeMouseOpts:f}=g.getComputeMaps();var e={checkFilterOptions(){var e=h.filterStore,t=e.column;t&&(t=t.filters||[],e.isAllSelected=t.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&t.some(e=>e._checked))},triggerFilterEvent(e,t,l){let{initStore:r,filterStore:p}=h,_=a.elemStore;if(p.column===t&&p.visible)p.visible=!1;else{let o=n.value,{scrollTop:s,scrollLeft:c,visibleHeight:d,visibleWidth:h}=(0,_dom.getDomNode)();let f=b.value.transfer,F=o.getBoundingClientRect(),v=e.currentTarget;var i=t?t.filterRender:null;let m=i&&(0,_utils.isEnableConf)(i)?renderer.get(i.name):null;g.handleFilterOptions(t),a._currFilterParams=l,p.style=null,p.visible=!0,r.filter=!0,(0,_vue.nextTick)(()=>{if((0,_util.getRefElem)(_["main-header-scroll"])){var r=k.value,r=r?r.getRefMaps().refElem.value:null;if(r){var i=v.getBoundingClientRect(),n=r.querySelector(".vxe-table--filter-header"),a=r.querySelector(".vxe-table--filter-footer"),r=r.offsetWidth,u=r/2;let e=0,t=0,l=0;f?(e=i.left-u+c,t=i.top+v.clientHeight+s,l=Math.min(Math.max(F.height,Math.floor(d/2)),Math.max(80,d-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-28)),e<16?e=16:e>h-r-16&&(e=h-r-16)):(e=i.left-F.left-u,t=i.top-F.top+v.clientHeight,l=Math.max(40,o.clientHeight-t-(n?n.clientHeight:0)-(a?a.clientHeight:0)-14),e<1?e=1:e>o.clientWidth-r-1&&(e=o.clientWidth-r-1),C&&(u=C.getRefMaps().refElem.value)&&(i=u.getBoundingClientRect(),t+=F.top-i.top)),p.style={top:(0,_dom.toCssUnit)(t),left:(0,_dom.toCssUnit)(e)},m&&!m.tableFilterAutoHeight&&(l=0),p.maxHeight=l}}})}g.dispatchEvent("filter-visible",{column:t,field:t.field,property:t.field,filterList:g.getCheckedFilters(),visible:p.visible},e)},handleClearFilter(e){if(e){var{filters:l,filterRender:r}=e;if(l){r=(0,_utils.isEnableConf)(r)?renderer.get(r.name):null;let t=e.filterResetMethod||(r?r.tableFilterResetMethod||r.filterResetMethod:null);l.forEach(e=>{e._checked=!1,e.checked=!1,t||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),t&&t({options:l,column:e,$table:g})}}},handleColumnConfirmFilter(e,t){var l=d.mouseConfig;let{scrollXLoad:r,scrollYLoad:i}=h;var n=b.value,a=f.value,{field:u,filters:o}=e;let s=[],c=[];(o||[]).forEach(e=>{e.checked&&(s.push(e.value),c.push(e.data))});o=g.getCheckedFilters(),e={$table:g,$event:t,column:e,field:u,property:u,values:s,datas:c,filters:o,filterList:o};return n.remote||(g.handleTableData(!0),g.checkSelectionStatus()),l&&a.area&&g.handleFilterEvent&&g.handleFilterEvent(t,e),t&&g.dispatchEvent("filter-change",e,t),g.closeFilter(),g.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=h;if(r||e||i||t)return(r||e)&&g.updateScrollXSpace(),(i||t)&&g.updateScrollYSpace(),g.refreshScroll()}).then(()=>(g.updateCellAreas(),g.recalculate(!0))).then(()=>{setTimeout(()=>g.recalculate(),50)})},confirmFilterEvent(e,t){t&&g.handleColumnConfirmFilter(t,e)},handleFilterChangeRadioOption(e,t,l){var r=h.filterStore,r=r.column;r&&((r.filters||[]).forEach(e=>{e._checked=!1}),l._checked=t,g.checkFilterOptions(),g.handleFilterConfirmFilter(e,r))},handleFilterChangeMultipleOption(e,t,l){l._checked=t,g.checkFilterOptions()},handleFilterChangeOption(e,t,l){var r=h.filterStore,i=a.fullColumnIdData;let n=r.column;n||(i=i[l._colId])&&(n=i.column,r.column=n),n&&(n.filterMultiple?g.handleFilterChangeMultipleOption(e,t,l):g.handleFilterChangeRadioOption(e,t,l))},handleFilterConfirmFilter(e,t){t&&((t.filters||[]).forEach(e=>{e.checked=e._checked}),g.confirmFilterEvent(e,t))},handleFilterResetFilter(e,t){t&&(g.handleClearFilter(t),g.confirmFilterEvent(e,t),e)&&g.dispatchEvent("clear-filter",{filterList:[]},e)}};return Object.assign(Object.assign({},{openFilter(e){let r=(0,_util.handleFieldOrColumn)(g,e);if(r&&r.filters){let t=a.elemStore,l=r.fixed;return g.scrollToColumn(r).then(()=>{var e=(0,_util.getRefElem)(t[`${l||"main"}-header-wrapper`]||t["main-header-wrapper"]);e&&(e=e.querySelector(`.vxe-header--column.${r.id} .vxe-cell--filter`),(0,_dom.triggerEvent)(e,"click"))})}return(0,_vue.nextTick)()},setFilter(e,t,l){var r=h.filterStore,e=(0,_util.handleFieldOrColumn)(g,e);if(e&&e.filters){if(e.filters=(0,_util.toFilters)(t||[],e.id),l)return g.handleColumnConfirmFilter(e,null);r.visible&&g.handleFilterOptions(e)}return(0,_vue.nextTick)()},clearFilter(e){var t=h.filterStore,l=a.tableFullColumn,r=b.value;let i;return e?(i=(0,_util.handleFieldOrColumn)(g,e))&&g.handleClearFilter(i):l.forEach(g.handleClearFilter),e&&i===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),r.remote?(0,_vue.nextTick)():g.updateData()},saveFilter(e){return e&&(e=(0,_util.handleFieldOrColumn)(g,e),g.handleFilterConfirmFilter(null,e)),(0,_vue.nextTick)()},saveFilterByEvent(e,t){return t&&(t=(0,_util.handleFieldOrColumn)(g,t),g.handleFilterConfirmFilter(e,t)),(0,_vue.nextTick)()},resetFilter(e){return e&&(e=(0,_util.handleFieldOrColumn)(g,e),g.handleFilterResetFilter(null,e)),(0,_vue.nextTick)()},resetFilterByEvent(e,t){return t&&(t=(0,_util.handleFieldOrColumn)(g,t),g.handleFilterResetFilter(e,t)),(0,_vue.nextTick)()},saveFilterPanel(){var e=h.filterStore;return g.handleFilterConfirmFilter(null,e.column||null),(0,_vue.nextTick)()},saveFilterPanelByEvent(e){var t=h.filterStore;return g.handleFilterConfirmFilter(e,t.column||null),(0,_vue.nextTick)()},resetFilterPanel(){var e=h.filterStore;return g.handleFilterResetFilter(null,e.column||null),(0,_vue.nextTick)()},resetFilterPanelByEvent(e){var t=h.filterStore;return g.handleFilterResetFilter(e,t.column||null),(0,_vue.nextTick)()},getCheckedFilters(){var e=a.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e,l=l||[];let r=[],i=[];l&&(l.forEach(e=>{e.checked&&(r.push(e.value),i.push(e.data))}),r.length)&&n.push({column:e,field:t,property:t,values:r,datas:i})}),n},updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,(0,_vue.nextTick)()}}),e)},setupGrid(e){return e.extendTableMethods(tableFilterMethodKeys)},setupGantt(e){return e.extendTableMethods(tableFilterMethodKeys)}});
@@ -16,12 +16,16 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
16
  const {
17
17
  getI18n,
18
18
  getIcon,
19
- renderer
19
+ renderer,
20
+ renderEmptyElement
20
21
  } = _ui.VxeUI;
21
22
  var _default = exports.default = (0, _comp.defineVxeComponent)({
22
23
  name: 'VxeTableFilterPanel',
23
24
  props: {
24
- filterStore: Object
25
+ filterStore: {
26
+ type: Object,
27
+ default: () => ({})
28
+ }
25
29
  },
26
30
  setup(props, context) {
27
31
  const xID = _xeUtils.default.uniqueId();
@@ -48,17 +52,25 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
48
52
  const {
49
53
  filterStore
50
54
  } = props;
51
- return filterStore && filterStore.options.some(option => option.checked);
55
+ const {
56
+ column
57
+ } = filterStore;
58
+ return column && column.filters && column.filters.some(option => option.checked);
52
59
  });
53
60
  // 全部筛选事件
54
61
  const filterCheckAllEvent = (evnt, value) => {
55
62
  const {
56
63
  filterStore
57
64
  } = props;
58
- filterStore.options.forEach(option => {
59
- option._checked = value;
60
- option.checked = value;
61
- });
65
+ const {
66
+ column
67
+ } = filterStore;
68
+ if (column && column.filters) {
69
+ column.filters.forEach(option => {
70
+ option._checked = value;
71
+ option.checked = value;
72
+ });
73
+ }
62
74
  filterStore.isAllSelected = value;
63
75
  filterStore.isIndeterminate = false;
64
76
  };
@@ -67,10 +79,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
67
79
  *************************/
68
80
  // 确认筛选
69
81
  const confirmFilter = evnt => {
82
+ const {
83
+ filterStore
84
+ } = props;
70
85
  if (!evnt) {
71
86
  (0, _log.warnLog)('vxe.error.delFunc', ['confirmFilter', 'saveFilterPanelByEvent']);
72
87
  }
73
- $xeTable.handleFilterConfirmFilter(evnt || new Event('click'));
88
+ $xeTable.handleFilterConfirmFilter(evnt || new Event('click'), filterStore.column || null);
74
89
  };
75
90
  // (单选)筛选发生改变
76
91
  const changeRadioOption = (evnt, checked, item) => {
@@ -82,7 +97,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
82
97
  * @param {Event} evnt 事件
83
98
  */
84
99
  const resetFilter = evnt => {
85
- $xeTable.handleFilterResetFilter(evnt);
100
+ const {
101
+ filterStore
102
+ } = props;
103
+ $xeTable.handleFilterResetFilter(evnt, filterStore.column || null);
86
104
  };
87
105
  // (多选)筛选发生改变
88
106
  const changeMultipleOption = (evnt, checked, item) => {
@@ -96,7 +114,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
96
114
  const {
97
115
  filterStore
98
116
  } = props;
99
- if (filterStore.multiple) {
117
+ const {
118
+ column
119
+ } = filterStore;
120
+ if (column && column.filterMultiple) {
100
121
  filterCheckAllEvent(evnt, checked);
101
122
  } else {
102
123
  resetFilter(evnt);
@@ -120,10 +141,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
120
141
  } = props;
121
142
  const {
122
143
  column,
123
- multiple,
124
144
  maxHeight
125
145
  } = filterStore;
126
- const slots = column ? column.slots : null;
146
+ if (!column) {
147
+ return [];
148
+ }
149
+ const {
150
+ filterMultiple,
151
+ filters,
152
+ slots
153
+ } = column;
154
+ const filterOptions = filters || [];
127
155
  const filterSlot = slots ? slots.filter : null;
128
156
  const params = Object.assign({}, tableInternalData._currFilterParams, {
129
157
  $panel: $xeFilterPanel,
@@ -137,7 +165,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
137
165
  maxHeight: (0, _dom.toCssUnit)(maxHeight)
138
166
  } : {}
139
167
  }, $xeTable.callSlot(filterSlot, params))];
140
- } else if (rtFilter) {
168
+ } else if (filterRender && rtFilter) {
141
169
  return [(0, _vue.h)('div', {
142
170
  class: 'vxe-table--filter-template',
143
171
  style: maxHeight ? {
@@ -145,8 +173,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
145
173
  } : {}
146
174
  }, (0, _vn.getSlotVNs)(rtFilter(filterRender, params)))];
147
175
  }
148
- const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some(item => item._checked);
149
- const isAllIndeterminate = multiple && filterStore.isIndeterminate;
176
+ const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some(item => item._checked);
177
+ const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
150
178
  return [(0, _vue.h)('ul', {
151
179
  class: 'vxe-table--filter-header'
152
180
  }, [(0, _vue.h)('li', {
@@ -154,11 +182,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
154
182
  'is--checked': isAllChecked,
155
183
  'is--indeterminate': isAllIndeterminate
156
184
  }],
157
- title: getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter'),
185
+ title: getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter'),
158
186
  onClick: evnt => {
159
187
  changeAllOption(evnt, !filterStore.isAllSelected);
160
188
  }
161
- }, (multiple ? [(0, _vue.h)('span', {
189
+ }, (filterMultiple ? [(0, _vue.h)('span', {
162
190
  class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
163
191
  })] : []).concat([(0, _vue.h)('span', {
164
192
  class: 'vxe-checkbox--label'
@@ -167,7 +195,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
167
195
  style: maxHeight ? {
168
196
  maxHeight: (0, _dom.toCssUnit)(maxHeight)
169
197
  } : {}
170
- }, filterStore.options.map(item => {
198
+ }, filterOptions.map(item => {
171
199
  const isChecked = item._checked;
172
200
  const isIndeterminate = false;
173
201
  return (0, _vue.h)('li', {
@@ -178,7 +206,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
178
206
  onClick: evnt => {
179
207
  changeOption(evnt, !item._checked, item);
180
208
  }
181
- }, (multiple ? [(0, _vue.h)('span', {
209
+ }, (filterMultiple ? [(0, _vue.h)('span', {
182
210
  class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
183
211
  })] : []).concat([(0, _vue.h)('span', {
184
212
  class: 'vxe-checkbox--label'
@@ -190,17 +218,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
190
218
  filterStore
191
219
  } = props;
192
220
  const {
193
- column,
194
- multiple
221
+ column
195
222
  } = filterStore;
223
+ if (!column) {
224
+ return [];
225
+ }
196
226
  const filterOpts = computeFilterOpts.value;
197
227
  const hasCheckOption = computeHasCheckOption.value;
198
228
  const {
199
- filterRender
229
+ filterRender,
230
+ filterMultiple
200
231
  } = column;
201
232
  const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
202
233
  const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
203
- return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true) ? [(0, _vue.h)('div', {
234
+ return (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : filterMultiple) ? [(0, _vue.h)('div', {
204
235
  class: 'vxe-table--filter-footer'
205
236
  }, [(0, _vue.h)('button', {
206
237
  class: {
@@ -221,11 +252,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
221
252
  } = tableReactData;
222
253
  const {
223
254
  visible,
224
- multiple,
225
255
  column
226
256
  } = filterStore;
257
+ if (!column) {
258
+ return renderEmptyElement($xeFilterPanel);
259
+ }
227
260
  const filterRender = column ? column.filterRender : null;
228
- const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
261
+ const compConf = filterRender && (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
229
262
  const filterClassName = compConf ? compConf.tableFilterClassName || compConf.filterClassName : '';
230
263
  const params = Object.assign({}, tableInternalData._currFilterParams, {
231
264
  $panel: $xeFilterPanel,
@@ -250,7 +283,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
250
283
  class: ['vxe-table--filter-wrapper', 'filter--prevent-default', className, (0, _dom.getPropClass)(filterClassName, params), {
251
284
  [`size--${vSize}`]: vSize,
252
285
  'is--animat': tableProps.animat,
253
- 'is--multiple': multiple,
286
+ 'is--multiple': column.filterMultiple,
254
287
  'is--active': visible
255
288
  }],
256
289
  style: filterStore.style
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../../ui/src/comp"),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_vn=require("../../../ui/src/vn"),_log=require("../../../ui/src/log"),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,getIcon,renderer}=_ui.VxeUI;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableFilterPanel",props:{filterStore:Object},setup(p,e){var t=_xeUtils.default.uniqueId();let m=(0,_vue.inject)("$xeTable",{}),{reactData:h,internalData:f,getComputeMaps:l}=m,b=l().computeFilterOpts,x=(0,_vue.ref)(),r={refElem:x},C={xID:t,props:p,context:e,getRefMaps:()=>r},g=(0,_vue.computed)(()=>{var e=p.filterStore;return e&&e.options.some(e=>e.checked)}),i=(e,t)=>{var l=p.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},F=e=>{e||(0,_log.warnLog)("vxe.error.delFunc",["confirmFilter","saveFilterPanelByEvent"]),m.handleFilterConfirmFilter(e||new Event("click"))};let E=e=>{m.handleFilterResetFilter(e)};let I=(e,t,l)=>{m.handleFilterChangeOption(e,t,l)},O=(e,t)=>{var l=p.filterStore;l.multiple?i(0,t):E(e)};t={changeRadioOption:(e,t,l)=>{m.handleFilterChangeRadioOption(e,t,l)},changeMultipleOption:(e,t,l)=>{m.handleFilterChangeMultipleOption(e,t,l)},changeAllOption:O,changeOption:I,confirmFilter:F,resetFilter:E};Object.assign(C,t);return C.renderVN=()=>{var e=p.filterStore,t=h.initStore,{visible:l,multiple:r,column:i}=e,a=i?i.filterRender:null,n=(0,_utils.isEnableConf)(a)?renderer.get(a.name):null,s=n?n.tableFilterClassName||n.filterClassName:"",o=Object.assign({},f._currFilterParams,{$panel:C,$table:m}),u=m.props,c=m.getComputeMaps().computeSize,c=c.value,{transfer:d,destroyOnClose:v,className:_}=b.value;return(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!d},[(0,_vue.h)("div",{ref:x,class:["vxe-table--filter-wrapper","filter--prevent-default",_,(0,_dom.getPropClass)(s,o),{["size--"+c]:c,"is--animat":u.animat,"is--multiple":r,"is--active":l}],style:e.style},t.filter&&(!v||l)&&i?((e,t)=>{let l=p.filterStore,{column:r,multiple:i,maxHeight:a}=l;var n=r?r.slots:null,n=n?n.filter:null,s=Object.assign({},f._currFilterParams,{$panel:C,$table:m}),t=t?t.renderTableFilter||t.renderFilter:null;return n?[(0,_vue.h)("div",{class:"vxe-table--filter-template",style:a?{maxHeight:(0,_dom.toCssUnit)(a)}:{}},m.callSlot(n,s))]:t?[(0,_vue.h)("div",{class:"vxe-table--filter-template",style:a?{maxHeight:(0,_dom.toCssUnit)(a)}:{}},(0,_vn.getSlotVNs)(t(e,s)))]:(n=i?l.isAllSelected:!l.options.some(e=>e._checked),t=i&&l.isIndeterminate,[(0,_vue.h)("ul",{class:"vxe-table--filter-header"},[(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":n,"is--indeterminate":t}],title:getI18n(i?"vxe.table.allTitle":"vxe.table.allFilter"),onClick:e=>{O(e,!l.isAllSelected)}},(i?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:n?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),(0,_vue.h)("ul",{class:"vxe-table--filter-body",style:a?{maxHeight:(0,_dom.toCssUnit)(a)}:{}},l.options.map(t=>{var e=t._checked;return(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":t._checked}],title:t.label,onClick:e=>{I(e,!t._checked,t)}},(i?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])})(a,n).concat((()=>{var e=p.filterStore,{column:t,multiple:l}=e,r=b.value,i=g.value,t=t.filterRender,t=(0,_utils.isEnableConf)(t)?renderer.get(t.name):null,i=!i&&!e.isAllSelected&&!e.isIndeterminate;return l&&(!t||!1!==t.showTableFilterFooter&&!1!==t.showFilterFooter&&!1!==t.isFooter)?[(0,_vue.h)("div",{class:"vxe-table--filter-footer"},[(0,_vue.h)("button",{class:{"is--disabled":i},disabled:i,onClick:F},r.confirmButtonText||getI18n("vxe.table.confirmFilter")),(0,_vue.h)("button",{onClick:E},r.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]})()):[])])},C},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../../ui/src/comp"),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_vn=require("../../../ui/src/vn"),_log=require("../../../ui/src/log"),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,getIcon,renderer,renderEmptyElement}=_ui.VxeUI;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableFilterPanel",props:{filterStore:{type:Object,default:()=>({})}},setup(_,e){var t=_xeUtils.default.uniqueId();let f=(0,_vue.inject)("$xeTable",{}),{reactData:p,internalData:m,getComputeMaps:l}=f,h=l().computeFilterOpts,b=(0,_vue.ref)(),r={refElem:b},x={xID:t,props:_,context:e,getRefMaps:()=>r},C=(0,_vue.computed)(()=>{var e=_.filterStore,e=e.column;return e&&e.filters&&e.filters.some(e=>e.checked)}),i=(e,t)=>{var l=_.filterStore,r=l.column;r&&r.filters&&r.filters.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},g=e=>{var t=_.filterStore;e||(0,_log.warnLog)("vxe.error.delFunc",["confirmFilter","saveFilterPanelByEvent"]),f.handleFilterConfirmFilter(e||new Event("click"),t.column||null)};let E=e=>{var t=_.filterStore;f.handleFilterResetFilter(e,t.column||null)};let F=(e,t,l)=>{f.handleFilterChangeOption(e,t,l)},I=(e,t)=>{var l=_.filterStore,l=l.column;l&&l.filterMultiple?i(0,t):E(e)};t={changeRadioOption:(e,t,l)=>{f.handleFilterChangeRadioOption(e,t,l)},changeMultipleOption:(e,t,l)=>{f.handleFilterChangeMultipleOption(e,t,l)},changeAllOption:I,changeOption:F,confirmFilter:g,resetFilter:E};Object.assign(x,t);return x.renderVN=()=>{var e,t,l,r,i,a,n,s,o,u=_.filterStore,c=p.initStore,{visible:d,column:v}=u;return v?(i=(t=(e=v?v.filterRender:null)&&(0,_utils.isEnableConf)(e)?renderer.get(e.name):null)?t.tableFilterClassName||t.filterClassName:"",n=Object.assign({},m._currFilterParams,{$panel:x,$table:f}),l=f.props,a=f.getComputeMaps().computeSize,a=a.value,{transfer:s,destroyOnClose:r,className:o}=h.value,(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!s},[(0,_vue.h)("div",{ref:b,class:["vxe-table--filter-wrapper","filter--prevent-default",o,(0,_dom.getPropClass)(i,n),{["size--"+a]:a,"is--animat":l.animat,"is--multiple":v.filterMultiple,"is--active":d}],style:u.style},c.filter&&(!r||d)&&v?((e,t)=>{let l=_.filterStore;var{column:r,maxHeight:i}=l;if(!r)return[];let{filterMultiple:a,filters:n,slots:s}=r;var r=n||[],o=s?s.filter:null,u=Object.assign({},m._currFilterParams,{$panel:x,$table:f}),t=t?t.renderTableFilter||t.renderFilter:null;return o?[(0,_vue.h)("div",{class:"vxe-table--filter-template",style:i?{maxHeight:(0,_dom.toCssUnit)(i)}:{}},f.callSlot(o,u))]:e&&t?[(0,_vue.h)("div",{class:"vxe-table--filter-template",style:i?{maxHeight:(0,_dom.toCssUnit)(i)}:{}},(0,_vn.getSlotVNs)(t(e,u)))]:(o=a?l.isAllSelected:!r.some(e=>e._checked),t=a&&l.isIndeterminate,[(0,_vue.h)("ul",{class:"vxe-table--filter-header"},[(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":o,"is--indeterminate":t}],title:getI18n(a?"vxe.table.allTitle":"vxe.table.allFilter"),onClick:e=>{I(e,!l.isAllSelected)}},(a?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:o?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),(0,_vue.h)("ul",{class:"vxe-table--filter-body",style:i?{maxHeight:(0,_dom.toCssUnit)(i)}:{}},r.map(t=>{var e=t._checked;return(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":t._checked}],title:t.label,onClick:e=>{F(e,!t._checked,t)}},(a?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])})(e,t).concat((s=_.filterStore,(o=s.column)&&(i=h.value,n=C.value,{filterRender:o,filterMultiple:a}=o,o=(0,_utils.isEnableConf)(o)?renderer.get(o.name):null,n=!n&&!s.isAllSelected&&!s.isIndeterminate,o?!1!==o.showTableFilterFooter&&!1!==o.showFilterFooter&&!1!==o.isFooter:a)?[(0,_vue.h)("div",{class:"vxe-table--filter-footer"},[(0,_vue.h)("button",{class:{"is--disabled":n},disabled:n,onClick:g},i.confirmButtonText||getI18n("vxe.table.confirmFilter")),(0,_vue.h)("button",{onClick:E},i.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[])):[])])):renderEmptyElement(x)},x},render(){return this.renderVN()}});