vxe-table 3.13.6 → 3.13.7
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/locale/lang/ar-EG.js +2 -1
- package/es/locale/lang/de-DE.js +2 -1
- package/es/locale/lang/en-US.js +2 -1
- package/es/locale/lang/es-ES.js +2 -1
- package/es/locale/lang/fr-FR.js +2 -1
- package/es/locale/lang/hu-HU.js +2 -1
- package/es/locale/lang/hy-AM.js +2 -1
- package/es/locale/lang/id-ID.js +2 -1
- package/es/locale/lang/it-IT.js +2 -1
- package/es/locale/lang/ja-JP.js +2 -1
- package/es/locale/lang/ko-KR.js +2 -1
- package/es/locale/lang/nb-NO.js +2 -1
- package/es/locale/lang/pt-BR.js +2 -1
- package/es/locale/lang/ru-RU.js +2 -1
- package/es/locale/lang/th-TH.js +2 -1
- package/es/locale/lang/ug-CN.js +2 -1
- package/es/locale/lang/uk-UA.js +2 -1
- package/es/locale/lang/vi-VN.js +2 -1
- package/es/locale/lang/zh-CHT.js +2 -1
- package/es/locale/lang/zh-CN.js +2 -1
- package/es/style.css +1 -1
- package/es/table/module/export/mixin.js +2 -2
- package/es/table/module/filter/mixin.js +87 -79
- package/es/table/module/menu/mixin.js +2 -1
- package/es/table/src/methods.js +7 -5
- package/es/table/src/table.js +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +120 -112
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +2 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +2 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +2 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +2 -1
- package/lib/locale/lang/es-ES.js +2 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +2 -1
- package/lib/locale/lang/fr-FR.js +2 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +2 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +2 -1
- package/lib/locale/lang/hy-AM.js +2 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +2 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +2 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +2 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +2 -1
- package/lib/locale/lang/ko-KR.js +2 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +2 -1
- package/lib/locale/lang/nb-NO.js +2 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +2 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +2 -1
- package/lib/locale/lang/ru-RU.js +2 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +2 -1
- package/lib/locale/lang/th-TH.js +2 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +2 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +2 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +2 -1
- package/lib/locale/lang/vi-VN.js +2 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +2 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +2 -1
- package/lib/locale/lang/zh-CN.js +2 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +2 -1
- package/lib/style.css +1 -1
- package/lib/table/module/export/mixin.js +2 -2
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +105 -99
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +2 -1
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/src/methods.js +6 -6
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +1 -1
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +1 -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/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +2 -1
- package/packages/locale/lang/de-DE.ts +2 -1
- package/packages/locale/lang/en-US.ts +2 -1
- package/packages/locale/lang/es-ES.ts +2 -1
- package/packages/locale/lang/fr-FR.ts +2 -1
- package/packages/locale/lang/hu-HU.ts +2 -1
- package/packages/locale/lang/hy-AM.ts +2 -1
- package/packages/locale/lang/id-ID.ts +2 -1
- package/packages/locale/lang/it-IT.ts +2 -1
- package/packages/locale/lang/ja-JP.ts +2 -1
- package/packages/locale/lang/ko-KR.ts +2 -1
- package/packages/locale/lang/nb-NO.ts +2 -1
- package/packages/locale/lang/pt-BR.ts +2 -1
- package/packages/locale/lang/ru-RU.ts +2 -1
- package/packages/locale/lang/th-TH.ts +2 -1
- package/packages/locale/lang/ug-CN.ts +2 -1
- package/packages/locale/lang/uk-UA.ts +2 -1
- package/packages/locale/lang/vi-VN.ts +2 -1
- package/packages/locale/lang/zh-CHT.ts +2 -1
- package/packages/locale/lang/zh-CN.ts +2 -1
- package/packages/table/module/export/mixin.ts +2 -2
- package/packages/table/module/filter/mixin.ts +85 -77
- package/packages/table/module/menu/mixin.ts +2 -1
- package/packages/table/src/methods.ts +7 -5
- package/packages/table/src/table.ts +1 -1
- /package/es/{iconfont.1740103990490.ttf → iconfont.1740188839037.ttf} +0 -0
- /package/es/{iconfont.1740103990490.woff → iconfont.1740188839037.woff} +0 -0
- /package/es/{iconfont.1740103990490.woff2 → iconfont.1740188839037.woff2} +0 -0
- /package/lib/{iconfont.1740103990490.ttf → iconfont.1740188839037.ttf} +0 -0
- /package/lib/{iconfont.1740103990490.woff → iconfont.1740188839037.woff} +0 -0
- /package/lib/{iconfont.1740103990490.woff2 → iconfont.1740188839037.woff2} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../../ui';
|
|
3
|
-
import { toFilters, handleFieldOrColumn } from '../../src/util';
|
|
3
|
+
import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
|
|
4
4
|
import { getDomNode, triggerEvent } from '../../../ui/src/dom';
|
|
5
5
|
import { isEnableConf } from '../../../ui/src/utils';
|
|
6
6
|
const { renderer } = VxeUI;
|
|
@@ -56,93 +56,101 @@ export default {
|
|
|
56
56
|
* @param {Object} params 参数
|
|
57
57
|
*/
|
|
58
58
|
triggerFilterEvent(evnt, column, params) {
|
|
59
|
+
const $xeTable = this;
|
|
60
|
+
const reactData = $xeTable;
|
|
61
|
+
const internalData = $xeTable;
|
|
59
62
|
const { filterStore } = this;
|
|
60
63
|
if (filterStore.column === column && filterStore.visible) {
|
|
61
64
|
filterStore.visible = false;
|
|
62
65
|
}
|
|
63
66
|
else {
|
|
64
|
-
const {
|
|
65
|
-
const {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
67
|
+
const { initStore, filterStore } = reactData;
|
|
68
|
+
const { elemStore } = internalData;
|
|
69
|
+
if (filterStore.column === column && filterStore.visible) {
|
|
70
|
+
filterStore.visible = false;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const { clientY, pageX } = evnt;
|
|
74
|
+
const el = $xeTable.$refs.refElem;
|
|
75
|
+
const tableRect = el.getBoundingClientRect();
|
|
76
|
+
const targetElem = evnt.target;
|
|
77
|
+
const { visibleWidth } = getDomNode();
|
|
78
|
+
const { filters, filterMultiple, filterRender } = column;
|
|
79
|
+
const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
|
|
80
|
+
const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null);
|
|
81
|
+
internalData._currFilterParams = params;
|
|
82
|
+
Object.assign(filterStore, {
|
|
83
|
+
multiple: filterMultiple,
|
|
84
|
+
options: filters,
|
|
85
|
+
column,
|
|
86
|
+
style: null
|
|
87
|
+
});
|
|
88
|
+
// 复原状态
|
|
89
|
+
filterStore.options.forEach((option) => {
|
|
90
|
+
const { _checked, checked } = option;
|
|
91
|
+
option._checked = checked;
|
|
92
|
+
if (!checked && _checked !== checked) {
|
|
93
|
+
if (frMethod) {
|
|
94
|
+
frMethod({ option, column, $table: $xeTable });
|
|
95
|
+
}
|
|
84
96
|
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const headerElem = refTableHeader ? refTableHeader.$el : null;
|
|
94
|
-
if (!bodyElem) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const filterWrapperElem = filterWrapper.$el;
|
|
98
|
-
if (!filterWrapperElem) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const filterWidth = filterWrapperElem.offsetWidth;
|
|
102
|
-
const filterHeight = filterWrapperElem.offsetHeight;
|
|
103
|
-
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
104
|
-
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
105
|
-
const centerWidth = filterWidth / 2;
|
|
106
|
-
const minMargin = 10;
|
|
107
|
-
const maxLeft = bodyElem.clientWidth - filterWidth - minMargin;
|
|
108
|
-
let left, right;
|
|
109
|
-
const style = {
|
|
110
|
-
top: `${targetElem.offsetTop + targetElem.offsetParent.offsetTop + targetElem.offsetHeight}px`
|
|
111
|
-
};
|
|
112
|
-
// 判断面板不能大于表格高度
|
|
113
|
-
let maxHeight = null;
|
|
114
|
-
const bodyHeight = bodyElem.clientHeight - (headerElem ? headerElem.clientHeight / 2 : 0);
|
|
115
|
-
if (filterHeight >= bodyHeight) {
|
|
116
|
-
maxHeight = Math.max(40, bodyHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0));
|
|
117
|
-
}
|
|
118
|
-
if (column.fixed === 'left') {
|
|
119
|
-
left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth;
|
|
120
|
-
}
|
|
121
|
-
else if (column.fixed === 'right') {
|
|
122
|
-
right = (targetElem.offsetParent.offsetWidth - targetElem.offsetLeft) + (targetElem.offsetParent.offsetParent.offsetWidth - targetElem.offsetParent.offsetLeft) - column.renderWidth - centerWidth;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth - bodyElem.scrollLeft;
|
|
126
|
-
}
|
|
127
|
-
if (left) {
|
|
128
|
-
const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
|
|
129
|
-
if (overflowWidth > 0) {
|
|
130
|
-
left -= overflowWidth;
|
|
97
|
+
});
|
|
98
|
+
this.checkFilterOptions();
|
|
99
|
+
filterStore.visible = true;
|
|
100
|
+
initStore.filter = true;
|
|
101
|
+
$xeTable.$nextTick(() => {
|
|
102
|
+
const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
|
|
103
|
+
if (!headerScrollElem) {
|
|
104
|
+
return;
|
|
131
105
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (overflowWidth > 0) {
|
|
137
|
-
right += overflowWidth;
|
|
106
|
+
const tableFilter = $xeTable.$refs.refTableFilter;
|
|
107
|
+
const filterWrapperElem = tableFilter ? tableFilter.$el : null;
|
|
108
|
+
if (!filterWrapperElem) {
|
|
109
|
+
return;
|
|
138
110
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
111
|
+
const filterWidth = filterWrapperElem.offsetWidth;
|
|
112
|
+
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
113
|
+
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
114
|
+
const centerWidth = filterWidth / 2;
|
|
115
|
+
const minMargin = 10;
|
|
116
|
+
const maxLeft = el.clientWidth - filterWidth - minMargin;
|
|
117
|
+
let left, right;
|
|
118
|
+
const thEl = targetElem.offsetParent;
|
|
119
|
+
const trEl = thEl.offsetParent;
|
|
120
|
+
const style = {
|
|
121
|
+
top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
|
|
122
|
+
};
|
|
123
|
+
// 判断面板不能大于表格高度
|
|
124
|
+
const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
|
|
125
|
+
if (column.fixed === 'left') {
|
|
126
|
+
left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth;
|
|
127
|
+
}
|
|
128
|
+
else if (column.fixed === 'right') {
|
|
129
|
+
right = (thEl.offsetWidth - targetElem.offsetLeft) + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft;
|
|
133
|
+
}
|
|
134
|
+
if (left) {
|
|
135
|
+
const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
|
|
136
|
+
if (overflowWidth > 0) {
|
|
137
|
+
left -= overflowWidth;
|
|
138
|
+
}
|
|
139
|
+
style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
|
|
140
|
+
}
|
|
141
|
+
else if (right) {
|
|
142
|
+
const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
|
|
143
|
+
if (overflowWidth > 0) {
|
|
144
|
+
right += overflowWidth;
|
|
145
|
+
}
|
|
146
|
+
style.right = `${Math.max(minMargin, right)}px`;
|
|
147
|
+
}
|
|
148
|
+
filterStore.style = style;
|
|
149
|
+
filterStore.maxHeight = maxHeight;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
$xeTable.dispatchEvent('filter-visible', { column, field: column.field, property: column.field, filterList: $xeTable.getCheckedFilters(), visible: filterStore.visible }, evnt);
|
|
144
153
|
}
|
|
145
|
-
this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: filterStore.visible }, evnt);
|
|
146
154
|
},
|
|
147
155
|
handleFilterConfirmFilter(evnt) {
|
|
148
156
|
const $xeTable = this;
|
|
@@ -61,6 +61,7 @@ export default {
|
|
|
61
61
|
const internalData = $xeTable;
|
|
62
62
|
const { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this;
|
|
63
63
|
const { selected } = editStore;
|
|
64
|
+
const tableFilter = $xeTable.$refs.refTableFilter;
|
|
64
65
|
const layoutList = ['header', 'body', 'footer'];
|
|
65
66
|
if (isEnableConf(menuConfig) || contextMenu) {
|
|
66
67
|
if (ctxMenuStore.visible && $refs.refTableMenu && getEventTargetNode(evnt, $refs.refTableMenu.$el).flag) {
|
|
@@ -133,7 +134,7 @@ export default {
|
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
|
-
if (
|
|
137
|
+
if (tableFilter && !getEventTargetNode(evnt, tableFilter.$el).flag) {
|
|
137
138
|
this.closeFilter();
|
|
138
139
|
}
|
|
139
140
|
this.closeMenu();
|
package/es/table/src/methods.js
CHANGED
|
@@ -4518,13 +4518,15 @@ const Methods = {
|
|
|
4518
4518
|
handleGlobalMousedownEvent(evnt) {
|
|
4519
4519
|
const { $el, $refs, $xegrid, $toolbar, mouseConfig, editStore, ctxMenuStore, editRules, editOpts, validOpts, areaOpts, filterStore, customStore, getRowNode } = this;
|
|
4520
4520
|
const { actived } = editStore;
|
|
4521
|
-
const {
|
|
4521
|
+
const { customWrapper, refValidTooltip } = $refs;
|
|
4522
|
+
const tableFilter = $refs.refTableFilter;
|
|
4523
|
+
const tableMenu = $refs.refTableMenu;
|
|
4522
4524
|
// 筛选
|
|
4523
|
-
if (
|
|
4525
|
+
if (tableFilter) {
|
|
4524
4526
|
if (getEventTargetNode(evnt, $el, 'vxe-cell--filter').flag) {
|
|
4525
4527
|
// 如果点击了筛选按钮
|
|
4526
4528
|
}
|
|
4527
|
-
else if (getEventTargetNode(evnt,
|
|
4529
|
+
else if (getEventTargetNode(evnt, tableFilter.$el).flag) {
|
|
4528
4530
|
// 如果点击筛选容器
|
|
4529
4531
|
}
|
|
4530
4532
|
else {
|
|
@@ -4604,7 +4606,7 @@ const Methods = {
|
|
|
4604
4606
|
}
|
|
4605
4607
|
}
|
|
4606
4608
|
else if (mouseConfig) {
|
|
4607
|
-
if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(
|
|
4609
|
+
if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
|
|
4608
4610
|
if (this.clearSelected) {
|
|
4609
4611
|
this.clearSelected();
|
|
4610
4612
|
}
|
|
@@ -4623,7 +4625,7 @@ const Methods = {
|
|
|
4623
4625
|
}
|
|
4624
4626
|
}
|
|
4625
4627
|
// 如果配置了快捷菜单且,点击了其他地方则关闭
|
|
4626
|
-
if (ctxMenuStore.visible &&
|
|
4628
|
+
if (ctxMenuStore.visible && tableMenu && !getEventTargetNode(evnt, tableMenu.$el).flag) {
|
|
4627
4629
|
this.closeMenu();
|
|
4628
4630
|
}
|
|
4629
4631
|
const isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag;
|
package/es/table/src/table.js
CHANGED
package/es/ui/index.js
CHANGED
package/es/ui/src/log.js
CHANGED
package/lib/index.umd.js
CHANGED
|
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
|
|
|
2220
2220
|
;// CONCATENATED MODULE: ./packages/ui/index.ts
|
|
2221
2221
|
|
|
2222
2222
|
|
|
2223
|
-
const version = "3.13.
|
|
2223
|
+
const version = "3.13.7";
|
|
2224
2224
|
core_.VxeUI.version = version;
|
|
2225
2225
|
core_.VxeUI.tableVersion = version;
|
|
2226
2226
|
core_.VxeUI.setConfig({
|
|
@@ -2843,7 +2843,7 @@ function isNodeElement(elem) {
|
|
|
2843
2843
|
const {
|
|
2844
2844
|
log: log_log
|
|
2845
2845
|
} = core_.VxeUI;
|
|
2846
|
-
const log_version = `table v${"3.13.
|
|
2846
|
+
const log_version = `table v${"3.13.7"}`;
|
|
2847
2847
|
const warnLog = log_log.create('warn', log_version);
|
|
2848
2848
|
const errLog = log_log.create('error', log_version);
|
|
2849
2849
|
;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
|
|
@@ -10325,16 +10325,16 @@ const Methods = {
|
|
|
10325
10325
|
actived
|
|
10326
10326
|
} = editStore;
|
|
10327
10327
|
const {
|
|
10328
|
-
refTableMenu,
|
|
10329
|
-
filterWrapper,
|
|
10330
10328
|
customWrapper,
|
|
10331
10329
|
refValidTooltip
|
|
10332
10330
|
} = $refs;
|
|
10331
|
+
const tableFilter = $refs.refTableFilter;
|
|
10332
|
+
const tableMenu = $refs.refTableMenu;
|
|
10333
10333
|
// 筛选
|
|
10334
|
-
if (
|
|
10334
|
+
if (tableFilter) {
|
|
10335
10335
|
if (getEventTargetNode(evnt, $el, 'vxe-cell--filter').flag) {
|
|
10336
10336
|
// 如果点击了筛选按钮
|
|
10337
|
-
} else if (getEventTargetNode(evnt,
|
|
10337
|
+
} else if (getEventTargetNode(evnt, tableFilter.$el).flag) {
|
|
10338
10338
|
// 如果点击筛选容器
|
|
10339
10339
|
} else {
|
|
10340
10340
|
if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
|
|
@@ -10408,7 +10408,7 @@ const Methods = {
|
|
|
10408
10408
|
}
|
|
10409
10409
|
}
|
|
10410
10410
|
} else if (mouseConfig) {
|
|
10411
|
-
if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(
|
|
10411
|
+
if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
|
|
10412
10412
|
if (this.clearSelected) {
|
|
10413
10413
|
this.clearSelected();
|
|
10414
10414
|
}
|
|
@@ -10429,7 +10429,7 @@ const Methods = {
|
|
|
10429
10429
|
}
|
|
10430
10430
|
}
|
|
10431
10431
|
// 如果配置了快捷菜单且,点击了其他地方则关闭
|
|
10432
|
-
if (ctxMenuStore.visible &&
|
|
10432
|
+
if (ctxMenuStore.visible && tableMenu && !getEventTargetNode(evnt, tableMenu.$el).flag) {
|
|
10433
10433
|
this.closeMenu();
|
|
10434
10434
|
}
|
|
10435
10435
|
const isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag;
|
|
@@ -19870,6 +19870,9 @@ const {
|
|
|
19870
19870
|
* @param {Object} params 参数
|
|
19871
19871
|
*/
|
|
19872
19872
|
triggerFilterEvent(evnt, column, params) {
|
|
19873
|
+
const $xeTable = this;
|
|
19874
|
+
const reactData = $xeTable;
|
|
19875
|
+
const internalData = $xeTable;
|
|
19873
19876
|
const {
|
|
19874
19877
|
filterStore
|
|
19875
19878
|
} = this;
|
|
@@ -19877,112 +19880,115 @@ const {
|
|
|
19877
19880
|
filterStore.visible = false;
|
|
19878
19881
|
} else {
|
|
19879
19882
|
const {
|
|
19880
|
-
|
|
19881
|
-
|
|
19882
|
-
} =
|
|
19883
|
-
const {
|
|
19884
|
-
filters,
|
|
19885
|
-
filterMultiple,
|
|
19886
|
-
filterRender
|
|
19887
|
-
} = column;
|
|
19888
|
-
const compConf = isEnableConf(filterRender) ? mixin_renderer.get(filterRender.name) : null;
|
|
19889
|
-
const filterRecoverMethod = column.filterRecoverMethod || (compConf ? compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod : null);
|
|
19883
|
+
initStore,
|
|
19884
|
+
filterStore
|
|
19885
|
+
} = reactData;
|
|
19890
19886
|
const {
|
|
19891
|
-
|
|
19892
|
-
} =
|
|
19893
|
-
|
|
19894
|
-
|
|
19895
|
-
|
|
19896
|
-
options: filters,
|
|
19897
|
-
column,
|
|
19898
|
-
style: null,
|
|
19899
|
-
visible: true
|
|
19900
|
-
});
|
|
19901
|
-
// 复原状态
|
|
19902
|
-
filterStore.options.forEach(option => {
|
|
19887
|
+
elemStore
|
|
19888
|
+
} = internalData;
|
|
19889
|
+
if (filterStore.column === column && filterStore.visible) {
|
|
19890
|
+
filterStore.visible = false;
|
|
19891
|
+
} else {
|
|
19903
19892
|
const {
|
|
19904
|
-
|
|
19905
|
-
|
|
19906
|
-
} =
|
|
19907
|
-
|
|
19908
|
-
|
|
19909
|
-
|
|
19910
|
-
filterRecoverMethod({
|
|
19911
|
-
option,
|
|
19912
|
-
column,
|
|
19913
|
-
$table: this
|
|
19914
|
-
});
|
|
19915
|
-
}
|
|
19916
|
-
}
|
|
19917
|
-
});
|
|
19918
|
-
this.checkFilterOptions();
|
|
19919
|
-
this.initStore.filter = true;
|
|
19920
|
-
this.$nextTick(() => {
|
|
19893
|
+
clientY,
|
|
19894
|
+
pageX
|
|
19895
|
+
} = evnt;
|
|
19896
|
+
const el = $xeTable.$refs.refElem;
|
|
19897
|
+
const tableRect = el.getBoundingClientRect();
|
|
19898
|
+
const targetElem = evnt.target;
|
|
19921
19899
|
const {
|
|
19922
|
-
|
|
19923
|
-
} =
|
|
19900
|
+
visibleWidth
|
|
19901
|
+
} = getDomNode();
|
|
19924
19902
|
const {
|
|
19925
|
-
|
|
19926
|
-
|
|
19927
|
-
|
|
19928
|
-
} =
|
|
19929
|
-
const
|
|
19930
|
-
const
|
|
19931
|
-
|
|
19932
|
-
|
|
19933
|
-
|
|
19934
|
-
|
|
19935
|
-
|
|
19936
|
-
|
|
19937
|
-
}
|
|
19938
|
-
|
|
19939
|
-
|
|
19940
|
-
|
|
19941
|
-
|
|
19942
|
-
|
|
19943
|
-
|
|
19944
|
-
|
|
19945
|
-
|
|
19946
|
-
|
|
19947
|
-
|
|
19948
|
-
|
|
19949
|
-
|
|
19950
|
-
|
|
19951
|
-
|
|
19952
|
-
|
|
19953
|
-
maxHeight = Math.max(40, bodyHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0));
|
|
19954
|
-
}
|
|
19955
|
-
if (column.fixed === 'left') {
|
|
19956
|
-
left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth;
|
|
19957
|
-
} else if (column.fixed === 'right') {
|
|
19958
|
-
right = targetElem.offsetParent.offsetWidth - targetElem.offsetLeft + (targetElem.offsetParent.offsetParent.offsetWidth - targetElem.offsetParent.offsetLeft) - column.renderWidth - centerWidth;
|
|
19959
|
-
} else {
|
|
19960
|
-
left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth - bodyElem.scrollLeft;
|
|
19961
|
-
}
|
|
19962
|
-
if (left) {
|
|
19963
|
-
const overflowWidth = pageX + filterWidth - centerWidth + minMargin - visibleWidth;
|
|
19964
|
-
if (overflowWidth > 0) {
|
|
19965
|
-
left -= overflowWidth;
|
|
19903
|
+
filters,
|
|
19904
|
+
filterMultiple,
|
|
19905
|
+
filterRender
|
|
19906
|
+
} = column;
|
|
19907
|
+
const compConf = isEnableConf(filterRender) ? mixin_renderer.get(filterRender.name) : null;
|
|
19908
|
+
const frMethod = column.filterRecoverMethod || (compConf ? compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod : null);
|
|
19909
|
+
internalData._currFilterParams = params;
|
|
19910
|
+
Object.assign(filterStore, {
|
|
19911
|
+
multiple: filterMultiple,
|
|
19912
|
+
options: filters,
|
|
19913
|
+
column,
|
|
19914
|
+
style: null
|
|
19915
|
+
});
|
|
19916
|
+
// 复原状态
|
|
19917
|
+
filterStore.options.forEach(option => {
|
|
19918
|
+
const {
|
|
19919
|
+
_checked,
|
|
19920
|
+
checked
|
|
19921
|
+
} = option;
|
|
19922
|
+
option._checked = checked;
|
|
19923
|
+
if (!checked && _checked !== checked) {
|
|
19924
|
+
if (frMethod) {
|
|
19925
|
+
frMethod({
|
|
19926
|
+
option,
|
|
19927
|
+
column,
|
|
19928
|
+
$table: $xeTable
|
|
19929
|
+
});
|
|
19930
|
+
}
|
|
19966
19931
|
}
|
|
19967
|
-
|
|
19968
|
-
|
|
19969
|
-
|
|
19970
|
-
|
|
19971
|
-
|
|
19932
|
+
});
|
|
19933
|
+
this.checkFilterOptions();
|
|
19934
|
+
filterStore.visible = true;
|
|
19935
|
+
initStore.filter = true;
|
|
19936
|
+
$xeTable.$nextTick(() => {
|
|
19937
|
+
const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
|
|
19938
|
+
if (!headerScrollElem) {
|
|
19939
|
+
return;
|
|
19972
19940
|
}
|
|
19973
|
-
|
|
19974
|
-
|
|
19975
|
-
|
|
19976
|
-
|
|
19977
|
-
|
|
19941
|
+
const tableFilter = $xeTable.$refs.refTableFilter;
|
|
19942
|
+
const filterWrapperElem = tableFilter ? tableFilter.$el : null;
|
|
19943
|
+
if (!filterWrapperElem) {
|
|
19944
|
+
return;
|
|
19945
|
+
}
|
|
19946
|
+
const filterWidth = filterWrapperElem.offsetWidth;
|
|
19947
|
+
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
19948
|
+
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
19949
|
+
const centerWidth = filterWidth / 2;
|
|
19950
|
+
const minMargin = 10;
|
|
19951
|
+
const maxLeft = el.clientWidth - filterWidth - minMargin;
|
|
19952
|
+
let left, right;
|
|
19953
|
+
const thEl = targetElem.offsetParent;
|
|
19954
|
+
const trEl = thEl.offsetParent;
|
|
19955
|
+
const style = {
|
|
19956
|
+
top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
|
|
19957
|
+
};
|
|
19958
|
+
// 判断面板不能大于表格高度
|
|
19959
|
+
const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
|
|
19960
|
+
if (column.fixed === 'left') {
|
|
19961
|
+
left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth;
|
|
19962
|
+
} else if (column.fixed === 'right') {
|
|
19963
|
+
right = thEl.offsetWidth - targetElem.offsetLeft + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth;
|
|
19964
|
+
} else {
|
|
19965
|
+
left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft;
|
|
19966
|
+
}
|
|
19967
|
+
if (left) {
|
|
19968
|
+
const overflowWidth = pageX + filterWidth - centerWidth + minMargin - visibleWidth;
|
|
19969
|
+
if (overflowWidth > 0) {
|
|
19970
|
+
left -= overflowWidth;
|
|
19971
|
+
}
|
|
19972
|
+
style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
|
|
19973
|
+
} else if (right) {
|
|
19974
|
+
const overflowWidth = pageX + filterWidth - centerWidth + minMargin - visibleWidth;
|
|
19975
|
+
if (overflowWidth > 0) {
|
|
19976
|
+
right += overflowWidth;
|
|
19977
|
+
}
|
|
19978
|
+
style.right = `${Math.max(minMargin, right)}px`;
|
|
19979
|
+
}
|
|
19980
|
+
filterStore.style = style;
|
|
19981
|
+
filterStore.maxHeight = maxHeight;
|
|
19982
|
+
});
|
|
19983
|
+
}
|
|
19984
|
+
$xeTable.dispatchEvent('filter-visible', {
|
|
19985
|
+
column,
|
|
19986
|
+
field: column.field,
|
|
19987
|
+
property: column.field,
|
|
19988
|
+
filterList: $xeTable.getCheckedFilters(),
|
|
19989
|
+
visible: filterStore.visible
|
|
19990
|
+
}, evnt);
|
|
19978
19991
|
}
|
|
19979
|
-
this.emitEvent('filter-visible', {
|
|
19980
|
-
column,
|
|
19981
|
-
field: column.field,
|
|
19982
|
-
property: column.field,
|
|
19983
|
-
filterList: this.getCheckedFilters(),
|
|
19984
|
-
visible: filterStore.visible
|
|
19985
|
-
}, evnt);
|
|
19986
19992
|
},
|
|
19987
19993
|
handleFilterConfirmFilter(evnt) {
|
|
19988
19994
|
const $xeTable = this;
|
|
@@ -20270,6 +20276,7 @@ const {
|
|
|
20270
20276
|
const {
|
|
20271
20277
|
selected
|
|
20272
20278
|
} = editStore;
|
|
20279
|
+
const tableFilter = $xeTable.$refs.refTableFilter;
|
|
20273
20280
|
const layoutList = ['header', 'body', 'footer'];
|
|
20274
20281
|
if (isEnableConf(menuConfig) || contextMenu) {
|
|
20275
20282
|
if (ctxMenuStore.visible && $refs.refTableMenu && getEventTargetNode(evnt, $refs.refTableMenu.$el).flag) {
|
|
@@ -20355,7 +20362,7 @@ const {
|
|
|
20355
20362
|
}
|
|
20356
20363
|
}
|
|
20357
20364
|
}
|
|
20358
|
-
if (
|
|
20365
|
+
if (tableFilter && !getEventTargetNode(evnt, tableFilter.$el).flag) {
|
|
20359
20366
|
this.closeFilter();
|
|
20360
20367
|
}
|
|
20361
20368
|
this.closeMenu();
|
|
@@ -23021,7 +23028,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
23021
23028
|
isMerge: hasMerge,
|
|
23022
23029
|
useStyle: true,
|
|
23023
23030
|
current: 'current',
|
|
23024
|
-
modes:
|
|
23031
|
+
modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty'])
|
|
23025
23032
|
}, options);
|
|
23026
23033
|
const types = defOpts.types || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps);
|
|
23027
23034
|
const modes = defOpts.modes || [];
|
|
@@ -23213,7 +23220,7 @@ const convertToRows = originColumns => {
|
|
|
23213
23220
|
isMerge: hasMerge,
|
|
23214
23221
|
useStyle: true,
|
|
23215
23222
|
current: 'current',
|
|
23216
|
-
modes:
|
|
23223
|
+
modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty']),
|
|
23217
23224
|
download: true,
|
|
23218
23225
|
type: 'csv'
|
|
23219
23226
|
// filename: '',
|
|
@@ -26961,7 +26968,7 @@ function renderBody(h, $xeTable) {
|
|
|
26961
26968
|
*/
|
|
26962
26969
|
initStore.filter ? h(filter_panel, {
|
|
26963
26970
|
key: 'tf',
|
|
26964
|
-
ref: '
|
|
26971
|
+
ref: 'refTableFilter',
|
|
26965
26972
|
props: {
|
|
26966
26973
|
filterStore
|
|
26967
26974
|
}
|
|
@@ -30834,7 +30841,8 @@ const Toolbar = VxeToolbar;
|
|
|
30834
30841
|
},
|
|
30835
30842
|
button: {
|
|
30836
30843
|
confirm: '确认',
|
|
30837
|
-
cancel: '取消'
|
|
30844
|
+
cancel: '取消',
|
|
30845
|
+
clear: '清除'
|
|
30838
30846
|
},
|
|
30839
30847
|
filter: {
|
|
30840
30848
|
search: '搜索'
|