release: v1.0.1 with performance optimizations
This commit is contained in:
parent
5759b2f061
commit
0bae1edceb
15
dist/datatable.js
vendored
15
dist/datatable.js
vendored
@ -17,7 +17,7 @@ Component.register("DataTable", (container) => {
|
||||
multiSelections: [],
|
||||
isSelecting: false
|
||||
});
|
||||
container.refresh = () => {
|
||||
const refresh = () => {
|
||||
const scrollEl = container.querySelector(".dt-body");
|
||||
if (!scrollEl) return;
|
||||
const res = vs.calc(scrollEl, state.list);
|
||||
@ -28,17 +28,18 @@ Component.register("DataTable", (container) => {
|
||||
renderedList: res.renderedList
|
||||
});
|
||||
};
|
||||
container.refresh = refresh;
|
||||
state.__watch("list", (list) => {
|
||||
if (list && list.length > 0 && !list[0].__watch) {
|
||||
state.list = list.map((item) => item.__watch ? item : NewState(item));
|
||||
state.list = list.map((item) => NewState(item));
|
||||
return;
|
||||
}
|
||||
state._listStartIndex = 0;
|
||||
const scrollEl = container.querySelector(".dt-body");
|
||||
state.renderedList = vs.reset(list, scrollEl || { clientHeight: 800 }) || [];
|
||||
if (scrollEl) {
|
||||
vs.init(list, container.refresh);
|
||||
requestAnimationFrame(() => container.refresh());
|
||||
vs.init(list, refresh);
|
||||
requestAnimationFrame(() => refresh());
|
||||
}
|
||||
});
|
||||
container.onItemUpdate = (rIdx, node) => vs.update(rIdx + state._listStartIndex, node);
|
||||
@ -241,4 +242,8 @@ Component.register("DataTable", (container) => {
|
||||
</div>
|
||||
`
|
||||
));
|
||||
if (typeof document !== "undefined") RefreshState(document.documentElement);
|
||||
if (typeof document !== "undefined") {
|
||||
const initDataTable = () => RefreshState(document.documentElement);
|
||||
if (document.readyState !== "loading") initDataTable();
|
||||
else document.addEventListener("DOMContentLoaded", initDataTable, true);
|
||||
}
|
||||
|
||||
2
dist/datatable.min.js
vendored
2
dist/datatable.min.js
vendored
File diff suppressed because one or more lines are too long
15
src/index.js
15
src/index.js
@ -13,7 +13,7 @@ Component.register('DataTable', container => {
|
||||
isSelecting: false
|
||||
})
|
||||
|
||||
container.refresh = () => {
|
||||
const refresh = () => {
|
||||
const scrollEl = container.querySelector('.dt-body')
|
||||
if (!scrollEl) return
|
||||
const res = vs.calc(scrollEl, state.list)
|
||||
@ -22,18 +22,19 @@ Component.register('DataTable', container => {
|
||||
_listStartIndex: res.listStartIndex, renderedList: res.renderedList
|
||||
})
|
||||
}
|
||||
container.refresh = refresh
|
||||
|
||||
state.__watch('list', list => {
|
||||
if (list && list.length > 0 && !list[0].__watch) {
|
||||
state.list = list.map(item => item.__watch ? item : NewState(item))
|
||||
state.list = list.map(item => NewState(item))
|
||||
return
|
||||
}
|
||||
state._listStartIndex = 0
|
||||
const scrollEl = container.querySelector('.dt-body')
|
||||
state.renderedList = vs.reset(list, scrollEl || { clientHeight: 800 }) || []
|
||||
if (scrollEl) {
|
||||
vs.init(list, container.refresh)
|
||||
requestAnimationFrame(() => container.refresh())
|
||||
vs.init(list, refresh)
|
||||
requestAnimationFrame(() => refresh())
|
||||
}
|
||||
})
|
||||
|
||||
@ -232,4 +233,8 @@ Component.register('DataTable', container => {
|
||||
</div>
|
||||
`))
|
||||
|
||||
if (typeof document !== 'undefined') RefreshState(document.documentElement)
|
||||
if (typeof document !== 'undefined') {
|
||||
const initDataTable = () => RefreshState(document.documentElement)
|
||||
if (document.readyState !== 'loading') initDataTable()
|
||||
else document.addEventListener('DOMContentLoaded', initDataTable, true)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user