@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.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
- ] }) }) }) : !data || data.length === 0 ? /* @__PURE__ */ jsx39(TableRow, { children: /* @__PURE__ */ jsx39(TableCell, { colSpan: visibleColumns.length, className: "text-center py-6 text-muted-foreground", children: "No data" }) }) : data.map((row, idx) => /* @__PURE__ */ jsx39(TableRow, { className: cn(densityRowClass, striped && idx % 2 === 0 && "bg-muted/30"), children: visibleColumns.map((col) => {
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
- total > 0 && /* @__PURE__ */ jsx39("div", { className: "border-t bg-muted/30 p-4 rounded-b-lg", children: /* @__PURE__ */ jsx39(
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(total / curPageSize),
7293
+ totalPages: Math.ceil(totalItems / curPageSize),
7281
7294
  onChange: (p) => setCurPage(p),
7282
7295
  className: "",
7283
7296
  showInfo: true,
7284
- totalItems: total,
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
  ] });