@underverse-ui/underverse 0.1.26 → 0.1.28
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 +23 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -949,6 +949,7 @@ interface DataTableProps<T> {
|
|
|
949
949
|
total?: number;
|
|
950
950
|
page?: number;
|
|
951
951
|
pageSize?: number;
|
|
952
|
+
pageSizeOptions?: number[];
|
|
952
953
|
onQueryChange?: (q: DataTableQuery) => void;
|
|
953
954
|
caption?: React__default.ReactNode;
|
|
954
955
|
toolbar?: React__default.ReactNode;
|
|
@@ -964,7 +965,7 @@ interface DataTableProps<T> {
|
|
|
964
965
|
comfortable?: string;
|
|
965
966
|
};
|
|
966
967
|
}
|
|
967
|
-
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
968
|
+
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, pageSizeOptions, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
968
969
|
className, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
969
970
|
|
|
970
971
|
interface TableProps extends React__default.HTMLAttributes<HTMLTableElement> {
|
package/dist/index.d.ts
CHANGED
|
@@ -949,6 +949,7 @@ interface DataTableProps<T> {
|
|
|
949
949
|
total?: number;
|
|
950
950
|
page?: number;
|
|
951
951
|
pageSize?: number;
|
|
952
|
+
pageSizeOptions?: number[];
|
|
952
953
|
onQueryChange?: (q: DataTableQuery) => void;
|
|
953
954
|
caption?: React__default.ReactNode;
|
|
954
955
|
toolbar?: React__default.ReactNode;
|
|
@@ -964,7 +965,7 @@ interface DataTableProps<T> {
|
|
|
964
965
|
comfortable?: string;
|
|
965
966
|
};
|
|
966
967
|
}
|
|
967
|
-
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
968
|
+
declare function DataTable<T extends Record<string, any>>({ columns, data, rowKey, loading, total, page, pageSize, pageSizeOptions, onQueryChange, caption, toolbar, enableColumnVisibilityToggle, enableDensityToggle, striped, // Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
968
969
|
className, labels, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
969
970
|
|
|
970
971
|
interface TableProps extends React__default.HTMLAttributes<HTMLTableElement> {
|
package/dist/index.js
CHANGED
|
@@ -7003,6 +7003,7 @@ function DataTable({
|
|
|
7003
7003
|
total = 0,
|
|
7004
7004
|
page = 1,
|
|
7005
7005
|
pageSize = 20,
|
|
7006
|
+
pageSizeOptions,
|
|
7006
7007
|
onQueryChange,
|
|
7007
7008
|
caption,
|
|
7008
7009
|
toolbar,
|
|
@@ -7021,6 +7022,12 @@ function DataTable({
|
|
|
7021
7022
|
const [curPage, setCurPage] = React30.useState(page);
|
|
7022
7023
|
const [curPageSize, setCurPageSize] = React30.useState(pageSize);
|
|
7023
7024
|
const debouncedFilters = useDebounced(filters, 350);
|
|
7025
|
+
React30.useEffect(() => {
|
|
7026
|
+
setCurPage(page);
|
|
7027
|
+
}, [page]);
|
|
7028
|
+
React30.useEffect(() => {
|
|
7029
|
+
setCurPageSize(pageSize);
|
|
7030
|
+
}, [pageSize]);
|
|
7024
7031
|
React30.useEffect(() => {
|
|
7025
7032
|
if (!onQueryChange) return;
|
|
7026
7033
|
onQueryChange({ filters: debouncedFilters, sort, page: curPage, pageSize: curPageSize });
|
|
@@ -7182,6 +7189,12 @@ function DataTable({
|
|
|
7182
7189
|
},
|
|
7183
7190
|
col.key
|
|
7184
7191
|
)) });
|
|
7192
|
+
const isServerMode = Boolean(onQueryChange);
|
|
7193
|
+
const displayedData = isServerMode ? data : React30.useMemo(() => {
|
|
7194
|
+
const start = (curPage - 1) * curPageSize;
|
|
7195
|
+
return data.slice(start, start + curPageSize);
|
|
7196
|
+
}, [data, curPage, curPageSize]);
|
|
7197
|
+
const totalItems = isServerMode ? total : data.length;
|
|
7185
7198
|
return /* @__PURE__ */ jsxs33("div", { className: cn("space-y-2", className), children: [
|
|
7186
7199
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-between gap-4 mb-1", children: [
|
|
7187
7200
|
/* @__PURE__ */ jsx39("div", { className: "text-sm text-muted-foreground", children: caption }),
|
|
@@ -7253,7 +7266,7 @@ function DataTable({
|
|
|
7253
7266
|
)
|
|
7254
7267
|
] }),
|
|
7255
7268
|
/* @__PURE__ */ jsx39("span", { className: "text-sm", children: "Loading..." })
|
|
7256
|
-
] }) }) }) : !
|
|
7269
|
+
] }) }) }) : !displayedData || displayedData.length === 0 ? /* @__PURE__ */ jsx39(TableRow, { children: /* @__PURE__ */ jsx39(TableCell, { colSpan: visibleColumns.length, className: "text-center py-6 text-muted-foreground", children: "No data" }) }) : displayedData.map((row, idx) => /* @__PURE__ */ jsx39(TableRow, { className: cn(densityRowClass, striped && idx % 2 === 0 && "bg-muted/30"), children: visibleColumns.map((col) => {
|
|
7257
7270
|
const value = col.dataIndex ? row[col.dataIndex] : void 0;
|
|
7258
7271
|
return /* @__PURE__ */ jsx39(
|
|
7259
7272
|
TableCell,
|
|
@@ -7273,16 +7286,21 @@ function DataTable({
|
|
|
7273
7286
|
]
|
|
7274
7287
|
}
|
|
7275
7288
|
) }),
|
|
7276
|
-
|
|
7289
|
+
totalItems > 0 && /* @__PURE__ */ jsx39("div", { className: "border-t bg-muted/30 p-4 rounded-b-lg", children: /* @__PURE__ */ jsx39(
|
|
7277
7290
|
Pagination,
|
|
7278
7291
|
{
|
|
7279
7292
|
page: curPage,
|
|
7280
|
-
totalPages: Math.ceil(
|
|
7293
|
+
totalPages: Math.ceil(totalItems / curPageSize),
|
|
7281
7294
|
onChange: (p) => setCurPage(p),
|
|
7282
7295
|
className: "",
|
|
7283
7296
|
showInfo: true,
|
|
7284
|
-
totalItems
|
|
7285
|
-
pageSize: curPageSize
|
|
7297
|
+
totalItems,
|
|
7298
|
+
pageSize: curPageSize,
|
|
7299
|
+
pageSizeOptions,
|
|
7300
|
+
onPageSizeChange: (s) => {
|
|
7301
|
+
setCurPage(1);
|
|
7302
|
+
setCurPageSize(s);
|
|
7303
|
+
}
|
|
7286
7304
|
}
|
|
7287
7305
|
) })
|
|
7288
7306
|
] });
|