vxe-table 3.15.27 → 3.15.29

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 (48) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/index.js +11 -3
  6. package/es/table/module/filter/mixin.js +20 -8
  7. package/es/table/src/methods.js +192 -55
  8. package/es/table/src/table.js +6 -3
  9. package/es/table/style.css +6 -0
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +6 -0
  14. package/es/vxe-table/style.min.css +1 -1
  15. package/lib/index.css +1 -1
  16. package/lib/index.min.css +1 -1
  17. package/lib/index.umd.js +264 -79
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/style.min.css +1 -1
  21. package/lib/table/index.js +10 -3
  22. package/lib/table/index.min.js +1 -1
  23. package/lib/table/module/filter/mixin.js +26 -8
  24. package/lib/table/module/filter/mixin.min.js +1 -1
  25. package/lib/table/src/methods.js +218 -61
  26. package/lib/table/src/methods.min.js +1 -1
  27. package/lib/table/src/table.js +8 -5
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/style/style.css +6 -0
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +1 -1
  32. package/lib/ui/index.min.js +1 -1
  33. package/lib/ui/src/log.js +1 -1
  34. package/lib/ui/src/log.min.js +1 -1
  35. package/lib/vxe-table/style/style.css +6 -0
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +1 -1
  38. package/packages/table/index.ts +10 -3
  39. package/packages/table/module/filter/mixin.ts +27 -12
  40. package/packages/table/src/methods.ts +196 -57
  41. package/packages/table/src/table.ts +6 -3
  42. package/styles/components/table.scss +14 -0
  43. /package/es/{iconfont.1747094784148.ttf → iconfont.1747286367921.ttf} +0 -0
  44. /package/es/{iconfont.1747094784148.woff → iconfont.1747286367921.woff} +0 -0
  45. /package/es/{iconfont.1747094784148.woff2 → iconfont.1747286367921.woff2} +0 -0
  46. /package/lib/{iconfont.1747094784148.ttf → iconfont.1747286367921.ttf} +0 -0
  47. /package/lib/{iconfont.1747094784148.woff → iconfont.1747286367921.woff} +0 -0
  48. /package/lib/{iconfont.1747094784148.woff2 → iconfont.1747286367921.woff2} +0 -0
@@ -49,6 +49,7 @@ var _default = exports.default = {
49
49
  if (column && column.filters) {
50
50
  column.filters = (0, _util.toFilters)(options || []);
51
51
  if (isUpdate) {
52
+ // 已废弃,即将去掉事件触发 new Event('click') -> null
52
53
  return $xeTable.handleColumnConfirmFilter(column, new Event('click'));
53
54
  }
54
55
  }
@@ -372,8 +373,18 @@ var _default = exports.default = {
372
373
  * @param {Event} evnt 事件
373
374
  */
374
375
  handleFilterResetFilter(evnt) {
375
- this.handleClearFilter(this.filterStore.column);
376
- this.confirmFilterEvent(evnt);
376
+ const $xeTable = this;
377
+ const reactData = $xeTable;
378
+ const {
379
+ filterStore
380
+ } = reactData;
381
+ $xeTable.handleClearFilter(filterStore.column);
382
+ $xeTable.confirmFilterEvent(evnt);
383
+ if (evnt) {
384
+ $xeTable.dispatchEvent('clear-filter', {
385
+ filterList: []
386
+ }, evnt);
387
+ }
377
388
  },
378
389
  /**
379
390
  * 清空指定列的筛选条件
@@ -381,17 +392,23 @@ var _default = exports.default = {
381
392
  * @param {String} fieldOrColumn 列
382
393
  */
383
394
  _clearFilter(fieldOrColumn) {
395
+ const $xeTable = this;
396
+ const reactData = $xeTable;
397
+ const internalData = $xeTable;
384
398
  const {
385
399
  filterStore
386
- } = this;
400
+ } = reactData;
401
+ const {
402
+ tableFullColumn
403
+ } = internalData;
387
404
  let column;
388
405
  if (fieldOrColumn) {
389
- column = (0, _util.handleFieldOrColumn)(this, fieldOrColumn);
406
+ column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
390
407
  if (column) {
391
- this.handleClearFilter(column);
408
+ $xeTable.handleClearFilter(column);
392
409
  }
393
410
  } else {
394
- this.visibleColumn.forEach(this.handleClearFilter);
411
+ tableFullColumn.forEach($xeTable.handleClearFilter);
395
412
  }
396
413
  if (!fieldOrColumn || column !== filterStore.column) {
397
414
  Object.assign(filterStore, {
@@ -404,12 +421,13 @@ var _default = exports.default = {
404
421
  visible: false
405
422
  });
406
423
  }
407
- return this.updateData();
424
+ return $xeTable.updateData();
408
425
  },
409
426
  _updateFilterOptionStatus(item, checked) {
427
+ const $xeTable = this;
410
428
  item._checked = checked;
411
429
  item.checked = checked;
412
- return this.$nextTick();
430
+ return $xeTable.$nextTick();
413
431
  }
414
432
  }
415
433
  };
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _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=_ui.VxeUI.renderer;var _default=exports.default={methods:{_openFilter(e){let i=(0,_util.handleFieldOrColumn)(this,e);if(i&&i.filters){let t=this.elemStore,l=i.fixed;return this.scrollToColumn(i).then(()=>{var e=t[`${l||"main"}-header-wrapper`]||t["main-header-wrapper"];e&&(e=e.querySelector(`.vxe-header--column.${i.id} .vxe-cell--filter`),(0,_dom.triggerEvent)(e,"click"))})}return this.$nextTick()},_setFilter(e,t,l){e=(0,_util.handleFieldOrColumn)(this,e);return e&&e.filters&&(e.filters=(0,_util.toFilters)(t||[]),l)?this.handleColumnConfirmFilter(e,new Event("click")):this.$nextTick()},checkFilterOptions(){var e=this.filterStore;e.isAllSelected=e.options.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&e.options.some(e=>e._checked)},triggerFilterEvent(l,r,n){let F=this;var s=F,o=F;let e=this.filterStore;if(e.column===r&&e.visible)e.visible=!1;else{let{initStore:e,filterStore:p}=s,t=o.elemStore;if(p.column===r&&p.visible)p.visible=!1;else{let a=F.$refs.refElem,{scrollTop:h,scrollLeft:c,visibleHeight:u,visibleWidth:d}=(0,_dom.getDomNode)();let f=F.computeFilterOpts.transfer,m=a.getBoundingClientRect(),v=l.currentTarget;var{filters:s,filterMultiple:_,filterRender:g}=r,g=(0,_utils.isEnableConf)(g)?renderer.get(g.name):null;let i=r.filterRecoverMethod||(g?g.tableFilterRecoverMethod||g.filterRecoverMethod:null);o._currFilterParams=n,Object.assign(p,{multiple:_,options:s,column:r,style:null}),p.options.forEach(e=>{var{_checked:t,checked:l}=e;(e._checked=l)||t===l||i&&i({option:e,column:r,$table:F})}),this.checkFilterOptions(),p.visible=!0,e.filter=!0,F.$nextTick(()=>{if((0,_util.getRefElem)(t["main-header-scroll"])){var i=F.$refs.refTableFilter,i=i?i.$el:null;if(i){var r=v.getBoundingClientRect(),n=i.querySelector(".vxe-table--filter-header"),s=i.querySelector(".vxe-table--filter-footer"),i=i.offsetWidth,o=i/2;let e=0,t=0,l=0;f?(e=r.left-o+c,t=r.top+v.clientHeight+h,l=Math.min(Math.max(m.height,Math.floor(u/2)),Math.max(80,u-t-(n?n.clientHeight:0)-(s?s.clientHeight:0)-28)),e<16?e=16:e>d-i-16&&(e=d-i-16)):(e=r.left-m.left-o,t=r.top-m.top+v.clientHeight,l=Math.max(40,a.clientHeight-t-(n?n.clientHeight:0)-(s?s.clientHeight:0)-14),e<1?e=1:e>a.clientWidth-i-1&&(e=a.clientWidth-i-1)),p.style={top:(0,_dom.toCssUnit)(t),left:(0,_dom.toCssUnit)(e)},p.maxHeight=l}}})}F.dispatchEvent("filter-visible",{column:r,field:r.field,property:r.field,filterList:F.getCheckedFilters(),visible:p.visible},l)}},handleFilterConfirmFilter(e){var t=this.filterStore;t.options.forEach(e=>{e.checked=e._checked}),this.confirmFilterEvent(e)},_saveFilterPanel(){return this.handleFilterConfirmFilter(null),this.$nextTick()},_saveFilterPanelByEvent(e){return this.handleFilterConfirmFilter(e),this.$nextTick()},_resetFilterPanel(){return this.handleFilterResetFilter(null),this.$nextTick()},_resetFilterPanelByEvent(e){return this.handleFilterResetFilter(e),this.$nextTick()},_getCheckedFilters(){var e=this.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e;let i=[],r=[];l&&l.length&&(l.forEach(e=>{e.checked&&(i.push(e.value),r.push(e.data))}),i.length)&&n.push({column:e,field:t,property:t,values:i,datas:r})}),n},handleColumnConfirmFilter(e,t){let l=this;var i=l.mouseConfig;let{scrollXLoad:r,scrollYLoad:n}=l;var s=l.computeFilterOpts,o=l.computeMouseOpts,a=e.field;let h=[],c=[];e.filters.forEach(e=>{e.checked&&(h.push(e.value),c.push(e.data))});var u=this.getCheckedFilters(),e={$table:this,$event:t,column:e,field:a,property:a,values:h,datas:c,filters:u,filterList:u};return s.remote||(this.handleTableData(!0),this.checkSelectionStatus()),i&&o.area&&this.handleFilterEvent&&l.handleFilterEvent(t,e),t&&l.emitEvent("filter-change",e,t),l.closeFilter(),l.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=this;if(r||e||n||t)return(r||e)&&l.updateScrollXSpace(),(n||t)&&l.updateScrollYSpace(),l.refreshScroll()}).then(()=>(l.updateCellAreas(),l.recalculate(!0))).then(()=>{setTimeout(()=>l.recalculate(),50)})},confirmFilterEvent(e){var t=this.filterStore,t=t.column;this.handleColumnConfirmFilter(t,e)},handleClearFilter(e){if(e){var{filters:l,filterRender:i}=e;if(l){i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null;let t=e.filterResetMethod||(i?i.tableFilterResetMethod||i.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:this})}}},handleFilterResetFilter(e){this.handleClearFilter(this.filterStore.column),this.confirmFilterEvent(e)},_clearFilter(e){var t=this.filterStore;let l;return e?(l=(0,_util.handleFieldOrColumn)(this,e))&&this.handleClearFilter(l):this.visibleColumn.forEach(this.handleClearFilter),e&&l===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),this.updateData()},_updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,this.$nextTick()}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _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=_ui.VxeUI.renderer;var _default=exports.default={methods:{_openFilter(e){let i=(0,_util.handleFieldOrColumn)(this,e);if(i&&i.filters){let t=this.elemStore,l=i.fixed;return this.scrollToColumn(i).then(()=>{var e=t[`${l||"main"}-header-wrapper`]||t["main-header-wrapper"];e&&(e=e.querySelector(`.vxe-header--column.${i.id} .vxe-cell--filter`),(0,_dom.triggerEvent)(e,"click"))})}return this.$nextTick()},_setFilter(e,t,l){e=(0,_util.handleFieldOrColumn)(this,e);return e&&e.filters&&(e.filters=(0,_util.toFilters)(t||[]),l)?this.handleColumnConfirmFilter(e,new Event("click")):this.$nextTick()},checkFilterOptions(){var e=this.filterStore;e.isAllSelected=e.options.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&e.options.some(e=>e._checked)},triggerFilterEvent(l,r,n){let F=this;var s=F,a=F;let e=this.filterStore;if(e.column===r&&e.visible)e.visible=!1;else{let{initStore:e,filterStore:p}=s,t=a.elemStore;if(p.column===r&&p.visible)p.visible=!1;else{let o=F.$refs.refElem,{scrollTop:h,scrollLeft:c,visibleHeight:u,visibleWidth:d}=(0,_dom.getDomNode)();let f=F.computeFilterOpts.transfer,m=o.getBoundingClientRect(),v=l.currentTarget;var{filters:s,filterMultiple:_,filterRender:g}=r,g=(0,_utils.isEnableConf)(g)?renderer.get(g.name):null;let i=r.filterRecoverMethod||(g?g.tableFilterRecoverMethod||g.filterRecoverMethod:null);a._currFilterParams=n,Object.assign(p,{multiple:_,options:s,column:r,style:null}),p.options.forEach(e=>{var{_checked:t,checked:l}=e;(e._checked=l)||t===l||i&&i({option:e,column:r,$table:F})}),this.checkFilterOptions(),p.visible=!0,e.filter=!0,F.$nextTick(()=>{if((0,_util.getRefElem)(t["main-header-scroll"])){var i=F.$refs.refTableFilter,i=i?i.$el:null;if(i){var r=v.getBoundingClientRect(),n=i.querySelector(".vxe-table--filter-header"),s=i.querySelector(".vxe-table--filter-footer"),i=i.offsetWidth,a=i/2;let e=0,t=0,l=0;f?(e=r.left-a+c,t=r.top+v.clientHeight+h,l=Math.min(Math.max(m.height,Math.floor(u/2)),Math.max(80,u-t-(n?n.clientHeight:0)-(s?s.clientHeight:0)-28)),e<16?e=16:e>d-i-16&&(e=d-i-16)):(e=r.left-m.left-a,t=r.top-m.top+v.clientHeight,l=Math.max(40,o.clientHeight-t-(n?n.clientHeight:0)-(s?s.clientHeight:0)-14),e<1?e=1:e>o.clientWidth-i-1&&(e=o.clientWidth-i-1)),p.style={top:(0,_dom.toCssUnit)(t),left:(0,_dom.toCssUnit)(e)},p.maxHeight=l}}})}F.dispatchEvent("filter-visible",{column:r,field:r.field,property:r.field,filterList:F.getCheckedFilters(),visible:p.visible},l)}},handleFilterConfirmFilter(e){var t=this.filterStore;t.options.forEach(e=>{e.checked=e._checked}),this.confirmFilterEvent(e)},_saveFilterPanel(){return this.handleFilterConfirmFilter(null),this.$nextTick()},_saveFilterPanelByEvent(e){return this.handleFilterConfirmFilter(e),this.$nextTick()},_resetFilterPanel(){return this.handleFilterResetFilter(null),this.$nextTick()},_resetFilterPanelByEvent(e){return this.handleFilterResetFilter(e),this.$nextTick()},_getCheckedFilters(){var e=this.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e;let i=[],r=[];l&&l.length&&(l.forEach(e=>{e.checked&&(i.push(e.value),r.push(e.data))}),i.length)&&n.push({column:e,field:t,property:t,values:i,datas:r})}),n},handleColumnConfirmFilter(e,t){let l=this;var i=l.mouseConfig;let{scrollXLoad:r,scrollYLoad:n}=l;var s=l.computeFilterOpts,a=l.computeMouseOpts,o=e.field;let h=[],c=[];e.filters.forEach(e=>{e.checked&&(h.push(e.value),c.push(e.data))});var u=this.getCheckedFilters(),e={$table:this,$event:t,column:e,field:o,property:o,values:h,datas:c,filters:u,filterList:u};return s.remote||(this.handleTableData(!0),this.checkSelectionStatus()),i&&a.area&&this.handleFilterEvent&&l.handleFilterEvent(t,e),t&&l.emitEvent("filter-change",e,t),l.closeFilter(),l.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=this;if(r||e||n||t)return(r||e)&&l.updateScrollXSpace(),(n||t)&&l.updateScrollYSpace(),l.refreshScroll()}).then(()=>(l.updateCellAreas(),l.recalculate(!0))).then(()=>{setTimeout(()=>l.recalculate(),50)})},confirmFilterEvent(e){var t=this.filterStore,t=t.column;this.handleColumnConfirmFilter(t,e)},handleClearFilter(e){if(e){var{filters:l,filterRender:i}=e;if(l){i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null;let t=e.filterResetMethod||(i?i.tableFilterResetMethod||i.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:this})}}},handleFilterResetFilter(e){var t=this.filterStore;this.handleClearFilter(t.column),this.confirmFilterEvent(e),e&&this.dispatchEvent("clear-filter",{filterList:[]},e)},_clearFilter(e){var t=this,l=t.filterStore,i=t.tableFullColumn;let r;return e?(r=(0,_util.handleFieldOrColumn)(t,e))&&t.handleClearFilter(r):i.forEach(t.handleClearFilter),e&&r===l.column||Object.assign(l,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),t.updateData()},_updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,this.$nextTick()}}};
@@ -37,8 +37,11 @@ function eqCellValue(row1, row2, field) {
37
37
  }
38
38
  return _xeUtils.default.isEqual(val1, val2);
39
39
  }
40
- function getNextSortOrder(_vm, column) {
41
- const orders = _vm.sortOpts.orders;
40
+ function getNextSortOrder($xeTable, column) {
41
+ const sortOpts = $xeTable.computeSortOpts;
42
+ const {
43
+ orders = []
44
+ } = sortOpts;
42
45
  const currOrder = column.order || null;
43
46
  const oIndex = orders.indexOf(currOrder) + 1;
44
47
  return orders[oIndex < orders.length ? oIndex : 0];
@@ -2395,8 +2398,66 @@ function removeFooterMerges($xeTable, merges) {
2395
2398
  }
2396
2399
  return rest;
2397
2400
  }
2398
- function clearAllSort(_vm) {
2399
- _vm.tableFullColumn.forEach(column => {
2401
+ function handleSortEvent($xeTable, evnt, sortConfs, isUpdate) {
2402
+ const sortOpts = $xeTable.computeSortOpts;
2403
+ const {
2404
+ multiple,
2405
+ remote,
2406
+ orders
2407
+ } = sortOpts;
2408
+ if (!_xeUtils.default.isArray(sortConfs)) {
2409
+ sortConfs = [sortConfs];
2410
+ }
2411
+ if (sortConfs && sortConfs.length) {
2412
+ if (!multiple) {
2413
+ sortConfs = [sortConfs[0]];
2414
+ clearAllSort($xeTable);
2415
+ }
2416
+ let firstColumn = null;
2417
+ sortConfs.forEach((confs, index) => {
2418
+ let {
2419
+ field,
2420
+ order
2421
+ } = confs;
2422
+ let column = field;
2423
+ if (_xeUtils.default.isString(field)) {
2424
+ column = $xeTable.getColumnByField(field);
2425
+ }
2426
+ if (!firstColumn) {
2427
+ firstColumn = column;
2428
+ }
2429
+ if (column && column.sortable) {
2430
+ if (orders && orders.indexOf(order) === -1) {
2431
+ order = getNextSortOrder($xeTable, column);
2432
+ }
2433
+ if (column.order !== order) {
2434
+ column.order = order;
2435
+ }
2436
+ column.sortTime = Date.now() + index;
2437
+ }
2438
+ });
2439
+ if (isUpdate) {
2440
+ if (!remote) {
2441
+ $xeTable.handleTableData(true);
2442
+ }
2443
+ }
2444
+ if (evnt) {
2445
+ $xeTable.handleColumnSortEvent(evnt, firstColumn);
2446
+ }
2447
+ return $xeTable.$nextTick().then(() => {
2448
+ updateRowOffsetTop($xeTable);
2449
+ $xeTable.updateCellAreas();
2450
+ return updateStyle($xeTable);
2451
+ });
2452
+ }
2453
+ return $xeTable.$nextTick();
2454
+ }
2455
+ function clearAllSort($xeTable) {
2456
+ const internalData = $xeTable;
2457
+ const {
2458
+ tableFullColumn
2459
+ } = internalData;
2460
+ tableFullColumn.forEach(column => {
2400
2461
  column.order = null;
2401
2462
  });
2402
2463
  }
@@ -3761,7 +3822,8 @@ function checkLastSyncScroll($xeTable, isRollX, isRollY) {
3761
3822
  const internalData = $xeTable;
3762
3823
  const {
3763
3824
  scrollXLoad,
3764
- scrollYLoad
3825
+ scrollYLoad,
3826
+ isAllOverflow
3765
3827
  } = reactData;
3766
3828
  const {
3767
3829
  lcsTimeout
@@ -3779,13 +3841,19 @@ function checkLastSyncScroll($xeTable, isRollX, isRollY) {
3779
3841
  internalData.inBodyScroll = false;
3780
3842
  internalData.inFooterScroll = false;
3781
3843
  internalData.scrollRenderType = '';
3782
- calcCellHeight($xeTable);
3844
+ if (!isAllOverflow) {
3845
+ calcCellHeight($xeTable);
3846
+ updateRowOffsetTop($xeTable);
3847
+ }
3783
3848
  if (isRollX && scrollXLoad) {
3784
3849
  $xeTable.updateScrollXData();
3785
3850
  }
3786
3851
  if (isRollY && scrollYLoad) {
3787
3852
  $xeTable.updateScrollYData().then(() => {
3788
- calcCellHeight($xeTable);
3853
+ if (!isAllOverflow) {
3854
+ calcCellHeight($xeTable);
3855
+ updateRowOffsetTop($xeTable);
3856
+ }
3789
3857
  $xeTable.updateScrollYSpace();
3790
3858
  });
3791
3859
  }
@@ -5436,6 +5504,7 @@ const Methods = {
5436
5504
  }
5437
5505
  _xeUtils.default.eachTree([targetColumn], column => {
5438
5506
  column.fixed = fixed;
5507
+ column.renderFixed = fixed;
5439
5508
  });
5440
5509
  $xeTable.saveCustomStore('update:fixed');
5441
5510
  if (!status) {
@@ -5461,6 +5530,7 @@ const Methods = {
5461
5530
  if (targetColumn && targetColumn.fixed) {
5462
5531
  _xeUtils.default.eachTree([targetColumn], column => {
5463
5532
  column.fixed = null;
5533
+ column.renderFixed = null;
5464
5534
  });
5465
5535
  $xeTable.saveCustomStore('update:fixed');
5466
5536
  if (!status) {
@@ -7236,7 +7306,16 @@ const Methods = {
7236
7306
  }
7237
7307
  }
7238
7308
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
7239
- handleTooltip($xeTable, evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
7309
+ const ctEl = tdEl.querySelector('.vxe-cell--wrapper');
7310
+ let ovEl = null;
7311
+ let tipEl = tdEl.querySelector(column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label');
7312
+ if (column.treeNode) {
7313
+ ovEl = tdEl.querySelector('.vxe-tree-cell');
7314
+ }
7315
+ if (!tipEl) {
7316
+ tipEl = ctEl;
7317
+ }
7318
+ handleTooltip($xeTable, evnt, tdEl, ovEl || ctEl, tipEl, params);
7240
7319
  }
7241
7320
  },
7242
7321
  /**
@@ -7254,7 +7333,16 @@ const Methods = {
7254
7333
  const tdEl = evnt.currentTarget;
7255
7334
  handleTargetEnterEvent($xeTable, tooltipStore.column !== column || !!tooltipStore.row);
7256
7335
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7257
- handleTooltip($xeTable, evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
7336
+ const ctEl = tdEl.querySelector('.vxe-cell--wrapper');
7337
+ let ovEl = null;
7338
+ let tipEl = tdEl.querySelector(column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label');
7339
+ if (column.type === 'html') {
7340
+ ovEl = tdEl.querySelector('.vxe-cell--html');
7341
+ }
7342
+ if (!tipEl) {
7343
+ tipEl = ctEl;
7344
+ }
7345
+ handleTooltip($xeTable, evnt, tdEl, ovEl || ctEl, tipEl, params);
7258
7346
  }
7259
7347
  },
7260
7348
  openTooltip(target, content) {
@@ -8622,7 +8710,8 @@ const Methods = {
8622
8710
  const mouseOpts = $xeTable.computeMouseOpts;
8623
8711
  const {
8624
8712
  field,
8625
- sortable
8713
+ sortable,
8714
+ order
8626
8715
  } = column;
8627
8716
  if (sortable) {
8628
8717
  const params = {
@@ -8631,13 +8720,16 @@ const Methods = {
8631
8720
  column,
8632
8721
  field,
8633
8722
  property: field,
8634
- order: column.order,
8723
+ order,
8635
8724
  sortList: $xeTable.getSortColumns(),
8636
8725
  sortTime: column.sortTime
8637
8726
  };
8638
8727
  if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
8639
8728
  $xeTable.handleSortEvent(evnt, params);
8640
8729
  }
8730
+ if (!order) {
8731
+ $xeTable.dispatchEvent('clear-sort', params, evnt);
8732
+ }
8641
8733
  $xeTable.dispatchEvent('sort-change', params, evnt);
8642
8734
  }
8643
8735
  },
@@ -9662,56 +9754,12 @@ const Methods = {
9662
9754
  },
9663
9755
  setSort(sortConfs, isUpdate) {
9664
9756
  const $xeTable = this;
9665
- const sortOpts = $xeTable.computeSortOpts;
9666
- const {
9667
- multiple,
9668
- remote,
9669
- orders
9670
- } = sortOpts;
9671
- if (!_xeUtils.default.isArray(sortConfs)) {
9672
- sortConfs = [sortConfs];
9673
- }
9674
- if (sortConfs && sortConfs.length) {
9675
- if (!multiple) {
9676
- sortConfs = [sortConfs[0]];
9677
- clearAllSort($xeTable);
9678
- }
9679
- let firstColumn = null;
9680
- sortConfs.forEach((confs, index) => {
9681
- let {
9682
- field,
9683
- order
9684
- } = confs;
9685
- let column = field;
9686
- if (_xeUtils.default.isString(field)) {
9687
- column = $xeTable.getColumnByField(field);
9688
- }
9689
- if (!firstColumn) {
9690
- firstColumn = column;
9691
- }
9692
- if (column && column.sortable) {
9693
- if (orders && orders.indexOf(order) === -1) {
9694
- order = getNextSortOrder($xeTable, column);
9695
- }
9696
- if (column.order !== order) {
9697
- column.order = order;
9698
- }
9699
- column.sortTime = Date.now() + index;
9700
- }
9701
- });
9702
- if (isUpdate) {
9703
- if (!remote) {
9704
- $xeTable.handleTableData(true);
9705
- }
9706
- $xeTable.handleColumnSortEvent(new Event('click'), firstColumn);
9707
- }
9708
- return $xeTable.$nextTick().then(() => {
9709
- updateRowOffsetTop($xeTable);
9710
- $xeTable.updateCellAreas();
9711
- return updateStyle($xeTable);
9712
- });
9713
- }
9714
- return $xeTable.$nextTick();
9757
+ // 已废弃,即将去掉事件触发 new Event('click') -> null
9758
+ return handleSortEvent($xeTable, new Event('click'), sortConfs, isUpdate);
9759
+ },
9760
+ setSortByEvent(evnt, sortConfs, isUpdate) {
9761
+ const $xeTable = this;
9762
+ return handleSortEvent($xeTable, evnt, sortConfs, isUpdate);
9715
9763
  },
9716
9764
  /**
9717
9765
  * 清空指定列的排序条件
@@ -9737,6 +9785,49 @@ const Methods = {
9737
9785
  return updateStyle($xeTable);
9738
9786
  });
9739
9787
  },
9788
+ clearSortByEvent(evnt, fieldOrColumn) {
9789
+ const $xeTable = this;
9790
+ const internalData = $xeTable;
9791
+ const {
9792
+ tableFullColumn
9793
+ } = internalData;
9794
+ const sortOpts = $xeTable.computeSortOpts;
9795
+ const sortCols = [];
9796
+ let column = null;
9797
+ if (evnt) {
9798
+ if (fieldOrColumn) {
9799
+ column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
9800
+ if (column) {
9801
+ column.order = null;
9802
+ }
9803
+ } else {
9804
+ tableFullColumn.forEach(column => {
9805
+ if (column.order) {
9806
+ column.order = null;
9807
+ sortCols.push(column);
9808
+ }
9809
+ });
9810
+ }
9811
+ if (!sortOpts.remote) {
9812
+ $xeTable.handleTableData(true);
9813
+ }
9814
+ if (sortCols.length) {
9815
+ const params = {
9816
+ $table: $xeTable,
9817
+ $event: evnt,
9818
+ cols: sortCols,
9819
+ sortList: []
9820
+ };
9821
+ $xeTable.dispatchEvent('clear-all-sort', params, evnt);
9822
+ } else if (column) {
9823
+ $xeTable.handleColumnSortEvent(evnt, column);
9824
+ }
9825
+ }
9826
+ return $xeTable.$nextTick().then(() => {
9827
+ updateRowOffsetTop($xeTable);
9828
+ return updateStyle($xeTable);
9829
+ });
9830
+ },
9740
9831
  // 在 v3 中废弃
9741
9832
  getSortColumn() {
9742
9833
  if (process.env.NODE_ENV === 'development') {
@@ -9777,6 +9868,17 @@ const Methods = {
9777
9868
  }
9778
9869
  return sortList;
9779
9870
  },
9871
+ setFilterByEvent(evnt, fieldOrColumn, options, isUpdate) {
9872
+ const $xeTable = this;
9873
+ const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
9874
+ if (column && column.filters) {
9875
+ column.filters = (0, _util.toFilters)(options || []);
9876
+ if (isUpdate) {
9877
+ return $xeTable.handleColumnConfirmFilter(column, evnt);
9878
+ }
9879
+ }
9880
+ return $xeTable.$nextTick();
9881
+ },
9780
9882
  /**
9781
9883
  * 关闭筛选
9782
9884
  * @param {Event} evnt 事件
@@ -9821,6 +9923,61 @@ const Methods = {
9821
9923
  isFilter(fieldOrColumn) {
9822
9924
  return this.isActiveFilterByColumn(fieldOrColumn);
9823
9925
  },
9926
+ clearFilterByEvent(evnt, fieldOrColumn) {
9927
+ const $xeTable = this;
9928
+ const reactData = $xeTable;
9929
+ const internalData = $xeTable;
9930
+ const {
9931
+ filterStore
9932
+ } = reactData;
9933
+ const {
9934
+ tableFullColumn
9935
+ } = internalData;
9936
+ const filterOpts = $xeTable.computeFilterOpts;
9937
+ const filterCols = [];
9938
+ let column = null;
9939
+ if (fieldOrColumn) {
9940
+ column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
9941
+ if (column) {
9942
+ $xeTable.handleClearFilter(column);
9943
+ }
9944
+ } else {
9945
+ tableFullColumn.forEach(column => {
9946
+ if (column.filters) {
9947
+ filterCols.push(column);
9948
+ $xeTable.handleClearFilter(column);
9949
+ }
9950
+ });
9951
+ }
9952
+ if (!fieldOrColumn || column !== filterStore.column) {
9953
+ Object.assign(filterStore, {
9954
+ isAllSelected: false,
9955
+ isIndeterminate: false,
9956
+ style: null,
9957
+ options: [],
9958
+ column: null,
9959
+ multiple: false,
9960
+ visible: false
9961
+ });
9962
+ }
9963
+ if (!filterOpts.remote) {
9964
+ $xeTable.updateData();
9965
+ }
9966
+ if (filterCols.length) {
9967
+ const params = {
9968
+ $table: $xeTable,
9969
+ $event: evnt,
9970
+ cols: filterCols,
9971
+ filterList: []
9972
+ };
9973
+ $xeTable.dispatchEvent('clear-all-filter', params, evnt);
9974
+ } else if (column) {
9975
+ $xeTable.dispatchEvent('clear-filter', {
9976
+ filterList: () => $xeTable.getCheckedFilters()
9977
+ }, evnt);
9978
+ }
9979
+ return $xeTable.$nextTick();
9980
+ },
9824
9981
  /**
9825
9982
  * 判断展开行是否懒加载完成
9826
9983
  * @param {Row} row 行对象