@bsol-oss/react-datatable5 12.0.0-beta.88 → 12.0.0-beta.89

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.ts CHANGED
@@ -114,6 +114,14 @@ declare const GlobalFilter: () => react_jsx_runtime.JSX.Element;
114
114
 
115
115
  declare const TableSelector: () => react_jsx_runtime.JSX.Element;
116
116
 
117
+ interface SelectAllRowsToggleProps {
118
+ selectAllIcon?: react__default.ReactElement;
119
+ clearAllIcon?: react__default.ReactElement;
120
+ selectAllText?: string;
121
+ clearAllText?: string;
122
+ }
123
+ declare const SelectAllRowsToggle: ({ selectAllIcon, clearAllIcon, selectAllText, clearAllText, }: SelectAllRowsToggleProps) => react_jsx_runtime.JSX.Element;
124
+
117
125
  declare const TableSorter: () => react_jsx_runtime.JSX.Element;
118
126
 
119
127
  declare const TableViewer: () => react_jsx_runtime.JSX.Element;
@@ -245,7 +253,7 @@ interface ErrorAlertProps {
245
253
  }
246
254
  declare const ErrorAlert: ({ showMessage }: ErrorAlertProps) => react_jsx_runtime.JSX.Element;
247
255
 
248
- type DensityState = "sm" | "md" | "lg";
256
+ type DensityState = 'xs' | 'sm' | 'md' | 'lg';
249
257
  interface DensityTableState {
250
258
  density: DensityState;
251
259
  }
@@ -258,7 +266,7 @@ interface DensityInstance {
258
266
  toggleDensity: (value?: DensityState) => void;
259
267
  getDensityValue: (value?: DensityState) => number;
260
268
  }
261
- declare module "@tanstack/react-table" {
269
+ declare module '@tanstack/react-table' {
262
270
  interface TableState extends DensityTableState {
263
271
  }
264
272
  interface TableOptionsResolved<TData extends RowData> extends DensityOptions {
@@ -1164,4 +1172,4 @@ declare module '@tanstack/react-table' {
1164
1172
  }
1165
1173
  }
1166
1174
 
1167
- export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerLabels, type DatePickerProps, type DateTimePickerLabels, DefaultCardTitle, DefaultForm, type DefaultFormProps, DefaultTable, type DefaultTableProps, DefaultTableServer, type DefaultTableServerProps, DensityToggleButton, type DensityToggleButtonProps, type EditFilterButtonProps, EditSortingButton, type EditSortingButtonProps, type EditViewButtonProps, EmptyState, type EmptyStateProps, type EnumPickerLabels, ErrorAlert, type ErrorAlertProps, type ErrorMessageConfig, type ErrorMessageResult, type FieldErrorConfig, type FilePickerLabels, type FilePickerMediaFile, type FilePickerProps, FilterDialog, FormBody, FormRoot, type FormRootProps, FormTitle, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, type IdPickerLabels, MediaLibraryBrowser, type MediaLibraryBrowserProps, PageSizeControl, type PageSizeControlProps, Pagination, type QueryParams, type RangeCalendarProps, type RangeDatePickerProps, RecordDisplay, type RecordDisplayProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableDataDisplay, type TableDataDisplayProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, type TableHeaderTexts, TableLoadingComponent, type TableLoadingComponentProps, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, type TagPickerProps, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, type UseFormProps, type ValidationErrorType, ViewDialog, buildErrorMessages, buildFieldErrors, buildRequiredErrors, convertToAjvErrorsFormat, createErrorMessage, getColumns, getMultiDates, getRangeDates, idPickerSanityCheck, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
1175
+ export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerLabels, type DatePickerProps, type DateTimePickerLabels, DefaultCardTitle, DefaultForm, type DefaultFormProps, DefaultTable, type DefaultTableProps, DefaultTableServer, type DefaultTableServerProps, DensityToggleButton, type DensityToggleButtonProps, type EditFilterButtonProps, EditSortingButton, type EditSortingButtonProps, type EditViewButtonProps, EmptyState, type EmptyStateProps, type EnumPickerLabels, ErrorAlert, type ErrorAlertProps, type ErrorMessageConfig, type ErrorMessageResult, type FieldErrorConfig, type FilePickerLabels, type FilePickerMediaFile, type FilePickerProps, FilterDialog, FormBody, FormRoot, type FormRootProps, FormTitle, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, type IdPickerLabels, MediaLibraryBrowser, type MediaLibraryBrowserProps, PageSizeControl, type PageSizeControlProps, Pagination, type QueryParams, type RangeCalendarProps, type RangeDatePickerProps, RecordDisplay, type RecordDisplayProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, RowCountText, SelectAllRowsToggle, type SelectAllRowsToggleProps, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableDataDisplay, type TableDataDisplayProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, type TableHeaderTexts, TableLoadingComponent, type TableLoadingComponentProps, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, type TagPickerProps, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, type UseFormProps, type ValidationErrorType, ViewDialog, buildErrorMessages, buildFieldErrors, buildRequiredErrors, convertToAjvErrorsFormat, createErrorMessage, getColumns, getMultiDates, getRangeDates, idPickerSanityCheck, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
package/dist/index.js CHANGED
@@ -602,12 +602,104 @@ const Pagination = () => {
602
602
  }, children: jsxRuntime.jsxs(react.HStack, { children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationItems, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) }));
603
603
  };
604
604
 
605
+ /**
606
+ * Custom selector utilities to replace TanStack table selector primitives.
607
+ * These work directly with rowSelection state instead of using table's built-in selectors.
608
+ */
609
+ /**
610
+ * Get all selected rows from the table based on rowSelection state
611
+ */
612
+ function getSelectedRows(table, rowSelection) {
613
+ const selectedRowIds = Object.keys(rowSelection).filter((id) => rowSelection[id] === true);
614
+ return table
615
+ .getRowModel()
616
+ .rows.filter((row) => selectedRowIds.includes(row.id));
617
+ }
618
+ /**
619
+ * Get the count of selected rows
620
+ */
621
+ function getSelectedRowCount(table, rowSelection) {
622
+ return getSelectedRows(table, rowSelection).length;
623
+ }
624
+ /**
625
+ * Check if a specific row is selected
626
+ */
627
+ function isRowSelected(rowId, rowSelection) {
628
+ return rowSelection[rowId] === true;
629
+ }
630
+ /**
631
+ * Check if all rows in the table are selected
632
+ */
633
+ function areAllRowsSelected(table, rowSelection) {
634
+ const rows = table.getRowModel().rows;
635
+ if (rows.length === 0)
636
+ return false;
637
+ return rows.every((row) => isRowSelected(row.id, rowSelection));
638
+ }
639
+ /**
640
+ * Check if all rows on the current page are selected
641
+ */
642
+ function areAllPageRowsSelected(table, rowSelection) {
643
+ const pageRows = table.getRowModel().rows;
644
+ if (pageRows.length === 0)
645
+ return false;
646
+ return pageRows.every((row) => isRowSelected(row.id, rowSelection));
647
+ }
648
+ /**
649
+ * Create a toggle handler for a specific row
650
+ */
651
+ function createRowToggleHandler(row, rowSelection, setRowSelection) {
652
+ return () => {
653
+ setRowSelection((old) => {
654
+ const newSelection = { ...old };
655
+ if (newSelection[row.id]) {
656
+ delete newSelection[row.id];
657
+ }
658
+ else {
659
+ newSelection[row.id] = true;
660
+ }
661
+ return newSelection;
662
+ });
663
+ };
664
+ }
665
+ /**
666
+ * Create a toggle handler for all rows
667
+ */
668
+ function createToggleAllRowsHandler(table, rowSelection, setRowSelection) {
669
+ return () => {
670
+ const allSelected = areAllRowsSelected(table, rowSelection);
671
+ if (allSelected) {
672
+ // Deselect all
673
+ setRowSelection({});
674
+ }
675
+ else {
676
+ // Select all
677
+ const newSelection = {};
678
+ table.getRowModel().rows.forEach((row) => {
679
+ newSelection[row.id] = true;
680
+ });
681
+ setRowSelection(newSelection);
682
+ }
683
+ };
684
+ }
685
+ /**
686
+ * Reset row selection (clear all selections)
687
+ */
688
+ function resetRowSelection(setRowSelection) {
689
+ setRowSelection({});
690
+ }
691
+ /**
692
+ * Check if a row can be selected (always true for now, can be extended)
693
+ */
694
+ function canRowSelect(row) {
695
+ return row.getCanSelect?.() ?? true;
696
+ }
697
+
605
698
  const ResetSelectionButton = () => {
606
- const { table } = useDataTableContext();
607
- const { tableLabel } = useDataTableContext();
699
+ const { tableLabel, setRowSelection } = useDataTableContext();
608
700
  const { resetSelection } = tableLabel;
609
701
  return (jsxRuntime.jsx(react.Button, { onClick: () => {
610
- table.resetRowSelection();
702
+ resetRowSelection(setRowSelection);
611
703
  }, children: resetSelection }));
612
704
  };
613
705
 
@@ -2683,20 +2775,20 @@ const GlobalFilter = () => {
2683
2775
  } }) }) }));
2684
2776
  };
2685
2777
 
2686
- const SelectAllRowsToggle = ({ selectAllIcon = jsxRuntime.jsx(md.MdOutlineChecklist, {}), clearAllIcon = jsxRuntime.jsx(md.MdClear, {}), selectAllText = "", clearAllText = "", }) => {
2687
- const { table } = useDataTableContext();
2688
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!selectAllText === false && (jsxRuntime.jsx(react.IconButton, { variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? clearAllText : selectAllText, onClick: (event) => {
2689
- table.getToggleAllRowsSelectedHandler()(event);
2690
- }, children: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon })), !!selectAllText !== false && (jsxRuntime.jsxs(react.Button, { variant: "ghost", onClick: (event) => {
2691
- table.getToggleAllRowsSelectedHandler()(event);
2692
- }, children: [table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, table.getIsAllRowsSelected() ? clearAllText : selectAllText] }))] }));
2778
+ const SelectAllRowsToggle = ({ selectAllIcon = jsxRuntime.jsx(md.MdOutlineChecklist, {}), clearAllIcon = jsxRuntime.jsx(md.MdClear, {}), selectAllText = '', clearAllText = '', }) => {
2779
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
2780
+ const allRowsSelected = areAllRowsSelected(table, rowSelection);
2781
+ const toggleHandler = createToggleAllRowsHandler(table, rowSelection, setRowSelection);
2782
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!selectAllText === false && (jsxRuntime.jsx(react.IconButton, { variant: 'ghost', "aria-label": allRowsSelected ? clearAllText : selectAllText, onClick: toggleHandler, children: allRowsSelected ? clearAllIcon : selectAllIcon })), !!selectAllText !== false && (jsxRuntime.jsxs(react.Button, { variant: 'ghost', onClick: toggleHandler, children: [allRowsSelected ? clearAllIcon : selectAllIcon, allRowsSelected ? clearAllText : selectAllText] }))] }));
2693
2783
  };
2694
2784
 
2695
2785
  const TableSelector = () => {
2696
- const { table } = useDataTableContext();
2697
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsxs(react.Button, { onClick: () => { }, variant: "ghost", display: "flex", gap: "0.25rem", children: [jsxRuntime.jsx(react.Box, { fontSize: "sm", children: `${table.getSelectedRowModel().rows.length}` }), jsxRuntime.jsx(io.IoMdCheckbox, {})] })), !table.getIsAllPageRowsSelected() && jsxRuntime.jsx(SelectAllRowsToggle, {}), table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsx(react.IconButton, { variant: "ghost", onClick: () => {
2698
- table.resetRowSelection();
2699
- }, "aria-label": "reset selection", children: jsxRuntime.jsx(md.MdClear, {}) }))] }));
2786
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
2787
+ const selectedCount = getSelectedRowCount(table, rowSelection);
2788
+ const allPageRowsSelected = areAllPageRowsSelected(table, rowSelection);
2789
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [selectedCount > 0 && (jsxRuntime.jsxs(react.Button, { onClick: () => { }, variant: 'ghost', display: 'flex', gap: "0.25rem", children: [jsxRuntime.jsx(react.Box, { fontSize: 'sm', children: `${selectedCount}` }), jsxRuntime.jsx(io.IoMdCheckbox, {})] })), !allPageRowsSelected && jsxRuntime.jsx(SelectAllRowsToggle, {}), selectedCount > 0 && (jsxRuntime.jsx(react.IconButton, { variant: 'ghost', onClick: () => {
2790
+ resetRowSelection(setRowSelection);
2791
+ }, "aria-label": 'reset selection', children: jsxRuntime.jsx(md.MdClear, {}) }))] }));
2700
2792
  };
2701
2793
 
2702
2794
  const TableFilterTags = () => {
@@ -2893,7 +2985,7 @@ const Checkbox = React__namespace.forwardRef(function Checkbox(props, ref) {
2893
2985
  });
2894
2986
 
2895
2987
  const TableBody = ({ showSelector = false, canResize = true, }) => {
2896
- "use no memo";
2988
+ 'use no memo';
2897
2989
  const { table } = useDataTableContext();
2898
2990
  const SELECTION_BOX_WIDTH = 20;
2899
2991
  const [hoveredRow, setHoveredRow] = React.useState(-1);
@@ -2904,9 +2996,9 @@ const TableBody = ({ showSelector = false, canResize = true, }) => {
2904
2996
  const tdProps = cell.column.getIsPinned()
2905
2997
  ? {
2906
2998
  left: showSelector
2907
- ? `${cell.column.getStart("left") + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
2908
- : `${cell.column.getStart("left")}px`,
2909
- position: "relative",
2999
+ ? `${cell.column.getStart('left') + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
3000
+ : `${cell.column.getStart('left')}px`,
3001
+ position: 'relative',
2910
3002
  }
2911
3003
  : {};
2912
3004
  return tdProps;
@@ -2917,37 +3009,40 @@ const TableBody = ({ showSelector = false, canResize = true, }) => {
2917
3009
  }
2918
3010
  if (hoveredRow === index) {
2919
3011
  return {
2920
- opacity: "1",
3012
+ opacity: '1',
2921
3013
  };
2922
3014
  }
2923
3015
  return {
2924
- opacity: "0.8",
3016
+ opacity: '0.8',
2925
3017
  };
2926
3018
  };
2927
3019
  return (jsxRuntime.jsx(react.Table.Body, { children: table.getRowModel().rows.map((row, index) => {
2928
- return (jsxRuntime.jsxs(react.Table.Row, { display: "flex", zIndex: 1, onMouseEnter: () => handleRowHover(index), onMouseLeave: () => handleRowHover(-1), ...getTrProps({ hoveredRow, index }), children: [showSelector && (jsxRuntime.jsx(TableRowSelector, { index: index, row: row, hoveredRow: hoveredRow })), row.getVisibleCells().map((cell, index) => {
3020
+ return (jsxRuntime.jsxs(react.Table.Row, { display: 'flex', zIndex: 1, onMouseEnter: () => handleRowHover(index), onMouseLeave: () => handleRowHover(-1), ...getTrProps({ hoveredRow, index }), children: [showSelector && (jsxRuntime.jsx(TableRowSelector, { index: index, row: row, hoveredRow: hoveredRow })), row.getVisibleCells().map((cell, index) => {
2929
3021
  return (jsxRuntime.jsx(react.Table.Cell, { padding: `${table.getDensityValue()}px`,
2930
3022
  // styling resize and pinning start
2931
- flex: `${canResize ? "0" : "1"} 0 ${cell.column.getSize()}px`,
3023
+ flex: `${canResize ? '0' : '1'} 0 ${cell.column.getSize()}px`,
2932
3024
  // this is to avoid the cell from being too wide
2933
3025
  minWidth: `0`, color: {
2934
- base: "colorPalette.900",
2935
- _dark: "colorPalette.100",
3026
+ base: 'colorPalette.900',
3027
+ _dark: 'colorPalette.100',
2936
3028
  },
2937
- bg: { base: "colorPalette.50", _dark: "colorPalette.950" }, ...getTdProps(cell), children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-rowcell-${cell.id}-${index}`));
3029
+ bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, ...getTdProps(cell), children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-rowcell-${cell.id}-${index}`));
2938
3030
  })] }, `chakra-table-row-${row.id}`));
2939
3031
  }) }));
2940
3032
  };
2941
- const TableRowSelector = ({ row, }) => {
2942
- const { table } = useDataTableContext();
3033
+ const TableRowSelector = ({ row }) => {
3034
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
2943
3035
  const SELECTION_BOX_WIDTH = 20;
2944
- return (jsxRuntime.jsx(react.Table.Cell, { padding: `${table.getDensityValue()}px`, display: "grid", color: {
2945
- base: "colorPalette.900",
2946
- _dark: "colorPalette.100",
3036
+ const isSelected = isRowSelected(row.id, rowSelection);
3037
+ const canSelect = canRowSelect(row);
3038
+ const toggleHandler = createRowToggleHandler(row, rowSelection, setRowSelection);
3039
+ return (jsxRuntime.jsx(react.Table.Cell, { padding: `${table.getDensityValue()}px`, display: 'grid', color: {
3040
+ base: 'colorPalette.900',
3041
+ _dark: 'colorPalette.100',
2947
3042
  },
2948
- bg: { base: "colorPalette.50", _dark: "colorPalette.950" }, justifyItems: "center", alignItems: "center", children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: row.getIsSelected(),
2949
- disabled: !row.getCanSelect(),
2950
- onCheckedChange: row.getToggleSelectedHandler() }) }));
3043
+ bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, justifyItems: 'center', alignItems: 'center', children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: isSelected,
3044
+ disabled: !canSelect,
3045
+ onCheckedChange: toggleHandler }) }));
2951
3046
  };
2952
3047
 
2953
3048
  const TableCardContainer = ({ children, variant = "", gap = "1rem", gridTemplateColumns = "repeat(auto-fit, minmax(20rem, 1fr))", direction = "row", ...props }) => {
@@ -2961,16 +3056,16 @@ const DefaultCardTitle = () => {
2961
3056
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
2962
3057
  };
2963
3058
  const TableCards = ({ isSelectable = false, showDisplayNameOnly = false, renderTitle = DefaultCardTitle, cardBodyProps = {}, }) => {
2964
- const { table } = useDataTableContext();
3059
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
2965
3060
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getRowModel().rows.map((row) => {
2966
- return (jsxRuntime.jsx(react.Card.Root, { flex: "1 0 20rem", children: jsxRuntime.jsxs(react.Card.Body, { display: "flex", flexFlow: "column", gap: "0.5rem", ...cardBodyProps, children: [isSelectable && (jsxRuntime.jsx(Checkbox, { isChecked: row.getIsSelected(),
2967
- disabled: !row.getCanSelect(),
3061
+ return (jsxRuntime.jsx(react.Card.Root, { flex: '1 0 20rem', children: jsxRuntime.jsxs(react.Card.Body, { display: 'flex', flexFlow: 'column', gap: '0.5rem', ...cardBodyProps, children: [isSelectable && (jsxRuntime.jsx(Checkbox, { isChecked: isRowSelected(row.id, rowSelection),
3062
+ disabled: !canRowSelect(row),
2968
3063
  // indeterminate: row.getIsSomeSelected(),
2969
- onChange: row.getToggleSelectedHandler() })), renderTitle(row), jsxRuntime.jsx(react.Grid, { templateColumns: "auto 1fr", gap: "1rem", children: row.getVisibleCells().map((cell) => {
2970
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react.Box, { children: [showDisplayNameOnly && (jsxRuntime.jsx(react.Text, { fontWeight: "bold", children: cell.column.columnDef.meta?.displayName ??
3064
+ onChange: createRowToggleHandler(row, rowSelection, setRowSelection) })), renderTitle(row), jsxRuntime.jsx(react.Grid, { templateColumns: 'auto 1fr', gap: '1rem', children: row.getVisibleCells().map((cell) => {
3065
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react.Box, { children: [showDisplayNameOnly && (jsxRuntime.jsx(react.Text, { fontWeight: 'bold', children: cell.column.columnDef.meta?.displayName ??
2971
3066
  cell.column.id })), !showDisplayNameOnly && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: reactTable.flexRender(cell.column.columnDef.header,
2972
3067
  // @ts-expect-error Assuming the CellContext interface is the same as HeaderContext
2973
- cell.getContext()) }))] }, `chakra-table-cardcolumnid-${row.id}`), jsxRuntime.jsx(react.Box, { justifySelf: "end", children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-cardcolumn-${row.id}`)] }));
3068
+ cell.getContext()) }))] }, `chakra-table-cardcolumnid-${row.id}`), jsxRuntime.jsx(react.Box, { justifySelf: 'end', children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-cardcolumn-${row.id}`)] }));
2974
3069
  }) })] }) }, `chakra-table-card-${row.id}`));
2975
3070
  }) }));
2976
3071
  };
@@ -2983,7 +3078,7 @@ const TableComponent = ({ render = () => {
2983
3078
  };
2984
3079
 
2985
3080
  const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
2986
- const table = useDataTableContext().table;
3081
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
2987
3082
  const SELECTION_BOX_WIDTH = 20;
2988
3083
  const [hoveredCheckBox, setHoveredCheckBox] = React.useState(false);
2989
3084
  const handleRowHover = (isHovered) => {
@@ -2993,7 +3088,7 @@ const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
2993
3088
  if (alwaysShowSelector) {
2994
3089
  return true;
2995
3090
  }
2996
- if (table.getIsAllRowsSelected()) {
3091
+ if (areAllRowsSelected(table, rowSelection)) {
2997
3092
  return true;
2998
3093
  }
2999
3094
  if (hoveredCheckBox) {
@@ -3001,22 +3096,22 @@ const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
3001
3096
  }
3002
3097
  return false;
3003
3098
  };
3004
- return (jsxRuntime.jsx(react.Table.Footer, { children: table.getFooterGroups().map((footerGroup) => (jsxRuntime.jsxs(react.Table.Row, { display: "flex", children: [showSelector && (jsxRuntime.jsxs(react.Table.Header, { padding: `${table.getDensityValue()}px`, onMouseEnter: () => handleRowHover(true), onMouseLeave: () => handleRowHover(false), display: "grid", children: [isCheckBoxVisible() && (jsxRuntime.jsx(react.Box, { margin: "0rem", display: "grid", justifyItems: "center", alignItems: "center", children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, isChecked: table.getIsAllRowsSelected(),
3005
- // indeterminate: table.getIsSomeRowsSelected(),
3006
- onChange: table.getToggleAllRowsSelectedHandler() }) })), !isCheckBoxVisible() && (jsxRuntime.jsx(react.Box, { as: "span", margin: "0rem", display: "grid", justifyItems: "center", alignItems: "center", width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px` }))] })), footerGroup.headers.map((header) => (jsxRuntime.jsx(react.Table.Cell, { padding: "0", columnSpan: `${header.colSpan}`,
3099
+ return (jsxRuntime.jsx(react.Table.Footer, { children: table.getFooterGroups().map((footerGroup) => (jsxRuntime.jsxs(react.Table.Row, { display: 'flex', children: [showSelector && (jsxRuntime.jsxs(react.Table.Header, { padding: `${table.getDensityValue()}px`, onMouseEnter: () => handleRowHover(true), onMouseLeave: () => handleRowHover(false), display: 'grid', children: [isCheckBoxVisible() && (jsxRuntime.jsx(react.Box, { margin: '0rem', display: 'grid', justifyItems: 'center', alignItems: 'center', children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, isChecked: areAllRowsSelected(table, rowSelection),
3100
+ // indeterminate: areSomeRowsSelected(table, rowSelection),
3101
+ onChange: createToggleAllRowsHandler(table, rowSelection, setRowSelection) }) })), !isCheckBoxVisible() && (jsxRuntime.jsx(react.Box, { as: "span", margin: '0rem', display: 'grid', justifyItems: 'center', alignItems: 'center', width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px` }))] })), footerGroup.headers.map((header) => (jsxRuntime.jsx(react.Table.Cell, { padding: '0', columnSpan: `${header.colSpan}`,
3007
3102
  // styling resize and pinning start
3008
- maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, display: "grid", children: jsxRuntime.jsx(react.MenuRoot, { children: jsxRuntime.jsx(react.MenuTrigger, { asChild: true, children: jsxRuntime.jsx(react.Box, { padding: `${table.getDensityValue()}px`, display: "flex", alignItems: "center", justifyContent: "start", borderRadius: "0rem", children: jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems: "center", children: [header.isPlaceholder
3103
+ maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, display: 'grid', children: jsxRuntime.jsx(react.MenuRoot, { children: jsxRuntime.jsx(react.MenuTrigger, { asChild: true, children: jsxRuntime.jsx(react.Box, { padding: `${table.getDensityValue()}px`, display: 'flex', alignItems: 'center', justifyContent: 'start', borderRadius: '0rem', children: jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems: 'center', children: [header.isPlaceholder
3009
3104
  ? null
3010
- : reactTable.flexRender(header.column.columnDef.footer, header.getContext()), jsxRuntime.jsx(react.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && jsxRuntime.jsx(jsxRuntime.Fragment, {}), header.column.getIsSorted() === "asc" && (jsxRuntime.jsx(bi.BiUpArrow, {})), header.column.getIsSorted() === "desc" && (jsxRuntime.jsx(bi.BiDownArrow, {}))] })) })] }) }) }) }) }, `chakra-table-footer-${header.column.id}-${footerGroup.id}`)))] }, `chakra-table-footergroup-${footerGroup.id}`))) }));
3105
+ : reactTable.flexRender(header.column.columnDef.footer, header.getContext()), jsxRuntime.jsx(react.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && jsxRuntime.jsx(jsxRuntime.Fragment, {}), header.column.getIsSorted() === 'asc' && (jsxRuntime.jsx(bi.BiUpArrow, {})), header.column.getIsSorted() === 'desc' && (jsxRuntime.jsx(bi.BiDownArrow, {}))] })) })] }) }) }) }) }, `chakra-table-footer-${header.column.id}-${footerGroup.id}`)))] }, `chakra-table-footergroup-${footerGroup.id}`))) }));
3011
3106
  };
3012
3107
 
3013
3108
  // Default text values
3014
3109
  const DEFAULT_HEADER_TEXTS = {
3015
- pinColumn: "Pin Column",
3016
- cancelPin: "Cancel Pin",
3017
- sortAscending: "Sort Ascending",
3018
- sortDescending: "Sort Descending",
3019
- clearSorting: "Clear Sorting",
3110
+ pinColumn: 'Pin Column',
3111
+ cancelPin: 'Cancel Pin',
3112
+ sortAscending: 'Sort Ascending',
3113
+ sortDescending: 'Sort Descending',
3114
+ clearSorting: 'Clear Sorting',
3020
3115
  };
3021
3116
  /**
3022
3117
  * TableHeader component with configurable text strings.
@@ -3049,7 +3144,7 @@ const DEFAULT_HEADER_TEXTS = {
3049
3144
  * ];
3050
3145
  */
3051
3146
  const TableHeader = ({ canResize = true, showSelector = false, isSticky = true, tableHeaderProps = {}, tableRowProps = {}, defaultTexts = {}, }) => {
3052
- const { table } = useDataTableContext();
3147
+ const { table, rowSelection, setRowSelection } = useDataTableContext();
3053
3148
  const SELECTION_BOX_WIDTH = 20;
3054
3149
  // Merge default texts with provided defaults
3055
3150
  const mergedDefaultTexts = { ...DEFAULT_HEADER_TEXTS, ...defaultTexts };
@@ -3062,58 +3157,105 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
3062
3157
  const thProps = header.column.getIsPinned()
3063
3158
  ? {
3064
3159
  left: showSelector
3065
- ? `${header.getStart("left") + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
3066
- : `${header.getStart("left")}px`,
3067
- position: "sticky",
3160
+ ? `${header.getStart('left') + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
3161
+ : `${header.getStart('left')}px`,
3162
+ position: 'sticky',
3068
3163
  zIndex: 100 + 1,
3069
3164
  }
3070
3165
  : {};
3071
3166
  return thProps;
3072
3167
  };
3073
3168
  const stickyProps = {
3074
- position: "sticky",
3169
+ position: 'sticky',
3075
3170
  top: 0,
3076
3171
  };
3077
- return (jsxRuntime.jsx(react.Table.Header, { ...(isSticky ? stickyProps : {}), bgColor: "transparent", ...tableHeaderProps, children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsxs(react.Table.Row, { display: "flex", bgColor: "transparent", ...tableRowProps, children: [showSelector && (jsxRuntime.jsx(react.Table.ColumnHeader, { padding: `${table.getDensityValue()}px`, display: "grid", color: {
3078
- base: "colorPalette.900",
3079
- _dark: "colorPalette.100",
3172
+ const handleAutoSize = (header, event) => {
3173
+ const headerElement = event.currentTarget.closest('th');
3174
+ if (!headerElement)
3175
+ return;
3176
+ // Find the table container
3177
+ const tableContainer = headerElement.closest('[role="table"]') ||
3178
+ headerElement.closest('table') ||
3179
+ headerElement.closest('div');
3180
+ if (!tableContainer)
3181
+ return;
3182
+ // Calculate the actual column index accounting for selector column
3183
+ const columnIndex = header.index;
3184
+ const actualColumnIndex = showSelector ? columnIndex + 1 : columnIndex;
3185
+ // Get all rows (header and body) - Chakra UI Table uses flex layout
3186
+ const rows = Array.from(tableContainer.querySelectorAll('[role="row"], tr'));
3187
+ let maxWidth = 0;
3188
+ // Measure all cells in this column
3189
+ rows.forEach((row) => {
3190
+ // Get all cells in the row (td, th, or Chakra Table.Cell/Table.ColumnHeader)
3191
+ const cells = Array.from(row.children);
3192
+ const cell = cells[actualColumnIndex];
3193
+ if (cell) {
3194
+ // Create a temporary clone to measure content without constraints
3195
+ const clone = cell.cloneNode(true);
3196
+ clone.style.position = 'absolute';
3197
+ clone.style.visibility = 'hidden';
3198
+ clone.style.width = 'auto';
3199
+ clone.style.maxWidth = 'none';
3200
+ clone.style.whiteSpace = 'nowrap';
3201
+ clone.style.flex = 'none';
3202
+ document.body.appendChild(clone);
3203
+ const width = clone.scrollWidth;
3204
+ maxWidth = Math.max(maxWidth, width);
3205
+ document.body.removeChild(clone);
3206
+ }
3207
+ });
3208
+ // Add padding for better UX (density padding + some extra space)
3209
+ const padding = table.getDensityValue() * 2 + 4;
3210
+ const minSize = header.column.columnDef.minSize || 10;
3211
+ const finalWidth = Math.max(maxWidth + padding, minSize);
3212
+ // Set the column size - setSize exists on column but may not be fully typed in @tanstack/react-table
3213
+ console.log('finalWidth', finalWidth);
3214
+ table.setColumnSizing((current) => ({
3215
+ ...current,
3216
+ [header.id]: finalWidth,
3217
+ }));
3218
+ };
3219
+ return (jsxRuntime.jsx(react.Table.Header, { ...(isSticky ? stickyProps : {}), bgColor: 'transparent', ...tableHeaderProps, children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsxs(react.Table.Row, { display: 'flex', bgColor: 'transparent', ...tableRowProps, children: [showSelector && (jsxRuntime.jsx(react.Table.ColumnHeader, { padding: `${table.getDensityValue()}px`, display: 'grid', color: {
3220
+ base: 'colorPalette.900',
3221
+ _dark: 'colorPalette.100',
3080
3222
  },
3081
- bg: { base: "colorPalette.50", _dark: "colorPalette.950" }, justifyItems: "center", alignItems: "center", children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: table.getIsAllRowsSelected(),
3082
- // indeterminate: table.getIsSomeRowsSelected(),
3083
- onChange: table.getToggleAllRowsSelectedHandler() }) })), headerGroup.headers.map((header) => {
3223
+ bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, justifyItems: 'center', alignItems: 'center', children: jsxRuntime.jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: areAllRowsSelected(table, rowSelection),
3224
+ // indeterminate: areSomeRowsSelected(table, rowSelection),
3225
+ onChange: createToggleAllRowsHandler(table, rowSelection, setRowSelection) }) })), headerGroup.headers.map((header) => {
3084
3226
  const resizeProps = {
3085
3227
  onMouseDown: header.getResizeHandler(),
3086
3228
  onTouchStart: header.getResizeHandler(),
3087
- cursor: "col-resize",
3229
+ cursor: 'col-resize',
3088
3230
  };
3089
3231
  return (jsxRuntime.jsxs(react.Table.ColumnHeader, { padding: 0, columnSpan: `${header.colSpan}`,
3090
3232
  // styling resize and pinning start
3091
- flex: `${canResize ? "0" : "1"} 0 ${header.column.getSize()}px`, display: "grid", gridTemplateColumns: "1fr auto", zIndex: 1500 + header.index, color: {
3092
- base: "colorPalette.800",
3093
- _dark: "colorPalette.200",
3233
+ flex: `${canResize ? '0' : '1'} 0 ${header.column.getSize()}px`, display: 'grid', gridTemplateColumns: '1fr auto', zIndex: 1500 + header.index, color: {
3234
+ base: 'colorPalette.800',
3235
+ _dark: 'colorPalette.200',
3094
3236
  },
3095
- bg: { base: "colorPalette.100", _dark: "colorPalette.900" }, ...getThProps(header), children: [jsxRuntime.jsxs(MenuRoot, { children: [jsxRuntime.jsx(MenuTrigger, { asChild: true, children: jsxRuntime.jsx(react.Flex, { padding: `${table.getDensityValue()}px`, alignItems: "center", justifyContent: "start", borderRadius: "0rem", overflow: "auto", color: {
3096
- base: "colorPalette.800",
3097
- _dark: "colorPalette.200",
3237
+ bg: { base: 'colorPalette.100', _dark: 'colorPalette.900' }, ...getThProps(header), children: [jsxRuntime.jsxs(MenuRoot, { children: [jsxRuntime.jsx(MenuTrigger, { asChild: true, children: jsxRuntime.jsx(react.Flex, { padding: `${table.getDensityValue()}px`, alignItems: 'center', justifyContent: 'start', borderRadius: '0rem', overflow: 'auto', color: {
3238
+ base: 'colorPalette.800',
3239
+ _dark: 'colorPalette.200',
3098
3240
  _hover: {
3099
- base: "colorPalette.700",
3100
- _dark: "colorPalette.300",
3241
+ base: 'colorPalette.700',
3242
+ _dark: 'colorPalette.300',
3101
3243
  },
3102
3244
  },
3103
3245
  bg: {
3104
- base: "colorPalette.100",
3105
- _dark: "colorPalette.900",
3246
+ base: 'colorPalette.100',
3247
+ _dark: 'colorPalette.900',
3106
3248
  _hover: {
3107
- base: "colorPalette.200",
3108
- _dark: "colorPalette.800",
3249
+ base: 'colorPalette.200',
3250
+ _dark: 'colorPalette.800',
3109
3251
  },
3110
- }, children: jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems: "center", children: [header.isPlaceholder
3252
+ }, children: jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems: 'center', children: [header.isPlaceholder
3111
3253
  ? null
3112
- : reactTable.flexRender(header.column.columnDef.header, header.getContext()), jsxRuntime.jsx(react.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && jsxRuntime.jsx(jsxRuntime.Fragment, {}), header.column.getIsSorted() === "asc" && (jsxRuntime.jsx(bi.BiUpArrow, {})), header.column.getIsSorted() === "desc" && (jsxRuntime.jsx(bi.BiDownArrow, {}))] })) }), jsxRuntime.jsx(react.Box, { children: header.column.getIsFiltered() && jsxRuntime.jsx(md.MdFilterListAlt, {}) })] }) }) }), jsxRuntime.jsxs(MenuContent, { children: [!header.column.getIsPinned() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "pin-column", children: jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
3113
- header.column.pin("left");
3114
- }, children: [jsxRuntime.jsx(md.MdPushPin, {}), getHeaderText(header, "pinColumn")] }) })), header.column.getIsPinned() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "cancel-pin", children: jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
3254
+ : reactTable.flexRender(header.column.columnDef.header, header.getContext()), jsxRuntime.jsx(react.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && jsxRuntime.jsx(jsxRuntime.Fragment, {}), header.column.getIsSorted() === 'asc' && (jsxRuntime.jsx(bi.BiUpArrow, {})), header.column.getIsSorted() === 'desc' && (jsxRuntime.jsx(bi.BiDownArrow, {}))] })) }), jsxRuntime.jsx(react.Box, { children: header.column.getIsFiltered() && jsxRuntime.jsx(md.MdFilterListAlt, {}) })] }) }) }), jsxRuntime.jsxs(MenuContent, { children: [!header.column.getIsPinned() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "pin-column", children: jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => {
3255
+ header.column.pin('left');
3256
+ }, children: [jsxRuntime.jsx(md.MdPushPin, {}), getHeaderText(header, 'pinColumn')] }) })), header.column.getIsPinned() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "cancel-pin", children: jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => {
3115
3257
  header.column.pin(false);
3116
- }, children: [jsxRuntime.jsx(md.MdCancel, {}), getHeaderText(header, "cancelPin")] }) })), header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(MenuItem, { asChild: true, value: "sort-ascend", children: jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
3258
+ }, children: [jsxRuntime.jsx(md.MdCancel, {}), getHeaderText(header, 'cancelPin')] }) })), header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(MenuItem, { asChild: true, value: "sort-ascend", children: jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => {
3117
3259
  table.setSorting((state) => {
3118
3260
  return [
3119
3261
  ...state.filter((column) => {
@@ -3122,7 +3264,7 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
3122
3264
  { id: header.id, desc: false },
3123
3265
  ];
3124
3266
  });
3125
- }, children: [jsxRuntime.jsx(gr.GrAscend, {}), getHeaderText(header, "sortAscending")] }) }), jsxRuntime.jsx(MenuItem, { asChild: true, value: "sort-descend", children: jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
3267
+ }, children: [jsxRuntime.jsx(gr.GrAscend, {}), getHeaderText(header, 'sortAscending')] }) }), jsxRuntime.jsx(MenuItem, { asChild: true, value: "sort-descend", children: jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => {
3126
3268
  table.setSorting((state) => {
3127
3269
  return [
3128
3270
  ...state.filter((column) => {
@@ -3131,14 +3273,16 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
3131
3273
  { id: header.id, desc: true },
3132
3274
  ];
3133
3275
  });
3134
- }, children: [jsxRuntime.jsx(gr.GrDescend, {}), getHeaderText(header, "sortDescending")] }) }), header.column.getIsSorted() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "clear-sorting", children: jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
3276
+ }, children: [jsxRuntime.jsx(gr.GrDescend, {}), getHeaderText(header, 'sortDescending')] }) }), header.column.getIsSorted() && (jsxRuntime.jsx(MenuItem, { asChild: true, value: "clear-sorting", children: jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => {
3135
3277
  header.column.clearSorting();
3136
- }, children: [jsxRuntime.jsx(md.MdClear, {}), getHeaderText(header, "clearSorting")] }) }))] }))] })] }), canResize && (jsxRuntime.jsx(react.Box, { borderRight: "0.2rem solid", borderRightColor: header.column.getIsResizing()
3137
- ? "colorPalette.700"
3138
- : "transparent", position: "relative", right: "0.1rem", width: "2px", height: "100%", userSelect: "none", style: { touchAction: "none" }, _hover: {
3278
+ }, children: [jsxRuntime.jsx(md.MdClear, {}), getHeaderText(header, 'clearSorting')] }) }))] }))] })] }), canResize && (jsxRuntime.jsx(react.Box, { borderRight: '0.2rem solid', borderRightColor: header.column.getIsResizing()
3279
+ ? 'colorPalette.700'
3280
+ : 'transparent', position: 'relative', right: '0.1rem', width: '2px', height: '100%', userSelect: 'none', style: { touchAction: 'none' }, _hover: {
3139
3281
  borderRightColor: header.column.getIsResizing()
3140
- ? "colorPalette.700"
3141
- : "colorPalette.400",
3282
+ ? 'colorPalette.700'
3283
+ : 'colorPalette.400',
3284
+ }, onDoubleClick: (e) => {
3285
+ handleAutoSize(header, e);
3142
3286
  }, ...resizeProps }))] }, `chakra-table-header-${header.id}`));
3143
3287
  })] }, `chakra-table-headergroup-${headerGroup.id}`))) }));
3144
3288
  };
@@ -7229,7 +7373,7 @@ const DensityFeature = {
7229
7373
  // define the new feature's initial state
7230
7374
  getInitialState: (state) => {
7231
7375
  return {
7232
- density: "sm",
7376
+ density: 'sm',
7233
7377
  ...state,
7234
7378
  };
7235
7379
  },
@@ -7237,7 +7381,7 @@ const DensityFeature = {
7237
7381
  getDefaultOptions: (table) => {
7238
7382
  return {
7239
7383
  enableDensity: true,
7240
- onDensityChange: reactTable.makeStateUpdater("density", table),
7384
+ onDensityChange: reactTable.makeStateUpdater('density', table),
7241
7385
  };
7242
7386
  },
7243
7387
  // if you need to add a default column definition...
@@ -7257,13 +7401,16 @@ const DensityFeature = {
7257
7401
  table.setDensity((old) => {
7258
7402
  if (value)
7259
7403
  return value;
7260
- if (old === "sm") {
7261
- return "md";
7404
+ if (old === 'xs') {
7405
+ return 'sm';
7262
7406
  }
7263
- if (old === "md") {
7264
- return "lg";
7407
+ if (old === 'sm') {
7408
+ return 'md';
7265
7409
  }
7266
- return "sm";
7410
+ if (old === 'md') {
7411
+ return 'lg';
7412
+ }
7413
+ return 'xs';
7267
7414
  });
7268
7415
  };
7269
7416
  table.getDensityValue = (value) => {
@@ -7274,13 +7421,16 @@ const DensityFeature = {
7274
7421
  else {
7275
7422
  density = table.getState().density;
7276
7423
  }
7277
- if (density === "sm") {
7278
- return 8;
7424
+ if (density === 'xs') {
7425
+ return 2;
7279
7426
  }
7280
- if (density === "md") {
7281
- return 16;
7427
+ if (density === 'sm') {
7428
+ return 4;
7429
+ }
7430
+ if (density === 'md') {
7431
+ return 8;
7282
7432
  }
7283
- return 32;
7433
+ return 12;
7284
7434
  };
7285
7435
  },
7286
7436
  // if you need to add row instance APIs...
@@ -7531,6 +7681,7 @@ exports.ResetFilteringButton = ResetFilteringButton;
7531
7681
  exports.ResetSelectionButton = ResetSelectionButton;
7532
7682
  exports.ResetSortingButton = ResetSortingButton;
7533
7683
  exports.RowCountText = RowCountText;
7684
+ exports.SelectAllRowsToggle = SelectAllRowsToggle;
7534
7685
  exports.Table = Table;
7535
7686
  exports.TableBody = TableBody;
7536
7687
  exports.TableCardContainer = TableCardContainer;