@ceed/ads 0.0.67 → 0.0.68

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.
@@ -11,6 +11,7 @@ type Column<T extends Record<string, V>, V = unknown> = {
11
11
  renderCell?: (params: {
12
12
  row: T;
13
13
  value?: V;
14
+ id: string;
14
15
  }) => ReactNode;
15
16
  };
16
17
  type DataTableProps<T extends Record<string, unknown>> = {
@@ -43,6 +44,7 @@ type DataTableProps<T extends Record<string, unknown>> = {
43
44
  */
44
45
  rowCount?: number;
45
46
  loading?: boolean;
47
+ getId?: (row: T) => string;
46
48
  slots?: {
47
49
  checkbox?: React.ElementType;
48
50
  toolbar?: React.ElementType;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  declare const Modal: import("framer-motion").CustomDomComponent<Pick<import("@mui/base").ModalOwnProps, "children" | "container" | "open" | "disablePortal" | "keepMounted" | "disableAutoFocus" | "disableEnforceFocus" | "disableRestoreFocus" | "disableEscapeKeyDown" | "disableScrollLock" | "hideBackdrop"> & {
3
- onClose?: ((event: {}, reason: "backdropClick" | "escapeKeyDown" | "closeClick") => void) | undefined;
3
+ onClose?: ((event: {}, reason: "escapeKeyDown" | "backdropClick" | "closeClick") => void) | undefined;
4
4
  sx?: import("@mui/joy/styles/types").SxProps | undefined;
5
5
  } & import("@mui/joy").ModalSlotsAndSlotProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
6
6
  ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
package/dist/index.js CHANGED
@@ -1312,10 +1312,15 @@ function useDataTableRenderer({
1312
1312
  paginationModel,
1313
1313
  onPaginationModelChange,
1314
1314
  selectionModel = [],
1315
- onSelectionModelChange
1315
+ onSelectionModelChange,
1316
+ getId: _getId
1316
1317
  }) {
1317
1318
  const [page, setPage] = useState4(paginationModel?.page || 1);
1318
1319
  const pageSize = paginationModel?.pageSize || 20;
1320
+ const getId = useCallback3(
1321
+ (row, index) => _getId?.(row) ?? row?.id ?? `${(index || 0) + (page - 1) * pageSize}`,
1322
+ [_getId ?? page, pageSize]
1323
+ );
1319
1324
  const selectedModelSet = useMemo3(
1320
1325
  () => new Set(selectionModel),
1321
1326
  [selectionModel]
@@ -1325,10 +1330,8 @@ function useDataTableRenderer({
1325
1330
  [rows, page, pageSize, paginationMode]
1326
1331
  );
1327
1332
  const isAllSelected = useMemo3(
1328
- () => dataInPage.length > 0 && dataInPage.every(
1329
- (_, i) => selectedModelSet.has(`${i + (page - 1) * pageSize}`)
1330
- ),
1331
- [dataInPage, selectedModelSet, page, pageSize]
1333
+ () => dataInPage.length > 0 && dataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
1334
+ [dataInPage, selectedModelSet, page, pageSize, getId]
1332
1335
  );
1333
1336
  const rowCount = totalRowsProp || rows.length;
1334
1337
  const isTotalSelected = useMemo3(
@@ -1358,6 +1361,7 @@ function useDataTableRenderer({
1358
1361
  page,
1359
1362
  pageSize,
1360
1363
  onPaginationModelChange: handlePageChange,
1364
+ getId,
1361
1365
  HeadCell,
1362
1366
  dataInPage,
1363
1367
  isAllSelected,
@@ -1368,9 +1372,7 @@ function useDataTableRenderer({
1368
1372
  [selectedModelSet]
1369
1373
  ),
1370
1374
  onAllCheckboxChange: useCallback3(() => {
1371
- onSelectionModelChange?.(
1372
- isAllSelected ? [] : dataInPage.map((_, i) => `${i + (page - 1) * pageSize}`)
1373
- );
1375
+ onSelectionModelChange?.(isAllSelected ? [] : dataInPage.map(getId));
1374
1376
  }, [isAllSelected, dataInPage, onSelectionModelChange]),
1375
1377
  onCheckboxChange: useCallback3(
1376
1378
  (event, selectedModel) => {
@@ -1395,7 +1397,7 @@ function useDataTableRenderer({
1395
1397
  ),
1396
1398
  onTotalSelect: useCallback3(() => {
1397
1399
  onSelectionModelChange?.(
1398
- isTotalSelected ? [] : rows.map((_, i) => `${i}`),
1400
+ isTotalSelected ? [] : rows.map(getId),
1399
1401
  isTotalSelected
1400
1402
  );
1401
1403
  }, [isTotalSelected, rows, onSelectionModelChange])
@@ -1436,6 +1438,7 @@ function DataTable(props) {
1436
1438
  isSelectedRow,
1437
1439
  onAllCheckboxChange,
1438
1440
  onCheckboxChange,
1441
+ getId,
1439
1442
  rowCount,
1440
1443
  page,
1441
1444
  pageSize,
@@ -1515,7 +1518,7 @@ function DataTable(props) {
1515
1518
  },
1516
1519
  /* @__PURE__ */ React12.createElement(LoadingOverlay, null)
1517
1520
  ))), /* @__PURE__ */ React12.createElement(OverlayWrapper, null), dataInPage.map((row, rowIndex) => {
1518
- const rowId = `${rowIndex + (page - 1) * pageSize}`;
1521
+ const rowId = getId(row, rowIndex);
1519
1522
  return /* @__PURE__ */ React12.createElement(
1520
1523
  "tr",
1521
1524
  {
@@ -1550,14 +1553,18 @@ function DataTable(props) {
1550
1553
  textAlign: column.type === "number" ? "end" : "start"
1551
1554
  }
1552
1555
  },
1553
- column.renderCell?.({ row, value: row[column.field] }) ?? row[column.field]
1556
+ column.renderCell?.({
1557
+ row,
1558
+ value: row[column.field],
1559
+ id: rowId
1560
+ }) ?? row[column.field]
1554
1561
  ))
1555
1562
  );
1556
1563
  })), Footer && /* @__PURE__ */ React12.createElement(Footer, null))
1557
1564
  ), /* @__PURE__ */ React12.createElement(
1558
1565
  TablePagination,
1559
1566
  {
1560
- paginationModel: { page, pageSize },
1567
+ paginationModel: useMemo3(() => ({ page, pageSize }), [page, pageSize]),
1561
1568
  rowCount,
1562
1569
  onPageChange: onPaginationModelChange
1563
1570
  }