vxe-table 4.16.20 → 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.
- package/es/grid/src/grid.js +8 -0
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/filter/hook.js +108 -58
- package/es/table/module/filter/panel.js +45 -25
- package/es/table/render/index.js +93 -9
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +14 -6
- package/es/table/src/header.js +118 -3
- package/es/table/src/props.js +2 -0
- package/es/table/src/table.js +29 -26
- package/es/table/src/util.js +8 -5
- package/es/table/style.css +2 -1
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/vn.js +11 -0
- package/es/vxe-table/style.css +2 -1
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +12 -0
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +510 -134
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/filter/hook.js +123 -66
- package/lib/table/module/filter/hook.min.js +1 -1
- package/lib/table/module/filter/panel.js +59 -26
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/render/index.js +109 -8
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +18 -5
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/header.js +133 -3
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/props.js +2 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +10 -10
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +18 -14
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +2 -1
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/vn.js +12 -0
- package/lib/ui/src/vn.min.js +1 -1
- package/lib/vxe-table/style/style.css +2 -1
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/grid/src/grid.ts +8 -0
- package/packages/table/module/filter/hook.ts +110 -64
- package/packages/table/module/filter/panel.ts +56 -28
- package/packages/table/render/index.ts +110 -15
- package/packages/table/src/column.ts +2 -0
- package/packages/table/src/columnInfo.ts +19 -7
- package/packages/table/src/header.ts +137 -8
- package/packages/table/src/props.ts +2 -0
- package/packages/table/src/table.ts +30 -26
- package/packages/table/src/util.ts +8 -5
- package/packages/ui/index.ts +3 -0
- package/packages/ui/src/vn.ts +12 -0
- package/styles/components/table-module/filter.scss +4 -1
- /package/es/{iconfont.1758850674944.ttf → iconfont.1759031444881.ttf} +0 -0
- /package/es/{iconfont.1758850674944.woff → iconfont.1759031444881.woff} +0 -0
- /package/es/{iconfont.1758850674944.woff2 → iconfont.1759031444881.woff2} +0 -0
- /package/lib/{iconfont.1758850674944.ttf → iconfont.1759031444881.ttf} +0 -0
- /package/lib/{iconfont.1758850674944.woff → iconfont.1759031444881.woff} +0 -0
- /package/lib/{iconfont.1758850674944.woff2 → iconfont.1759031444881.woff2} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../ui';
|
|
3
3
|
import { toFilters } from './util';
|
|
4
|
-
import { getFuncText } from '../../ui/src/utils';
|
|
4
|
+
import { isEnableConf, getFuncText } from '../../ui/src/utils';
|
|
5
5
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
6
|
-
const { getI18n, formats } = VxeUI;
|
|
6
|
+
const { getI18n, formats, renderer } = VxeUI;
|
|
7
7
|
export class ColumnInfo {
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
9
9
|
constructor($xeTable, _vm, { renderHeader, renderCell, renderFooter, renderData } = {}) {
|
|
@@ -11,9 +11,13 @@ export class ColumnInfo {
|
|
|
11
11
|
const $xeGrid = $xeTable.xeGrid;
|
|
12
12
|
const $xeGantt = $xeTable.xeGantt;
|
|
13
13
|
const $xeGGWrapper = $xeGrid || $xeGantt;
|
|
14
|
-
const { field, editRender } = _vm;
|
|
14
|
+
const { field, editRender, filterRender } = _vm;
|
|
15
|
+
const colId = _vm.colId || XEUtils.uniqueId('col_');
|
|
15
16
|
const formatter = _vm.formatter;
|
|
16
17
|
const visible = XEUtils.isBoolean(_vm.visible) ? _vm.visible : true;
|
|
18
|
+
const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
19
|
+
const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null;
|
|
20
|
+
const filters = toFilters(_vm.filters, colId);
|
|
17
21
|
const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
|
|
18
22
|
if (_vm.type && types.indexOf(_vm.type) === -1) {
|
|
19
23
|
warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
|
|
@@ -87,12 +91,13 @@ export class ColumnInfo {
|
|
|
87
91
|
sortable: _vm.sortable,
|
|
88
92
|
sortBy: _vm.sortBy,
|
|
89
93
|
sortType: _vm.sortType,
|
|
90
|
-
filters:
|
|
94
|
+
filters: filters,
|
|
91
95
|
filterMultiple: XEUtils.isBoolean(_vm.filterMultiple) ? _vm.filterMultiple : true,
|
|
92
96
|
filterMethod: _vm.filterMethod,
|
|
93
97
|
filterResetMethod: _vm.filterResetMethod,
|
|
94
98
|
filterRecoverMethod: _vm.filterRecoverMethod,
|
|
95
|
-
filterRender:
|
|
99
|
+
filterRender: filterRender,
|
|
100
|
+
floatingFilters: _vm.floatingFilters,
|
|
96
101
|
rowGroupNode: _vm.rowGroupNode,
|
|
97
102
|
treeNode: _vm.treeNode,
|
|
98
103
|
dragSort: _vm.dragSort,
|
|
@@ -111,7 +116,7 @@ export class ColumnInfo {
|
|
|
111
116
|
// 自定义参数
|
|
112
117
|
params: _vm.params,
|
|
113
118
|
// 渲染属性
|
|
114
|
-
id:
|
|
119
|
+
id: colId,
|
|
115
120
|
parentId: null,
|
|
116
121
|
visible,
|
|
117
122
|
// 内部属性(一旦被使用,将导致不可升级版本)
|
|
@@ -154,6 +159,9 @@ export class ColumnInfo {
|
|
|
154
159
|
// 单元格插槽,只对 grid 有效
|
|
155
160
|
slots: _vm.slots
|
|
156
161
|
});
|
|
162
|
+
if (ctFilterOptions && (!filters || !filters.length)) {
|
|
163
|
+
this.filters = toFilters(ctFilterOptions({ $table: $xeTable, column: this }), colId);
|
|
164
|
+
}
|
|
157
165
|
if ($xeGGWrapper) {
|
|
158
166
|
const { computeProxyOpts } = $xeGGWrapper.getComputeMaps();
|
|
159
167
|
const proxyOpts = computeProxyOpts.value;
|
package/es/table/src/header.js
CHANGED
|
@@ -2,7 +2,9 @@ import { h, ref, inject, nextTick, watch, onMounted, onUnmounted } from 'vue';
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
4
|
import { VxeUI } from '../../ui';
|
|
5
|
+
import { isEnableConf } from '../../ui/src/utils';
|
|
5
6
|
import { getCalcHeight, convertHeaderColumnToRows, convertHeaderToGridRows } from './util';
|
|
7
|
+
import { getSlotVNs } from '../../ui/src/vn';
|
|
6
8
|
const { renderer, renderEmptyElement } = VxeUI;
|
|
7
9
|
const renderType = 'header';
|
|
8
10
|
function getColumnFirstChild(column) {
|
|
@@ -34,7 +36,7 @@ export default defineVxeComponent({
|
|
|
34
36
|
setup(props) {
|
|
35
37
|
const $xeTable = inject('$xeTable', {});
|
|
36
38
|
const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
|
|
37
|
-
const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts } = $xeTable.getComputeMaps();
|
|
39
|
+
const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts, computeFloatingFilterOpts } = $xeTable.getComputeMaps();
|
|
38
40
|
const headerColumn = ref([]);
|
|
39
41
|
const refElem = ref();
|
|
40
42
|
const refHeaderScroll = ref();
|
|
@@ -238,10 +240,114 @@ export default defineVxeComponent({
|
|
|
238
240
|
]);
|
|
239
241
|
});
|
|
240
242
|
};
|
|
241
|
-
const
|
|
243
|
+
const renderFilterRows = (isOptimizeMode, cols) => {
|
|
244
|
+
const $xeGrid = $xeTable.xeGrid;
|
|
245
|
+
const $xeGantt = $xeTable.xeGantt;
|
|
242
246
|
const { fixedType } = props;
|
|
247
|
+
const { showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign } = tableProps;
|
|
248
|
+
const { currentColumn, overflowX } = tableReactData;
|
|
249
|
+
const { fullColumnIdData } = tableInternalData;
|
|
250
|
+
const cellOpts = computeCellOpts.value;
|
|
251
|
+
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
252
|
+
const headerCellOpts = computeHeaderCellOpts.value;
|
|
253
|
+
const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight;
|
|
254
|
+
return cols.map((column, $columnIndex) => {
|
|
255
|
+
const { type, showHeaderOverflow, headerAlign, align, filters, editRender, cellRender, floatingFilters, filterRender, slots } = column;
|
|
256
|
+
const colid = column.id;
|
|
257
|
+
const colRest = fullColumnIdData[colid] || {};
|
|
258
|
+
const renderOpts = editRender || cellRender;
|
|
259
|
+
const flSlot = slots ? (slots.floatingFilter || slots['floating-filter']) : null;
|
|
260
|
+
const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
|
|
261
|
+
const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
262
|
+
const rtFloatingFilter = flCompConf ? flCompConf.renderTableFloatingFilter : null;
|
|
263
|
+
const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed);
|
|
264
|
+
const isPadding = XEUtils.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding;
|
|
265
|
+
const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
|
|
266
|
+
const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
|
|
267
|
+
const showEllipsis = headOverflow === 'ellipsis';
|
|
268
|
+
const showTitle = headOverflow === 'title';
|
|
269
|
+
const showTooltip = headOverflow === true || headOverflow === 'tooltip';
|
|
270
|
+
const hasEllipsis = showTitle || showTooltip || showEllipsis;
|
|
271
|
+
let hasFilter = false;
|
|
272
|
+
let firstFilterOption = null;
|
|
273
|
+
if (filters) {
|
|
274
|
+
firstFilterOption = filters[0];
|
|
275
|
+
hasFilter = filters.some((item) => item.checked);
|
|
276
|
+
}
|
|
277
|
+
const columnIndex = colRest.index;
|
|
278
|
+
const _columnIndex = colRest._index;
|
|
279
|
+
const cellParams = {
|
|
280
|
+
$table: $xeTable,
|
|
281
|
+
$grid: $xeGrid,
|
|
282
|
+
$gantt: $xeGantt,
|
|
283
|
+
column,
|
|
284
|
+
columnIndex,
|
|
285
|
+
$columnIndex,
|
|
286
|
+
_columnIndex,
|
|
287
|
+
option: firstFilterOption,
|
|
288
|
+
fixed: fixedType,
|
|
289
|
+
type: renderType,
|
|
290
|
+
isHidden: fixedHiddenColumn,
|
|
291
|
+
hasFilter
|
|
292
|
+
};
|
|
293
|
+
const thAttrs = {
|
|
294
|
+
colid
|
|
295
|
+
};
|
|
296
|
+
const isLastColumn = $columnIndex === cols.length - 1;
|
|
297
|
+
const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
|
|
298
|
+
const tcStyle = {};
|
|
299
|
+
if (hasEllipsis) {
|
|
300
|
+
tcStyle.height = `${currCellHeight}px`;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
tcStyle.minHeight = `${currCellHeight}px`;
|
|
304
|
+
}
|
|
305
|
+
return h('th', Object.assign({ class: ['vxe-table--column vxe-header--column', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
|
|
306
|
+
[`col--${headAlign}`]: headAlign,
|
|
307
|
+
[`col--${type}`]: type,
|
|
308
|
+
'col--last': isLastColumn,
|
|
309
|
+
'col--fixed': column.fixed,
|
|
310
|
+
'col--ellipsis': hasEllipsis,
|
|
311
|
+
'fixed--width': !isAutoCellWidth,
|
|
312
|
+
'is--padding': isPadding,
|
|
313
|
+
'is--sortable': column.sortable,
|
|
314
|
+
'col--current': currentColumn === column
|
|
315
|
+
}
|
|
316
|
+
], key: colid }, thAttrs), [
|
|
317
|
+
h('div', {
|
|
318
|
+
class: ['vxe-cell', {
|
|
319
|
+
'c--title': showTitle,
|
|
320
|
+
'c--tooltip': showTooltip,
|
|
321
|
+
'c--ellipsis': showEllipsis
|
|
322
|
+
}],
|
|
323
|
+
style: tcStyle
|
|
324
|
+
}, isOptimizeMode && fixedHiddenColumn && !floatingFilters
|
|
325
|
+
? []
|
|
326
|
+
: [
|
|
327
|
+
h('div', {
|
|
328
|
+
colid,
|
|
329
|
+
class: 'vxe-cell--wrapper vxe-header-cell--wrapper'
|
|
330
|
+
}, flSlot
|
|
331
|
+
? $xeTable.callSlot(flSlot, cellParams)
|
|
332
|
+
: (rtFloatingFilter && firstFilterOption
|
|
333
|
+
? getSlotVNs(rtFloatingFilter(filterRender, {
|
|
334
|
+
$table: $xeTable,
|
|
335
|
+
option: firstFilterOption,
|
|
336
|
+
column: column,
|
|
337
|
+
columnIndex,
|
|
338
|
+
$columnIndex
|
|
339
|
+
}))
|
|
340
|
+
: []))
|
|
341
|
+
])
|
|
342
|
+
]);
|
|
343
|
+
});
|
|
344
|
+
};
|
|
345
|
+
const renderHeads = (isGroup, isOptimizeMode, headerGroups) => {
|
|
346
|
+
const { fixedType, fixedColumn } = props;
|
|
243
347
|
const { headerRowClassName, headerRowStyle } = tableProps;
|
|
244
|
-
|
|
348
|
+
const { visibleColumn } = tableInternalData;
|
|
349
|
+
const floatingFilterOpts = computeFloatingFilterOpts.value;
|
|
350
|
+
const rowVNs = headerGroups.map((cols, $rowIndex) => {
|
|
245
351
|
const params = { $table: $xeTable, $rowIndex, fixed: fixedType, type: renderType };
|
|
246
352
|
return h('tr', {
|
|
247
353
|
key: $rowIndex,
|
|
@@ -252,6 +358,15 @@ export default defineVxeComponent({
|
|
|
252
358
|
style: headerRowStyle ? (XEUtils.isFunction(headerRowStyle) ? headerRowStyle(params) : headerRowStyle) : null
|
|
253
359
|
}, renderRows(isGroup, isOptimizeMode, headerGroups, $rowIndex, cols));
|
|
254
360
|
});
|
|
361
|
+
if (floatingFilterOpts.enabled) {
|
|
362
|
+
rowVNs.push(h('tr', {
|
|
363
|
+
key: 'ff',
|
|
364
|
+
class: [
|
|
365
|
+
'vxe-header--row'
|
|
366
|
+
]
|
|
367
|
+
}, renderFilterRows(isOptimizeMode, isOptimizeMode && fixedType ? fixedColumn : visibleColumn)));
|
|
368
|
+
}
|
|
369
|
+
return rowVNs;
|
|
255
370
|
};
|
|
256
371
|
const renderVN = () => {
|
|
257
372
|
const { fixedType, fixedColumn, tableColumn } = props;
|
package/es/table/src/props.js
CHANGED
package/es/table/src/table.js
CHANGED
|
@@ -132,9 +132,7 @@ export default defineVxeComponent({
|
|
|
132
132
|
isAllSelected: false,
|
|
133
133
|
isIndeterminate: false,
|
|
134
134
|
style: null,
|
|
135
|
-
options: [],
|
|
136
135
|
column: null,
|
|
137
|
-
multiple: false,
|
|
138
136
|
visible: false,
|
|
139
137
|
maxHeight: null
|
|
140
138
|
},
|
|
@@ -534,6 +532,9 @@ export default defineVxeComponent({
|
|
|
534
532
|
const computeFilterOpts = computed(() => {
|
|
535
533
|
return Object.assign({}, getConfig().table.filterConfig, props.filterConfig);
|
|
536
534
|
});
|
|
535
|
+
const computeFloatingFilterOpts = computed(() => {
|
|
536
|
+
return Object.assign({}, getConfig().table.floatingFilterConfig, props.floatingFilterConfig);
|
|
537
|
+
});
|
|
537
538
|
const computeMouseOpts = computed(() => {
|
|
538
539
|
return Object.assign({}, getConfig().table.mouseConfig, props.mouseConfig);
|
|
539
540
|
});
|
|
@@ -797,6 +798,7 @@ export default defineVxeComponent({
|
|
|
797
798
|
computeEditOpts,
|
|
798
799
|
computeSortOpts,
|
|
799
800
|
computeFilterOpts,
|
|
801
|
+
computeFloatingFilterOpts,
|
|
800
802
|
computeMouseOpts,
|
|
801
803
|
computeAreaOpts,
|
|
802
804
|
computeKeyboardOpts,
|
|
@@ -1654,7 +1656,7 @@ export default defineVxeComponent({
|
|
|
1654
1656
|
}
|
|
1655
1657
|
else {
|
|
1656
1658
|
if (storage && !type) {
|
|
1657
|
-
errLog('vxe.error.reqSupportProp', ['storage',
|
|
1659
|
+
errLog('vxe.error.reqSupportProp', ['storage', `[${type ? `type=${type}` : `title=${column.getTitle()}`}]field=?`]);
|
|
1658
1660
|
}
|
|
1659
1661
|
if (columnOpts.drag && (isCrossDrag || isSelfToChildDrag)) {
|
|
1660
1662
|
errLog('vxe.error.reqSupportProp', ['column-drag-config.isCrossDrag | column-drag-config.isSelfToChildDrag', `${column.getTitle() || type || ''} -> field=?`]);
|
|
@@ -6197,7 +6199,7 @@ export default defineVxeComponent({
|
|
|
6197
6199
|
setFilterByEvent(evnt, fieldOrColumn, options) {
|
|
6198
6200
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
6199
6201
|
if (column && column.filters) {
|
|
6200
|
-
column.filters = toFilters(options || []);
|
|
6202
|
+
column.filters = toFilters(options || [], column.id);
|
|
6201
6203
|
return $xeTable.handleColumnConfirmFilter(column, evnt);
|
|
6202
6204
|
}
|
|
6203
6205
|
return nextTick();
|
|
@@ -6211,13 +6213,13 @@ export default defineVxeComponent({
|
|
|
6211
6213
|
const { column, visible } = filterStore;
|
|
6212
6214
|
filterStore.isAllSelected = false;
|
|
6213
6215
|
filterStore.isIndeterminate = false;
|
|
6214
|
-
filterStore.options = [];
|
|
6215
6216
|
filterStore.visible = false;
|
|
6216
6217
|
if (visible) {
|
|
6218
|
+
const field = column ? column.field : null;
|
|
6217
6219
|
dispatchEvent('filter-visible', {
|
|
6218
6220
|
column,
|
|
6219
|
-
property:
|
|
6220
|
-
field
|
|
6221
|
+
property: field,
|
|
6222
|
+
field,
|
|
6221
6223
|
filterList: () => $xeTable.getCheckedFilters(),
|
|
6222
6224
|
visible: false
|
|
6223
6225
|
}, null);
|
|
@@ -7280,7 +7282,7 @@ export default defineVxeComponent({
|
|
|
7280
7282
|
* 全局按下事件处理
|
|
7281
7283
|
*/
|
|
7282
7284
|
const handleGlobalMousedownEvent = (evnt) => {
|
|
7283
|
-
const { editStore, ctxMenuStore,
|
|
7285
|
+
const { editStore, ctxMenuStore, customStore } = reactData;
|
|
7284
7286
|
const { mouseConfig, editRules } = props;
|
|
7285
7287
|
const el = refElem.value;
|
|
7286
7288
|
const editOpts = computeEditOpts.value;
|
|
@@ -7301,7 +7303,7 @@ export default defineVxeComponent({
|
|
|
7301
7303
|
}
|
|
7302
7304
|
else {
|
|
7303
7305
|
if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
|
|
7304
|
-
tablePrivateMethods.preventEvent(evnt, 'event.clearFilter',
|
|
7306
|
+
tablePrivateMethods.preventEvent(evnt, 'event.clearFilter', internalData._currFilterParams, tableMethods.closeFilter);
|
|
7305
7307
|
}
|
|
7306
7308
|
}
|
|
7307
7309
|
}
|
|
@@ -8810,24 +8812,25 @@ export default defineVxeComponent({
|
|
|
8810
8812
|
reactData.reColumnFlag++;
|
|
8811
8813
|
},
|
|
8812
8814
|
handleFilterOptions(column) {
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8815
|
+
if (column) {
|
|
8816
|
+
const { filterStore } = reactData;
|
|
8817
|
+
const { filterRender, filters } = column;
|
|
8818
|
+
const filterOptions = filters || [];
|
|
8819
|
+
const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
8820
|
+
const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null);
|
|
8821
|
+
filterStore.column = column;
|
|
8822
|
+
// 复原状态
|
|
8823
|
+
filterOptions.forEach((option) => {
|
|
8824
|
+
const { _checked, checked } = option;
|
|
8825
|
+
option._checked = checked;
|
|
8826
|
+
if (!checked && _checked !== checked) {
|
|
8827
|
+
if (frMethod) {
|
|
8828
|
+
frMethod({ option, column, $table: $xeTable });
|
|
8829
|
+
}
|
|
8827
8830
|
}
|
|
8828
|
-
}
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
+
});
|
|
8832
|
+
$xeTable.checkFilterOptions();
|
|
8833
|
+
}
|
|
8831
8834
|
},
|
|
8832
8835
|
preventEvent(evnt, type, args, next, end) {
|
|
8833
8836
|
let evntList = interceptor.get(type);
|
package/es/table/src/util.js
CHANGED
|
@@ -367,11 +367,14 @@ function getElementMarginAndWidth(elem) {
|
|
|
367
367
|
}
|
|
368
368
|
return 0;
|
|
369
369
|
}
|
|
370
|
-
export function toFilters(filters) {
|
|
371
|
-
if (filters
|
|
372
|
-
|
|
373
|
-
return { label, value, data, resetValue, checked
|
|
374
|
-
|
|
370
|
+
export function toFilters(filters, colid) {
|
|
371
|
+
if (filters) {
|
|
372
|
+
if (XEUtils.isArray(filters)) {
|
|
373
|
+
return filters.map(({ label, value, data, resetValue, checked }) => {
|
|
374
|
+
return { label, value, data, resetValue, checked: !!checked, _checked: !!checked, _colId: colid };
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
return [];
|
|
375
378
|
}
|
|
376
379
|
return filters;
|
|
377
380
|
}
|
package/es/table/style.css
CHANGED
|
@@ -1525,7 +1525,8 @@
|
|
|
1525
1525
|
box-shadow: var(--vxe-ui-base-popup-box-shadow);
|
|
1526
1526
|
z-index: 10;
|
|
1527
1527
|
}
|
|
1528
|
-
.vxe-table--filter-wrapper:not(.is--multiple)
|
|
1528
|
+
.vxe-table--filter-wrapper:not(.is--multiple) .vxe-table--filter-header,
|
|
1529
|
+
.vxe-table--filter-wrapper:not(.is--multiple) .vxe-table--filter-body {
|
|
1529
1530
|
text-align: center;
|
|
1530
1531
|
}
|
|
1531
1532
|
.vxe-table--filter-wrapper.is--active {
|