vxe-table 3.25.0-beta.3 → 3.25.0-beta.5
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/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/mixin.js +4 -7
- package/es/table/module/filter/panel.js +47 -48
- package/es/table/src/methods.js +29 -197
- package/es/table/src/table.js +50 -27
- package/es/table/src/util.js +1 -2
- package/es/table/style.css +31 -12
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +2 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +31 -12
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +108 -94
- 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/mixin.js +5 -7
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/filter/panel.js +41 -37
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/src/methods.js +7 -13
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +51 -32
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +1 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +31 -12
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +2 -2
- 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/vxe-table/style/style.css +31 -12
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +2 -1
- package/packages/table/module/filter/mixin.ts +4 -7
- package/packages/table/module/filter/panel.ts +50 -48
- package/packages/table/src/methods.ts +32 -213
- package/packages/table/src/table.ts +68 -42
- package/packages/table/src/util.ts +1 -2
- package/packages/ui/index.ts +1 -1
- package/styles/components/table-module/filter.scss +25 -14
- /package/es/{iconfont.1792117667851.ttf → iconfont.1792220310836.ttf} +0 -0
- /package/es/{iconfont.1792117667851.woff → iconfont.1792220310836.woff} +0 -0
- /package/es/{iconfont.1792117667851.woff2 → iconfont.1792220310836.woff2} +0 -0
- /package/lib/{iconfont.1792117667851.ttf → iconfont.1792220310836.ttf} +0 -0
- /package/lib/{iconfont.1792117667851.woff → iconfont.1792220310836.woff} +0 -0
- /package/lib/{iconfont.1792117667851.woff2 → iconfont.1792220310836.woff2} +0 -0
|
@@ -11,7 +11,7 @@ function updatePopupStyle($xeTable) {
|
|
|
11
11
|
const reactData = $xeTable;
|
|
12
12
|
const internalData = $xeTable;
|
|
13
13
|
const $xeGGWrapper = $xeGrid || $xeGantt;
|
|
14
|
-
const { filterStore } = reactData;
|
|
14
|
+
const { filterStore, scrollbarHeight } = reactData;
|
|
15
15
|
const { elemStore } = internalData;
|
|
16
16
|
const { column, targetEl } = filterStore;
|
|
17
17
|
if (!column) {
|
|
@@ -32,8 +32,6 @@ function updatePopupStyle($xeTable) {
|
|
|
32
32
|
if (!filterWrapperElem) {
|
|
33
33
|
return $xeTable.$nextTick();
|
|
34
34
|
}
|
|
35
|
-
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
36
|
-
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
37
35
|
/**
|
|
38
36
|
* 是否显示筛选按钮图标
|
|
39
37
|
* 如果不存在图标,则相对单元格居中显示
|
|
@@ -72,9 +70,9 @@ function updatePopupStyle($xeTable) {
|
|
|
72
70
|
else {
|
|
73
71
|
const filterWidth = filterWrapperElem.offsetWidth;
|
|
74
72
|
const centerWidth = targetEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2);
|
|
75
|
-
maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
|
|
76
73
|
left = btnRect.left - tableRect.left - centerWidth;
|
|
77
74
|
top = btnRect.top - tableRect.top + currEl.clientHeight;
|
|
75
|
+
maxHeight = Math.max(40, tableEl.clientHeight - top - scrollbarHeight);
|
|
78
76
|
if (left < 1) {
|
|
79
77
|
left = 1;
|
|
80
78
|
}
|
|
@@ -96,7 +94,6 @@ function updatePopupStyle($xeTable) {
|
|
|
96
94
|
if (zIndex) {
|
|
97
95
|
panelStyle.zIndex = zIndex;
|
|
98
96
|
}
|
|
99
|
-
filterStore.style = panelStyle;
|
|
100
97
|
// 筛选面板是自适应表格高度
|
|
101
98
|
if (compConf ? !compConf.tableFilterAutoHeight : false) {
|
|
102
99
|
maxHeight = 0;
|
|
@@ -106,8 +103,8 @@ function updatePopupStyle($xeTable) {
|
|
|
106
103
|
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
|
|
107
104
|
}
|
|
108
105
|
}
|
|
109
|
-
|
|
110
|
-
filterStore.
|
|
106
|
+
panelStyle['--vxe-ui-vxe-table-filter-default-max-height'] = maxHeight ? toCssUnit(maxHeight) : 'none';
|
|
107
|
+
filterStore.style = panelStyle;
|
|
111
108
|
};
|
|
112
109
|
handleStyle();
|
|
113
110
|
return $xeTable.$nextTick().then(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../../ui/src/comp';
|
|
2
2
|
import { VxeUI } from '../../../ui';
|
|
3
3
|
import { formatText, isEnableConf } from '../../../ui/src/utils';
|
|
4
|
-
import { getPropClass
|
|
4
|
+
import { getPropClass } from '../../../ui/src/dom';
|
|
5
5
|
import { getSlotVNs } from '../../../ui/src/vn';
|
|
6
6
|
import { createComponentLog } from '../../../ui/src/log';
|
|
7
7
|
const { warnLog } = createComponentLog('table');
|
|
@@ -118,15 +118,18 @@ export default {
|
|
|
118
118
|
* Publish methods
|
|
119
119
|
*************************/
|
|
120
120
|
renderOptions(h, filterRender, compConf) {
|
|
121
|
+
const VxeUIScrollbarComponent = VxeUI.getComponent('VxeScrollbar');
|
|
121
122
|
const $xeFilterPanel = this;
|
|
122
123
|
const props = $xeFilterPanel;
|
|
123
124
|
const $xeTable = $xeFilterPanel.$xeTable;
|
|
124
125
|
const tableInternalData = $xeTable;
|
|
125
126
|
const { filterStore } = props;
|
|
126
|
-
const { column
|
|
127
|
+
const { column } = filterStore;
|
|
127
128
|
if (!column) {
|
|
128
129
|
return [];
|
|
129
130
|
}
|
|
131
|
+
const filterOpts = $xeTable.computeFilterOpts;
|
|
132
|
+
const { useScrollbar } = filterOpts;
|
|
130
133
|
const { filterMultiple, filters, slots } = column;
|
|
131
134
|
const filterOptions = (filters || []);
|
|
132
135
|
const filterSlot = slots ? slots.filter : null;
|
|
@@ -135,34 +138,51 @@ export default {
|
|
|
135
138
|
if (filterSlot) {
|
|
136
139
|
return [
|
|
137
140
|
h('div', {
|
|
138
|
-
class: 'vxe-table--filter-template'
|
|
139
|
-
style: maxHeight
|
|
140
|
-
? {
|
|
141
|
-
maxHeight: toCssUnit(maxHeight)
|
|
142
|
-
}
|
|
143
|
-
: {}
|
|
141
|
+
class: 'vxe-table--filter-template'
|
|
144
142
|
}, $xeTable.callSlot(filterSlot, params, h))
|
|
145
143
|
];
|
|
146
144
|
}
|
|
147
145
|
else if (filterRender && rtFilter) {
|
|
148
146
|
return [
|
|
149
147
|
h('div', {
|
|
150
|
-
class: 'vxe-table--filter-template'
|
|
151
|
-
style: maxHeight
|
|
152
|
-
? {
|
|
153
|
-
maxHeight: toCssUnit(maxHeight)
|
|
154
|
-
}
|
|
155
|
-
: {}
|
|
148
|
+
class: 'vxe-table--filter-template'
|
|
156
149
|
}, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))
|
|
157
150
|
];
|
|
158
151
|
}
|
|
159
152
|
const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked);
|
|
160
153
|
const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
|
|
154
|
+
const optVNs = filterOptions.map((item) => {
|
|
155
|
+
const isChecked = item._checked;
|
|
156
|
+
const isIndeterminate = false;
|
|
157
|
+
return h('div', {
|
|
158
|
+
class: ['vxe-table--filter-option', {
|
|
159
|
+
'is--checked': isChecked
|
|
160
|
+
}],
|
|
161
|
+
attrs: {
|
|
162
|
+
title: item.label
|
|
163
|
+
},
|
|
164
|
+
on: {
|
|
165
|
+
click: (evnt) => {
|
|
166
|
+
$xeFilterPanel.changeOption(evnt, !item._checked, item);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}, (filterMultiple
|
|
170
|
+
? [
|
|
171
|
+
h('span', {
|
|
172
|
+
class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
|
|
173
|
+
})
|
|
174
|
+
]
|
|
175
|
+
: []).concat([
|
|
176
|
+
h('span', {
|
|
177
|
+
class: 'vxe-checkbox--label'
|
|
178
|
+
}, formatText(item.label, 1))
|
|
179
|
+
]));
|
|
180
|
+
});
|
|
161
181
|
return [
|
|
162
|
-
h('
|
|
182
|
+
h('div', {
|
|
163
183
|
class: 'vxe-table--filter-header'
|
|
164
184
|
}, [
|
|
165
|
-
h('
|
|
185
|
+
h('div', {
|
|
166
186
|
class: ['vxe-table--filter-option', {
|
|
167
187
|
'is--checked': isAllChecked,
|
|
168
188
|
'is--indeterminate': isAllIndeterminate
|
|
@@ -187,40 +207,19 @@ export default {
|
|
|
187
207
|
}, getI18n('vxe.table.allFilter'))
|
|
188
208
|
]))
|
|
189
209
|
]),
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
: {}
|
|
197
|
-
}, filterOptions.map((item) => {
|
|
198
|
-
const isChecked = item._checked;
|
|
199
|
-
const isIndeterminate = false;
|
|
200
|
-
return h('li', {
|
|
201
|
-
class: ['vxe-table--filter-option', {
|
|
202
|
-
'is--checked': isChecked
|
|
203
|
-
}],
|
|
204
|
-
attrs: {
|
|
205
|
-
title: item.label
|
|
210
|
+
useScrollbar
|
|
211
|
+
? h(VxeUIScrollbarComponent, {
|
|
212
|
+
class: 'vxe-table--scrollbar-filter-body',
|
|
213
|
+
props: {
|
|
214
|
+
viewClassName: 'vxe-table--scrollbar-filter-body-view'
|
|
206
215
|
},
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
$xeFilterPanel.changeOption(evnt, !item._checked, item);
|
|
210
|
-
}
|
|
216
|
+
scopedSlots: {
|
|
217
|
+
default: () => optVNs
|
|
211
218
|
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
})
|
|
217
|
-
]
|
|
218
|
-
: []).concat([
|
|
219
|
-
h('span', {
|
|
220
|
-
class: 'vxe-checkbox--label'
|
|
221
|
-
}, formatText(item.label, 1))
|
|
222
|
-
]));
|
|
223
|
-
}))
|
|
219
|
+
})
|
|
220
|
+
: h('div', {
|
|
221
|
+
class: 'vxe-table--filter-body'
|
|
222
|
+
}, optVNs)
|
|
224
223
|
];
|
|
225
224
|
},
|
|
226
225
|
renderFooter(h) {
|
package/es/table/src/methods.js
CHANGED
|
@@ -9,8 +9,7 @@ import { moveRowAnimateToTb, clearRowAnimate, moveColAnimateToLr, clearColAnimat
|
|
|
9
9
|
import { createComponentLog } from '../../ui/src/log';
|
|
10
10
|
import { getCrossTableDragRowInfo } from './store';
|
|
11
11
|
const { warnLog, errLog } = createComponentLog('table');
|
|
12
|
-
const { getConfig, getI18n, renderer,
|
|
13
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils || {};
|
|
12
|
+
const { getConfig, getI18n, renderer, formats, interceptor, createEvent, globalEvents, GLOBAL_EVENT_KEYS } = VxeUI;
|
|
14
13
|
const supportMaxRow = 5e6;
|
|
15
14
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
16
15
|
const maxYHeight = 5e6;
|
|
@@ -3118,6 +3117,7 @@ function handleRecalculateStyle($xeTable, reFull, reWidth, reHeight) {
|
|
|
3118
3117
|
if (reFull) {
|
|
3119
3118
|
updateTreeLineStyle($xeTable);
|
|
3120
3119
|
}
|
|
3120
|
+
$xeTable.updateScrollbar();
|
|
3121
3121
|
internalData.rceRunTime = Date.now();
|
|
3122
3122
|
if (reFull) {
|
|
3123
3123
|
return computeScrollLoad($xeTable);
|
|
@@ -4678,6 +4678,13 @@ const tableMethods = {
|
|
|
4678
4678
|
const $xeTable = this;
|
|
4679
4679
|
return $xeTable.$refs.refElem;
|
|
4680
4680
|
},
|
|
4681
|
+
getScrollViewElem() {
|
|
4682
|
+
const $xeTable = this;
|
|
4683
|
+
const internalData = $xeTable;
|
|
4684
|
+
const { elemStore } = internalData;
|
|
4685
|
+
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
4686
|
+
return viewEl;
|
|
4687
|
+
},
|
|
4681
4688
|
/**
|
|
4682
4689
|
* 获取父容器元素
|
|
4683
4690
|
*/
|
|
@@ -9954,8 +9961,14 @@ const tableMethods = {
|
|
|
9954
9961
|
*/
|
|
9955
9962
|
updateScrollbar() {
|
|
9956
9963
|
const $xeTable = this;
|
|
9957
|
-
$xeTable.
|
|
9958
|
-
|
|
9964
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
9965
|
+
if (isVScrollbar) {
|
|
9966
|
+
return $xeTable.$nextTick().then(() => {
|
|
9967
|
+
$xeTable.updateThumbSize();
|
|
9968
|
+
$xeTable.updateThumbOffset();
|
|
9969
|
+
});
|
|
9970
|
+
}
|
|
9971
|
+
return Promise.resolve();
|
|
9959
9972
|
},
|
|
9960
9973
|
/**
|
|
9961
9974
|
* 表头单元格按下事件
|
|
@@ -12384,11 +12397,10 @@ const tableMethods = {
|
|
|
12384
12397
|
},
|
|
12385
12398
|
triggerBodyScrollEvent(evnt, fixedType) {
|
|
12386
12399
|
const $xeTable = this;
|
|
12387
|
-
const props = $xeTable;
|
|
12388
12400
|
const reactData = $xeTable;
|
|
12389
12401
|
const internalData = $xeTable;
|
|
12390
|
-
const { useScrollbar } = props;
|
|
12391
12402
|
const { scrollYLoad, scrollXLoad } = reactData;
|
|
12403
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
12392
12404
|
const { elemStore, intoRunScroll, lastScrollTop, lastScrollLeft, inWheelScroll, inVirtualScroll, inHeaderScroll, inBodyScroll, scrollRenderType, inFooterScroll } = internalData;
|
|
12393
12405
|
if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
|
|
12394
12406
|
return;
|
|
@@ -12407,7 +12419,7 @@ const tableMethods = {
|
|
|
12407
12419
|
if (!bodyScrollElem) {
|
|
12408
12420
|
return;
|
|
12409
12421
|
}
|
|
12410
|
-
if (!
|
|
12422
|
+
if (!isVScrollbar) {
|
|
12411
12423
|
if (!xHandleEl) {
|
|
12412
12424
|
return;
|
|
12413
12425
|
}
|
|
@@ -13553,196 +13565,6 @@ const tableMethods = {
|
|
|
13553
13565
|
const $xeTable = this;
|
|
13554
13566
|
return $xeTable.handleClearStack();
|
|
13555
13567
|
},
|
|
13556
|
-
// 滚动条
|
|
13557
|
-
updateThumbSize() {
|
|
13558
|
-
const $xeTable = this;
|
|
13559
|
-
const reactData = $xeTable;
|
|
13560
|
-
const internalData = $xeTable;
|
|
13561
|
-
const { elemStore } = internalData;
|
|
13562
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13563
|
-
if (!viewEl) {
|
|
13564
|
-
return;
|
|
13565
|
-
}
|
|
13566
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
13567
|
-
return;
|
|
13568
|
-
}
|
|
13569
|
-
const trackXEl = $xeTable.$refs.refTrackXElem;
|
|
13570
|
-
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
13571
|
-
const thumbXElem = $xeTable.$refs.refThumbXElem;
|
|
13572
|
-
if (thumbXElem) {
|
|
13573
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
13574
|
-
}
|
|
13575
|
-
reactData.xThumbWidth = xThumbWidth;
|
|
13576
|
-
const trackYEl = $xeTable.$refs.refTrackYElem;
|
|
13577
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
13578
|
-
const thumbYElem = $xeTable.$refs.refThumbYElem;
|
|
13579
|
-
if (thumbYElem) {
|
|
13580
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
13581
|
-
}
|
|
13582
|
-
reactData.yThumbHeight = yThumbHeight;
|
|
13583
|
-
},
|
|
13584
|
-
updateThumbOffset() {
|
|
13585
|
-
const $xeTable = this;
|
|
13586
|
-
const reactData = $xeTable;
|
|
13587
|
-
const internalData = $xeTable;
|
|
13588
|
-
const { elemStore } = internalData;
|
|
13589
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13590
|
-
if (!viewEl) {
|
|
13591
|
-
return;
|
|
13592
|
-
}
|
|
13593
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
13594
|
-
return;
|
|
13595
|
-
}
|
|
13596
|
-
const { xThumbWidth, yThumbHeight } = reactData;
|
|
13597
|
-
const trackXEl = $xeTable.$refs.refTrackXElem;
|
|
13598
|
-
const thumbXElem = $xeTable.$refs.refThumbXElem;
|
|
13599
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
13600
|
-
internalData.xThumbLeft = xThumbLeft;
|
|
13601
|
-
if (thumbXElem && xThumbWidth) {
|
|
13602
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
13603
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
13604
|
-
}
|
|
13605
|
-
const trackYEl = $xeTable.$refs.refTrackYElem;
|
|
13606
|
-
const thumbYElem = $xeTable.$refs.refThumbYElem;
|
|
13607
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
13608
|
-
internalData.yThumbTop = yThumbTop;
|
|
13609
|
-
if (thumbYElem && yThumbHeight) {
|
|
13610
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
13611
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
13612
|
-
}
|
|
13613
|
-
},
|
|
13614
|
-
clickTrackXEvent(evnt) {
|
|
13615
|
-
const $xeTable = this;
|
|
13616
|
-
const reactData = $xeTable;
|
|
13617
|
-
const internalData = $xeTable;
|
|
13618
|
-
const { elemStore } = internalData;
|
|
13619
|
-
const trackEl = evnt.currentTarget;
|
|
13620
|
-
if (trackEl !== evnt.target) {
|
|
13621
|
-
return;
|
|
13622
|
-
}
|
|
13623
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13624
|
-
if (!viewEl) {
|
|
13625
|
-
return;
|
|
13626
|
-
}
|
|
13627
|
-
const { xThumbWidth } = reactData;
|
|
13628
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13629
|
-
viewEl.scrollTo({
|
|
13630
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
13631
|
-
behavior: 'auto'
|
|
13632
|
-
});
|
|
13633
|
-
},
|
|
13634
|
-
clickTrackYEvent(evnt) {
|
|
13635
|
-
const $xeTable = this;
|
|
13636
|
-
const reactData = $xeTable;
|
|
13637
|
-
const internalData = $xeTable;
|
|
13638
|
-
const trackEl = evnt.currentTarget;
|
|
13639
|
-
if (trackEl !== evnt.target) {
|
|
13640
|
-
return;
|
|
13641
|
-
}
|
|
13642
|
-
const { elemStore } = internalData;
|
|
13643
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13644
|
-
if (!viewEl) {
|
|
13645
|
-
return;
|
|
13646
|
-
}
|
|
13647
|
-
const { yThumbHeight } = reactData;
|
|
13648
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13649
|
-
viewEl.scrollTo({
|
|
13650
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
13651
|
-
behavior: 'auto'
|
|
13652
|
-
});
|
|
13653
|
-
},
|
|
13654
|
-
pointerdownThumbXEvent(evnt) {
|
|
13655
|
-
const $xeTable = this;
|
|
13656
|
-
const reactData = $xeTable;
|
|
13657
|
-
const internalData = $xeTable;
|
|
13658
|
-
const { elemStore } = internalData;
|
|
13659
|
-
const thumbEl = evnt.currentTarget;
|
|
13660
|
-
internalData.isThumbDrag = true;
|
|
13661
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
13662
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13663
|
-
if (!viewEl) {
|
|
13664
|
-
return;
|
|
13665
|
-
}
|
|
13666
|
-
const { xThumbWidth } = reactData;
|
|
13667
|
-
const trackEl = thumbEl.parentElement;
|
|
13668
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13669
|
-
const pointerPosition = evnt.clientX - trackRect.left;
|
|
13670
|
-
// 记录 thumb 的偏移
|
|
13671
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
13672
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
13673
|
-
},
|
|
13674
|
-
pointermoveThumbXEvent(evnt) {
|
|
13675
|
-
const $xeTable = this;
|
|
13676
|
-
const reactData = $xeTable;
|
|
13677
|
-
const internalData = $xeTable;
|
|
13678
|
-
const thumbEl = evnt.currentTarget;
|
|
13679
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
13680
|
-
return;
|
|
13681
|
-
}
|
|
13682
|
-
const { elemStore, isThumbDrag, thumbDragOffset } = internalData;
|
|
13683
|
-
if (isThumbDrag) {
|
|
13684
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13685
|
-
if (!viewEl) {
|
|
13686
|
-
return;
|
|
13687
|
-
}
|
|
13688
|
-
const { xThumbWidth } = reactData;
|
|
13689
|
-
const thumbEl = evnt.currentTarget;
|
|
13690
|
-
const trackEl = thumbEl.parentElement;
|
|
13691
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13692
|
-
// 更新偏移
|
|
13693
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
13694
|
-
}
|
|
13695
|
-
},
|
|
13696
|
-
cleatPointerThumbEvent(evnt) {
|
|
13697
|
-
const $xeTable = this;
|
|
13698
|
-
const internalData = $xeTable;
|
|
13699
|
-
const thumbEl = evnt.currentTarget;
|
|
13700
|
-
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
13701
|
-
internalData.isThumbDrag = false;
|
|
13702
|
-
},
|
|
13703
|
-
pointerdownThumbYEvent(evnt) {
|
|
13704
|
-
const $xeTable = this;
|
|
13705
|
-
const reactData = $xeTable;
|
|
13706
|
-
const internalData = $xeTable;
|
|
13707
|
-
const { elemStore } = internalData;
|
|
13708
|
-
const thumbEl = evnt.currentTarget;
|
|
13709
|
-
internalData.isThumbDrag = true;
|
|
13710
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
13711
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13712
|
-
if (!viewEl) {
|
|
13713
|
-
return;
|
|
13714
|
-
}
|
|
13715
|
-
const { yThumbHeight } = reactData;
|
|
13716
|
-
const trackEl = thumbEl.parentElement;
|
|
13717
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13718
|
-
const pointerPosition = evnt.clientY - trackRect.top;
|
|
13719
|
-
// 记录 thumb 的偏移
|
|
13720
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
13721
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
13722
|
-
},
|
|
13723
|
-
pointermoveThumbYEvent(evnt) {
|
|
13724
|
-
const $xeTable = this;
|
|
13725
|
-
const reactData = $xeTable;
|
|
13726
|
-
const internalData = $xeTable;
|
|
13727
|
-
const thumbEl = evnt.currentTarget;
|
|
13728
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
13729
|
-
return;
|
|
13730
|
-
}
|
|
13731
|
-
const { elemStore, isThumbDrag, thumbDragOffset } = internalData;
|
|
13732
|
-
if (isThumbDrag) {
|
|
13733
|
-
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
13734
|
-
if (!viewEl) {
|
|
13735
|
-
return;
|
|
13736
|
-
}
|
|
13737
|
-
const { yThumbHeight } = reactData;
|
|
13738
|
-
const thumbEl = evnt.currentTarget;
|
|
13739
|
-
const trackEl = thumbEl.parentElement;
|
|
13740
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
13741
|
-
// 更新偏移
|
|
13742
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
13743
|
-
}
|
|
13744
|
-
},
|
|
13745
|
-
// 滚动条
|
|
13746
13568
|
dispatchEvent(type, params, evnt) {
|
|
13747
13569
|
const $xeTable = this;
|
|
13748
13570
|
const $xeGrid = $xeTable.$xeGrid;
|
|
@@ -13799,6 +13621,16 @@ const tableMethods = {
|
|
|
13799
13621
|
}
|
|
13800
13622
|
return $xeTable.$nextTick();
|
|
13801
13623
|
},
|
|
13624
|
+
getInternalData() {
|
|
13625
|
+
const $xeTable = this;
|
|
13626
|
+
const internalData = $xeTable;
|
|
13627
|
+
return internalData;
|
|
13628
|
+
},
|
|
13629
|
+
getReactData() {
|
|
13630
|
+
const $xeTable = this;
|
|
13631
|
+
const reactData = $xeTable;
|
|
13632
|
+
return reactData;
|
|
13633
|
+
},
|
|
13802
13634
|
/*************************
|
|
13803
13635
|
* Publish methods
|
|
13804
13636
|
*************************/
|