@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.d.cts
CHANGED
|
@@ -1411,6 +1411,8 @@ interface DataTableProps<T> {
|
|
|
1411
1411
|
/** Hiển thị đường kẻ dọc ngăn cách giữa các cột */
|
|
1412
1412
|
columnDividers?: boolean;
|
|
1413
1413
|
className?: string;
|
|
1414
|
+
/** Key để lưu pageSize vào localStorage. Nếu không cung cấp, pageSize sẽ không được persist */
|
|
1415
|
+
storageKey?: string;
|
|
1414
1416
|
labels?: {
|
|
1415
1417
|
density?: string;
|
|
1416
1418
|
columns?: string;
|
|
@@ -1424,7 +1426,7 @@ interface DataTableProps<T> {
|
|
|
1424
1426
|
};
|
|
1425
1427
|
}
|
|
1426
1428
|
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, pageSizeOptions, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, enableHeaderAlignToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
1427
|
-
columnDividers, className, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1429
|
+
columnDividers, className, storageKey, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1428
1430
|
|
|
1429
1431
|
interface TableProps extends React__default.HTMLAttributes<HTMLTableElement> {
|
|
1430
1432
|
containerClassName?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1411,6 +1411,8 @@ interface DataTableProps<T> {
|
|
|
1411
1411
|
/** Hiển thị đường kẻ dọc ngăn cách giữa các cột */
|
|
1412
1412
|
columnDividers?: boolean;
|
|
1413
1413
|
className?: string;
|
|
1414
|
+
/** Key để lưu pageSize vào localStorage. Nếu không cung cấp, pageSize sẽ không được persist */
|
|
1415
|
+
storageKey?: string;
|
|
1414
1416
|
labels?: {
|
|
1415
1417
|
density?: string;
|
|
1416
1418
|
columns?: string;
|
|
@@ -1424,7 +1426,7 @@ interface DataTableProps<T> {
|
|
|
1424
1426
|
};
|
|
1425
1427
|
}
|
|
1426
1428
|
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, pageSizeOptions, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, enableHeaderAlignToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
1427
|
-
columnDividers, className, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1429
|
+
columnDividers, className, storageKey, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1428
1430
|
|
|
1429
1431
|
interface TableProps extends React__default.HTMLAttributes<HTMLTableElement> {
|
|
1430
1432
|
containerClassName?: string;
|
package/dist/index.js
CHANGED
|
@@ -9914,6 +9914,7 @@ function DataTable({
|
|
|
9914
9914
|
// Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
9915
9915
|
columnDividers = false,
|
|
9916
9916
|
className,
|
|
9917
|
+
storageKey,
|
|
9917
9918
|
labels
|
|
9918
9919
|
}) {
|
|
9919
9920
|
const t = useTranslations7("Common");
|
|
@@ -9923,7 +9924,32 @@ function DataTable({
|
|
|
9923
9924
|
const [sort, setSort] = React37.useState(null);
|
|
9924
9925
|
const [density, setDensity] = React37.useState("normal");
|
|
9925
9926
|
const [curPage, setCurPage] = React37.useState(page);
|
|
9926
|
-
const
|
|
9927
|
+
const hasMounted = React37.useRef(false);
|
|
9928
|
+
const loadedFromStorage = React37.useRef(false);
|
|
9929
|
+
const getInitialPageSize = React37.useCallback(() => {
|
|
9930
|
+
if (typeof window === "undefined" || !storageKey) return pageSize;
|
|
9931
|
+
try {
|
|
9932
|
+
const saved = localStorage.getItem(`datatable_${storageKey}_pageSize`);
|
|
9933
|
+
if (saved) {
|
|
9934
|
+
const parsed = parseInt(saved, 10);
|
|
9935
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
9936
|
+
loadedFromStorage.current = true;
|
|
9937
|
+
return parsed;
|
|
9938
|
+
}
|
|
9939
|
+
}
|
|
9940
|
+
} catch {
|
|
9941
|
+
}
|
|
9942
|
+
return pageSize;
|
|
9943
|
+
}, [storageKey, pageSize]);
|
|
9944
|
+
const [curPageSize, setCurPageSize] = React37.useState(getInitialPageSize);
|
|
9945
|
+
React37.useEffect(() => {
|
|
9946
|
+
if (typeof window === "undefined" || !storageKey) return;
|
|
9947
|
+
if (!hasMounted.current) return;
|
|
9948
|
+
try {
|
|
9949
|
+
localStorage.setItem(`datatable_${storageKey}_pageSize`, String(curPageSize));
|
|
9950
|
+
} catch {
|
|
9951
|
+
}
|
|
9952
|
+
}, [curPageSize, storageKey]);
|
|
9927
9953
|
React37.useEffect(() => {
|
|
9928
9954
|
const newColKeys = columns.filter((c) => c.visible !== false).map((c) => c.key);
|
|
9929
9955
|
setVisibleCols((prev) => {
|
|
@@ -9936,10 +9962,17 @@ function DataTable({
|
|
|
9936
9962
|
setCurPage(page);
|
|
9937
9963
|
}, [page]);
|
|
9938
9964
|
React37.useEffect(() => {
|
|
9965
|
+
if (storageKey && loadedFromStorage.current) {
|
|
9966
|
+
return;
|
|
9967
|
+
}
|
|
9939
9968
|
setCurPageSize(pageSize);
|
|
9940
|
-
}, [pageSize]);
|
|
9969
|
+
}, [pageSize, storageKey]);
|
|
9941
9970
|
React37.useEffect(() => {
|
|
9942
9971
|
if (!onQueryChange) return;
|
|
9972
|
+
if (!hasMounted.current) {
|
|
9973
|
+
hasMounted.current = true;
|
|
9974
|
+
return;
|
|
9975
|
+
}
|
|
9943
9976
|
onQueryChange({ filters: debouncedFilters, sort, page: curPage, pageSize: curPageSize });
|
|
9944
9977
|
}, [debouncedFilters, sort, curPage, curPageSize]);
|
|
9945
9978
|
const densityRowClass = density === "compact" ? "h-9" : density === "comfortable" ? "h-14" : "h-12";
|