@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 +11 -3
- package/dist/index.js +250 -99
- package/dist/index.mjs +250 -100
- package/dist/types/components/DataTable/controls/DensityFeature.d.ts +3 -3
- package/dist/types/components/DataTable/controls/SelectAllRowsToggle.d.ts +1 -1
- package/dist/types/components/DataTable/display/TableBody.d.ts +1 -1
- package/dist/types/components/DataTable/display/TableCards.d.ts +3 -3
- package/dist/types/components/DataTable/display/TableHeader.d.ts +1 -1
- package/dist/types/components/DataTable/utils/selectors.d.ts +53 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
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 =
|
|
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
|
|
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 {
|
|
607
|
-
const { tableLabel } = useDataTableContext();
|
|
699
|
+
const { tableLabel, setRowSelection } = useDataTableContext();
|
|
608
700
|
const { resetSelection } = tableLabel;
|
|
609
701
|
return (jsxRuntime.jsx(react.Button, { onClick: () => {
|
|
610
|
-
|
|
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 =
|
|
2687
|
-
const { table } = useDataTableContext();
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
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
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
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
|
-
|
|
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(
|
|
2908
|
-
: `${cell.column.getStart(
|
|
2909
|
-
position:
|
|
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:
|
|
3012
|
+
opacity: '1',
|
|
2921
3013
|
};
|
|
2922
3014
|
}
|
|
2923
3015
|
return {
|
|
2924
|
-
opacity:
|
|
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:
|
|
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 ?
|
|
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:
|
|
2935
|
-
_dark:
|
|
3026
|
+
base: 'colorPalette.900',
|
|
3027
|
+
_dark: 'colorPalette.100',
|
|
2936
3028
|
},
|
|
2937
|
-
bg: { base:
|
|
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
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
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:
|
|
2949
|
-
disabled: !
|
|
2950
|
-
onCheckedChange:
|
|
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:
|
|
2967
|
-
disabled: !row
|
|
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
|
|
2970
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react.Box, { children: [showDisplayNameOnly && (jsxRuntime.jsx(react.Text, { fontWeight:
|
|
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:
|
|
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()
|
|
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
|
|
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:
|
|
3005
|
-
// indeterminate: table
|
|
3006
|
-
onChange: table
|
|
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:
|
|
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() ===
|
|
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:
|
|
3016
|
-
cancelPin:
|
|
3017
|
-
sortAscending:
|
|
3018
|
-
sortDescending:
|
|
3019
|
-
clearSorting:
|
|
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(
|
|
3066
|
-
: `${header.getStart(
|
|
3067
|
-
position:
|
|
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:
|
|
3169
|
+
position: 'sticky',
|
|
3075
3170
|
top: 0,
|
|
3076
3171
|
};
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
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:
|
|
3082
|
-
// indeterminate: table
|
|
3083
|
-
onChange: table
|
|
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:
|
|
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 ?
|
|
3092
|
-
base:
|
|
3093
|
-
_dark:
|
|
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:
|
|
3096
|
-
base:
|
|
3097
|
-
_dark:
|
|
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:
|
|
3100
|
-
_dark:
|
|
3241
|
+
base: 'colorPalette.700',
|
|
3242
|
+
_dark: 'colorPalette.300',
|
|
3101
3243
|
},
|
|
3102
3244
|
},
|
|
3103
3245
|
bg: {
|
|
3104
|
-
base:
|
|
3105
|
-
_dark:
|
|
3246
|
+
base: 'colorPalette.100',
|
|
3247
|
+
_dark: 'colorPalette.900',
|
|
3106
3248
|
_hover: {
|
|
3107
|
-
base:
|
|
3108
|
-
_dark:
|
|
3249
|
+
base: 'colorPalette.200',
|
|
3250
|
+
_dark: 'colorPalette.800',
|
|
3109
3251
|
},
|
|
3110
|
-
}, children: jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems:
|
|
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() ===
|
|
3113
|
-
header.column.pin(
|
|
3114
|
-
}, children: [jsxRuntime.jsx(md.MdPushPin, {}), getHeaderText(header,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
3137
|
-
?
|
|
3138
|
-
:
|
|
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
|
-
?
|
|
3141
|
-
:
|
|
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:
|
|
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(
|
|
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 ===
|
|
7261
|
-
return
|
|
7404
|
+
if (old === 'xs') {
|
|
7405
|
+
return 'sm';
|
|
7262
7406
|
}
|
|
7263
|
-
if (old ===
|
|
7264
|
-
return
|
|
7407
|
+
if (old === 'sm') {
|
|
7408
|
+
return 'md';
|
|
7265
7409
|
}
|
|
7266
|
-
|
|
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 ===
|
|
7278
|
-
return
|
|
7424
|
+
if (density === 'xs') {
|
|
7425
|
+
return 2;
|
|
7279
7426
|
}
|
|
7280
|
-
if (density ===
|
|
7281
|
-
return
|
|
7427
|
+
if (density === 'sm') {
|
|
7428
|
+
return 4;
|
|
7429
|
+
}
|
|
7430
|
+
if (density === 'md') {
|
|
7431
|
+
return 8;
|
|
7282
7432
|
}
|
|
7283
|
-
return
|
|
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;
|