@optimum-intelligence/opti-ui 0.7.1 → 0.7.3

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/components/app-shell/AppShell.d.ts +12 -3
  3. package/dist/components/app-shell/AppShell.js +45 -26
  4. package/dist/components/app-shell/AppShell.js.map +1 -1
  5. package/dist/components/combobox/Combobox.d.ts +11 -2
  6. package/dist/components/combobox/Combobox.js +155 -118
  7. package/dist/components/combobox/Combobox.js.map +1 -1
  8. package/dist/components/data-table/DataTable.d.ts +25 -4
  9. package/dist/components/data-table/DataTable.js +238 -90
  10. package/dist/components/data-table/DataTable.js.map +1 -1
  11. package/dist/components/data-table/DataTableContent.d.ts +6 -1
  12. package/dist/components/data-table/DataTableContent.js +306 -409
  13. package/dist/components/data-table/DataTableContent.js.map +1 -1
  14. package/dist/components/data-table/DataTableFilters.d.ts +6 -1
  15. package/dist/components/data-table/DataTableFilters.js +65 -45
  16. package/dist/components/data-table/DataTableFilters.js.map +1 -1
  17. package/dist/components/data-table/DataTableRow.js +2 -0
  18. package/dist/components/data-table/DataTableRow.js.map +1 -1
  19. package/dist/components/data-table/types.d.ts +14 -1
  20. package/dist/components/data-table/useDataTable.js +2 -0
  21. package/dist/components/data-table/useDataTable.js.map +1 -1
  22. package/dist/components/drawer/Drawer.d.ts +7 -4
  23. package/dist/components/drawer/Drawer.js +2 -1
  24. package/dist/components/drawer/Drawer.js.map +1 -1
  25. package/dist/components/map/Map.d.ts +30 -6
  26. package/dist/components/map/Map.js +387 -271
  27. package/dist/components/map/Map.js.map +1 -1
  28. package/dist/components/stat-card/StatCard.d.ts +2 -2
  29. package/dist/components/stat-card/StatCard.js +1 -1
  30. package/dist/components/stat-card/StatCard.js.map +1 -1
  31. package/dist/components/stepper/Stepper.d.ts +7 -1
  32. package/dist/components/stepper/Stepper.js +46 -27
  33. package/dist/components/stepper/Stepper.js.map +1 -1
  34. package/dist/components/table/Table.d.ts +1 -1
  35. package/dist/components/table/Table.js +3 -1
  36. package/dist/components/table/Table.js.map +1 -1
  37. package/dist/components/tabs/Tabs.d.ts +4 -1
  38. package/dist/components/tabs/Tabs.js +33 -23
  39. package/dist/components/tabs/Tabs.js.map +1 -1
  40. package/dist/components/toggle/Toggle.d.ts +1 -1
  41. package/dist/components/toggle/Toggle.js.map +1 -1
  42. package/dist/components.json +109 -30
  43. package/dist/icons/index.d.ts +8 -0
  44. package/dist/icons/index.js +11 -1
  45. package/dist/icons/index.js.map +1 -1
  46. package/dist/index.js +2 -2
  47. package/dist/llms-full.txt +55 -20
  48. package/dist/llms.txt +8 -8
  49. package/dist/opti-ui.css +394 -29
  50. package/dist/utils/media.d.ts +4 -0
  51. package/dist/utils/media.js +34 -0
  52. package/dist/utils/media.js.map +1 -0
  53. package/dist/utils/scroll-fade.d.ts +9 -0
  54. package/dist/utils/scroll-fade.js +45 -0
  55. package/dist/utils/scroll-fade.js.map +1 -0
  56. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
1
  "use client";
2
2
  import { cx } from "../../utils/cx.js";
3
3
  import { createPrimitive } from "../../utils/primitive.js";
4
- import { DownloadIcon } from "../../icons/index.js";
4
+ import { DownloadIcon, FilterIcon } from "../../icons/index.js";
5
5
  import { Spinner } from "../spinner/Spinner.js";
6
6
  import { Button } from "../button/Button.js";
7
7
  import { SearchInput } from "../search-input/SearchInput.js";
8
+ import { Drawer } from "../drawer/Drawer.js";
8
9
  import { Pagination } from "../pagination/Pagination.js";
10
+ import { NARROW_SCREEN, useMediaQuery } from "../../utils/media.js";
9
11
  import { DataTableContext, useDataTableContext } from "./context.js";
10
12
  import { useDataTable } from "./useDataTable.js";
11
13
  import { DataTableContent } from "./DataTableContent.js";
@@ -289,8 +291,126 @@ function DataTablePagination(t0) {
289
291
  } else t2 = $[13];
290
292
  return t2;
291
293
  }
294
+ /**
295
+ * The phone toolbar's "Filters (n)" button, which opens a bottom sheet holding every filter and the
296
+ * `children`. Filters apply as they change. The footer keeps a clear button (disabled while no filter
297
+ * is set, so nothing moves when one is) and a button that closes the sheet on the result count.
298
+ */
299
+ function DataTableFilterSheet(t0) {
300
+ const $ = c(28);
301
+ const { size: t1, children } = t0;
302
+ const size = t1 === void 0 ? "md" : t1;
303
+ const table = useDataTableContext();
304
+ const text = table.labels;
305
+ const [open, setOpen] = React.useState(false);
306
+ const active = table.activeFilterCount;
307
+ if (!table.filters.length && !children) return null;
308
+ const t2 = text.filters;
309
+ const t3 = text.close;
310
+ const t4 = active ? "" : void 0;
311
+ let t5;
312
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
313
+ t5 = /* @__PURE__ */ jsx(FilterIcon, {});
314
+ $[0] = t5;
315
+ } else t5 = $[0];
316
+ const t6 = active ? `${text.filters} (${active})` : text.filters;
317
+ let t7;
318
+ if ($[1] !== size || $[2] !== t4 || $[3] !== t6) {
319
+ t7 = /* @__PURE__ */ jsxs(Button, {
320
+ variant: "secondary",
321
+ shape: "rounded",
322
+ size,
323
+ className: "oui-data-table__sheet-trigger",
324
+ "data-active": t4,
325
+ children: [t5, t6]
326
+ });
327
+ $[1] = size;
328
+ $[2] = t4;
329
+ $[3] = t6;
330
+ $[4] = t7;
331
+ } else t7 = $[4];
332
+ const t8 = !active;
333
+ let t9;
334
+ if ($[5] !== t8 || $[6] !== table.clearFilters || $[7] !== text.clearFilters) {
335
+ t9 = /* @__PURE__ */ jsx(Button, {
336
+ variant: "secondary",
337
+ disabled: t8,
338
+ onClick: table.clearFilters,
339
+ children: text.clearFilters
340
+ });
341
+ $[5] = t8;
342
+ $[6] = table.clearFilters;
343
+ $[7] = text.clearFilters;
344
+ $[8] = t9;
345
+ } else t9 = $[8];
346
+ let t10;
347
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
348
+ t10 = () => setOpen(false);
349
+ $[9] = t10;
350
+ } else t10 = $[9];
351
+ let t11;
352
+ if ($[10] !== table.count || $[11] !== text) {
353
+ t11 = text.showResults(table.count);
354
+ $[10] = table.count;
355
+ $[11] = text;
356
+ $[12] = t11;
357
+ } else t11 = $[12];
358
+ let t12;
359
+ if ($[13] !== t11) {
360
+ t12 = /* @__PURE__ */ jsx(Button, {
361
+ className: "oui-data-table__sheet-done",
362
+ onClick: t10,
363
+ children: t11
364
+ });
365
+ $[13] = t11;
366
+ $[14] = t12;
367
+ } else t12 = $[14];
368
+ let t13;
369
+ if ($[15] !== t12 || $[16] !== t9) {
370
+ t13 = /* @__PURE__ */ jsxs(Fragment, { children: [t9, t12] });
371
+ $[15] = t12;
372
+ $[16] = t9;
373
+ $[17] = t13;
374
+ } else t13 = $[17];
375
+ let t14;
376
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
377
+ t14 = /* @__PURE__ */ jsx(DataTableFilters, { stacked: true });
378
+ $[18] = t14;
379
+ } else t14 = $[18];
380
+ let t15;
381
+ if ($[19] !== children) {
382
+ t15 = children && /* @__PURE__ */ jsx("div", {
383
+ className: "oui-data-table__sheet-extra",
384
+ children
385
+ });
386
+ $[19] = children;
387
+ $[20] = t15;
388
+ } else t15 = $[20];
389
+ let t16;
390
+ if ($[21] !== open || $[22] !== t13 || $[23] !== t15 || $[24] !== t7 || $[25] !== text.close || $[26] !== text.filters) {
391
+ t16 = /* @__PURE__ */ jsxs(Drawer, {
392
+ side: "bottom",
393
+ className: "oui-data-table__sheet",
394
+ title: t2,
395
+ closeLabel: t3,
396
+ open,
397
+ onOpenChange: setOpen,
398
+ trigger: t7,
399
+ footer: t13,
400
+ children: [t14, t15]
401
+ });
402
+ $[21] = open;
403
+ $[22] = t13;
404
+ $[23] = t15;
405
+ $[24] = t7;
406
+ $[25] = text.close;
407
+ $[26] = text.filters;
408
+ $[27] = t16;
409
+ } else t16 = $[27];
410
+ return t16;
411
+ }
292
412
  function DataTableComponent(t0) {
293
- const $ = c(53);
413
+ const $ = c(58);
294
414
  let className;
295
415
  let controlSize;
296
416
  let density;
@@ -301,6 +421,7 @@ function DataTableComponent(t0) {
301
421
  let onEndReached;
302
422
  let options;
303
423
  let pageSizeOptions;
424
+ let stickyFirstColumn;
304
425
  let stickyHeader;
305
426
  let striped;
306
427
  let t1;
@@ -309,7 +430,7 @@ function DataTableComponent(t0) {
309
430
  let toolbar;
310
431
  let virtualized;
311
432
  if ($[0] !== t0) {
312
- ({density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, empty, tableProps, pageSizeOptions, controlSize, toolbar, showToolbar: t1, exportName, fill: t2, className, ...options} = t0);
433
+ ({density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, stickyFirstColumn, empty, tableProps, pageSizeOptions, controlSize, toolbar, showToolbar: t1, exportName, fill: t2, className, ...options} = t0);
313
434
  $[0] = t0;
314
435
  $[1] = className;
315
436
  $[2] = controlSize;
@@ -321,13 +442,14 @@ function DataTableComponent(t0) {
321
442
  $[8] = onEndReached;
322
443
  $[9] = options;
323
444
  $[10] = pageSizeOptions;
324
- $[11] = stickyHeader;
325
- $[12] = striped;
326
- $[13] = t1;
327
- $[14] = t2;
328
- $[15] = tableProps;
329
- $[16] = toolbar;
330
- $[17] = virtualized;
445
+ $[11] = stickyFirstColumn;
446
+ $[12] = stickyHeader;
447
+ $[13] = striped;
448
+ $[14] = t1;
449
+ $[15] = t2;
450
+ $[16] = tableProps;
451
+ $[17] = toolbar;
452
+ $[18] = virtualized;
331
453
  } else {
332
454
  className = $[1];
333
455
  controlSize = $[2];
@@ -339,126 +461,147 @@ function DataTableComponent(t0) {
339
461
  onEndReached = $[8];
340
462
  options = $[9];
341
463
  pageSizeOptions = $[10];
342
- stickyHeader = $[11];
343
- striped = $[12];
344
- t1 = $[13];
345
- t2 = $[14];
346
- tableProps = $[15];
347
- toolbar = $[16];
348
- virtualized = $[17];
464
+ stickyFirstColumn = $[11];
465
+ stickyHeader = $[12];
466
+ striped = $[13];
467
+ t1 = $[14];
468
+ t2 = $[15];
469
+ tableProps = $[16];
470
+ toolbar = $[17];
471
+ virtualized = $[18];
349
472
  }
350
473
  const showToolbar = t1 === void 0 ? true : t1;
351
474
  const fill = t2 === void 0 ? false : t2;
352
475
  const t3 = options.paginated ?? !virtualized;
353
476
  let t4;
354
- if ($[18] !== options || $[19] !== t3) {
477
+ if ($[19] !== options || $[20] !== t3) {
355
478
  t4 = {
356
479
  ...options,
357
480
  paginated: t3
358
481
  };
359
- $[18] = options;
360
- $[19] = t3;
361
- $[20] = t4;
362
- } else t4 = $[20];
482
+ $[19] = options;
483
+ $[20] = t3;
484
+ $[21] = t4;
485
+ } else t4 = $[21];
363
486
  const table = useDataTable(t4);
364
487
  let rows;
365
488
  let t5;
366
- if ($[21] !== table || $[22] !== toolbar) {
489
+ if ($[22] !== table || $[23] !== toolbar) {
367
490
  rows = table.rows.map(_temp);
368
491
  t5 = typeof toolbar === "function" ? toolbar({
369
492
  rows,
370
493
  selection: table.selection,
371
494
  table
372
495
  }) : toolbar;
373
- $[21] = table;
374
- $[22] = toolbar;
375
- $[23] = rows;
376
- $[24] = t5;
496
+ $[22] = table;
497
+ $[23] = toolbar;
498
+ $[24] = rows;
499
+ $[25] = t5;
377
500
  } else {
378
- rows = $[23];
379
- t5 = $[24];
501
+ rows = $[24];
502
+ t5 = $[25];
380
503
  }
381
504
  const extra = t5;
382
- const t6 = fill || void 0;
383
- let t7;
384
- if ($[25] !== controlSize || $[26] !== exportName || $[27] !== extra || $[28] !== rows || $[29] !== showToolbar || $[30] !== table.columns || $[31] !== table.labels || $[32] !== table.searchable) {
385
- t7 = showToolbar && /* @__PURE__ */ jsxs(DataTableToolbar, { children: [
505
+ const narrow = useMediaQuery(NARROW_SCREEN);
506
+ let t6;
507
+ if ($[26] !== exportName || $[27] !== rows || $[28] !== table.columns || $[29] !== table.labels) {
508
+ t6 = exportName && /* @__PURE__ */ jsxs(Button, {
509
+ variant: "secondary",
510
+ size: "sm",
511
+ disabled: !rows.length,
512
+ onClick: () => downloadCsv(table.columns, rows, exportName),
513
+ children: [/* @__PURE__ */ jsx(DownloadIcon, {}), table.labels.export]
514
+ });
515
+ $[26] = exportName;
516
+ $[27] = rows;
517
+ $[28] = table.columns;
518
+ $[29] = table.labels;
519
+ $[30] = t6;
520
+ } else t6 = $[30];
521
+ const exportButton = t6;
522
+ const t7 = fill || void 0;
523
+ let t8;
524
+ if ($[31] !== controlSize || $[32] !== exportButton || $[33] !== extra || $[34] !== narrow || $[35] !== showToolbar || $[36] !== table.searchable) {
525
+ t8 = showToolbar && (narrow ? /* @__PURE__ */ jsxs(DataTableToolbar, {
526
+ "data-layout": "narrow",
527
+ children: [/* @__PURE__ */ jsxs("div", {
528
+ className: "oui-data-table__toolbar-row",
529
+ children: [table.searchable && /* @__PURE__ */ jsx(DataTableSearch, { size: controlSize }), /* @__PURE__ */ jsx(DataTableFilterSheet, {
530
+ size: controlSize,
531
+ children: extra
532
+ })]
533
+ }), /* @__PURE__ */ jsxs(DataTableActions, { children: [/* @__PURE__ */ jsx(DataTableSummary, {}), exportButton] })]
534
+ }) : /* @__PURE__ */ jsxs(DataTableToolbar, { children: [
386
535
  table.searchable && /* @__PURE__ */ jsx(DataTableSearch, { size: controlSize }),
387
536
  /* @__PURE__ */ jsx(DataTableFilters, { size: controlSize }),
388
537
  /* @__PURE__ */ jsxs(DataTableActions, { children: [
389
538
  /* @__PURE__ */ jsx(DataTableSummary, {}),
390
539
  extra,
391
- exportName && /* @__PURE__ */ jsxs(Button, {
392
- variant: "secondary",
393
- size: "sm",
394
- disabled: !rows.length,
395
- onClick: () => downloadCsv(table.columns, rows, exportName),
396
- children: [/* @__PURE__ */ jsx(DownloadIcon, {}), table.labels.export]
397
- })
540
+ exportButton
398
541
  ] })
399
- ] });
400
- $[25] = controlSize;
401
- $[26] = exportName;
402
- $[27] = extra;
403
- $[28] = rows;
404
- $[29] = showToolbar;
405
- $[30] = table.columns;
406
- $[31] = table.labels;
407
- $[32] = table.searchable;
408
- $[33] = t7;
409
- } else t7 = $[33];
410
- const t8 = fill ? maxHeight ?? "none" : maxHeight;
411
- let t9;
412
- if ($[34] !== density || $[35] !== empty || $[36] !== layout || $[37] !== onEndReached || $[38] !== stickyHeader || $[39] !== striped || $[40] !== t8 || $[41] !== tableProps || $[42] !== virtualized) {
413
- t9 = /* @__PURE__ */ jsx(DataTableContent, {
542
+ ] }));
543
+ $[31] = controlSize;
544
+ $[32] = exportButton;
545
+ $[33] = extra;
546
+ $[34] = narrow;
547
+ $[35] = showToolbar;
548
+ $[36] = table.searchable;
549
+ $[37] = t8;
550
+ } else t8 = $[37];
551
+ const t9 = fill ? maxHeight ?? "none" : maxHeight;
552
+ let t10;
553
+ if ($[38] !== density || $[39] !== empty || $[40] !== layout || $[41] !== onEndReached || $[42] !== stickyFirstColumn || $[43] !== stickyHeader || $[44] !== striped || $[45] !== t9 || $[46] !== tableProps || $[47] !== virtualized) {
554
+ t10 = /* @__PURE__ */ jsx(DataTableContent, {
414
555
  density,
415
556
  striped,
416
557
  stickyHeader,
417
558
  layout,
418
- maxHeight: t8,
559
+ maxHeight: t9,
419
560
  virtualized,
420
561
  onEndReached,
562
+ stickyFirstColumn,
421
563
  empty,
422
564
  tableProps
423
565
  });
424
- $[34] = density;
425
- $[35] = empty;
426
- $[36] = layout;
427
- $[37] = onEndReached;
428
- $[38] = stickyHeader;
429
- $[39] = striped;
430
- $[40] = t8;
431
- $[41] = tableProps;
432
- $[42] = virtualized;
433
- $[43] = t9;
434
- } else t9 = $[43];
435
- let t10;
436
- if ($[44] !== pageSizeOptions) {
437
- t10 = /* @__PURE__ */ jsx(DataTablePagination, { pageSizeOptions });
438
- $[44] = pageSizeOptions;
439
- $[45] = t10;
440
- } else t10 = $[45];
566
+ $[38] = density;
567
+ $[39] = empty;
568
+ $[40] = layout;
569
+ $[41] = onEndReached;
570
+ $[42] = stickyFirstColumn;
571
+ $[43] = stickyHeader;
572
+ $[44] = striped;
573
+ $[45] = t9;
574
+ $[46] = tableProps;
575
+ $[47] = virtualized;
576
+ $[48] = t10;
577
+ } else t10 = $[48];
441
578
  let t11;
442
- if ($[46] !== className || $[47] !== t10 || $[48] !== t6 || $[49] !== t7 || $[50] !== t9 || $[51] !== table) {
443
- t11 = /* @__PURE__ */ jsxs(DataTableRoot, {
579
+ if ($[49] !== pageSizeOptions) {
580
+ t11 = /* @__PURE__ */ jsx(DataTablePagination, { pageSizeOptions });
581
+ $[49] = pageSizeOptions;
582
+ $[50] = t11;
583
+ } else t11 = $[50];
584
+ let t12;
585
+ if ($[51] !== className || $[52] !== t10 || $[53] !== t11 || $[54] !== t7 || $[55] !== t8 || $[56] !== table) {
586
+ t12 = /* @__PURE__ */ jsxs(DataTableRoot, {
444
587
  table,
445
588
  className,
446
- "data-fill": t6,
589
+ "data-fill": t7,
447
590
  children: [
448
- t7,
449
- t9,
450
- t10
591
+ t8,
592
+ t10,
593
+ t11
451
594
  ]
452
595
  });
453
- $[46] = className;
454
- $[47] = t10;
455
- $[48] = t6;
456
- $[49] = t7;
457
- $[50] = t9;
458
- $[51] = table;
459
- $[52] = t11;
460
- } else t11 = $[52];
461
- return t11;
596
+ $[51] = className;
597
+ $[52] = t10;
598
+ $[53] = t11;
599
+ $[54] = t7;
600
+ $[55] = t8;
601
+ $[56] = table;
602
+ $[57] = t12;
603
+ } else t12 = $[57];
604
+ return t12;
462
605
  }
463
606
  /**
464
607
  * `<DataTable data={…} columns={…} />` renders a complete table with search,
@@ -469,8 +612,12 @@ function DataTableComponent(t0) {
469
612
  *
470
613
  * For another layout, create the table with `useDataTable` and compose the
471
614
  * parts: `DataTable.Root`, `DataTable.Toolbar`, `DataTable.Search`,
472
- * `DataTable.Filters`, `DataTable.Filter`, `DataTable.Actions`,
473
- * `DataTable.Summary`, `DataTable.Content`, `DataTable.Pagination`.
615
+ * `DataTable.Filters`, `DataTable.Filter`, `DataTable.FilterSheet` (the
616
+ * phone filter button and sheet), `DataTable.Actions`, `DataTable.Summary`,
617
+ * `DataTable.Content`, `DataTable.Pagination`.
618
+ *
619
+ * On phones (below 640px) columns with `priority: 'low'` are hidden, and
620
+ * `stickyFirstColumn` keeps each row's name in view while the rest scrolls.
474
621
  */
475
622
  function _temp(t0) {
476
623
  const { row } = t0;
@@ -482,6 +629,7 @@ var DataTable = Object.assign(DataTableComponent, {
482
629
  Search: DataTableSearch,
483
630
  Filters: DataTableFilters,
484
631
  Filter: DataTableFilter,
632
+ FilterSheet: DataTableFilterSheet,
485
633
  Actions: DataTableActions,
486
634
  Summary: DataTableSummary,
487
635
  Content: DataTableContent,
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":["React","cx","DownloadIcon","Button","createPrimitive","Pagination","PaginationProps","SearchInput","SearchInputProps","Spinner","DataTableContext","useDataTableContext","DataTableContent","DataTableContentProps","DataTableFilter","DataTableFilters","DataTableControlSize","downloadCsv","useDataTable","DataTableInstance","UseDataTableOptions","DataTableVirtualOptions","DataTableFilterProps","DataTableFiltersProps","DataTableRootProps","HTMLAttributes","HTMLDivElement","ref","Ref","table","T","DataTableRoot","t0","$","_c","className","props","t1","t2","loading","rows","length","undefined","t3","t4","DataTableToolbar","DataTableActions","DataTableSearchProps","Omit","DataTableSearch","search","searchDebounce","labels","text","draft","setDraft","useState","seen","setSeen","sent","setSent","next","setSearch","commit","timer","window","setTimeout","clearTimeout","useEffect","next_0","change","t5","t6","clearSearch","DataTableSummary","selection","Set","selected","size","count","pending","selectable","totalCount","filteredCount","DataTablePaginationProps","DataTablePagination","paginated","error","page","pageSize","setPage","setPageSize","DataTableToolbarContext","DataTableProps","pageSizeOptions","controlSize","toolbar","ReactNode","context","showToolbar","exportName","fill","DataTableComponent","density","empty","layout","maxHeight","onEndReached","options","stickyHeader","striped","tableProps","virtualized","map","_temp","extra","t7","columns","searchable","export","t8","t9","t10","t11","row","DataTable","Object","assign","Root","Toolbar","Search","Filters","Filter","Actions","Summary","Content","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { DownloadIcon } from '../../icons';\nimport { Button } from '../button/Button';\nimport { createPrimitive } from '../../utils/primitive';\nimport { Pagination, type PaginationProps } from '../pagination/Pagination';\nimport { SearchInput, type SearchInputProps } from '../search-input/SearchInput';\nimport { Spinner } from '../spinner/Spinner';\nimport { DataTableContext, useDataTableContext } from './context';\nimport { DataTableContent, type DataTableContentProps } from './DataTableContent';\nimport { DataTableFilter, DataTableFilters, type DataTableControlSize } from './DataTableFilters';\nimport { downloadCsv } from './export';\nimport { useDataTable } from './useDataTable';\nimport type { DataTableInstance, UseDataTableOptions } from './types';\n\nexport { useDataTableContext } from './context';\nexport type { DataTableContentProps, DataTableVirtualOptions } from './DataTableContent';\nexport type { DataTableControlSize, DataTableFilterProps, DataTableFiltersProps } from './DataTableFilters';\n\n// ─── Parts ───────────────────────────────────────────────────────────────────\n\nexport interface DataTableRootProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the table's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** The table from `useDataTable`. */\n table: DataTableInstance<T>;\n}\n\n/** Provides a table to the parts inside it. */\nfunction DataTableRoot<T>({ table, className, ref, ...props }: DataTableRootProps<T>) {\n return (\n <DataTableContext.Provider value={table}>\n <div\n ref={ref}\n className={cx('oui-data-table', className)}\n data-loading={table.loading ? (table.rows.length ? 'refresh' : 'initial') : undefined}\n {...props}\n />\n </DataTableContext.Provider>\n );\n}\n\nconst DataTableToolbar = createPrimitive('div', 'oui-data-table__toolbar', 'DataTableToolbar');\nconst DataTableActions = createPrimitive('div', 'oui-data-table__actions', 'DataTableActions');\n\nexport interface DataTableSearchProps extends Omit<SearchInputProps, 'value' | 'defaultValue' | 'onValueChange' | 'className'> {\n /** Class name for the search box. */\n className?: string;\n}\n\n/** Search box of the table. Typing applies after the table's `searchDebounce`; clearing applies at once. */\nfunction DataTableSearch({ className, ...props }: DataTableSearchProps) {\n const table = useDataTableContext();\n const { search, searchDebounce, labels: text } = table;\n const [draft, setDraft] = React.useState(search);\n const [seen, setSeen] = React.useState(search);\n const [sent, setSent] = React.useState(search);\n\n // Follow a search set from outside (reset, controlled state), but not the echo\n // of our own change: it can arrive after the user has typed further.\n if (seen !== search) {\n setSeen(search);\n if (search !== sent) {\n setSent(search);\n setDraft(search);\n }\n }\n\n const commit = (next: string) => {\n setSent(next);\n table.setSearch(next);\n };\n\n // Typed text that has not been applied yet goes out once the typing pauses.\n React.useEffect(() => {\n if (draft === sent) return;\n const timer = window.setTimeout(() => commit(draft), searchDebounce);\n return () => window.clearTimeout(timer);\n // `commit` is new on every render; only a change of the text restarts the wait.\n }, [draft, sent, searchDebounce]);\n\n const change = (next: string) => {\n setDraft(next);\n if (!searchDebounce || !next) commit(next);\n };\n\n return (\n <SearchInput\n className={cx('oui-data-table__search', className)}\n aria-label={text.search}\n placeholder={text.search}\n clearLabel={text.clearSearch}\n {...props}\n value={draft}\n onValueChange={change}\n />\n );\n}\n\n/** Row count, or the number of selected rows, with a spinner while loading. */\nfunction DataTableSummary({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n const table = useDataTableContext();\n const text = table.labels;\n const selected = new Set(table.selection).size;\n return (\n <>\n {table.loading && <Spinner className=\"oui-data-table__spinner\" label={text.loading} />}\n <span className={cx('oui-data-table__summary', className)} aria-live=\"polite\" {...props}>\n {/* No count before the first rows arrive: \"0 records\" would be wrong. */}\n {table.selectable && selected\n ? text.selected(selected)\n : table.pending\n ? null\n : table.count !== table.totalCount\n ? text.filteredCount(table.count, table.totalCount)\n : text.count(table.count)}\n </span>\n </>\n );\n}\n\nexport interface DataTablePaginationProps\n extends Omit<PaginationProps, 'page' | 'pageSize' | 'total' | 'onPageChange' | 'onPageSizeChange'> {}\n\n/** Page navigation of the table. Renders nothing when there are no rows, or the table is not paginated. */\nfunction DataTablePagination({ className, ...props }: DataTablePaginationProps) {\n const table = useDataTableContext();\n if (!table.paginated || table.count <= 0 || table.error) return null;\n return (\n <Pagination\n className={cx('oui-data-table__pagination', className)}\n variant=\"simple\"\n labels={table.labels}\n {...props}\n page={table.page}\n pageSize={table.pageSize}\n total={table.count}\n onPageChange={table.setPage}\n onPageSizeChange={table.setPageSize}\n />\n );\n}\n\n// ─── Convenience component ───────────────────────────────────────────────────\n\nexport interface DataTableToolbarContext<T> {\n /** Rows after filters, search and sorting, across all pages. In server mode: the current page. */\n rows: T[];\n /** Ids of the selected rows. */\n selection: string[];\n /** The whole table: filter values, sort, setters. */\n table: DataTableInstance<T>;\n}\n\nexport interface DataTableProps<T> extends UseDataTableOptions<T>, DataTableContentProps {\n /** Choices in the rows-per-page select. */\n pageSizeOptions?: number[];\n /** Size of the search box and the filters. */\n controlSize?: DataTableControlSize;\n /** Extra toolbar content (add, bulk actions…). A function receives the processed rows. */\n toolbar?: React.ReactNode | ((context: DataTableToolbarContext<T>) => React.ReactNode);\n /** `false` drops the search, filters, summary and toolbar content: rows only, for short tables under their own heading. */\n showToolbar?: boolean;\n /**\n * Adds an export button that saves the filtered, sorted rows as `<exportName>.csv`.\n * Columns choose their text with `exportValue`.\n */\n exportName?: string;\n /**\n * Grow to fill the height of a flex column container (a page, or a `Card`\n * whose content holds the table); only the rows scroll. `maxHeight` still caps it.\n */\n fill?: boolean;\n /** Class name for the table's root element. */\n className?: string;\n}\n\nfunction DataTableComponent<T>({\n density,\n striped,\n stickyHeader,\n layout,\n maxHeight,\n virtualized,\n onEndReached,\n empty,\n tableProps,\n pageSizeOptions,\n controlSize,\n toolbar,\n showToolbar = true,\n exportName,\n fill = false,\n className,\n ...options\n}: DataTableProps<T>) {\n // A virtualized table shows all its rows in one scrolling list, unless pages are asked for.\n const table = useDataTable({ ...options, paginated: options.paginated ?? !virtualized });\n const rows = table.rows.map(({ row }) => row);\n const extra = typeof toolbar === 'function' ? toolbar({ rows, selection: table.selection, table }) : toolbar;\n\n return (\n <DataTableRoot table={table} className={className} data-fill={fill || undefined}>\n {showToolbar && (\n <DataTableToolbar>\n {table.searchable && <DataTableSearch size={controlSize} />}\n <DataTableFilters size={controlSize} />\n <DataTableActions>\n <DataTableSummary />\n {extra}\n {exportName && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n disabled={!rows.length}\n onClick={() => downloadCsv(table.columns, rows, exportName)}\n >\n <DownloadIcon />\n {table.labels.export}\n </Button>\n )}\n </DataTableActions>\n </DataTableToolbar>\n )}\n <DataTableContent\n density={density}\n striped={striped}\n stickyHeader={stickyHeader}\n layout={layout}\n // Filling, the rows scroll inside whatever height the table is given.\n maxHeight={fill ? (maxHeight ?? 'none') : maxHeight}\n virtualized={virtualized}\n onEndReached={onEndReached}\n empty={empty}\n tableProps={tableProps}\n />\n <DataTablePagination pageSizeOptions={pageSizeOptions} />\n </DataTableRoot>\n );\n}\n\n/**\n * `<DataTable data={…} columns={…} />` renders a complete table with search,\n * filters, sorting, pagination, row selection, row actions and inline editing;\n * columns declare what they take part in. Every piece of state works\n * uncontrolled or controlled (`search` / `filterValues` / `sort` / `page` /\n * `selection`), and with `mode=\"server\"` the same state drives an API.\n *\n * For another layout, create the table with `useDataTable` and compose the\n * parts: `DataTable.Root`, `DataTable.Toolbar`, `DataTable.Search`,\n * `DataTable.Filters`, `DataTable.Filter`, `DataTable.Actions`,\n * `DataTable.Summary`, `DataTable.Content`, `DataTable.Pagination`.\n */\nexport const DataTable = Object.assign(DataTableComponent, {\n Root: DataTableRoot,\n Toolbar: DataTableToolbar,\n Search: DataTableSearch,\n Filters: DataTableFilters,\n Filter: DataTableFilter,\n Actions: DataTableActions,\n Summary: DataTableSummary,\n Content: DataTableContent,\n Pagination: DataTablePagination,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","names":["React","cx","DownloadIcon","FilterIcon","NARROW_SCREEN","useMediaQuery","Button","Drawer","createPrimitive","Pagination","PaginationProps","SearchInput","SearchInputProps","Spinner","DataTableContext","useDataTableContext","DataTableContent","DataTableContentProps","DataTableFilter","DataTableFilters","DataTableControlSize","downloadCsv","useDataTable","DataTableInstance","UseDataTableOptions","DataTableVirtualOptions","DataTableFilterProps","DataTableFiltersProps","DataTableRootProps","HTMLAttributes","HTMLDivElement","ref","Ref","table","T","DataTableRoot","t0","$","_c","className","props","t1","t2","loading","rows","length","undefined","t3","t4","DataTableToolbar","DataTableActions","DataTableSearchProps","Omit","DataTableSearch","search","searchDebounce","labels","text","draft","setDraft","useState","seen","setSeen","sent","setSent","next","setSearch","commit","timer","window","setTimeout","clearTimeout","useEffect","next_0","change","t5","t6","clearSearch","DataTableSummary","selection","Set","selected","size","count","pending","selectable","totalCount","filteredCount","DataTablePaginationProps","DataTablePagination","paginated","error","page","pageSize","setPage","setPageSize","DataTableFilterSheetProps","children","ReactNode","DataTableFilterSheet","open","setOpen","active","activeFilterCount","filters","close","Symbol","for","t7","t8","t9","clearFilters","t10","t11","showResults","t12","t13","t14","t15","t16","DataTableToolbarContext","DataTableProps","pageSizeOptions","controlSize","toolbar","context","showToolbar","exportName","fill","DataTableComponent","density","empty","layout","maxHeight","onEndReached","options","stickyFirstColumn","stickyHeader","striped","tableProps","virtualized","map","_temp","extra","narrow","columns","export","exportButton","searchable","row","DataTable","Object","assign","Root","Toolbar","Search","Filters","Filter","FilterSheet","Actions","Summary","Content","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { DownloadIcon, FilterIcon } from '../../icons';\nimport { NARROW_SCREEN, useMediaQuery } from '../../utils/media';\nimport { Button } from '../button/Button';\nimport { Drawer } from '../drawer/Drawer';\nimport { createPrimitive } from '../../utils/primitive';\nimport { Pagination, type PaginationProps } from '../pagination/Pagination';\nimport { SearchInput, type SearchInputProps } from '../search-input/SearchInput';\nimport { Spinner } from '../spinner/Spinner';\nimport { DataTableContext, useDataTableContext } from './context';\nimport { DataTableContent, type DataTableContentProps } from './DataTableContent';\nimport { DataTableFilter, DataTableFilters, type DataTableControlSize } from './DataTableFilters';\nimport { downloadCsv } from './export';\nimport { useDataTable } from './useDataTable';\nimport type { DataTableInstance, UseDataTableOptions } from './types';\n\nexport { useDataTableContext } from './context';\nexport type { DataTableContentProps, DataTableVirtualOptions } from './DataTableContent';\nexport type { DataTableControlSize, DataTableFilterProps, DataTableFiltersProps } from './DataTableFilters';\n\n// ─── Parts ───────────────────────────────────────────────────────────────────\n\nexport interface DataTableRootProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the table's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** The table from `useDataTable`. */\n table: DataTableInstance<T>;\n}\n\n/** Provides a table to the parts inside it. */\nfunction DataTableRoot<T>({ table, className, ref, ...props }: DataTableRootProps<T>) {\n return (\n <DataTableContext.Provider value={table}>\n <div\n ref={ref}\n className={cx('oui-data-table', className)}\n data-loading={table.loading ? (table.rows.length ? 'refresh' : 'initial') : undefined}\n {...props}\n />\n </DataTableContext.Provider>\n );\n}\n\nconst DataTableToolbar = createPrimitive('div', 'oui-data-table__toolbar', 'DataTableToolbar');\nconst DataTableActions = createPrimitive('div', 'oui-data-table__actions', 'DataTableActions');\n\nexport interface DataTableSearchProps extends Omit<SearchInputProps, 'value' | 'defaultValue' | 'onValueChange' | 'className'> {\n /** Class name for the search box. */\n className?: string;\n}\n\n/** Search box of the table. Typing applies after the table's `searchDebounce`; clearing applies at once. */\nfunction DataTableSearch({ className, ...props }: DataTableSearchProps) {\n const table = useDataTableContext();\n const { search, searchDebounce, labels: text } = table;\n const [draft, setDraft] = React.useState(search);\n const [seen, setSeen] = React.useState(search);\n const [sent, setSent] = React.useState(search);\n\n // Follow a search set from outside (reset, controlled state), but not the echo\n // of our own change: it can arrive after the user has typed further.\n if (seen !== search) {\n setSeen(search);\n if (search !== sent) {\n setSent(search);\n setDraft(search);\n }\n }\n\n const commit = (next: string) => {\n setSent(next);\n table.setSearch(next);\n };\n\n // Typed text that has not been applied yet goes out once the typing pauses.\n React.useEffect(() => {\n if (draft === sent) return;\n const timer = window.setTimeout(() => commit(draft), searchDebounce);\n return () => window.clearTimeout(timer);\n // `commit` is new on every render; only a change of the text restarts the wait.\n }, [draft, sent, searchDebounce]);\n\n const change = (next: string) => {\n setDraft(next);\n if (!searchDebounce || !next) commit(next);\n };\n\n return (\n <SearchInput\n className={cx('oui-data-table__search', className)}\n aria-label={text.search}\n placeholder={text.search}\n clearLabel={text.clearSearch}\n {...props}\n value={draft}\n onValueChange={change}\n />\n );\n}\n\n/** Row count, or the number of selected rows, with a spinner while loading. */\nfunction DataTableSummary({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n const table = useDataTableContext();\n const text = table.labels;\n const selected = new Set(table.selection).size;\n return (\n <>\n {table.loading && <Spinner className=\"oui-data-table__spinner\" label={text.loading} />}\n <span className={cx('oui-data-table__summary', className)} aria-live=\"polite\" {...props}>\n {/* No count before the first rows arrive: \"0 records\" would be wrong. */}\n {table.selectable && selected\n ? text.selected(selected)\n : table.pending\n ? null\n : table.count !== table.totalCount\n ? text.filteredCount(table.count, table.totalCount)\n : text.count(table.count)}\n </span>\n </>\n );\n}\n\nexport interface DataTablePaginationProps\n extends Omit<PaginationProps, 'page' | 'pageSize' | 'total' | 'onPageChange' | 'onPageSizeChange'> {}\n\n/** Page navigation of the table. Renders nothing when there are no rows, or the table is not paginated. */\nfunction DataTablePagination({ className, ...props }: DataTablePaginationProps) {\n const table = useDataTableContext();\n if (!table.paginated || table.count <= 0 || table.error) return null;\n return (\n <Pagination\n className={cx('oui-data-table__pagination', className)}\n variant=\"simple\"\n labels={table.labels}\n {...props}\n page={table.page}\n pageSize={table.pageSize}\n total={table.count}\n onPageChange={table.setPage}\n onPageSizeChange={table.setPageSize}\n />\n );\n}\n\nexport interface DataTableFilterSheetProps {\n /** Height of the filter button; the filters in the sheet are full size. */\n size?: DataTableControlSize;\n /** Extra content placed under the filters (add, bulk actions…). */\n children?: React.ReactNode;\n}\n\n/**\n * The phone toolbar's \"Filters (n)\" button, which opens a bottom sheet holding every filter and the\n * `children`. Filters apply as they change. The footer keeps a clear button (disabled while no filter\n * is set, so nothing moves when one is) and a button that closes the sheet on the result count.\n */\nfunction DataTableFilterSheet({ size = 'md', children }: DataTableFilterSheetProps) {\n const table = useDataTableContext();\n const text = table.labels;\n const [open, setOpen] = React.useState(false);\n const active = table.activeFilterCount;\n if (!table.filters.length && !children) return null;\n return (\n <Drawer\n side=\"bottom\"\n className=\"oui-data-table__sheet\"\n title={text.filters}\n closeLabel={text.close}\n open={open}\n onOpenChange={setOpen}\n trigger={\n <Button\n variant=\"secondary\"\n shape=\"rounded\"\n size={size}\n className=\"oui-data-table__sheet-trigger\"\n data-active={active ? '' : undefined}\n >\n <FilterIcon />\n {active ? `${text.filters} (${active})` : text.filters}\n </Button>\n }\n footer={\n <>\n <Button variant=\"secondary\" disabled={!active} onClick={table.clearFilters}>\n {text.clearFilters}\n </Button>\n <Button className=\"oui-data-table__sheet-done\" onClick={() => setOpen(false)}>\n {text.showResults(table.count)}\n </Button>\n </>\n }\n >\n <DataTableFilters stacked />\n {children && <div className=\"oui-data-table__sheet-extra\">{children}</div>}\n </Drawer>\n );\n}\n\n// ─── Convenience component ───────────────────────────────────────────────────\n\nexport interface DataTableToolbarContext<T> {\n /** Rows after filters, search and sorting, across all pages. In server mode: the current page. */\n rows: T[];\n /** Ids of the selected rows. */\n selection: string[];\n /** The whole table: filter values, sort, setters. */\n table: DataTableInstance<T>;\n}\n\nexport interface DataTableProps<T> extends UseDataTableOptions<T>, DataTableContentProps {\n /** Choices in the rows-per-page select. */\n pageSizeOptions?: number[];\n /** Size of the search box and the filters. */\n controlSize?: DataTableControlSize;\n /** Extra toolbar content (add, bulk actions…). A function receives the processed rows. */\n toolbar?: React.ReactNode | ((context: DataTableToolbarContext<T>) => React.ReactNode);\n /**\n * `false` drops the search, filters, summary and toolbar content: rows only, for short tables under\n * their own heading. Below 640px the toolbar is the search and a \"Filters (n)\" button, whose bottom\n * sheet holds the filters and the `toolbar` content, over a line with the row count and export.\n */\n showToolbar?: boolean;\n /**\n * Adds an export button that saves the filtered, sorted rows as `<exportName>.csv`.\n * Columns choose their text with `exportValue`.\n */\n exportName?: string;\n /**\n * Grow to fill the height of a flex column container (a page, or a `Card`\n * whose content holds the table); only the rows scroll. `maxHeight` still caps it.\n */\n fill?: boolean;\n /** Class name for the table's root element. */\n className?: string;\n}\n\nfunction DataTableComponent<T>({\n density,\n striped,\n stickyHeader,\n layout,\n maxHeight,\n virtualized,\n onEndReached,\n stickyFirstColumn,\n empty,\n tableProps,\n pageSizeOptions,\n controlSize,\n toolbar,\n showToolbar = true,\n exportName,\n fill = false,\n className,\n ...options\n}: DataTableProps<T>) {\n // A virtualized table shows all its rows in one scrolling list, unless pages are asked for.\n const table = useDataTable({ ...options, paginated: options.paginated ?? !virtualized });\n const rows = table.rows.map(({ row }) => row);\n const extra = typeof toolbar === 'function' ? toolbar({ rows, selection: table.selection, table }) : toolbar;\n const narrow = useMediaQuery(NARROW_SCREEN);\n\n const exportButton = exportName && (\n <Button variant=\"secondary\" size=\"sm\" disabled={!rows.length} onClick={() => downloadCsv(table.columns, rows, exportName)}>\n <DownloadIcon />\n {table.labels.export}\n </Button>\n );\n\n return (\n <DataTableRoot table={table} className={className} data-fill={fill || undefined}>\n {showToolbar &&\n (narrow ? (\n <DataTableToolbar data-layout=\"narrow\">\n <div className=\"oui-data-table__toolbar-row\">\n {table.searchable && <DataTableSearch size={controlSize} />}\n <DataTableFilterSheet size={controlSize}>{extra}</DataTableFilterSheet>\n </div>\n <DataTableActions>\n <DataTableSummary />\n {exportButton}\n </DataTableActions>\n </DataTableToolbar>\n ) : (\n <DataTableToolbar>\n {table.searchable && <DataTableSearch size={controlSize} />}\n <DataTableFilters size={controlSize} />\n <DataTableActions>\n <DataTableSummary />\n {extra}\n {exportButton}\n </DataTableActions>\n </DataTableToolbar>\n ))}\n <DataTableContent\n density={density}\n striped={striped}\n stickyHeader={stickyHeader}\n layout={layout}\n // Filling, the rows scroll inside whatever height the table is given.\n maxHeight={fill ? (maxHeight ?? 'none') : maxHeight}\n virtualized={virtualized}\n onEndReached={onEndReached}\n stickyFirstColumn={stickyFirstColumn}\n empty={empty}\n tableProps={tableProps}\n />\n <DataTablePagination pageSizeOptions={pageSizeOptions} />\n </DataTableRoot>\n );\n}\n\n/**\n * `<DataTable data={…} columns={…} />` renders a complete table with search,\n * filters, sorting, pagination, row selection, row actions and inline editing;\n * columns declare what they take part in. Every piece of state works\n * uncontrolled or controlled (`search` / `filterValues` / `sort` / `page` /\n * `selection`), and with `mode=\"server\"` the same state drives an API.\n *\n * For another layout, create the table with `useDataTable` and compose the\n * parts: `DataTable.Root`, `DataTable.Toolbar`, `DataTable.Search`,\n * `DataTable.Filters`, `DataTable.Filter`, `DataTable.FilterSheet` (the\n * phone filter button and sheet), `DataTable.Actions`, `DataTable.Summary`,\n * `DataTable.Content`, `DataTable.Pagination`.\n *\n * On phones (below 640px) columns with `priority: 'low'` are hidden, and\n * `stickyFirstColumn` keeps each row's name in view while the rest scrolls.\n */\nexport const DataTable = Object.assign(DataTableComponent, {\n Root: DataTableRoot,\n Toolbar: DataTableToolbar,\n Search: DataTableSearch,\n Filters: DataTableFilters,\n Filter: DataTableFilter,\n FilterSheet: DataTableFilterSheet,\n Actions: DataTableActions,\n Summary: DataTableSummary,\n Content: DataTableContent,\n Pagination: DataTablePagination,\n});\n"],"mappings":"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"}
@@ -27,10 +27,15 @@ export interface DataTableContentProps extends Pick<TableProps, 'density' | 'str
27
27
  * and append the next rows. Needs `maxHeight` or `virtualized`.
28
28
  */
29
29
  onEndReached?: () => void;
30
+ /**
31
+ * Keeps the first column (and the selection checkboxes) in place while the table scrolls sideways,
32
+ * so each row stays identifiable on narrow screens.
33
+ */
34
+ stickyFirstColumn?: boolean;
30
35
  /** Replaces the default empty state. */
31
36
  empty?: React.ReactNode;
32
37
  /** Props for the underlying `Table` (className, wrapperProps, aria-*). */
33
38
  tableProps?: Omit<TableProps, 'children'>;
34
39
  }
35
40
  /** The table itself, with its loading, empty and error states. */
36
- export declare function DataTableContent({ density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, empty, tableProps, }: DataTableContentProps): React.JSX.Element;
41
+ export declare function DataTableContent({ density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, stickyFirstColumn, empty, tableProps, }: DataTableContentProps): React.JSX.Element;