Fixed #4723 - DataTable: #loading templates broken with lazy virtual scroller

pull/4992/head
mertsincan 2023-12-20 13:07:52 +00:00
parent d56461080c
commit 5663e4e879
2 changed files with 73 additions and 67 deletions

View File

@ -83,8 +83,10 @@ export default {
numToleratedItems(newValue) { numToleratedItems(newValue) {
this.d_numToleratedItems = newValue; this.d_numToleratedItems = newValue;
}, },
loading(newValue) { loading(newValue, oldValue) {
if (this.lazy && newValue !== oldValue && newValue !== this.d_loading) {
this.d_loading = newValue; this.d_loading = newValue;
}
}, },
items(newValue, oldValue) { items(newValue, oldValue) {
if (!oldValue || oldValue.length !== (newValue || []).length) { if (!oldValue || oldValue.length !== (newValue || []).length) {
@ -506,11 +508,12 @@ export default {
onScroll(event) { onScroll(event) {
this.$emit('scroll', event); this.$emit('scroll', event);
if (this.delay && this.isPageChanged()) { if (this.delay) {
if (this.scrollTimeout) { if (this.scrollTimeout) {
clearTimeout(this.scrollTimeout); clearTimeout(this.scrollTimeout);
} }
if (this.isPageChanged()) {
if (!this.d_loading && this.showLoader) { if (!this.d_loading && this.showLoader) {
const { isRangeChanged } = this.onScrollPositionChange(event); const { isRangeChanged } = this.onScrollPositionChange(event);
const changed = isRangeChanged || (this.step ? this.isPageChanged() : false); const changed = isRangeChanged || (this.step ? this.isPageChanged() : false);
@ -526,6 +529,7 @@ export default {
this.page = this.getPageByFirst(); this.page = this.getPageByFirst();
} }
}, this.delay); }, this.delay);
}
} else { } else {
this.onScrollChange(event); this.onScrollChange(event);
} }

View File

@ -1,6 +1,7 @@
import BaseStyle from 'primevue/base/style'; import BaseStyle from 'primevue/base/style';
const css = ` const css = `
@layer primevue {
.p-virtualscroller { .p-virtualscroller {
position: relative; position: relative;
overflow: auto; overflow: auto;
@ -61,6 +62,7 @@ const css = `
.p-virtualscroller-inline .p-virtualscroller-content { .p-virtualscroller-inline .p-virtualscroller-content {
position: static; position: static;
} }
}
`; `;
export default BaseStyle.extend({ export default BaseStyle.extend({