@underverse-ui/underverse 0.2.21 → 0.2.23
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/dist/index.cjs +35 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +35 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10069,6 +10069,7 @@ function DataTable({
|
|
|
10069
10069
|
// Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
10070
10070
|
columnDividers = false,
|
|
10071
10071
|
className,
|
|
10072
|
+
storageKey,
|
|
10072
10073
|
labels
|
|
10073
10074
|
}) {
|
|
10074
10075
|
const t = (0, import_next_intl7.useTranslations)("Common");
|
|
@@ -10078,7 +10079,32 @@ function DataTable({
|
|
|
10078
10079
|
const [sort, setSort] = import_react23.default.useState(null);
|
|
10079
10080
|
const [density, setDensity] = import_react23.default.useState("normal");
|
|
10080
10081
|
const [curPage, setCurPage] = import_react23.default.useState(page);
|
|
10081
|
-
const
|
|
10082
|
+
const hasMounted = import_react23.default.useRef(false);
|
|
10083
|
+
const loadedFromStorage = import_react23.default.useRef(false);
|
|
10084
|
+
const getInitialPageSize = import_react23.default.useCallback(() => {
|
|
10085
|
+
if (typeof window === "undefined" || !storageKey) return pageSize;
|
|
10086
|
+
try {
|
|
10087
|
+
const saved = localStorage.getItem(`datatable_${storageKey}_pageSize`);
|
|
10088
|
+
if (saved) {
|
|
10089
|
+
const parsed = parseInt(saved, 10);
|
|
10090
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
10091
|
+
loadedFromStorage.current = true;
|
|
10092
|
+
return parsed;
|
|
10093
|
+
}
|
|
10094
|
+
}
|
|
10095
|
+
} catch {
|
|
10096
|
+
}
|
|
10097
|
+
return pageSize;
|
|
10098
|
+
}, [storageKey, pageSize]);
|
|
10099
|
+
const [curPageSize, setCurPageSize] = import_react23.default.useState(getInitialPageSize);
|
|
10100
|
+
import_react23.default.useEffect(() => {
|
|
10101
|
+
if (typeof window === "undefined" || !storageKey) return;
|
|
10102
|
+
if (!hasMounted.current) return;
|
|
10103
|
+
try {
|
|
10104
|
+
localStorage.setItem(`datatable_${storageKey}_pageSize`, String(curPageSize));
|
|
10105
|
+
} catch {
|
|
10106
|
+
}
|
|
10107
|
+
}, [curPageSize, storageKey]);
|
|
10082
10108
|
import_react23.default.useEffect(() => {
|
|
10083
10109
|
const newColKeys = columns.filter((c) => c.visible !== false).map((c) => c.key);
|
|
10084
10110
|
setVisibleCols((prev) => {
|
|
@@ -10091,10 +10117,17 @@ function DataTable({
|
|
|
10091
10117
|
setCurPage(page);
|
|
10092
10118
|
}, [page]);
|
|
10093
10119
|
import_react23.default.useEffect(() => {
|
|
10120
|
+
if (storageKey && loadedFromStorage.current) {
|
|
10121
|
+
return;
|
|
10122
|
+
}
|
|
10094
10123
|
setCurPageSize(pageSize);
|
|
10095
|
-
}, [pageSize]);
|
|
10124
|
+
}, [pageSize, storageKey]);
|
|
10096
10125
|
import_react23.default.useEffect(() => {
|
|
10097
10126
|
if (!onQueryChange) return;
|
|
10127
|
+
if (!hasMounted.current) {
|
|
10128
|
+
hasMounted.current = true;
|
|
10129
|
+
return;
|
|
10130
|
+
}
|
|
10098
10131
|
onQueryChange({ filters: debouncedFilters, sort, page: curPage, pageSize: curPageSize });
|
|
10099
10132
|
}, [debouncedFilters, sort, curPage, curPageSize]);
|
|
10100
10133
|
const densityRowClass = density === "compact" ? "h-9" : density === "comfortable" ? "h-14" : "h-12";
|