Fixed #5078 - DataTable: VirtualScroller Resets Scroll Position to top on lazy load more data

pull/5206/head
mertsincan 2024-02-02 10:57:28 +00:00
parent 695ff05f8b
commit 3141f09df0
1 changed files with 6 additions and 6 deletions

View File

@ -305,7 +305,7 @@ export default {
Promise.resolve().then(() => { Promise.resolve().then(() => {
this.lazyLoadState = { this.lazyLoadState = {
first: this.step ? (both ? { rows: 0, cols: first.cols } : 0) : first, first: this.step ? (both ? { rows: 0, cols: first.cols } : 0) : first,
last: Math.min(this.step ? this.step : last, this.items.length) last: Math.min(this.step ? this.step : last, this.items?.length || 0)
}; };
this.$emit('lazy-load', this.lazyLoadState); this.$emit('lazy-load', this.lazyLoadState);
@ -324,10 +324,10 @@ export default {
this.content.style.position = 'relative'; this.content.style.position = 'relative';
this.element.style.contain = 'none'; this.element.style.contain = 'none';
const [contentWidth, contentHeight] = [DomHandler.getWidth(this.content), DomHandler.getHeight(this.content)]; /*const [contentWidth, contentHeight] = [DomHandler.getWidth(this.content), DomHandler.getHeight(this.content)];
contentWidth !== this.defaultContentWidth && (this.element.style.width = ''); contentWidth !== this.defaultContentWidth && (this.element.style.width = '');
contentHeight !== this.defaultContentHeight && (this.element.style.height = ''); contentHeight !== this.defaultContentHeight && (this.element.style.height = '');*/
const [width, height] = [DomHandler.getWidth(this.element), DomHandler.getHeight(this.element)]; const [width, height] = [DomHandler.getWidth(this.element), DomHandler.getHeight(this.element)];
@ -342,7 +342,7 @@ export default {
} }
}, },
getLast(last = 0, isCols) { getLast(last = 0, isCols) {
return this.items ? Math.min(isCols ? (this.columns || this.items[0]).length : this.items.length, last) : 0; return this.items ? Math.min(isCols ? (this.columns || this.items[0])?.length || 0 : this.items?.length || 0, last) : 0;
}, },
getContentPosition() { getContentPosition() {
if (this.content) { if (this.content) {
@ -504,8 +504,8 @@ export default {
if (this.lazy && this.isPageChanged(first)) { if (this.lazy && this.isPageChanged(first)) {
const lazyLoadState = { const lazyLoadState = {
first: this.step ? Math.min(this.getPageByFirst(first) * this.step, this.items.length - this.step) : first, first: this.step ? Math.min(this.getPageByFirst(first) * this.step, (this.items?.length || 0) - this.step) : first,
last: Math.min(this.step ? (this.getPageByFirst(first) + 1) * this.step : last, this.items.length) last: Math.min(this.step ? (this.getPageByFirst(first) + 1) * this.step : last, this.items?.length || 0)
}; };
const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last; const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;