vxe-table 3.15.0 → 3.15.2

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 (53) 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/module/filter/mixin.js +31 -6
  6. package/es/table/module/filter/panel.js +173 -142
  7. package/es/table/src/methods.js +38 -13
  8. package/es/table/src/table.js +1 -0
  9. package/es/table/src/util.js +2 -1
  10. package/es/table/style.css +18 -0
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +18 -0
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.min.css +1 -1
  18. package/lib/index.umd.js +237 -145
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/style.min.css +1 -1
  22. package/lib/table/module/filter/mixin.js +34 -5
  23. package/lib/table/module/filter/mixin.min.js +1 -1
  24. package/lib/table/module/filter/panel.js +153 -122
  25. package/lib/table/module/filter/panel.min.js +1 -1
  26. package/lib/table/src/methods.js +43 -13
  27. package/lib/table/src/methods.min.js +1 -1
  28. package/lib/table/src/table.js +1 -0
  29. package/lib/table/src/table.min.js +1 -1
  30. package/lib/table/src/util.js +2 -1
  31. package/lib/table/src/util.min.js +1 -1
  32. package/lib/table/style/style.css +18 -0
  33. package/lib/table/style/style.min.css +1 -1
  34. package/lib/ui/index.js +1 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/log.js +1 -1
  37. package/lib/ui/src/log.min.js +1 -1
  38. package/lib/vxe-table/style/style.css +18 -0
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/module/filter/mixin.ts +28 -6
  42. package/packages/table/module/filter/panel.ts +178 -143
  43. package/packages/table/src/methods.ts +38 -13
  44. package/packages/table/src/table.ts +1 -0
  45. package/packages/table/src/util.ts +2 -1
  46. package/styles/components/table-module/filter.scss +16 -0
  47. package/styles/components/table.scss +6 -1
  48. /package/es/{iconfont.1744252945243.ttf → iconfont.1744428010256.ttf} +0 -0
  49. /package/es/{iconfont.1744252945243.woff → iconfont.1744428010256.woff} +0 -0
  50. /package/es/{iconfont.1744252945243.woff2 → iconfont.1744428010256.woff2} +0 -0
  51. /package/lib/{iconfont.1744252945243.ttf → iconfont.1744428010256.ttf} +0 -0
  52. /package/lib/{iconfont.1744252945243.woff → iconfont.1744428010256.woff} +0 -0
  53. /package/lib/{iconfont.1744252945243.woff2 → iconfont.1744428010256.woff2} +0 -0
@@ -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(t,c,l){let h=this;var u=h,d=h;let e=this.filterStore;if(e.column===c&&e.visible)e.visible=!1;else{let{initStore:e,filterStore:o}=u,a=d.elemStore;if(o.column===c&&o.visible)o.visible=!1;else{let r=h.$refs.refElem,n=r.getBoundingClientRect(),s=t.currentTarget;var{filters:u,filterMultiple:f,filterRender:m}=c,m=(0,_utils.isEnableConf)(m)?renderer.get(m.name):null;let i=c.filterRecoverMethod||(m?m.tableFilterRecoverMethod||m.filterRecoverMethod:null);d._currFilterParams=l,Object.assign(o,{multiple:f,options:u,column:c,style:null}),o.options.forEach(e=>{var{_checked:t,checked:l}=e;(e._checked=l)||t===l||i&&i({option:e,column:c,$table:h})}),this.checkFilterOptions(),o.visible=!0,e.filter=!0,h.$nextTick(()=>{var e,t,l,i;(0,_util.getRefElem)(a["main-header-scroll"])&&(e=(e=h.$refs.refTableFilter)?e.$el:null)&&(l=s.getBoundingClientRect(),t=e.offsetWidth,i=e.querySelector(".vxe-table--filter-header"),e=e.querySelector(".vxe-table--filter-footer"),t=t/2,t=l.left-n.left-t,l=l.top-n.top+s.clientHeight,i=Math.max(40,r.clientHeight-l-(i?i.clientHeight:0)-(e?e.clientHeight:0)-14),o.style={top:(0,_dom.toCssUnit)(l),left:(0,_dom.toCssUnit)(t)},o.maxHeight=i)})}h.dispatchEvent("filter-visible",{column:c,field:c.field,property:c.field,filterList:h.getCheckedFilters(),visible:o.visible},t)}},handleFilterConfirmFilter(e){var t=this.filterStore;t.options.forEach(e=>{e.checked=e._checked}),this.confirmFilterEvent(e)},_saveFilterPanel(){return this.handleFilterConfirmFilter(null),this.$nextTick()},_resetFilterPanel(){return this.handleFilterResetFilter(null),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 c=[],h=[];e.filters.forEach(e=>{e.checked&&(c.push(e.value),h.push(e.data))});var u=this.getCheckedFilters(),e={$table:this,$event:t,column:e,field:a,property:a,values:c,datas:h,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,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()},_resetFilterPanel(){return this.handleFilterResetFilter(null),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()}}};
@@ -10,28 +10,169 @@ var _vn = require("../../../ui/src/vn");
10
10
  const {
11
11
  getI18n,
12
12
  getIcon,
13
- renderer
13
+ renderer,
14
+ globalMixins
14
15
  } = _ui.VxeUI;
16
+ function renderOptions($xeFilterPanel, h, filterRender, compConf) {
17
+ const props = $xeFilterPanel;
18
+ const $xeTable = $xeFilterPanel.$xeTable;
19
+ const tableInternalData = $xeTable;
20
+ const {
21
+ filterStore
22
+ } = props;
23
+ const {
24
+ column,
25
+ multiple,
26
+ maxHeight
27
+ } = filterStore;
28
+ const slots = column ? column.slots : null;
29
+ const filterSlot = slots ? slots.filter : null;
30
+ const params = Object.assign({}, tableInternalData._currFilterParams, {
31
+ $panel: $xeFilterPanel,
32
+ $table: $xeTable
33
+ });
34
+ const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
35
+ if (filterSlot) {
36
+ return [h('div', {
37
+ class: 'vxe-table--filter-template',
38
+ style: maxHeight ? {
39
+ maxHeight: `${maxHeight}px`
40
+ } : {}
41
+ }, $xeTable.callSlot(filterSlot, params, h))];
42
+ } else if (rtFilter) {
43
+ return [h('div', {
44
+ class: 'vxe-table--filter-template',
45
+ style: maxHeight ? {
46
+ maxHeight: `${maxHeight}px`
47
+ } : {}
48
+ }, (0, _vn.getSlotVNs)(rtFilter.call($xeTable, h, filterRender, params)))];
49
+ }
50
+ const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some(item => item._checked);
51
+ const isAllIndeterminate = multiple && filterStore.isIndeterminate;
52
+ return [h('ul', {
53
+ class: 'vxe-table--filter-header'
54
+ }, [h('li', {
55
+ class: ['vxe-table--filter-option', {
56
+ 'is--checked': isAllChecked,
57
+ 'is--indeterminate': isAllIndeterminate
58
+ }],
59
+ attrs: {
60
+ title: getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
61
+ },
62
+ on: {
63
+ click: evnt => {
64
+ $xeFilterPanel.changeAllOption(evnt, !filterStore.isAllSelected);
65
+ }
66
+ }
67
+ }, (multiple ? [h('span', {
68
+ class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
69
+ })] : []).concat([h('span', {
70
+ class: 'vxe-checkbox--label'
71
+ }, getI18n('vxe.table.allFilter'))]))]), h('ul', {
72
+ class: 'vxe-table--filter-body',
73
+ style: maxHeight ? {
74
+ maxHeight: `${maxHeight}px`
75
+ } : {}
76
+ }, filterStore.options.map(item => {
77
+ const isChecked = item._checked;
78
+ const isIndeterminate = false;
79
+ return h('li', {
80
+ class: ['vxe-table--filter-option', {
81
+ 'is--checked': isChecked
82
+ }],
83
+ attrs: {
84
+ title: item.label
85
+ },
86
+ on: {
87
+ click: evnt => {
88
+ $xeFilterPanel.changeOption(evnt, !item._checked, item);
89
+ }
90
+ }
91
+ }, (multiple ? [h('span', {
92
+ class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
93
+ })] : []).concat([h('span', {
94
+ class: 'vxe-checkbox--label'
95
+ }, (0, _utils.formatText)(item.label, 1))]));
96
+ }))];
97
+ }
98
+ function renderFooter($xeFilterPanel, h) {
99
+ const props = $xeFilterPanel;
100
+ const $xeTable = $xeFilterPanel.$xeTable;
101
+ const {
102
+ filterStore
103
+ } = props;
104
+ const {
105
+ column,
106
+ multiple
107
+ } = filterStore;
108
+ const filterOpts = $xeTable.computeFilterOpts;
109
+ const hasCheckOption = $xeFilterPanel.computeHasCheckOption;
110
+ const filterRender = column.filterRender;
111
+ const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
112
+ const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
113
+ return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true) ? [h('div', {
114
+ class: 'vxe-table--filter-footer'
115
+ }, [h('button', {
116
+ class: {
117
+ 'is--disabled': isDisabled
118
+ },
119
+ attrs: {
120
+ disabled: isDisabled
121
+ },
122
+ on: {
123
+ click: $xeFilterPanel.confirmFilter
124
+ }
125
+ }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')), h('button', {
126
+ on: {
127
+ click: $xeFilterPanel.resetFilter
128
+ }
129
+ }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))])] : [];
130
+ }
15
131
  var _default = exports.default = {
16
132
  name: 'VxeTableFilterPanel',
133
+ mixins: [globalMixins.sizeMixin],
17
134
  props: {
18
135
  filterStore: Object
19
136
  },
137
+ inject: {
138
+ $xeTable: {
139
+ default: null
140
+ }
141
+ },
20
142
  computed: {
21
- hasCheckOption() {
143
+ computeHasCheckOption() {
22
144
  const {
23
145
  filterStore
24
146
  } = this;
25
147
  return filterStore && filterStore.options.some(option => option.checked);
26
148
  }
27
149
  },
150
+ mounted() {
151
+ const $xeFilterPanel = this;
152
+ const $xeTable = $xeFilterPanel.$xeTable;
153
+ const filterOpts = $xeTable.computeFilterOpts;
154
+ const {
155
+ transfer
156
+ } = filterOpts;
157
+ const el = this.$refs.refElem;
158
+ if (transfer && el) {
159
+ document.body.appendChild(el);
160
+ }
161
+ },
162
+ beforeDestroy() {
163
+ const el = this.$refs.refElem;
164
+ if (el && el.parentNode) {
165
+ el.parentNode.removeChild(el);
166
+ }
167
+ },
28
168
  render(h) {
29
- const $panel = this;
30
- const $xeTable = this.$parent;
169
+ const $xeFilterPanel = this;
170
+ const props = $xeFilterPanel;
171
+ const $xeTable = $xeFilterPanel.$xeTable;
31
172
  const tableInternalData = $xeTable;
32
173
  const {
33
174
  filterStore
34
- } = this;
175
+ } = props;
35
176
  const {
36
177
  visible,
37
178
  multiple,
@@ -41,137 +182,27 @@ var _default = exports.default = {
41
182
  const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
42
183
  const filterClassName = compConf ? compConf.tableFilterClassName || compConf.filterClassName : '';
43
184
  const params = Object.assign({}, tableInternalData._currFilterParams, {
44
- $panel,
185
+ $panel: $xeFilterPanel,
45
186
  $table: $xeTable
46
187
  });
188
+ const tableProps = $xeTable;
189
+ const vSize = $xeFilterPanel.computeSize;
47
190
  const filterOpts = $xeTable.computeFilterOpts;
48
191
  const {
49
192
  destroyOnClose
50
193
  } = filterOpts;
51
194
  return h('div', {
195
+ ref: 'refElem',
52
196
  class: ['vxe-table--filter-wrapper', 'filter--prevent-default', compConf && compConf.className ? compConf.className : '', (0, _utils.getClass)(filterClassName, params), {
53
- 'is--animat': $xeTable.animat,
197
+ [`size--${vSize}`]: vSize,
198
+ 'is--animat': tableProps.animat,
54
199
  'is--multiple': multiple,
55
200
  'is--active': visible
56
201
  }],
57
202
  style: filterStore.style
58
- }, filterStore.visible && (destroyOnClose ? visible : true) && column ? this.renderOptions(h, filterRender, compConf).concat(this.renderFooter(h)) : []);
203
+ }, filterStore.visible && (destroyOnClose ? visible : true) && column ? renderOptions($xeFilterPanel, h, filterRender, compConf).concat(renderFooter($xeFilterPanel, h)) : []);
59
204
  },
60
205
  methods: {
61
- renderOptions(h, filterRender, compConf) {
62
- const $panel = this;
63
- const $xeTable = this.$parent;
64
- const tableInternalData = $xeTable;
65
- const {
66
- filterStore
67
- } = this;
68
- const {
69
- column,
70
- multiple,
71
- maxHeight
72
- } = filterStore;
73
- const slots = column ? column.slots : null;
74
- const filterSlot = slots ? slots.filter : null;
75
- const params = Object.assign({}, tableInternalData._currFilterParams, {
76
- $panel,
77
- $table: $xeTable
78
- });
79
- const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
80
- if (filterSlot) {
81
- return [h('div', {
82
- class: 'vxe-table--filter-template',
83
- style: maxHeight ? {
84
- maxHeight: `${maxHeight}px`
85
- } : {}
86
- }, $xeTable.callSlot(filterSlot, params, h))];
87
- } else if (rtFilter) {
88
- return [h('div', {
89
- class: 'vxe-table--filter-template',
90
- style: maxHeight ? {
91
- maxHeight: `${maxHeight}px`
92
- } : {}
93
- }, (0, _vn.getSlotVNs)(rtFilter.call($xeTable, h, filterRender, params)))];
94
- }
95
- const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some(item => item._checked);
96
- const isAllIndeterminate = multiple && filterStore.isIndeterminate;
97
- return [h('ul', {
98
- class: 'vxe-table--filter-header'
99
- }, [h('li', {
100
- class: ['vxe-table--filter-option', {
101
- 'is--checked': isAllChecked,
102
- 'is--indeterminate': isAllIndeterminate
103
- }],
104
- attrs: {
105
- title: getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
106
- },
107
- on: {
108
- click: evnt => {
109
- this.changeAllOption(evnt, !filterStore.isAllSelected);
110
- }
111
- }
112
- }, (multiple ? [h('span', {
113
- class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
114
- })] : []).concat([h('span', {
115
- class: 'vxe-checkbox--label'
116
- }, getI18n('vxe.table.allFilter'))]))]), h('ul', {
117
- class: 'vxe-table--filter-body',
118
- style: maxHeight ? {
119
- maxHeight: `${maxHeight}px`
120
- } : {}
121
- }, filterStore.options.map(item => {
122
- const isChecked = item._checked;
123
- const isIndeterminate = false;
124
- return h('li', {
125
- class: ['vxe-table--filter-option', {
126
- 'is--checked': isChecked
127
- }],
128
- attrs: {
129
- title: item.label
130
- },
131
- on: {
132
- click: evnt => {
133
- this.changeOption(evnt, !item._checked, item);
134
- }
135
- }
136
- }, (multiple ? [h('span', {
137
- class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED]
138
- })] : []).concat([h('span', {
139
- class: 'vxe-checkbox--label'
140
- }, (0, _utils.formatText)(item.label, 1))]));
141
- }))];
142
- },
143
- renderFooter(h) {
144
- const $xeTable = this.$parent;
145
- const {
146
- hasCheckOption,
147
- filterStore
148
- } = this;
149
- const {
150
- column,
151
- multiple
152
- } = filterStore;
153
- const filterOpts = $xeTable.computeFilterOpts;
154
- const filterRender = column.filterRender;
155
- const compConf = (0, _utils.isEnableConf)(filterRender) ? renderer.get(filterRender.name) : null;
156
- const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
157
- return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true) ? [h('div', {
158
- class: 'vxe-table--filter-footer'
159
- }, [h('button', {
160
- class: {
161
- 'is--disabled': isDisabled
162
- },
163
- attrs: {
164
- disabled: isDisabled
165
- },
166
- on: {
167
- click: this.confirmFilter
168
- }
169
- }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')), h('button', {
170
- on: {
171
- click: this.resetFilter
172
- }
173
- }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))])] : [];
174
- },
175
206
  // 全部筛选事件
176
207
  filterCheckAllEvent(evnt, value) {
177
208
  const filterStore = this.filterStore;
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_vn=require("../../../ui/src/vn");let{getI18n,getIcon,renderer}=_ui.VxeUI;var _default=exports.default={name:"VxeTableFilterPanel",props:{filterStore:Object},computed:{hasCheckOption(){var e=this.filterStore;return e&&e.options.some(e=>e.checked)}},render(e){var t=this.$parent,l=t,i=this.filterStore,{visible:r,multiple:s,column:a}=i,n=a?a.filterRender:null,c=(0,_utils.isEnableConf)(n)?renderer.get(n.name):null,o=c?c.tableFilterClassName||c.filterClassName:"",l=Object.assign({},l._currFilterParams,{$panel:this,$table:t}),h=t.computeFilterOpts.destroyOnClose;return e("div",{class:["vxe-table--filter-wrapper","filter--prevent-default",c&&c.className?c.className:"",(0,_utils.getClass)(o,l),{"is--animat":t.animat,"is--multiple":s,"is--active":r}],style:i.style},i.visible&&(!h||r)&&a?this.renderOptions(e,n,c).concat(this.renderFooter(e)):[])},methods:{renderOptions(l,e,t){var i=this.$parent;let r=this.filterStore,{column:s,multiple:a,maxHeight:n}=r;var c=s?s.slots:null,c=c?c.filter:null,o=Object.assign({},i._currFilterParams,{$panel:this,$table:i}),t=t?t.renderTableFilter||t.renderFilter:null;return c?[l("div",{class:"vxe-table--filter-template",style:n?{maxHeight:n+"px"}:{}},i.callSlot(c,o,l))]:t?[l("div",{class:"vxe-table--filter-template",style:n?{maxHeight:n+"px"}:{}},(0,_vn.getSlotVNs)(t.call(i,l,e,o)))]:(c=a?r.isAllSelected:!r.options.some(e=>e._checked),t=a&&r.isIndeterminate,[l("ul",{class:"vxe-table--filter-header"},[l("li",{class:["vxe-table--filter-option",{"is--checked":c,"is--indeterminate":t}],attrs:{title:getI18n(a?"vxe.table.allTitle":"vxe.table.allFilter")},on:{click:e=>{this.changeAllOption(e,!r.isAllSelected)}}},(a?[l("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:c?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([l("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),l("ul",{class:"vxe-table--filter-body",style:n?{maxHeight:n+"px"}:{}},r.options.map(t=>{var e=t._checked;return l("li",{class:["vxe-table--filter-option",{"is--checked":e}],attrs:{title:t.label},on:{click:e=>{this.changeOption(e,!t._checked,t)}}},(a?[l("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([l("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])},renderFooter(e){var{hasCheckOption:t,filterStore:l}=this,{column:i,multiple:r}=l,s=this.$parent.computeFilterOpts,i=i.filterRender,i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null,t=!t&&!l.isAllSelected&&!l.isIndeterminate;return r&&(!i||!1!==i.showTableFilterFooter&&!1!==i.showFilterFooter&&!1!==i.isFooter)?[e("div",{class:"vxe-table--filter-footer"},[e("button",{class:{"is--disabled":t},attrs:{disabled:t},on:{click:this.confirmFilter}},s.confirmButtonText||getI18n("vxe.table.confirmFilter")),e("button",{on:{click:this.resetFilter}},s.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]},filterCheckAllEvent(e,t){var l=this.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},changeRadioOption(e,t,l){var i=this.$parent,r=this.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,i.checkFilterOptions(),this.confirmFilter(e)},changeMultipleOption(e,t,l){var i=this.$parent;l._checked=t,i.checkFilterOptions()},changeAllOption(e,t){this.filterStore.multiple?this.filterCheckAllEvent(e,t):this.resetFilter(e)},changeOption(e,t,l){this.filterStore.multiple?this.changeMultipleOption(e,t,l):this.changeRadioOption(e,t,l)},confirmFilter(e){this.$parent.handleFilterConfirmFilter(e)},resetFilter(e){this.$parent.handleFilterResetFilter(e)}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_vn=require("../../../ui/src/vn");let{getI18n,getIcon,renderer,globalMixins}=_ui.VxeUI;function renderOptions(l,i,e,t){var r=l.$xeTable;let a=l.filterStore,{column:s,multiple:n,maxHeight:o}=a;var c=s?s.slots:null,c=c?c.filter:null,p=Object.assign({},r._currFilterParams,{$panel:l,$table:r}),t=t?t.renderTableFilter||t.renderFilter:null;return c?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},r.callSlot(c,p,i))]:t?[i("div",{class:"vxe-table--filter-template",style:o?{maxHeight:o+"px"}:{}},(0,_vn.getSlotVNs)(t.call(r,i,e,p)))]:(c=n?a.isAllSelected:!a.options.some(e=>e._checked),t=n&&a.isIndeterminate,[i("ul",{class:"vxe-table--filter-header"},[i("li",{class:["vxe-table--filter-option",{"is--checked":c,"is--indeterminate":t}],attrs:{title:getI18n(n?"vxe.table.allTitle":"vxe.table.allFilter")},on:{click:e=>{l.changeAllOption(e,!a.isAllSelected)}}},(n?[i("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:c?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),i("ul",{class:"vxe-table--filter-body",style:o?{maxHeight:o+"px"}:{}},a.options.map(t=>{var e=t._checked;return i("li",{class:["vxe-table--filter-option",{"is--checked":e}],attrs:{title:t.label},on:{click:e=>{l.changeOption(e,!t._checked,t)}}},(n?[i("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([i("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])}function renderFooter(e,t){var l=e.filterStore,{column:i,multiple:r}=l,a=e.$xeTable.computeFilterOpts,s=e.computeHasCheckOption,i=i.filterRender,i=(0,_utils.isEnableConf)(i)?renderer.get(i.name):null,s=!s&&!l.isAllSelected&&!l.isIndeterminate;return r&&(!i||!1!==i.showTableFilterFooter&&!1!==i.showFilterFooter&&!1!==i.isFooter)?[t("div",{class:"vxe-table--filter-footer"},[t("button",{class:{"is--disabled":s},attrs:{disabled:s},on:{click:e.confirmFilter}},a.confirmButtonText||getI18n("vxe.table.confirmFilter")),t("button",{on:{click:e.resetFilter}},a.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]}var _default=exports.default={name:"VxeTableFilterPanel",mixins:[globalMixins.sizeMixin],props:{filterStore:Object},inject:{$xeTable:{default:null}},computed:{computeHasCheckOption(){var e=this.filterStore;return e&&e.options.some(e=>e.checked)}},mounted(){var e=this.$xeTable.computeFilterOpts.transfer,t=this.$refs.refElem;e&&t&&document.body.appendChild(t)},beforeDestroy(){var e=this.$refs.refElem;e&&e.parentNode&&e.parentNode.removeChild(e)},render(e){var t=this,l=t.$xeTable,i=l,r=t.filterStore,{visible:a,multiple:s,column:n}=r,o=n?n.filterRender:null,c=(0,_utils.isEnableConf)(o)?renderer.get(o.name):null,p=c?c.tableFilterClassName||c.filterClassName:"",i=Object.assign({},i._currFilterParams,{$panel:t,$table:l}),d=l,u=t.computeSize,l=l.computeFilterOpts.destroyOnClose;return e("div",{ref:"refElem",class:["vxe-table--filter-wrapper","filter--prevent-default",c&&c.className?c.className:"",(0,_utils.getClass)(p,i),{["size--"+u]:u,"is--animat":d.animat,"is--multiple":s,"is--active":a}],style:r.style},r.visible&&(!l||a)&&n?renderOptions(t,e,o,c).concat(renderFooter(t,e)):[])},methods:{filterCheckAllEvent(e,t){var l=this.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},changeRadioOption(e,t,l){var i=this.$parent,r=this.filterStore;r.options.forEach(e=>{e._checked=!1}),l._checked=t,i.checkFilterOptions(),this.confirmFilter(e)},changeMultipleOption(e,t,l){var i=this.$parent;l._checked=t,i.checkFilterOptions()},changeAllOption(e,t){this.filterStore.multiple?this.filterCheckAllEvent(e,t):this.resetFilter(e)},changeOption(e,t,l){this.filterStore.multiple?this.changeMultipleOption(e,t,l):this.changeRadioOption(e,t,l)},confirmFilter(e){this.$parent.handleFilterConfirmFilter(e)},resetFilter(e){this.$parent.handleFilterResetFilter(e)}}};
@@ -3347,7 +3347,11 @@ const Methods = {
3347
3347
  handleReserveStatus($xeTable);
3348
3348
  $xeTable.checkSelectionStatus();
3349
3349
  return new Promise(resolve => {
3350
- this.$nextTick().then(() => $xeTable.recalculate()).then(() => {
3350
+ this.$nextTick().then(() => handleRecalculateLayout($xeTable, false)).then(() => {
3351
+ calcCellHeight($xeTable);
3352
+ updateRowOffsetTop($xeTable);
3353
+ return handleRecalculateLayout($xeTable, false);
3354
+ }).then(() => {
3351
3355
  let targetScrollLeft = lastScrollLeft;
3352
3356
  let targetScrollTop = lastScrollTop;
3353
3357
  const virtualXOpts = $xeTable.computeVirtualXOpts;
@@ -3360,8 +3364,7 @@ const Methods = {
3360
3364
  targetScrollTop = 0;
3361
3365
  }
3362
3366
  reactData.isRowLoading = false;
3363
- calcCellHeight($xeTable);
3364
- updateRowOffsetTop($xeTable);
3367
+ handleRecalculateLayout($xeTable, false);
3365
3368
  // 是否变更虚拟滚动
3366
3369
  if (oldScrollYLoad === sYLoad) {
3367
3370
  (0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
@@ -7506,6 +7509,12 @@ const Methods = {
7506
7509
  const {
7507
7510
  column: newValue
7508
7511
  } = params;
7512
+ const {
7513
+ trigger
7514
+ } = currentColumnOpts;
7515
+ if (trigger === 'manual') {
7516
+ return;
7517
+ }
7509
7518
  const isChange = oldValue !== newValue;
7510
7519
  if (!beforeRowMethod || beforeRowMethod({
7511
7520
  column: newValue,
@@ -7534,6 +7543,12 @@ const Methods = {
7534
7543
  const {
7535
7544
  row: newValue
7536
7545
  } = params;
7546
+ const {
7547
+ trigger
7548
+ } = currentRowOpts;
7549
+ if (trigger === 'manual') {
7550
+ return;
7551
+ }
7537
7552
  const isChange = oldValue !== newValue;
7538
7553
  if (!beforeRowMethod || beforeRowMethod({
7539
7554
  row: newValue,
@@ -9114,12 +9129,10 @@ const Methods = {
9114
9129
  column,
9115
9130
  visible
9116
9131
  } = filterStore;
9117
- Object.assign(filterStore, {
9118
- isAllSelected: false,
9119
- isIndeterminate: false,
9120
- options: [],
9121
- visible: false
9122
- });
9132
+ filterStore.isAllSelected = false;
9133
+ filterStore.isIndeterminate = false;
9134
+ filterStore.options = [];
9135
+ filterStore.visible = false;
9123
9136
  if (visible) {
9124
9137
  $xeTable.dispatchEvent('filter-visible', {
9125
9138
  column,
@@ -9553,7 +9566,8 @@ const Methods = {
9553
9566
  const $xeTable = this;
9554
9567
  const internalData = $xeTable;
9555
9568
  const {
9556
- treeExpandLazyLoadedMaps
9569
+ treeExpandLazyLoadedMaps,
9570
+ treeEATime
9557
9571
  } = internalData;
9558
9572
  const treeOpts = $xeTable.computeTreeOpts;
9559
9573
  const {
@@ -9562,7 +9576,8 @@ const Methods = {
9562
9576
  } = params;
9563
9577
  const {
9564
9578
  lazy,
9565
- trigger
9579
+ trigger,
9580
+ accordion
9566
9581
  } = treeOpts;
9567
9582
  if (trigger === 'manual') {
9568
9583
  return;
@@ -9573,7 +9588,17 @@ const Methods = {
9573
9588
  const expanded = !$xeTable.isTreeExpandByRow(row);
9574
9589
  const columnIndex = $xeTable.getColumnIndex(column);
9575
9590
  const $columnIndex = $xeTable.getVMColumnIndex(column);
9576
- $xeTable.setTreeExpand(row, expanded);
9591
+ if (treeEATime) {
9592
+ clearTimeout(treeEATime);
9593
+ }
9594
+ $xeTable.setTreeExpand(row, expanded).then(() => {
9595
+ if (accordion) {
9596
+ internalData.treeEATime = setTimeout(() => {
9597
+ internalData.treeEATime = undefined;
9598
+ $xeTable.scrollToRow(row);
9599
+ }, 20);
9600
+ }
9601
+ });
9577
9602
  $xeTable.dispatchEvent('toggle-tree-expand', {
9578
9603
  expanded,
9579
9604
  column,
@@ -9922,6 +9947,9 @@ const Methods = {
9922
9947
  }, params);
9923
9948
  updateRowExpandStyle($xeTable);
9924
9949
  checkLastSyncScroll($xeTable, isRollX, isRollY);
9950
+ if (isRollX) {
9951
+ $xeTable.closeFilter();
9952
+ }
9925
9953
  if (rowOpts.isHover || highlightHoverRow) {
9926
9954
  $xeTable.clearHoverRow();
9927
9955
  }
@@ -10452,7 +10480,8 @@ const Methods = {
10452
10480
  if (isScrollXBig && mouseOpts.area) {
10453
10481
  (0, _log.errLog)('vxe.error.notProp', ['mouse-config.area']);
10454
10482
  }
10455
- $xeTable.$nextTick(() => {
10483
+ calcScrollbar($xeTable);
10484
+ return $xeTable.$nextTick(() => {
10456
10485
  updateStyle($xeTable);
10457
10486
  });
10458
10487
  }
@@ -10571,6 +10600,7 @@ const Methods = {
10571
10600
  if (isScrollYBig && mouseOpts.area) {
10572
10601
  (0, _log.errLog)('vxe.error.notProp', ['mouse-config.area']);
10573
10602
  }
10603
+ calcScrollbar($xeTable);
10574
10604
  return $xeTable.$nextTick().then(() => {
10575
10605
  updateStyle($xeTable);
10576
10606
  });