Skip to content

Commit 71e1e0e

Browse files
authored
Merge pull request #25 from connorabbas/develop
More lazy data table improvements
2 parents aed36a3 + c0e2c40 commit 71e1e0e

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

package-lock.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@
2020
"tailwindcss-primeui": "^0.3.2",
2121
"vite": "^5.0",
2222
"vue": "^3.5.0"
23+
},
24+
"dependencies": {
25+
"lodash": "^4.17.21"
2326
}
2427
}

resources/js/Composables/useLazyDataTable.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ref, computed, onMounted } from 'vue';
22
import { router, usePage } from '@inertiajs/vue3';
3+
import debounce from 'lodash/debounce';
34

45
export function useLazyDataTable(
56
defaultFilters = {},
@@ -36,6 +37,10 @@ export function useLazyDataTable(
3637
return isFiltering || isSorting;
3738
});
3839

40+
const debounceInputFilter = debounce((filterCallback) => {
41+
filterCallback();
42+
}, 300);
43+
3944
function fetchData() {
4045
return new Promise((resolve, reject) => {
4146
router.reload({
@@ -59,7 +64,6 @@ export function useLazyDataTable(
5964
}
6065

6166
function onFilter(event) {
62-
// TODO: debounce "contains" searches
6367
currentPage.value = 1;
6468
filters.value = event.filters;
6569
// empty arrays cause filtering issues, set to null instead
@@ -93,13 +97,16 @@ export function useLazyDataTable(
9397
});
9498
}
9599

96-
function resetFilters() {
100+
function resetTable() {
101+
window.history.replaceState(null, '', window.location.pathname);
97102
filters.value = dataTableDefaults.filters;
98103
sortField.value = dataTableDefaults.sortField;
99104
sortOrder.value = dataTableDefaults.sortOrder;
100105
currentPage.value = dataTableDefaults.currentPage;
101106
rowsPerPage.value = dataTableDefaults.rowsPerPage;
102-
fetchData();
107+
router.reload({
108+
only: ['request', ...new Set(only)],
109+
});
103110
}
104111

105112
function parseUrlParams(urlParams) {
@@ -146,10 +153,11 @@ export function useLazyDataTable(
146153
rowsPerPage,
147154
firstDatasetIndex,
148155
hasFilteringApplied,
156+
debounceInputFilter,
149157
onFilter,
150158
onSort,
151159
onPage,
152-
resetFilters,
160+
resetTable,
153161
fetchData,
154162
parseUrlParams,
155163
};

0 commit comments

Comments
 (0)