vxe-table 4.23.0-beta.2 → 4.23.0-beta.4
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/dist/all.esm.js +145 -167
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/grid/src/grid.js +3 -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/custom/panel.js +2 -2
- package/es/table/module/filter/hook.js +5 -7
- package/es/table/module/filter/panel.js +42 -46
- package/es/table/src/table.js +69 -47
- 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/dom.js +11 -8
- 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/grid/src/grid.js +5 -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 +79 -127
- 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/custom/panel.js +2 -2
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/filter/hook.js +6 -7
- package/lib/table/module/filter/hook.min.js +1 -1
- package/lib/table/module/filter/panel.js +34 -33
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/src/table.js +19 -19
- 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/dom.js +11 -7
- package/lib/ui/src/dom.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 +3 -0
- package/packages/table/module/custom/panel.ts +2 -2
- package/packages/table/module/filter/hook.ts +5 -7
- package/packages/table/module/filter/panel.ts +45 -46
- package/packages/table/src/table.ts +71 -47
- package/packages/table/src/util.ts +1 -2
- package/packages/ui/index.ts +1 -1
- package/packages/ui/src/dom.ts +12 -8
- package/styles/components/table-module/filter.scss +25 -14
- package/es/table/src/scrollbar.js +0 -54
- package/lib/table/src/scrollbar.js +0 -63
- package/lib/table/src/scrollbar.min.js +0 -1
- package/packages/table/src/scrollbar.ts +0 -57
- /package/es/{iconfont.1792035024476.ttf → iconfont.1792139865095.ttf} +0 -0
- /package/es/{iconfont.1792035024476.woff → iconfont.1792139865095.woff} +0 -0
- /package/es/{iconfont.1792035024476.woff2 → iconfont.1792139865095.woff2} +0 -0
- /package/lib/{iconfont.1792035024476.ttf → iconfont.1792139865095.ttf} +0 -0
- /package/lib/{iconfont.1792035024476.woff → iconfont.1792139865095.woff} +0 -0
- /package/lib/{iconfont.1792035024476.woff2 → iconfont.1792139865095.woff2} +0 -0
package/dist/all.esm.js
CHANGED
|
@@ -56,7 +56,7 @@ function getDefaultConfig(val1, def1) {
|
|
|
56
56
|
return XEUtils.eqNull(val1) ? def1 : val1;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
const version = "4.23.0-beta.
|
|
59
|
+
const version = "4.23.0-beta.4";
|
|
60
60
|
VxeUI.version = version;
|
|
61
61
|
VxeUI.tableVersion = version;
|
|
62
62
|
VxeUI.setConfig({
|
|
@@ -219,7 +219,7 @@ VxeUI.setConfig({
|
|
|
219
219
|
destroyOnClose: true,
|
|
220
220
|
multiple: true,
|
|
221
221
|
showIcon: true,
|
|
222
|
-
maxHeight:
|
|
222
|
+
maxHeight: 320
|
|
223
223
|
},
|
|
224
224
|
floatingFilterConfig: {
|
|
225
225
|
// enabled: false
|
|
@@ -790,7 +790,8 @@ function wheelScrollTopTo(diffNum, cb) {
|
|
|
790
790
|
* 通用定位计算
|
|
791
791
|
*/
|
|
792
792
|
function updatePanelPlacement(targetElem, panelElem, options) {
|
|
793
|
-
const { defaultTop, defaultLeft, placement, defaultPlacement, teleportTo, marginSize, isMinWidth } = Object.assign({
|
|
793
|
+
const { defaultTop, defaultLeft, placement, defaultPlacement, appendTo, teleportTo, marginSize, isMinWidth } = Object.assign({
|
|
794
|
+
appendTo: '',
|
|
794
795
|
teleportTo: false,
|
|
795
796
|
marginSize: 18,
|
|
796
797
|
isMinWidth: true
|
|
@@ -804,7 +805,7 @@ function updatePanelPlacement(targetElem, panelElem, options) {
|
|
|
804
805
|
const stys = {};
|
|
805
806
|
if (panelElem && targetElem) {
|
|
806
807
|
const bodyEl = document.body;
|
|
807
|
-
const parentWrapperEl = getPopupWrapperElement(panelElem);
|
|
808
|
+
const parentWrapperEl = getPopupWrapperElement(teleportTo ? getPopupAppendElement(appendTo) : panelElem);
|
|
808
809
|
if (parentWrapperEl) {
|
|
809
810
|
const targetWidth = targetElem.offsetWidth;
|
|
810
811
|
const targetHeight = targetElem.offsetHeight;
|
|
@@ -815,14 +816,16 @@ function updatePanelPlacement(targetElem, panelElem, options) {
|
|
|
815
816
|
const targetRect = targetElem.getBoundingClientRect();
|
|
816
817
|
const visibleHeight = bodyEl.clientHeight;
|
|
817
818
|
const visibleWidth = bodyEl.clientWidth;
|
|
818
|
-
const
|
|
819
|
-
const
|
|
819
|
+
const parentWrapperScrollLeft = parentWrapperEl.scrollLeft;
|
|
820
|
+
const parentWrapperScrollTop = parentWrapperEl.scrollTop;
|
|
821
|
+
const parentWrapperOffsetLeft = parentWrapperRect.left;
|
|
822
|
+
const parentWrapperOffsetTop = parentWrapperRect.top;
|
|
820
823
|
const targetLeft = targetRect.left;
|
|
821
824
|
const targetTop = targetRect.top;
|
|
822
825
|
minWidth = targetElem.offsetWidth;
|
|
823
826
|
if (teleportTo) {
|
|
824
|
-
left = defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2);
|
|
825
|
-
top = defaultTop || (targetTop + targetHeight);
|
|
827
|
+
left = (defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2)) - parentWrapperScrollLeft;
|
|
828
|
+
top = (defaultTop || (targetTop + targetHeight)) - parentWrapperScrollTop;
|
|
826
829
|
if (placement === 'top') {
|
|
827
830
|
panelPlacement = 'top';
|
|
828
831
|
top = targetTop - panelHeight;
|
|
@@ -866,8 +869,8 @@ function updatePanelPlacement(targetElem, panelElem, options) {
|
|
|
866
869
|
left = marginSize;
|
|
867
870
|
}
|
|
868
871
|
// 偏移
|
|
869
|
-
top -=
|
|
870
|
-
left -=
|
|
872
|
+
top -= parentWrapperOffsetTop;
|
|
873
|
+
left -= parentWrapperOffsetLeft;
|
|
871
874
|
}
|
|
872
875
|
else {
|
|
873
876
|
if (placement === 'top') {
|
|
@@ -936,9 +939,20 @@ function getPopupWrapperElement(panelElem) {
|
|
|
936
939
|
const parentEl = panelElem.parentElement;
|
|
937
940
|
return (parentEl === bodyEl ? document.documentElement : parentEl) || null;
|
|
938
941
|
}
|
|
942
|
+
function getPopupContainer(appendTo) {
|
|
943
|
+
const selectElem = appendTo && XEUtils.isFunction(appendTo) ? appendTo({}) : appendTo;
|
|
944
|
+
return selectElem || 'body';
|
|
945
|
+
}
|
|
946
|
+
function getPopupAppendElement(appendTo) {
|
|
947
|
+
const selectElem = getPopupContainer(appendTo);
|
|
948
|
+
if (XEUtils.isString(selectElem)) {
|
|
949
|
+
return document.querySelector(selectElem) || document.body;
|
|
950
|
+
}
|
|
951
|
+
return selectElem;
|
|
952
|
+
}
|
|
939
953
|
|
|
940
954
|
const { log } = VxeUI;
|
|
941
|
-
const tableVersion = `table v${"4.23.0-beta.
|
|
955
|
+
const tableVersion = `table v${"4.23.0-beta.4"}`;
|
|
942
956
|
function createComponentLog(name) {
|
|
943
957
|
const uiVersion = VxeUI.uiVersion ? `ui v${VxeUI.uiVersion}` : '';
|
|
944
958
|
const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
|
|
@@ -1392,8 +1406,7 @@ function createReactData$2() {
|
|
|
1392
1406
|
isIndeterminate: false,
|
|
1393
1407
|
style: null,
|
|
1394
1408
|
column: null,
|
|
1395
|
-
visible: false
|
|
1396
|
-
maxHeight: null
|
|
1409
|
+
visible: false
|
|
1397
1410
|
},
|
|
1398
1411
|
// 存放列相关的信息
|
|
1399
1412
|
columnStore: {
|
|
@@ -4299,61 +4312,6 @@ function clearColAnimate(elem, clss) {
|
|
|
4299
4312
|
}, 500);
|
|
4300
4313
|
}
|
|
4301
4314
|
|
|
4302
|
-
/**
|
|
4303
|
-
* 计算滚动条滑块的长度
|
|
4304
|
-
*/
|
|
4305
|
-
function getThumbSize(viewportSize, contentSize, trackSize) {
|
|
4306
|
-
if (contentSize <= viewportSize) {
|
|
4307
|
-
return 0;
|
|
4308
|
-
}
|
|
4309
|
-
const ratio = viewportSize / contentSize;
|
|
4310
|
-
const ideal = trackSize * ratio;
|
|
4311
|
-
return Math.max(20, Math.min(ideal, trackSize));
|
|
4312
|
-
}
|
|
4313
|
-
/**
|
|
4314
|
-
* 计算滚动条滑块的偏移位置
|
|
4315
|
-
*/
|
|
4316
|
-
function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4317
|
-
const maxScroll = contentSize - viewportSize;
|
|
4318
|
-
if (maxScroll <= 0) {
|
|
4319
|
-
return 0;
|
|
4320
|
-
}
|
|
4321
|
-
const maxThumbOffset = trackSize - thumbSize;
|
|
4322
|
-
if (maxThumbOffset <= 0) {
|
|
4323
|
-
return 0;
|
|
4324
|
-
}
|
|
4325
|
-
const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
|
|
4326
|
-
const ratio = clamped / maxScroll;
|
|
4327
|
-
return ratio * maxThumbOffset;
|
|
4328
|
-
}
|
|
4329
|
-
/**
|
|
4330
|
-
* 根据点击轨道的位置,计算滑块的偏移位置
|
|
4331
|
-
*/
|
|
4332
|
-
function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4333
|
-
const maxThumbOffset = trackSize - thumbSize;
|
|
4334
|
-
const maxScroll = contentSize - viewportSize;
|
|
4335
|
-
if (maxScroll <= 0 || maxThumbOffset <= 0) {
|
|
4336
|
-
return 0;
|
|
4337
|
-
}
|
|
4338
|
-
let thumbOffset = clickPosition - thumbSize / 2;
|
|
4339
|
-
thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
|
|
4340
|
-
const scrollOffset = (thumbOffset / maxThumbOffset) * maxScroll;
|
|
4341
|
-
return scrollOffset;
|
|
4342
|
-
}
|
|
4343
|
-
/**
|
|
4344
|
-
* 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
|
|
4345
|
-
*/
|
|
4346
|
-
function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
|
|
4347
|
-
const maxScroll = contentSize - viewportSize;
|
|
4348
|
-
const maxThumbOffset = trackSize - thumbSize;
|
|
4349
|
-
if (maxScroll <= 0 || maxThumbOffset <= 0) {
|
|
4350
|
-
return 0;
|
|
4351
|
-
}
|
|
4352
|
-
let thumbOffset = pointerPosition - dragOffset;
|
|
4353
|
-
thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
|
|
4354
|
-
return (thumbOffset / maxThumbOffset) * maxScroll;
|
|
4355
|
-
}
|
|
4356
|
-
|
|
4357
4315
|
// 跨表拖拽
|
|
4358
4316
|
const crossTableDragRowInfo = reactive({
|
|
4359
4317
|
row: null
|
|
@@ -6449,8 +6407,8 @@ var TableCustomPanelComponent = defineVxeComponent({
|
|
|
6449
6407
|
const { prevDragCol, prevDragGroupField, prevDragAggFnColid, prevDragPos, prevDragToChild } = customPanelInternalData;
|
|
6450
6408
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
6451
6409
|
if (prevDragGroupField || prevDragAggFnColid) {
|
|
6452
|
-
if ($xeTable.
|
|
6453
|
-
$xeTable.
|
|
6410
|
+
if ($xeTable.handlePivotTableAggPanelDragendEvent) {
|
|
6411
|
+
$xeTable.handlePivotTableAggPanelDragendEvent(evnt);
|
|
6454
6412
|
}
|
|
6455
6413
|
}
|
|
6456
6414
|
else if (prevDragCol && dragCol) {
|
|
@@ -7711,6 +7669,7 @@ var TableFilterPanelComponent = defineVxeComponent({
|
|
|
7711
7669
|
},
|
|
7712
7670
|
setup(props, context) {
|
|
7713
7671
|
const xID = XEUtils.uniqueId();
|
|
7672
|
+
const VxeUIScrollbarComponent = VxeUI.getComponent('VxeScrollbar');
|
|
7714
7673
|
const $xeTable = inject('$xeTable', {});
|
|
7715
7674
|
const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xeTable;
|
|
7716
7675
|
const { computeFilterOpts, computeRendererOpts } = getComputeMaps();
|
|
@@ -7798,10 +7757,12 @@ var TableFilterPanelComponent = defineVxeComponent({
|
|
|
7798
7757
|
Object.assign($xeFilterPanel, filterPanelMethods);
|
|
7799
7758
|
const renderOptions = (filterRender, compConf) => {
|
|
7800
7759
|
const { filterStore } = props;
|
|
7801
|
-
const { column
|
|
7760
|
+
const { column } = filterStore;
|
|
7802
7761
|
if (!column) {
|
|
7803
7762
|
return [];
|
|
7804
7763
|
}
|
|
7764
|
+
const filterOpts = computeFilterOpts.value;
|
|
7765
|
+
const { useScrollbar } = filterOpts;
|
|
7805
7766
|
const { filterMultiple, filters, slots } = column;
|
|
7806
7767
|
const filterOptions = (filters || []);
|
|
7807
7768
|
const filterSlot = slots ? slots.filter : null;
|
|
@@ -7810,34 +7771,46 @@ var TableFilterPanelComponent = defineVxeComponent({
|
|
|
7810
7771
|
if (filterSlot) {
|
|
7811
7772
|
return [
|
|
7812
7773
|
h('div', {
|
|
7813
|
-
class: 'vxe-table--filter-template'
|
|
7814
|
-
style: maxHeight
|
|
7815
|
-
? {
|
|
7816
|
-
maxHeight: toCssUnit(maxHeight)
|
|
7817
|
-
}
|
|
7818
|
-
: {}
|
|
7774
|
+
class: 'vxe-table--filter-template'
|
|
7819
7775
|
}, $xeTable.callSlot(filterSlot, params))
|
|
7820
7776
|
];
|
|
7821
7777
|
}
|
|
7822
7778
|
else if (filterRender && rtFilter) {
|
|
7823
7779
|
return [
|
|
7824
7780
|
h('div', {
|
|
7825
|
-
class: 'vxe-table--filter-template'
|
|
7826
|
-
style: maxHeight
|
|
7827
|
-
? {
|
|
7828
|
-
maxHeight: toCssUnit(maxHeight)
|
|
7829
|
-
}
|
|
7830
|
-
: {}
|
|
7781
|
+
class: 'vxe-table--filter-template'
|
|
7831
7782
|
}, getSlotVNs(rtFilter(filterRender, params)))
|
|
7832
7783
|
];
|
|
7833
7784
|
}
|
|
7834
7785
|
const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked);
|
|
7835
7786
|
const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
|
|
7787
|
+
const optVNs = filterOptions.map((item) => {
|
|
7788
|
+
const isChecked = item._checked;
|
|
7789
|
+
return h('div', {
|
|
7790
|
+
class: ['vxe-table--filter-option', {
|
|
7791
|
+
'is--checked': item._checked
|
|
7792
|
+
}],
|
|
7793
|
+
title: item.label,
|
|
7794
|
+
onClick: (evnt) => {
|
|
7795
|
+
changeOption(evnt, !item._checked, item);
|
|
7796
|
+
}
|
|
7797
|
+
}, (filterMultiple
|
|
7798
|
+
? [
|
|
7799
|
+
h('span', {
|
|
7800
|
+
class: ['vxe-checkbox--icon', (isChecked ? getIcon$5().TABLE_CHECKBOX_CHECKED : getIcon$5().TABLE_CHECKBOX_UNCHECKED)]
|
|
7801
|
+
})
|
|
7802
|
+
]
|
|
7803
|
+
: []).concat([
|
|
7804
|
+
h('span', {
|
|
7805
|
+
class: 'vxe-checkbox--label'
|
|
7806
|
+
}, formatText(item.label, 1))
|
|
7807
|
+
]));
|
|
7808
|
+
});
|
|
7836
7809
|
return [
|
|
7837
|
-
h('
|
|
7810
|
+
h('div', {
|
|
7838
7811
|
class: 'vxe-table--filter-header'
|
|
7839
7812
|
}, [
|
|
7840
|
-
h('
|
|
7813
|
+
h('div', {
|
|
7841
7814
|
class: ['vxe-table--filter-option', {
|
|
7842
7815
|
'is--checked': isAllChecked,
|
|
7843
7816
|
'is--indeterminate': isAllIndeterminate
|
|
@@ -7858,35 +7831,16 @@ var TableFilterPanelComponent = defineVxeComponent({
|
|
|
7858
7831
|
}, getI18n$9('vxe.table.allFilter'))
|
|
7859
7832
|
]))
|
|
7860
7833
|
]),
|
|
7861
|
-
|
|
7862
|
-
|
|
7863
|
-
|
|
7864
|
-
|
|
7865
|
-
|
|
7866
|
-
|
|
7867
|
-
|
|
7868
|
-
|
|
7869
|
-
|
|
7870
|
-
|
|
7871
|
-
class: ['vxe-table--filter-option', {
|
|
7872
|
-
'is--checked': item._checked
|
|
7873
|
-
}],
|
|
7874
|
-
title: item.label,
|
|
7875
|
-
onClick: (evnt) => {
|
|
7876
|
-
changeOption(evnt, !item._checked, item);
|
|
7877
|
-
}
|
|
7878
|
-
}, (filterMultiple
|
|
7879
|
-
? [
|
|
7880
|
-
h('span', {
|
|
7881
|
-
class: ['vxe-checkbox--icon', (isChecked ? getIcon$5().TABLE_CHECKBOX_CHECKED : getIcon$5().TABLE_CHECKBOX_UNCHECKED)]
|
|
7882
|
-
})
|
|
7883
|
-
]
|
|
7884
|
-
: []).concat([
|
|
7885
|
-
h('span', {
|
|
7886
|
-
class: 'vxe-checkbox--label'
|
|
7887
|
-
}, formatText(item.label, 1))
|
|
7888
|
-
]));
|
|
7889
|
-
}))
|
|
7834
|
+
useScrollbar
|
|
7835
|
+
? h(VxeUIScrollbarComponent, {
|
|
7836
|
+
class: 'vxe-table--scrollbar-filter-body',
|
|
7837
|
+
viewClassName: 'vxe-table--scrollbar-filter-body-view'
|
|
7838
|
+
}, {
|
|
7839
|
+
default: () => optVNs
|
|
7840
|
+
})
|
|
7841
|
+
: h('div', {
|
|
7842
|
+
class: 'vxe-table--filter-body'
|
|
7843
|
+
}, optVNs)
|
|
7890
7844
|
];
|
|
7891
7845
|
};
|
|
7892
7846
|
const renderFooters = () => {
|
|
@@ -8996,7 +8950,7 @@ hooks$7.add('tableFilterModule', {
|
|
|
8996
8950
|
const { refElem, refTableFilter } = $xeTable.getRefMaps();
|
|
8997
8951
|
const { computeFilterOpts, computeMouseOpts, computeRendererOpts } = $xeTable.getComputeMaps();
|
|
8998
8952
|
const updatePopupStyle = () => {
|
|
8999
|
-
const { filterStore } = reactData;
|
|
8953
|
+
const { filterStore, scrollbarHeight } = reactData;
|
|
9000
8954
|
const { elemStore } = internalData;
|
|
9001
8955
|
const { column, targetEl } = filterStore;
|
|
9002
8956
|
if (!column) {
|
|
@@ -9017,8 +8971,6 @@ hooks$7.add('tableFilterModule', {
|
|
|
9017
8971
|
if (!filterWrapperElem) {
|
|
9018
8972
|
return nextTick();
|
|
9019
8973
|
}
|
|
9020
|
-
const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
|
|
9021
|
-
const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
|
|
9022
8974
|
/**
|
|
9023
8975
|
* 是否显示筛选按钮图标
|
|
9024
8976
|
* 如果不存在图标,则相对单元格居中显示
|
|
@@ -9044,6 +8996,7 @@ hooks$7.add('tableFilterModule', {
|
|
|
9044
8996
|
if (transfer) {
|
|
9045
8997
|
const ppObj = updatePanelPlacement(currEl, filterWrapperElem, {
|
|
9046
8998
|
defaultPlacement: 'bottom',
|
|
8999
|
+
appendTo: '',
|
|
9047
9000
|
isMinWidth: false,
|
|
9048
9001
|
teleportTo: transfer
|
|
9049
9002
|
});
|
|
@@ -9054,7 +9007,7 @@ hooks$7.add('tableFilterModule', {
|
|
|
9054
9007
|
const centerWidth = targetEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2);
|
|
9055
9008
|
left = btnRect.left - tableRect.left - centerWidth;
|
|
9056
9009
|
top = btnRect.top - tableRect.top + currEl.clientHeight;
|
|
9057
|
-
maxHeight = Math.max(40, tableEl.clientHeight - top -
|
|
9010
|
+
maxHeight = Math.max(40, tableEl.clientHeight - top - scrollbarHeight);
|
|
9058
9011
|
if (left < 1) {
|
|
9059
9012
|
left = 1;
|
|
9060
9013
|
}
|
|
@@ -9076,7 +9029,6 @@ hooks$7.add('tableFilterModule', {
|
|
|
9076
9029
|
if (zIndex) {
|
|
9077
9030
|
panelStyle.zIndex = zIndex;
|
|
9078
9031
|
}
|
|
9079
|
-
filterStore.style = panelStyle;
|
|
9080
9032
|
// 筛选面板是自适应表格高度
|
|
9081
9033
|
if (compConf ? !compConf.tableFilterAutoHeight : false) {
|
|
9082
9034
|
maxHeight = 0;
|
|
@@ -9086,8 +9038,8 @@ hooks$7.add('tableFilterModule', {
|
|
|
9086
9038
|
maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
|
|
9087
9039
|
}
|
|
9088
9040
|
}
|
|
9089
|
-
|
|
9090
|
-
filterStore.
|
|
9041
|
+
panelStyle['--vxe-ui-vxe-table-filter-default-max-height'] = maxHeight ? toCssUnit(maxHeight) : 'none';
|
|
9042
|
+
filterStore.style = panelStyle;
|
|
9091
9043
|
};
|
|
9092
9044
|
handleStyle();
|
|
9093
9045
|
return nextTick().then(() => {
|
|
@@ -16043,7 +15995,8 @@ renderer$2.mixin({
|
|
|
16043
15995
|
});
|
|
16044
15996
|
|
|
16045
15997
|
const { warnLog: warnLog$2, errLog: errLog$2 } = createComponentLog('table');
|
|
16046
|
-
const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, domUtils, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
|
|
15998
|
+
const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, scrollbarUtils, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, domUtils, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
|
|
15999
|
+
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils || {};
|
|
16047
16000
|
const supportMaxRow = 5e6;
|
|
16048
16001
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
16049
16002
|
const maxYHeight = 5e6;
|
|
@@ -16070,6 +16023,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16070
16023
|
const $xeGantt = inject('$xeGantt', null);
|
|
16071
16024
|
const $xeGGWrapper = $xeGrid || $xeGantt;
|
|
16072
16025
|
const { computeSize } = useFns$2.useSize(props);
|
|
16026
|
+
const { computeIsVScrollbar } = useFns$2.useVScrollbar(props);
|
|
16073
16027
|
const crossTableDragRowInfo = getCrossTableDragRowInfo();
|
|
16074
16028
|
const reactData = reactive(createReactData$2());
|
|
16075
16029
|
const internalData = createInternalData$3();
|
|
@@ -16363,7 +16317,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16363
16317
|
return Object.assign({}, getConfig$2().table.checkboxConfig, props.checkboxConfig);
|
|
16364
16318
|
});
|
|
16365
16319
|
const computeTooltipOpts = computed(() => {
|
|
16366
|
-
|
|
16320
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
16321
|
+
return Object.assign({ useScrollbar: isVScrollbar }, getConfig$2().tooltip, getConfig$2().table.tooltipConfig, props.tooltipConfig);
|
|
16367
16322
|
});
|
|
16368
16323
|
const computeHeaderTooltipOpts = computed(() => {
|
|
16369
16324
|
const tooltipOpts = computeTooltipOpts.value;
|
|
@@ -16398,7 +16353,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16398
16353
|
return Object.assign({ orders: ['asc', 'desc', null] }, getConfig$2().table.sortConfig, props.sortConfig);
|
|
16399
16354
|
});
|
|
16400
16355
|
const computeFilterOpts = computed(() => {
|
|
16401
|
-
|
|
16356
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
16357
|
+
return Object.assign({ useScrollbar: isVScrollbar }, getConfig$2().table.filterConfig, props.filterConfig);
|
|
16402
16358
|
});
|
|
16403
16359
|
const computeFloatingFilterOpts = computed(() => {
|
|
16404
16360
|
return Object.assign({}, getConfig$2().table.floatingFilterConfig, props.floatingFilterConfig);
|
|
@@ -16788,6 +16744,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
16788
16744
|
};
|
|
16789
16745
|
const computeMaps = {
|
|
16790
16746
|
computeSize,
|
|
16747
|
+
computeIsVScrollbar,
|
|
16791
16748
|
computeTableId,
|
|
16792
16749
|
computeValidOpts,
|
|
16793
16750
|
computeRowField,
|
|
@@ -19439,6 +19396,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19439
19396
|
if (reFull) {
|
|
19440
19397
|
updateTreeLineStyle();
|
|
19441
19398
|
}
|
|
19399
|
+
updateScrollbar();
|
|
19442
19400
|
internalData.rceRunTime = Date.now();
|
|
19443
19401
|
if (reFull) {
|
|
19444
19402
|
return computeScrollLoad();
|
|
@@ -19446,8 +19404,14 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
19446
19404
|
});
|
|
19447
19405
|
};
|
|
19448
19406
|
const updateScrollbar = () => {
|
|
19449
|
-
|
|
19450
|
-
|
|
19407
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
19408
|
+
if (isVScrollbar) {
|
|
19409
|
+
return nextTick().then(() => {
|
|
19410
|
+
updateThumbSize();
|
|
19411
|
+
updateThumbOffset();
|
|
19412
|
+
});
|
|
19413
|
+
}
|
|
19414
|
+
return Promise.resolve();
|
|
19451
19415
|
};
|
|
19452
19416
|
const defaultMinRunDelay = 50;
|
|
19453
19417
|
const handleLazyRecalculate = (reFull, reWidth, reHeight, options) => {
|
|
@@ -28748,8 +28712,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28748
28712
|
}
|
|
28749
28713
|
},
|
|
28750
28714
|
triggerBodyScrollEvent(evnt, fixedType) {
|
|
28751
|
-
const { useScrollbar } = props;
|
|
28752
28715
|
const { scrollYLoad, scrollXLoad } = reactData;
|
|
28716
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
28753
28717
|
const { elemStore, intoRunScroll, lastScrollTop, lastScrollLeft, inWheelScroll, inVirtualScroll, inHeaderScroll, inBodyScroll, scrollRenderType, inFooterScroll } = internalData;
|
|
28754
28718
|
if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
|
|
28755
28719
|
return;
|
|
@@ -28768,7 +28732,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
28768
28732
|
if (!bodyScrollElem) {
|
|
28769
28733
|
return;
|
|
28770
28734
|
}
|
|
28771
|
-
if (!
|
|
28735
|
+
if (!isVScrollbar) {
|
|
28772
28736
|
if (!xHandleEl) {
|
|
28773
28737
|
return;
|
|
28774
28738
|
}
|
|
@@ -29519,6 +29483,24 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
29519
29483
|
return nextTick();
|
|
29520
29484
|
}
|
|
29521
29485
|
};
|
|
29486
|
+
const bindScrollbarResize = () => {
|
|
29487
|
+
const { elemStore } = internalData;
|
|
29488
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
29489
|
+
if (isVScrollbar) {
|
|
29490
|
+
const el = refElem.value;
|
|
29491
|
+
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
29492
|
+
const scrollObserver = globalResize.create(() => {
|
|
29493
|
+
reScrollFlag.value++;
|
|
29494
|
+
});
|
|
29495
|
+
if (el) {
|
|
29496
|
+
scrollObserver.observe(el);
|
|
29497
|
+
}
|
|
29498
|
+
if (viewInnerEl) {
|
|
29499
|
+
scrollObserver.observe(viewInnerEl);
|
|
29500
|
+
}
|
|
29501
|
+
internalData.scrollObserver = scrollObserver;
|
|
29502
|
+
}
|
|
29503
|
+
};
|
|
29522
29504
|
const updateThumbSize = () => {
|
|
29523
29505
|
const { elemStore } = internalData;
|
|
29524
29506
|
const viewEl = getRefElem(elemStore['main-body-scroll']);
|
|
@@ -30098,8 +30080,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30098
30080
|
};
|
|
30099
30081
|
const renderVirtualBody = () => {
|
|
30100
30082
|
const $xeGanttView = internalData.xeGanttView;
|
|
30101
|
-
const { useScrollbar } = props;
|
|
30102
30083
|
const { xThumbWidth, yThumbHeight } = reactData;
|
|
30084
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
30103
30085
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
30104
30086
|
const scrollXAutoHide = computeScrollXAutoHide.value;
|
|
30105
30087
|
const scrollYAutoHide = computeScrollYAutoHide.value;
|
|
@@ -30113,10 +30095,10 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30113
30095
|
return h('div', {
|
|
30114
30096
|
key: 'lvb',
|
|
30115
30097
|
class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
30116
|
-
'is--virtual-scrollbar':
|
|
30117
|
-
'ov-padding':
|
|
30118
|
-
'ov-x--auto-hide':
|
|
30119
|
-
'ov-y--auto-hide':
|
|
30098
|
+
'is--virtual-scrollbar': isVScrollbar,
|
|
30099
|
+
'ov-padding': isVScrollbar && scrollbarOpts.padding,
|
|
30100
|
+
'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
|
|
30101
|
+
'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
|
|
30120
30102
|
'overflow-y': yThumbHeight,
|
|
30121
30103
|
'overflow-x': xThumbWidth
|
|
30122
30104
|
}]
|
|
@@ -30163,10 +30145,11 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30163
30145
|
]);
|
|
30164
30146
|
};
|
|
30165
30147
|
const renderVN = () => {
|
|
30166
|
-
const { loading, stripe,
|
|
30148
|
+
const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules, importConfig, exportConfig, printConfig } = props;
|
|
30167
30149
|
const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, isRowGroupStatus, columnStore, filterStore, customStore, tooltipStore } = reactData;
|
|
30168
30150
|
const { teleportToWrapperElem, popupToWrapperElem, customPopupToElem } = internalData;
|
|
30169
30151
|
const { leftList, rightList } = columnStore;
|
|
30152
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
30170
30153
|
const loadingSlot = slots.loading;
|
|
30171
30154
|
const tipSlots = {
|
|
30172
30155
|
header: slots.headerTooltip || slots['header-tooltip'],
|
|
@@ -30206,7 +30189,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30206
30189
|
if (isCrossTableDrag && !tableData.length) {
|
|
30207
30190
|
tbOns.onDragover = $xeTable.handleCrossTableRowDragoverEmptyEvent;
|
|
30208
30191
|
}
|
|
30209
|
-
return h('div', Object.assign({ ref: refElem, class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`,
|
|
30192
|
+
return h('div', Object.assign({ ref: refElem, class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, isVScrollbar ? 'is--virtual-scrollbar' : 'is--native-scrollbar', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
30210
30193
|
[`size--${vSize}`]: vSize,
|
|
30211
30194
|
[`valid-msg--${validOpts.msgMode}`]: !!editRules,
|
|
30212
30195
|
'vxe-editable': !!editConfig,
|
|
@@ -30267,7 +30250,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30267
30250
|
h('div', {
|
|
30268
30251
|
key: 'tw',
|
|
30269
30252
|
class: 'vxe-table--render-wrapper'
|
|
30270
|
-
},
|
|
30253
|
+
}, isVScrollbar
|
|
30271
30254
|
? [renderVirtualBody()]
|
|
30272
30255
|
: (scrollbarXToTop
|
|
30273
30256
|
? [
|
|
@@ -30453,7 +30436,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30453
30436
|
key: 'ctp',
|
|
30454
30437
|
ref: refCommTooltip,
|
|
30455
30438
|
isArrow: false,
|
|
30456
|
-
enterable: false
|
|
30439
|
+
enterable: false,
|
|
30440
|
+
useScrollbar: isVScrollbar
|
|
30457
30441
|
}),
|
|
30458
30442
|
/**
|
|
30459
30443
|
* 工具提示
|
|
@@ -30476,7 +30460,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30476
30460
|
maxHeight: tableTipConfig.maxHeight,
|
|
30477
30461
|
placement: tableTipConfig.placement,
|
|
30478
30462
|
defaultPlacement: tableTipConfig.defaultPlacement,
|
|
30479
|
-
popupClassName: tableTipConfig.popupClassName
|
|
30463
|
+
popupClassName: tableTipConfig.popupClassName,
|
|
30464
|
+
useScrollbar: tableTipConfig.useScrollbar
|
|
30480
30465
|
}, currTooltipSlot
|
|
30481
30466
|
? {
|
|
30482
30467
|
content: () => {
|
|
@@ -30515,7 +30500,8 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30515
30500
|
theme: validTipConfig.theme,
|
|
30516
30501
|
enterable: validTipConfig.enterable,
|
|
30517
30502
|
enterDelay: validTipConfig.enterDelay,
|
|
30518
|
-
leaveDelay: validTipConfig.leaveDelay
|
|
30503
|
+
leaveDelay: validTipConfig.leaveDelay,
|
|
30504
|
+
useScrollbar: validTipConfig.useScrollbar
|
|
30519
30505
|
})
|
|
30520
30506
|
: renderEmptyElement$1($xeTable)
|
|
30521
30507
|
])
|
|
@@ -30620,42 +30606,43 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30620
30606
|
watch(() => VxeUI.getLanguage(), () => {
|
|
30621
30607
|
reLayoutFlag.value++;
|
|
30622
30608
|
});
|
|
30609
|
+
watch(computeIsVScrollbar, () => {
|
|
30610
|
+
nextTick(() => {
|
|
30611
|
+
bindScrollbarResize();
|
|
30612
|
+
nextTick(() => {
|
|
30613
|
+
reLayoutFlag.value++;
|
|
30614
|
+
});
|
|
30615
|
+
});
|
|
30616
|
+
});
|
|
30623
30617
|
watch(computeScrollbarXToTop, () => {
|
|
30624
|
-
reScrollFlag.value++;
|
|
30625
30618
|
reLayoutFlag.value++;
|
|
30626
30619
|
});
|
|
30627
30620
|
watch(computeScrollbarYToLeft, () => {
|
|
30628
|
-
reScrollFlag.value++;
|
|
30629
30621
|
reLayoutFlag.value++;
|
|
30630
30622
|
});
|
|
30631
30623
|
watch(computeScrollXVisible, () => {
|
|
30632
|
-
reScrollFlag.value++;
|
|
30633
30624
|
reLayoutFlag.value++;
|
|
30634
30625
|
});
|
|
30635
30626
|
watch(computeScrollYVisible, () => {
|
|
30636
|
-
reScrollFlag.value++;
|
|
30637
30627
|
reLayoutFlag.value++;
|
|
30638
30628
|
});
|
|
30639
30629
|
watch(computeScrollXHeight, () => {
|
|
30640
|
-
reScrollFlag.value++;
|
|
30641
30630
|
reLayoutFlag.value++;
|
|
30642
30631
|
});
|
|
30643
30632
|
watch(computeScrollYWidth, () => {
|
|
30644
|
-
reScrollFlag.value++;
|
|
30645
30633
|
reLayoutFlag.value++;
|
|
30646
30634
|
});
|
|
30647
30635
|
watch(computeCellHeitht, () => {
|
|
30648
30636
|
reLayoutFlag.value++;
|
|
30649
30637
|
});
|
|
30650
30638
|
watch(reLayoutFlag, () => {
|
|
30651
|
-
|
|
30639
|
+
nextTick().then(() => {
|
|
30640
|
+
$xeTable.recalculate(true);
|
|
30641
|
+
});
|
|
30652
30642
|
});
|
|
30653
30643
|
watch(reScrollFlag, () => {
|
|
30654
|
-
|
|
30655
|
-
|
|
30656
|
-
nextTick(() => {
|
|
30657
|
-
$xeTable.updateScrollbar();
|
|
30658
|
-
});
|
|
30644
|
+
updateScrollbar().then(() => {
|
|
30645
|
+
updateScrollbar();
|
|
30659
30646
|
});
|
|
30660
30647
|
});
|
|
30661
30648
|
const footFlag = ref(0);
|
|
@@ -30788,7 +30775,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
30788
30775
|
});
|
|
30789
30776
|
onMounted(() => {
|
|
30790
30777
|
const { editConfig, exportConfig, importConfig, treeConfig, minHeight, keepSource, areaConfig } = props;
|
|
30791
|
-
const {
|
|
30778
|
+
const { scrollXStore, scrollYStore } = internalData;
|
|
30792
30779
|
const columnOpts = computeColumnOpts.value;
|
|
30793
30780
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
30794
30781
|
const aggregateOpts = computeAggregateOpts.value;
|
|
@@ -31061,22 +31048,9 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
31061
31048
|
handleUpdateRowGroup(groupFields);
|
|
31062
31049
|
initData();
|
|
31063
31050
|
nextTick(() => {
|
|
31064
|
-
const {
|
|
31065
|
-
const el = refElem.value;
|
|
31066
|
-
if (useScrollbar) {
|
|
31067
|
-
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
31068
|
-
const scrollObserver = globalResize.create(() => {
|
|
31069
|
-
reScrollFlag.value++;
|
|
31070
|
-
});
|
|
31071
|
-
if (el) {
|
|
31072
|
-
scrollObserver.observe(el);
|
|
31073
|
-
}
|
|
31074
|
-
if (viewInnerEl) {
|
|
31075
|
-
scrollObserver.observe(viewInnerEl);
|
|
31076
|
-
}
|
|
31077
|
-
internalData.scrollObserver = scrollObserver;
|
|
31078
|
-
}
|
|
31051
|
+
const { autoResize } = props;
|
|
31079
31052
|
if (autoResize) {
|
|
31053
|
+
const el = refElem.value;
|
|
31080
31054
|
const parentEl = $xeTable.getParentElem();
|
|
31081
31055
|
const resizeObserver = globalResize.create(() => {
|
|
31082
31056
|
if (props.autoResize) {
|
|
@@ -31091,6 +31065,7 @@ var VxeTableComponent = defineVxeComponent({
|
|
|
31091
31065
|
}
|
|
31092
31066
|
internalData.resizeObserver = resizeObserver;
|
|
31093
31067
|
}
|
|
31068
|
+
bindScrollbarResize();
|
|
31094
31069
|
});
|
|
31095
31070
|
if (virtualYOpts.mode !== 'scroll') {
|
|
31096
31071
|
const tableViewportEl = refTableViewportElem.value;
|
|
@@ -31919,6 +31894,7 @@ var VxeGridComponent = defineVxeComponent({
|
|
|
31919
31894
|
const VxeUIPagerComponent = VxeUI.getComponent('VxePager');
|
|
31920
31895
|
const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Table', 'Bottom', 'Pager']];
|
|
31921
31896
|
const { computeSize } = useFns.useSize(props);
|
|
31897
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props);
|
|
31922
31898
|
const reactData = reactive(createReactData());
|
|
31923
31899
|
const internalData = createInternalData();
|
|
31924
31900
|
const refElem = ref();
|
|
@@ -32101,6 +32077,8 @@ var VxeGridComponent = defineVxeComponent({
|
|
|
32101
32077
|
refPopupContainerElem
|
|
32102
32078
|
};
|
|
32103
32079
|
const computeMaps = {
|
|
32080
|
+
computeSize,
|
|
32081
|
+
computeIsVScrollbar,
|
|
32104
32082
|
computeProxyOpts,
|
|
32105
32083
|
computePagerOpts,
|
|
32106
32084
|
computeFormOpts,
|