vxe-table 4.8.8 → 4.8.10
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/style.css +1 -1
- package/es/table/src/body.js +4 -12
- package/es/table/src/emits.js +1 -0
- package/es/table/src/footer.js +2 -6
- package/es/table/src/table.js +198 -68
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +211 -90
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/src/body.js +4 -12
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/footer.js +2 -6
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/table.js +204 -71
- 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/table/src/body.ts +4 -12
- package/packages/table/src/emits.ts +1 -0
- package/packages/table/src/footer.ts +2 -6
- package/packages/table/src/table.ts +198 -70
- /package/es/{iconfont.1731060581842.ttf → iconfont.1731289529100.ttf} +0 -0
- /package/es/{iconfont.1731060581842.woff → iconfont.1731289529100.woff} +0 -0
- /package/es/{iconfont.1731060581842.woff2 → iconfont.1731289529100.woff2} +0 -0
- /package/lib/{iconfont.1731060581842.ttf → iconfont.1731289529100.ttf} +0 -0
- /package/lib/{iconfont.1731060581842.woff → iconfont.1731289529100.woff} +0 -0
- /package/lib/{iconfont.1731060581842.woff2 → iconfont.1731289529100.woff2} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const renderer=_ui.VxeUI["renderer"],renderType="footer";function mergeFooterMethod(l,o,t){for(let e=0;e<l.length;e++){var{row:r,col:n,rowspan:a,colspan:u}=l[e];if(-1<n&&-1<r&&a&&u){if(r===o&&n===t)return{rowspan:a,colspan:u};if(r<=o&&o<r+a&&n<=t&&t<n+u)return{rowspan:0,colspan:0}}}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableFooter",props:{footerTableData:{type:Array,default:()=>[]},tableColumn:{type:Array,default:()=>[]},fixedColumn:{type:Array,default:()=>[]},fixedType:{type:String,default:null}},setup(a){const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const renderer=_ui.VxeUI["renderer"],renderType="footer";function mergeFooterMethod(l,o,t){for(let e=0;e<l.length;e++){var{row:r,col:n,rowspan:a,colspan:u}=l[e];if(-1<n&&-1<r&&a&&u){if(r===o&&n===t)return{rowspan:a,colspan:u};if(r<=o&&o<r+a&&n<=t&&t<n+u)return{rowspan:0,colspan:0}}}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableFooter",props:{footerTableData:{type:Array,default:()=>[]},tableColumn:{type:Array,default:()=>[]},fixedColumn:{type:Array,default:()=>[]},fixedType:{type:String,default:null}},setup(a){const L=(0,_vue.inject)("$xeTable",{}),{xID:n,props:u,reactData:i,internalData:s}=L,{refTableHeader:c,refTableBody:d,refScrollXHandleElem:p}=L.getRefMaps(),{computeTooltipOpts:f,computeColumnOpts:v}=L.getComputeMaps(),x=(0,_vue.ref)(),m=(0,_vue.ref)(),_=(0,_vue.ref)(),g=(0,_vue.ref)(),y=(0,_vue.ref)(),R=e=>{var l=a["fixedType"],o=c.value,t=d.value,o=o?o.$el:null,r=x.value,t=t.$el,r=r.scrollLeft,n=p.value;n?n.scrollLeft=r:(n=t.scrollTop,(!!0,_dom.setScrollLeft)(o,r),(0,_dom.setScrollLeft)(t,r),L.handleScrollEvent(e,!1,!0,n,r,{type:renderType,fixed:l}))};(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=a["fixedType"],l=s["elemStore"],e=`${e||"main"}-footer-`;l[e+"wrapper"]=x,l[e+"table"]=m,l[e+"colgroup"]=_,l[e+"list"]=g,l[e+"xSpace"]=y})}),(0,_vue.onUnmounted)(()=>{var e=a["fixedType"],l=s["elemStore"],e=`${e||"main"}-footer-`;l[e+"wrapper"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null});return()=>{let{fixedType:b,fixedColumn:e,tableColumn:h,footerTableData:w}=a;const{footerRowClassName:l,footerCellClassName:T,footerRowStyle:o,footerCellStyle:C,footerAlign:I,footerSpanMethod:S,align:F,columnKey:$,showFooterOverflow:O}=u;var t=s["visibleColumn"];const{scrollXLoad:M,overflowX:j,scrollbarWidth:r,currentColumn:A,mergeFooterList:D}=i,k=f.value,q=v.value;return b&&(h=i.expandColumn||!M&&!O||D.length&&S?t:e),(0,_vue.h)("div",{ref:x,class:["vxe-table--footer-wrapper",b?`fixed-${b}--wrapper`:"body--wrapper"],xid:n,onScroll:R},[b?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{ref:y,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:m,class:"vxe-table--footer",xid:n,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:_},h.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l})).concat(r?[(0,_vue.h)("col",{name:"col_gutter"})]:[])),(0,_vue.h)("tfoot",{ref:g},w.map((_,g)=>{const y=g;var e={$table:L,row:_,_rowIndex:g,$rowIndex:y,fixed:b,type:renderType};return(0,_vue.h)("tr",{class:["vxe-footer--row",l?_xeUtils.default.isFunction(l)?l(e):l:""],style:o?_xeUtils.default.isFunction(o)?o(e):o:null},h.map((l,e)=>{var{type:o,showFooterOverflow:t,footerAlign:r,align:n,footerClassName:a,editRender:u,cellRender:i}=l,u=u||i,i=u?renderer.get(u.name):null;const s=k.showAll;u=l.children&&l.children.length,u=b?l.fixed!==b&&!u:l.fixed&&j,t=_xeUtils.default.eqNull(t)?O:t,r=r||(i?i.tableFooterCellAlign:"")||I||n||(i?i.tableCellAlign:"")||F;let c="ellipsis"===t;const d="title"===t,p=!0===t||"tooltip"===t;let f=d||p||c;var n={colid:l.id},i={},t=L.getColumnIndex(l),v=L.getVTColumnIndex(l),x=v;const m={$table:L,$grid:L.xegrid,row:_,rowIndex:g,_rowIndex:g,$rowIndex:y,column:l,columnIndex:t,$columnIndex:e,_columnIndex:v,itemIndex:x,items:_,fixed:b,type:renderType,data:w};if(M&&!f&&(c=f=!0),(d||p||s)&&(i.onMouseenter=e=>{d?(0,_dom.updateCellTitle)(e.currentTarget,l):(p||s)&&L.triggerFooterTooltipEvent(e,m)}),(p||s)&&(i.onMouseleave=e=>{(p||s)&&L.handleTargetLeaveEvent(e)}),i.onClick=e=>{L.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},m),e)},i.onDblclick=e=>{L.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},m),e)},D.length){t=mergeFooterMethod(D,g,v);if(t){var{rowspan:x,colspan:v}=t;if(!x||!v)return null;1<x&&(n.rowspan=x),1<v&&(n.colspan=v)}}else if(S){var{rowspan:t=1,colspan:x=1}=S(m)||{};if(!t||!x)return null;1<t&&(n.rowspan=t),1<x&&(n.colspan=x)}return(0,_vue.h)("td",Object.assign(Object.assign(Object.assign(Object.assign({class:["vxe-footer--column",l.id,{["col--"+r]:r,["col--"+o]:o,"col--last":e===h.length-1,"fixed--hidden":u,"col--ellipsis":f,"col--current":A===l},(0,_dom.getPropClass)(a,m),(0,_dom.getPropClass)(T,m)]},n),{style:C?_xeUtils.default.isFunction(C)?C(m):C:null}),i),{key:$||q.useKey?l.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":d,"c--tooltip":p,"c--ellipsis":c}]},l.renderFooter(m))])}).concat(r?[(0,_vue.h)("td",{class:"vxe-footer--gutter col--gutter"})]:[]))}))])])}}});
|
package/lib/table/src/table.js
CHANGED
|
@@ -408,9 +408,29 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
408
408
|
const computeSXOpts = (0, _vue.computed)(() => {
|
|
409
409
|
return Object.assign({}, getConfig().table.scrollX, props.scrollX);
|
|
410
410
|
});
|
|
411
|
+
const computeScrollXThreshold = (0, _vue.computed)(() => {
|
|
412
|
+
const sXOpts = computeSXOpts.value;
|
|
413
|
+
const {
|
|
414
|
+
threshold
|
|
415
|
+
} = sXOpts;
|
|
416
|
+
if (threshold) {
|
|
417
|
+
return _xeUtils.default.toNumber(threshold);
|
|
418
|
+
}
|
|
419
|
+
return 0;
|
|
420
|
+
});
|
|
411
421
|
const computeSYOpts = (0, _vue.computed)(() => {
|
|
412
422
|
return Object.assign({}, getConfig().table.scrollY, props.scrollY);
|
|
413
423
|
});
|
|
424
|
+
const computeScrollYThreshold = (0, _vue.computed)(() => {
|
|
425
|
+
const sYOpts = computeSYOpts.value;
|
|
426
|
+
const {
|
|
427
|
+
threshold
|
|
428
|
+
} = sYOpts;
|
|
429
|
+
if (threshold) {
|
|
430
|
+
return _xeUtils.default.toNumber(threshold);
|
|
431
|
+
}
|
|
432
|
+
return 0;
|
|
433
|
+
});
|
|
414
434
|
const computeRowHeightMaps = (0, _vue.computed)(() => {
|
|
415
435
|
return {
|
|
416
436
|
default: 48,
|
|
@@ -3344,9 +3364,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3344
3364
|
(0, _dom.setScrollLeft)(bodyElem, scrollLeft);
|
|
3345
3365
|
(0, _dom.setScrollLeft)(headerElem, scrollLeft);
|
|
3346
3366
|
(0, _dom.setScrollLeft)(footerElem, scrollLeft);
|
|
3347
|
-
(0, _dom.setScrollLeft)(bodyElem, scrollLeft);
|
|
3348
|
-
(0, _dom.setScrollLeft)(headerElem, scrollLeft);
|
|
3349
|
-
(0, _dom.setScrollLeft)(footerElem, scrollLeft);
|
|
3350
3367
|
};
|
|
3351
3368
|
const scrollXEvent = evnt => {
|
|
3352
3369
|
const wrapperEl = evnt.currentTarget;
|
|
@@ -3356,15 +3373,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3356
3373
|
} = wrapperEl;
|
|
3357
3374
|
const isRollX = true;
|
|
3358
3375
|
const isRollY = false;
|
|
3359
|
-
internalData.lastScrollLeft = scrollLeft;
|
|
3360
|
-
reactData.lastScrollTime = Date.now();
|
|
3361
3376
|
handleSyncScrollX(scrollLeft);
|
|
3362
3377
|
$xeTable.triggerScrollXEvent(evnt);
|
|
3363
|
-
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
3378
|
+
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
|
|
3364
3379
|
type: 'table',
|
|
3365
|
-
fixed: ''
|
|
3366
|
-
scrollTop,
|
|
3367
|
-
scrollLeft
|
|
3380
|
+
fixed: ''
|
|
3368
3381
|
});
|
|
3369
3382
|
};
|
|
3370
3383
|
const debounceScrollYCalculate = _xeUtils.default.debounce(function () {
|
|
@@ -3392,15 +3405,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3392
3405
|
} = wrapperEl;
|
|
3393
3406
|
const isRollX = false;
|
|
3394
3407
|
const isRollY = true;
|
|
3395
|
-
internalData.lastScrollTop = scrollTop;
|
|
3396
|
-
reactData.lastScrollTime = Date.now();
|
|
3397
3408
|
handleSyncScrollY(scrollTop);
|
|
3398
3409
|
$xeTable.triggerScrollYEvent(evnt);
|
|
3399
|
-
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
|
|
3410
|
+
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
|
|
3400
3411
|
type: 'table',
|
|
3401
|
-
fixed: ''
|
|
3402
|
-
scrollTop,
|
|
3403
|
-
scrollLeft
|
|
3412
|
+
fixed: ''
|
|
3404
3413
|
});
|
|
3405
3414
|
};
|
|
3406
3415
|
let keyCtxTimeout;
|
|
@@ -4151,25 +4160,35 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
4151
4160
|
* 设置为固定列
|
|
4152
4161
|
*/
|
|
4153
4162
|
setColumnFixed(fieldOrColumn, fixed) {
|
|
4154
|
-
|
|
4155
|
-
const
|
|
4156
|
-
const isMaxFixedColumn = computeIsMaxFixedColumn.value;
|
|
4163
|
+
let status = false;
|
|
4164
|
+
const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
|
|
4157
4165
|
const columnOpts = computeColumnOpts.value;
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
+
const isMaxFixedColumn = computeIsMaxFixedColumn.value;
|
|
4167
|
+
for (let i = 0; i < cols.length; i++) {
|
|
4168
|
+
const item = cols[i];
|
|
4169
|
+
const column = (0, _util.handleFieldOrColumn)($xeTable, item);
|
|
4170
|
+
const targetColumn = (0, _util.getRootColumn)($xeTable, column);
|
|
4171
|
+
if (targetColumn && targetColumn.fixed !== fixed) {
|
|
4172
|
+
// 是否超过最大固定列数量
|
|
4173
|
+
if (!targetColumn.fixed && isMaxFixedColumn) {
|
|
4174
|
+
if (_ui.VxeUI.modal) {
|
|
4175
|
+
_ui.VxeUI.modal.message({
|
|
4176
|
+
status: 'error',
|
|
4177
|
+
content: getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
|
|
4178
|
+
});
|
|
4179
|
+
}
|
|
4180
|
+
return (0, _vue.nextTick)();
|
|
4181
|
+
}
|
|
4182
|
+
_xeUtils.default.eachTree([targetColumn], column => {
|
|
4183
|
+
column.fixed = fixed;
|
|
4184
|
+
});
|
|
4185
|
+
tablePrivateMethods.saveCustomStore('update:fixed');
|
|
4186
|
+
if (!status) {
|
|
4187
|
+
status = true;
|
|
4166
4188
|
}
|
|
4167
|
-
return (0, _vue.nextTick)();
|
|
4168
4189
|
}
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
});
|
|
4172
|
-
tablePrivateMethods.saveCustomStore('update:fixed');
|
|
4190
|
+
}
|
|
4191
|
+
if (status) {
|
|
4173
4192
|
return tableMethods.refreshColumn();
|
|
4174
4193
|
}
|
|
4175
4194
|
return (0, _vue.nextTick)();
|
|
@@ -4178,13 +4197,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
4178
4197
|
* 取消指定固定列
|
|
4179
4198
|
*/
|
|
4180
4199
|
clearColumnFixed(fieldOrColumn) {
|
|
4181
|
-
|
|
4182
|
-
const
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4200
|
+
let status = false;
|
|
4201
|
+
const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
|
|
4202
|
+
cols.forEach(item => {
|
|
4203
|
+
const column = (0, _util.handleFieldOrColumn)($xeTable, item);
|
|
4204
|
+
const targetColumn = (0, _util.getRootColumn)($xeTable, column);
|
|
4205
|
+
if (targetColumn && targetColumn.fixed) {
|
|
4206
|
+
_xeUtils.default.eachTree([targetColumn], column => {
|
|
4207
|
+
column.fixed = null;
|
|
4208
|
+
});
|
|
4209
|
+
tablePrivateMethods.saveCustomStore('update:fixed');
|
|
4210
|
+
if (!status) {
|
|
4211
|
+
status = true;
|
|
4212
|
+
}
|
|
4213
|
+
}
|
|
4214
|
+
});
|
|
4215
|
+
if (status) {
|
|
4188
4216
|
return tableMethods.refreshColumn();
|
|
4189
4217
|
}
|
|
4190
4218
|
return (0, _vue.nextTick)();
|
|
@@ -4193,9 +4221,18 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
4193
4221
|
* 隐藏指定列
|
|
4194
4222
|
*/
|
|
4195
4223
|
hideColumn(fieldOrColumn) {
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4224
|
+
let status = false;
|
|
4225
|
+
const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
|
|
4226
|
+
cols.forEach(item => {
|
|
4227
|
+
const column = (0, _util.handleFieldOrColumn)($xeTable, item);
|
|
4228
|
+
if (column && column.visible) {
|
|
4229
|
+
column.visible = false;
|
|
4230
|
+
if (!status) {
|
|
4231
|
+
status = true;
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
});
|
|
4235
|
+
if (status) {
|
|
4199
4236
|
return tablePrivateMethods.handleCustom();
|
|
4200
4237
|
}
|
|
4201
4238
|
return (0, _vue.nextTick)();
|
|
@@ -4204,25 +4241,43 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
4204
4241
|
* 显示指定列
|
|
4205
4242
|
*/
|
|
4206
4243
|
showColumn(fieldOrColumn) {
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4244
|
+
let status = false;
|
|
4245
|
+
const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
|
|
4246
|
+
cols.forEach(item => {
|
|
4247
|
+
const column = (0, _util.handleFieldOrColumn)($xeTable, item);
|
|
4248
|
+
if (column && !column.visible) {
|
|
4249
|
+
column.visible = true;
|
|
4250
|
+
if (!status) {
|
|
4251
|
+
status = true;
|
|
4252
|
+
}
|
|
4253
|
+
}
|
|
4254
|
+
});
|
|
4255
|
+
if (status) {
|
|
4210
4256
|
return tablePrivateMethods.handleCustom();
|
|
4211
4257
|
}
|
|
4212
4258
|
return (0, _vue.nextTick)();
|
|
4213
4259
|
},
|
|
4214
4260
|
setColumnWidth(fieldOrColumn, width) {
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
if (
|
|
4220
|
-
const
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4261
|
+
let status = false;
|
|
4262
|
+
const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
|
|
4263
|
+
cols.forEach(item => {
|
|
4264
|
+
const column = (0, _util.handleFieldOrColumn)($xeTable, item);
|
|
4265
|
+
if (column) {
|
|
4266
|
+
const colWidth = _xeUtils.default.toInteger(width);
|
|
4267
|
+
let rdWidth = colWidth;
|
|
4268
|
+
if ((0, _dom.isScale)(width)) {
|
|
4269
|
+
const tableBody = refTableBody.value;
|
|
4270
|
+
const bodyElem = tableBody ? tableBody.$el : null;
|
|
4271
|
+
const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
|
|
4272
|
+
rdWidth = Math.floor(colWidth * bodyWidth);
|
|
4273
|
+
}
|
|
4274
|
+
column.resizeWidth = rdWidth;
|
|
4275
|
+
if (!status) {
|
|
4276
|
+
status = true;
|
|
4277
|
+
}
|
|
4278
|
+
}
|
|
4279
|
+
});
|
|
4280
|
+
if (status) {
|
|
4226
4281
|
return tableMethods.refreshColumn();
|
|
4227
4282
|
}
|
|
4228
4283
|
return (0, _vue.nextTick)();
|
|
@@ -5344,16 +5399,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
5344
5399
|
*/
|
|
5345
5400
|
scrollTo(scrollLeft, scrollTop) {
|
|
5346
5401
|
const tableBody = refTableBody.value;
|
|
5402
|
+
const tableHeader = refTableHeader.value;
|
|
5347
5403
|
const tableFooter = refTableFooter.value;
|
|
5404
|
+
const leftBody = refTableLeftBody.value;
|
|
5348
5405
|
const rightBody = refTableRightBody.value;
|
|
5349
5406
|
const tableBodyElem = tableBody ? tableBody.$el : null;
|
|
5407
|
+
const leftBodyElem = leftBody ? leftBody.$el : null;
|
|
5350
5408
|
const rightBodyElem = rightBody ? rightBody.$el : null;
|
|
5409
|
+
const tableHeaderElem = tableHeader ? tableHeader.$el : null;
|
|
5351
5410
|
const tableFooterElem = tableFooter ? tableFooter.$el : null;
|
|
5352
5411
|
if (_xeUtils.default.isNumber(scrollLeft)) {
|
|
5353
|
-
|
|
5412
|
+
const xHandleEl = refScrollXHandleElem.value;
|
|
5413
|
+
if (xHandleEl) {
|
|
5414
|
+
(0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
|
|
5415
|
+
} else {
|
|
5416
|
+
(0, _dom.setScrollLeft)(tableBodyElem, scrollLeft);
|
|
5417
|
+
(0, _dom.setScrollLeft)(tableHeaderElem, scrollLeft);
|
|
5418
|
+
(0, _dom.setScrollLeft)(tableFooterElem, scrollLeft);
|
|
5419
|
+
}
|
|
5354
5420
|
}
|
|
5355
5421
|
if (_xeUtils.default.isNumber(scrollTop)) {
|
|
5356
|
-
|
|
5422
|
+
const yHandleEl = refScrollYHandleElem.value;
|
|
5423
|
+
if (yHandleEl) {
|
|
5424
|
+
(0, _dom.setScrollTop)(yHandleEl, scrollTop);
|
|
5425
|
+
} else {
|
|
5426
|
+
(0, _dom.setScrollTop)(tableBodyElem, scrollTop);
|
|
5427
|
+
(0, _dom.setScrollTop)(leftBodyElem, scrollTop);
|
|
5428
|
+
(0, _dom.setScrollTop)(rightBodyElem, scrollTop);
|
|
5429
|
+
}
|
|
5357
5430
|
}
|
|
5358
5431
|
if (reactData.scrollXLoad || reactData.scrollYLoad) {
|
|
5359
5432
|
return new Promise(resolve => {
|
|
@@ -7864,39 +7937,99 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
7864
7937
|
triggerScrollXEvent() {
|
|
7865
7938
|
loadScrollXData();
|
|
7866
7939
|
},
|
|
7867
|
-
handleScrollEvent(evnt, isRollY, isRollX, params) {
|
|
7940
|
+
handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, params) {
|
|
7868
7941
|
const {
|
|
7869
7942
|
highlightHoverRow
|
|
7870
7943
|
} = props;
|
|
7944
|
+
const {
|
|
7945
|
+
lastScrollLeft,
|
|
7946
|
+
lastScrollTop
|
|
7947
|
+
} = internalData;
|
|
7871
7948
|
const tableBody = refTableBody.value;
|
|
7872
7949
|
const bodyElem = tableBody ? tableBody.$el : null;
|
|
7873
7950
|
const rowOpts = computeRowOpts.value;
|
|
7874
7951
|
const validTip = refValidTooltip.value;
|
|
7875
7952
|
const tooltip = refTooltip.value;
|
|
7876
|
-
if (rowOpts.isHover || highlightHoverRow) {
|
|
7877
|
-
$xeTable.clearHoverRow();
|
|
7878
|
-
}
|
|
7879
|
-
if (validTip && validTip.reactData.visible) {
|
|
7880
|
-
validTip.close();
|
|
7881
|
-
}
|
|
7882
|
-
if (tooltip && tooltip.reactData.visible) {
|
|
7883
|
-
tooltip.close();
|
|
7884
|
-
}
|
|
7885
|
-
if (isRollX) {
|
|
7886
|
-
tablePrivateMethods.checkScrolling();
|
|
7887
|
-
}
|
|
7888
7953
|
const bodyHeight = bodyElem ? bodyElem.clientHeight : 0;
|
|
7889
7954
|
const bodyWidth = bodyElem ? bodyElem.clientWidth : 0;
|
|
7890
7955
|
const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0;
|
|
7891
7956
|
const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0;
|
|
7957
|
+
let isTop = false;
|
|
7958
|
+
let isBottom = false;
|
|
7959
|
+
let isLeft = false;
|
|
7960
|
+
let isRight = false;
|
|
7961
|
+
let direction = '';
|
|
7962
|
+
let isTopBoundary = false;
|
|
7963
|
+
let isBottomBoundary = false;
|
|
7964
|
+
let isLeftBoundary = false;
|
|
7965
|
+
let isRightBoundary = false;
|
|
7966
|
+
if (isRollX) {
|
|
7967
|
+
const xThreshold = computeScrollXThreshold.value;
|
|
7968
|
+
isLeft = scrollLeft <= 0;
|
|
7969
|
+
if (!isLeft) {
|
|
7970
|
+
isRight = scrollLeft + bodyWidth >= scrollWidth;
|
|
7971
|
+
}
|
|
7972
|
+
if (scrollLeft > lastScrollLeft) {
|
|
7973
|
+
direction = 'right';
|
|
7974
|
+
if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
|
|
7975
|
+
isRightBoundary = true;
|
|
7976
|
+
}
|
|
7977
|
+
} else {
|
|
7978
|
+
direction = 'left';
|
|
7979
|
+
if (scrollLeft <= xThreshold) {
|
|
7980
|
+
isLeftBoundary = true;
|
|
7981
|
+
}
|
|
7982
|
+
}
|
|
7983
|
+
tablePrivateMethods.checkScrolling();
|
|
7984
|
+
internalData.lastScrollLeft = scrollLeft;
|
|
7985
|
+
reactData.lastScrollTime = Date.now();
|
|
7986
|
+
} else {
|
|
7987
|
+
const yThreshold = computeScrollYThreshold.value;
|
|
7988
|
+
isTop = scrollTop <= 0;
|
|
7989
|
+
if (!isTop) {
|
|
7990
|
+
isBottom = scrollTop + bodyHeight >= scrollHeight;
|
|
7991
|
+
}
|
|
7992
|
+
if (scrollTop > lastScrollTop) {
|
|
7993
|
+
direction = 'bottom';
|
|
7994
|
+
if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
|
|
7995
|
+
isBottomBoundary = true;
|
|
7996
|
+
}
|
|
7997
|
+
} else {
|
|
7998
|
+
direction = 'top';
|
|
7999
|
+
if (scrollTop <= yThreshold) {
|
|
8000
|
+
isTopBoundary = true;
|
|
8001
|
+
}
|
|
8002
|
+
}
|
|
8003
|
+
internalData.lastScrollTop = scrollTop;
|
|
8004
|
+
reactData.lastScrollTime = Date.now();
|
|
8005
|
+
}
|
|
7892
8006
|
const evntParams = Object.assign({
|
|
8007
|
+
scrollTop,
|
|
8008
|
+
scrollLeft,
|
|
7893
8009
|
bodyHeight,
|
|
7894
8010
|
bodyWidth,
|
|
7895
8011
|
scrollHeight,
|
|
7896
8012
|
scrollWidth,
|
|
7897
8013
|
isX: isRollX,
|
|
7898
|
-
isY: isRollY
|
|
8014
|
+
isY: isRollY,
|
|
8015
|
+
isTop,
|
|
8016
|
+
isBottom,
|
|
8017
|
+
isLeft,
|
|
8018
|
+
isRight,
|
|
8019
|
+
direction
|
|
7899
8020
|
}, params);
|
|
8021
|
+
if (rowOpts.isHover || highlightHoverRow) {
|
|
8022
|
+
$xeTable.clearHoverRow();
|
|
8023
|
+
}
|
|
8024
|
+
if (validTip && validTip.reactData.visible) {
|
|
8025
|
+
validTip.close();
|
|
8026
|
+
}
|
|
8027
|
+
if (tooltip && tooltip.reactData.visible) {
|
|
8028
|
+
tooltip.close();
|
|
8029
|
+
}
|
|
8030
|
+
if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
|
|
8031
|
+
dispatchEvent('scroll-boundary', evntParams, evnt);
|
|
8032
|
+
}
|
|
7900
8033
|
dispatchEvent('scroll', evntParams, evnt);
|
|
7901
8034
|
},
|
|
7902
8035
|
/**
|