@bsol-oss/react-datatable5 12.0.0-beta.87 → 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 +13 -5
- package/dist/index.js +258 -161
- package/dist/index.mjs +258 -162
- 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/components/Form/SchemaFormContext.d.ts +1 -1
- package/dist/types/components/Form/components/core/FormRoot.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -582,12 +582,104 @@ const Pagination = () => {
|
|
|
582
582
|
}, children: jsxs(HStack, { children: [jsx(PaginationPrevTrigger, {}), jsx(PaginationItems, {}), jsx(PaginationNextTrigger, {})] }) }));
|
|
583
583
|
};
|
|
584
584
|
|
|
585
|
+
/**
|
|
586
|
+
* Custom selector utilities to replace TanStack table selector primitives.
|
|
587
|
+
* These work directly with rowSelection state instead of using table's built-in selectors.
|
|
588
|
+
*/
|
|
589
|
+
/**
|
|
590
|
+
* Get all selected rows from the table based on rowSelection state
|
|
591
|
+
*/
|
|
592
|
+
function getSelectedRows(table, rowSelection) {
|
|
593
|
+
const selectedRowIds = Object.keys(rowSelection).filter((id) => rowSelection[id] === true);
|
|
594
|
+
return table
|
|
595
|
+
.getRowModel()
|
|
596
|
+
.rows.filter((row) => selectedRowIds.includes(row.id));
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Get the count of selected rows
|
|
600
|
+
*/
|
|
601
|
+
function getSelectedRowCount(table, rowSelection) {
|
|
602
|
+
return getSelectedRows(table, rowSelection).length;
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Check if a specific row is selected
|
|
606
|
+
*/
|
|
607
|
+
function isRowSelected(rowId, rowSelection) {
|
|
608
|
+
return rowSelection[rowId] === true;
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Check if all rows in the table are selected
|
|
612
|
+
*/
|
|
613
|
+
function areAllRowsSelected(table, rowSelection) {
|
|
614
|
+
const rows = table.getRowModel().rows;
|
|
615
|
+
if (rows.length === 0)
|
|
616
|
+
return false;
|
|
617
|
+
return rows.every((row) => isRowSelected(row.id, rowSelection));
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* Check if all rows on the current page are selected
|
|
621
|
+
*/
|
|
622
|
+
function areAllPageRowsSelected(table, rowSelection) {
|
|
623
|
+
const pageRows = table.getRowModel().rows;
|
|
624
|
+
if (pageRows.length === 0)
|
|
625
|
+
return false;
|
|
626
|
+
return pageRows.every((row) => isRowSelected(row.id, rowSelection));
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Create a toggle handler for a specific row
|
|
630
|
+
*/
|
|
631
|
+
function createRowToggleHandler(row, rowSelection, setRowSelection) {
|
|
632
|
+
return () => {
|
|
633
|
+
setRowSelection((old) => {
|
|
634
|
+
const newSelection = { ...old };
|
|
635
|
+
if (newSelection[row.id]) {
|
|
636
|
+
delete newSelection[row.id];
|
|
637
|
+
}
|
|
638
|
+
else {
|
|
639
|
+
newSelection[row.id] = true;
|
|
640
|
+
}
|
|
641
|
+
return newSelection;
|
|
642
|
+
});
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Create a toggle handler for all rows
|
|
647
|
+
*/
|
|
648
|
+
function createToggleAllRowsHandler(table, rowSelection, setRowSelection) {
|
|
649
|
+
return () => {
|
|
650
|
+
const allSelected = areAllRowsSelected(table, rowSelection);
|
|
651
|
+
if (allSelected) {
|
|
652
|
+
// Deselect all
|
|
653
|
+
setRowSelection({});
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
// Select all
|
|
657
|
+
const newSelection = {};
|
|
658
|
+
table.getRowModel().rows.forEach((row) => {
|
|
659
|
+
newSelection[row.id] = true;
|
|
660
|
+
});
|
|
661
|
+
setRowSelection(newSelection);
|
|
662
|
+
}
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Reset row selection (clear all selections)
|
|
667
|
+
*/
|
|
668
|
+
function resetRowSelection(setRowSelection) {
|
|
669
|
+
setRowSelection({});
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Check if a row can be selected (always true for now, can be extended)
|
|
673
|
+
*/
|
|
674
|
+
function canRowSelect(row) {
|
|
675
|
+
return row.getCanSelect?.() ?? true;
|
|
676
|
+
}
|
|
677
|
+
|
|
585
678
|
const ResetSelectionButton = () => {
|
|
586
|
-
const {
|
|
587
|
-
const { tableLabel } = useDataTableContext();
|
|
679
|
+
const { tableLabel, setRowSelection } = useDataTableContext();
|
|
588
680
|
const { resetSelection } = tableLabel;
|
|
589
681
|
return (jsx(Button$1, { onClick: () => {
|
|
590
|
-
|
|
682
|
+
resetRowSelection(setRowSelection);
|
|
591
683
|
}, children: resetSelection }));
|
|
592
684
|
};
|
|
593
685
|
|
|
@@ -2663,20 +2755,20 @@ const GlobalFilter = () => {
|
|
|
2663
2755
|
} }) }) }));
|
|
2664
2756
|
};
|
|
2665
2757
|
|
|
2666
|
-
const SelectAllRowsToggle = ({ selectAllIcon = jsx(MdOutlineChecklist, {}), clearAllIcon = jsx(MdClear, {}), selectAllText =
|
|
2667
|
-
const { table } = useDataTableContext();
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
table.getToggleAllRowsSelectedHandler()(event);
|
|
2672
|
-
}, children: [table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, table.getIsAllRowsSelected() ? clearAllText : selectAllText] }))] }));
|
|
2758
|
+
const SelectAllRowsToggle = ({ selectAllIcon = jsx(MdOutlineChecklist, {}), clearAllIcon = jsx(MdClear, {}), selectAllText = '', clearAllText = '', }) => {
|
|
2759
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
2760
|
+
const allRowsSelected = areAllRowsSelected(table, rowSelection);
|
|
2761
|
+
const toggleHandler = createToggleAllRowsHandler(table, rowSelection, setRowSelection);
|
|
2762
|
+
return (jsxs(Fragment, { children: [!!selectAllText === false && (jsx(IconButton, { variant: 'ghost', "aria-label": allRowsSelected ? clearAllText : selectAllText, onClick: toggleHandler, children: allRowsSelected ? clearAllIcon : selectAllIcon })), !!selectAllText !== false && (jsxs(Button$1, { variant: 'ghost', onClick: toggleHandler, children: [allRowsSelected ? clearAllIcon : selectAllIcon, allRowsSelected ? clearAllText : selectAllText] }))] }));
|
|
2673
2763
|
};
|
|
2674
2764
|
|
|
2675
2765
|
const TableSelector = () => {
|
|
2676
|
-
const { table } = useDataTableContext();
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2766
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
2767
|
+
const selectedCount = getSelectedRowCount(table, rowSelection);
|
|
2768
|
+
const allPageRowsSelected = areAllPageRowsSelected(table, rowSelection);
|
|
2769
|
+
return (jsxs(Fragment, { children: [selectedCount > 0 && (jsxs(Button$1, { onClick: () => { }, variant: 'ghost', display: 'flex', gap: "0.25rem", children: [jsx(Box, { fontSize: 'sm', children: `${selectedCount}` }), jsx(IoMdCheckbox, {})] })), !allPageRowsSelected && jsx(SelectAllRowsToggle, {}), selectedCount > 0 && (jsx(IconButton, { variant: 'ghost', onClick: () => {
|
|
2770
|
+
resetRowSelection(setRowSelection);
|
|
2771
|
+
}, "aria-label": 'reset selection', children: jsx(MdClear, {}) }))] }));
|
|
2680
2772
|
};
|
|
2681
2773
|
|
|
2682
2774
|
const TableFilterTags = () => {
|
|
@@ -2873,7 +2965,7 @@ const Checkbox = React.forwardRef(function Checkbox(props, ref) {
|
|
|
2873
2965
|
});
|
|
2874
2966
|
|
|
2875
2967
|
const TableBody = ({ showSelector = false, canResize = true, }) => {
|
|
2876
|
-
|
|
2968
|
+
'use no memo';
|
|
2877
2969
|
const { table } = useDataTableContext();
|
|
2878
2970
|
const SELECTION_BOX_WIDTH = 20;
|
|
2879
2971
|
const [hoveredRow, setHoveredRow] = useState(-1);
|
|
@@ -2884,9 +2976,9 @@ const TableBody = ({ showSelector = false, canResize = true, }) => {
|
|
|
2884
2976
|
const tdProps = cell.column.getIsPinned()
|
|
2885
2977
|
? {
|
|
2886
2978
|
left: showSelector
|
|
2887
|
-
? `${cell.column.getStart(
|
|
2888
|
-
: `${cell.column.getStart(
|
|
2889
|
-
position:
|
|
2979
|
+
? `${cell.column.getStart('left') + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
|
|
2980
|
+
: `${cell.column.getStart('left')}px`,
|
|
2981
|
+
position: 'relative',
|
|
2890
2982
|
}
|
|
2891
2983
|
: {};
|
|
2892
2984
|
return tdProps;
|
|
@@ -2897,37 +2989,40 @@ const TableBody = ({ showSelector = false, canResize = true, }) => {
|
|
|
2897
2989
|
}
|
|
2898
2990
|
if (hoveredRow === index) {
|
|
2899
2991
|
return {
|
|
2900
|
-
opacity:
|
|
2992
|
+
opacity: '1',
|
|
2901
2993
|
};
|
|
2902
2994
|
}
|
|
2903
2995
|
return {
|
|
2904
|
-
opacity:
|
|
2996
|
+
opacity: '0.8',
|
|
2905
2997
|
};
|
|
2906
2998
|
};
|
|
2907
2999
|
return (jsx(Table$1.Body, { children: table.getRowModel().rows.map((row, index) => {
|
|
2908
|
-
return (jsxs(Table$1.Row, { display:
|
|
3000
|
+
return (jsxs(Table$1.Row, { display: 'flex', zIndex: 1, onMouseEnter: () => handleRowHover(index), onMouseLeave: () => handleRowHover(-1), ...getTrProps({ hoveredRow, index }), children: [showSelector && (jsx(TableRowSelector, { index: index, row: row, hoveredRow: hoveredRow })), row.getVisibleCells().map((cell, index) => {
|
|
2909
3001
|
return (jsx(Table$1.Cell, { padding: `${table.getDensityValue()}px`,
|
|
2910
3002
|
// styling resize and pinning start
|
|
2911
|
-
flex: `${canResize ?
|
|
3003
|
+
flex: `${canResize ? '0' : '1'} 0 ${cell.column.getSize()}px`,
|
|
2912
3004
|
// this is to avoid the cell from being too wide
|
|
2913
3005
|
minWidth: `0`, color: {
|
|
2914
|
-
base:
|
|
2915
|
-
_dark:
|
|
3006
|
+
base: 'colorPalette.900',
|
|
3007
|
+
_dark: 'colorPalette.100',
|
|
2916
3008
|
},
|
|
2917
|
-
bg: { base:
|
|
3009
|
+
bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, ...getTdProps(cell), children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-rowcell-${cell.id}-${index}`));
|
|
2918
3010
|
})] }, `chakra-table-row-${row.id}`));
|
|
2919
3011
|
}) }));
|
|
2920
3012
|
};
|
|
2921
|
-
const TableRowSelector = ({ row
|
|
2922
|
-
const { table } = useDataTableContext();
|
|
3013
|
+
const TableRowSelector = ({ row }) => {
|
|
3014
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
2923
3015
|
const SELECTION_BOX_WIDTH = 20;
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
3016
|
+
const isSelected = isRowSelected(row.id, rowSelection);
|
|
3017
|
+
const canSelect = canRowSelect(row);
|
|
3018
|
+
const toggleHandler = createRowToggleHandler(row, rowSelection, setRowSelection);
|
|
3019
|
+
return (jsx(Table$1.Cell, { padding: `${table.getDensityValue()}px`, display: 'grid', color: {
|
|
3020
|
+
base: 'colorPalette.900',
|
|
3021
|
+
_dark: 'colorPalette.100',
|
|
2927
3022
|
},
|
|
2928
|
-
bg: { base:
|
|
2929
|
-
disabled: !
|
|
2930
|
-
onCheckedChange:
|
|
3023
|
+
bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, justifyItems: 'center', alignItems: 'center', children: jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: isSelected,
|
|
3024
|
+
disabled: !canSelect,
|
|
3025
|
+
onCheckedChange: toggleHandler }) }));
|
|
2931
3026
|
};
|
|
2932
3027
|
|
|
2933
3028
|
const TableCardContainer = ({ children, variant = "", gap = "1rem", gridTemplateColumns = "repeat(auto-fit, minmax(20rem, 1fr))", direction = "row", ...props }) => {
|
|
@@ -2941,16 +3036,16 @@ const DefaultCardTitle = () => {
|
|
|
2941
3036
|
return jsx(Fragment, {});
|
|
2942
3037
|
};
|
|
2943
3038
|
const TableCards = ({ isSelectable = false, showDisplayNameOnly = false, renderTitle = DefaultCardTitle, cardBodyProps = {}, }) => {
|
|
2944
|
-
const { table } = useDataTableContext();
|
|
3039
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
2945
3040
|
return (jsx(Fragment, { children: table.getRowModel().rows.map((row) => {
|
|
2946
|
-
return (jsx(Card.Root, { flex:
|
|
2947
|
-
disabled: !row
|
|
3041
|
+
return (jsx(Card.Root, { flex: '1 0 20rem', children: jsxs(Card.Body, { display: 'flex', flexFlow: 'column', gap: '0.5rem', ...cardBodyProps, children: [isSelectable && (jsx(Checkbox, { isChecked: isRowSelected(row.id, rowSelection),
|
|
3042
|
+
disabled: !canRowSelect(row),
|
|
2948
3043
|
// indeterminate: row.getIsSomeSelected(),
|
|
2949
|
-
onChange: row
|
|
2950
|
-
return (jsxs(Fragment, { children: [jsxs(Box, { children: [showDisplayNameOnly && (jsx(Text, { fontWeight:
|
|
3044
|
+
onChange: createRowToggleHandler(row, rowSelection, setRowSelection) })), renderTitle(row), jsx(Grid, { templateColumns: 'auto 1fr', gap: '1rem', children: row.getVisibleCells().map((cell) => {
|
|
3045
|
+
return (jsxs(Fragment, { children: [jsxs(Box, { children: [showDisplayNameOnly && (jsx(Text, { fontWeight: 'bold', children: cell.column.columnDef.meta?.displayName ??
|
|
2951
3046
|
cell.column.id })), !showDisplayNameOnly && (jsx(Fragment, { children: flexRender(cell.column.columnDef.header,
|
|
2952
3047
|
// @ts-expect-error Assuming the CellContext interface is the same as HeaderContext
|
|
2953
|
-
cell.getContext()) }))] }, `chakra-table-cardcolumnid-${row.id}`), jsx(Box, { justifySelf:
|
|
3048
|
+
cell.getContext()) }))] }, `chakra-table-cardcolumnid-${row.id}`), jsx(Box, { justifySelf: 'end', children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, `chakra-table-cardcolumn-${row.id}`)] }));
|
|
2954
3049
|
}) })] }) }, `chakra-table-card-${row.id}`));
|
|
2955
3050
|
}) }));
|
|
2956
3051
|
};
|
|
@@ -2963,7 +3058,7 @@ const TableComponent = ({ render = () => {
|
|
|
2963
3058
|
};
|
|
2964
3059
|
|
|
2965
3060
|
const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
|
|
2966
|
-
const table = useDataTableContext()
|
|
3061
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
2967
3062
|
const SELECTION_BOX_WIDTH = 20;
|
|
2968
3063
|
const [hoveredCheckBox, setHoveredCheckBox] = useState(false);
|
|
2969
3064
|
const handleRowHover = (isHovered) => {
|
|
@@ -2973,7 +3068,7 @@ const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
|
|
|
2973
3068
|
if (alwaysShowSelector) {
|
|
2974
3069
|
return true;
|
|
2975
3070
|
}
|
|
2976
|
-
if (table
|
|
3071
|
+
if (areAllRowsSelected(table, rowSelection)) {
|
|
2977
3072
|
return true;
|
|
2978
3073
|
}
|
|
2979
3074
|
if (hoveredCheckBox) {
|
|
@@ -2981,22 +3076,22 @@ const TableFooter = ({ showSelector = false, alwaysShowSelector = true, }) => {
|
|
|
2981
3076
|
}
|
|
2982
3077
|
return false;
|
|
2983
3078
|
};
|
|
2984
|
-
return (jsx(Table$1.Footer, { children: table.getFooterGroups().map((footerGroup) => (jsxs(Table$1.Row, { display:
|
|
2985
|
-
// indeterminate: table
|
|
2986
|
-
onChange: table
|
|
3079
|
+
return (jsx(Table$1.Footer, { children: table.getFooterGroups().map((footerGroup) => (jsxs(Table$1.Row, { display: 'flex', children: [showSelector && (jsxs(Table$1.Header, { padding: `${table.getDensityValue()}px`, onMouseEnter: () => handleRowHover(true), onMouseLeave: () => handleRowHover(false), display: 'grid', children: [isCheckBoxVisible() && (jsx(Box, { margin: '0rem', display: 'grid', justifyItems: 'center', alignItems: 'center', children: jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, isChecked: areAllRowsSelected(table, rowSelection),
|
|
3080
|
+
// indeterminate: areSomeRowsSelected(table, rowSelection),
|
|
3081
|
+
onChange: createToggleAllRowsHandler(table, rowSelection, setRowSelection) }) })), !isCheckBoxVisible() && (jsx(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) => (jsx(Table$1.Cell, { padding: '0', columnSpan: `${header.colSpan}`,
|
|
2987
3082
|
// styling resize and pinning start
|
|
2988
|
-
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, display:
|
|
3083
|
+
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, display: 'grid', children: jsx(MenuRoot$1, { children: jsx(MenuTrigger$1, { asChild: true, children: jsx(Box, { padding: `${table.getDensityValue()}px`, display: 'flex', alignItems: 'center', justifyContent: 'start', borderRadius: '0rem', children: jsxs(Flex, { gap: "0.5rem", alignItems: 'center', children: [header.isPlaceholder
|
|
2989
3084
|
? null
|
|
2990
|
-
: flexRender(header.column.columnDef.footer, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && jsx(Fragment, {}), header.column.getIsSorted() ===
|
|
3085
|
+
: flexRender(header.column.columnDef.footer, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && jsx(Fragment, {}), header.column.getIsSorted() === 'asc' && (jsx(BiUpArrow, {})), header.column.getIsSorted() === 'desc' && (jsx(BiDownArrow, {}))] })) })] }) }) }) }) }, `chakra-table-footer-${header.column.id}-${footerGroup.id}`)))] }, `chakra-table-footergroup-${footerGroup.id}`))) }));
|
|
2991
3086
|
};
|
|
2992
3087
|
|
|
2993
3088
|
// Default text values
|
|
2994
3089
|
const DEFAULT_HEADER_TEXTS = {
|
|
2995
|
-
pinColumn:
|
|
2996
|
-
cancelPin:
|
|
2997
|
-
sortAscending:
|
|
2998
|
-
sortDescending:
|
|
2999
|
-
clearSorting:
|
|
3090
|
+
pinColumn: 'Pin Column',
|
|
3091
|
+
cancelPin: 'Cancel Pin',
|
|
3092
|
+
sortAscending: 'Sort Ascending',
|
|
3093
|
+
sortDescending: 'Sort Descending',
|
|
3094
|
+
clearSorting: 'Clear Sorting',
|
|
3000
3095
|
};
|
|
3001
3096
|
/**
|
|
3002
3097
|
* TableHeader component with configurable text strings.
|
|
@@ -3029,7 +3124,7 @@ const DEFAULT_HEADER_TEXTS = {
|
|
|
3029
3124
|
* ];
|
|
3030
3125
|
*/
|
|
3031
3126
|
const TableHeader = ({ canResize = true, showSelector = false, isSticky = true, tableHeaderProps = {}, tableRowProps = {}, defaultTexts = {}, }) => {
|
|
3032
|
-
const { table } = useDataTableContext();
|
|
3127
|
+
const { table, rowSelection, setRowSelection } = useDataTableContext();
|
|
3033
3128
|
const SELECTION_BOX_WIDTH = 20;
|
|
3034
3129
|
// Merge default texts with provided defaults
|
|
3035
3130
|
const mergedDefaultTexts = { ...DEFAULT_HEADER_TEXTS, ...defaultTexts };
|
|
@@ -3042,58 +3137,105 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
|
|
|
3042
3137
|
const thProps = header.column.getIsPinned()
|
|
3043
3138
|
? {
|
|
3044
3139
|
left: showSelector
|
|
3045
|
-
? `${header.getStart(
|
|
3046
|
-
: `${header.getStart(
|
|
3047
|
-
position:
|
|
3140
|
+
? `${header.getStart('left') + SELECTION_BOX_WIDTH + table.getDensityValue() * 2}px`
|
|
3141
|
+
: `${header.getStart('left')}px`,
|
|
3142
|
+
position: 'sticky',
|
|
3048
3143
|
zIndex: 100 + 1,
|
|
3049
3144
|
}
|
|
3050
3145
|
: {};
|
|
3051
3146
|
return thProps;
|
|
3052
3147
|
};
|
|
3053
3148
|
const stickyProps = {
|
|
3054
|
-
position:
|
|
3149
|
+
position: 'sticky',
|
|
3055
3150
|
top: 0,
|
|
3056
3151
|
};
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3152
|
+
const handleAutoSize = (header, event) => {
|
|
3153
|
+
const headerElement = event.currentTarget.closest('th');
|
|
3154
|
+
if (!headerElement)
|
|
3155
|
+
return;
|
|
3156
|
+
// Find the table container
|
|
3157
|
+
const tableContainer = headerElement.closest('[role="table"]') ||
|
|
3158
|
+
headerElement.closest('table') ||
|
|
3159
|
+
headerElement.closest('div');
|
|
3160
|
+
if (!tableContainer)
|
|
3161
|
+
return;
|
|
3162
|
+
// Calculate the actual column index accounting for selector column
|
|
3163
|
+
const columnIndex = header.index;
|
|
3164
|
+
const actualColumnIndex = showSelector ? columnIndex + 1 : columnIndex;
|
|
3165
|
+
// Get all rows (header and body) - Chakra UI Table uses flex layout
|
|
3166
|
+
const rows = Array.from(tableContainer.querySelectorAll('[role="row"], tr'));
|
|
3167
|
+
let maxWidth = 0;
|
|
3168
|
+
// Measure all cells in this column
|
|
3169
|
+
rows.forEach((row) => {
|
|
3170
|
+
// Get all cells in the row (td, th, or Chakra Table.Cell/Table.ColumnHeader)
|
|
3171
|
+
const cells = Array.from(row.children);
|
|
3172
|
+
const cell = cells[actualColumnIndex];
|
|
3173
|
+
if (cell) {
|
|
3174
|
+
// Create a temporary clone to measure content without constraints
|
|
3175
|
+
const clone = cell.cloneNode(true);
|
|
3176
|
+
clone.style.position = 'absolute';
|
|
3177
|
+
clone.style.visibility = 'hidden';
|
|
3178
|
+
clone.style.width = 'auto';
|
|
3179
|
+
clone.style.maxWidth = 'none';
|
|
3180
|
+
clone.style.whiteSpace = 'nowrap';
|
|
3181
|
+
clone.style.flex = 'none';
|
|
3182
|
+
document.body.appendChild(clone);
|
|
3183
|
+
const width = clone.scrollWidth;
|
|
3184
|
+
maxWidth = Math.max(maxWidth, width);
|
|
3185
|
+
document.body.removeChild(clone);
|
|
3186
|
+
}
|
|
3187
|
+
});
|
|
3188
|
+
// Add padding for better UX (density padding + some extra space)
|
|
3189
|
+
const padding = table.getDensityValue() * 2 + 4;
|
|
3190
|
+
const minSize = header.column.columnDef.minSize || 10;
|
|
3191
|
+
const finalWidth = Math.max(maxWidth + padding, minSize);
|
|
3192
|
+
// Set the column size - setSize exists on column but may not be fully typed in @tanstack/react-table
|
|
3193
|
+
console.log('finalWidth', finalWidth);
|
|
3194
|
+
table.setColumnSizing((current) => ({
|
|
3195
|
+
...current,
|
|
3196
|
+
[header.id]: finalWidth,
|
|
3197
|
+
}));
|
|
3198
|
+
};
|
|
3199
|
+
return (jsx(Table$1.Header, { ...(isSticky ? stickyProps : {}), bgColor: 'transparent', ...tableHeaderProps, children: table.getHeaderGroups().map((headerGroup) => (jsxs(Table$1.Row, { display: 'flex', bgColor: 'transparent', ...tableRowProps, children: [showSelector && (jsx(Table$1.ColumnHeader, { padding: `${table.getDensityValue()}px`, display: 'grid', color: {
|
|
3200
|
+
base: 'colorPalette.900',
|
|
3201
|
+
_dark: 'colorPalette.100',
|
|
3060
3202
|
},
|
|
3061
|
-
bg: { base:
|
|
3062
|
-
// indeterminate: table
|
|
3063
|
-
onChange: table
|
|
3203
|
+
bg: { base: 'colorPalette.50', _dark: 'colorPalette.950' }, justifyItems: 'center', alignItems: 'center', children: jsx(Checkbox, { width: `${SELECTION_BOX_WIDTH}px`, height: `${SELECTION_BOX_WIDTH}px`, checked: areAllRowsSelected(table, rowSelection),
|
|
3204
|
+
// indeterminate: areSomeRowsSelected(table, rowSelection),
|
|
3205
|
+
onChange: createToggleAllRowsHandler(table, rowSelection, setRowSelection) }) })), headerGroup.headers.map((header) => {
|
|
3064
3206
|
const resizeProps = {
|
|
3065
3207
|
onMouseDown: header.getResizeHandler(),
|
|
3066
3208
|
onTouchStart: header.getResizeHandler(),
|
|
3067
|
-
cursor:
|
|
3209
|
+
cursor: 'col-resize',
|
|
3068
3210
|
};
|
|
3069
3211
|
return (jsxs(Table$1.ColumnHeader, { padding: 0, columnSpan: `${header.colSpan}`,
|
|
3070
3212
|
// styling resize and pinning start
|
|
3071
|
-
flex: `${canResize ?
|
|
3072
|
-
base:
|
|
3073
|
-
_dark:
|
|
3213
|
+
flex: `${canResize ? '0' : '1'} 0 ${header.column.getSize()}px`, display: 'grid', gridTemplateColumns: '1fr auto', zIndex: 1500 + header.index, color: {
|
|
3214
|
+
base: 'colorPalette.800',
|
|
3215
|
+
_dark: 'colorPalette.200',
|
|
3074
3216
|
},
|
|
3075
|
-
bg: { base:
|
|
3076
|
-
base:
|
|
3077
|
-
_dark:
|
|
3217
|
+
bg: { base: 'colorPalette.100', _dark: 'colorPalette.900' }, ...getThProps(header), children: [jsxs(MenuRoot, { children: [jsx(MenuTrigger, { asChild: true, children: jsx(Flex, { padding: `${table.getDensityValue()}px`, alignItems: 'center', justifyContent: 'start', borderRadius: '0rem', overflow: 'auto', color: {
|
|
3218
|
+
base: 'colorPalette.800',
|
|
3219
|
+
_dark: 'colorPalette.200',
|
|
3078
3220
|
_hover: {
|
|
3079
|
-
base:
|
|
3080
|
-
_dark:
|
|
3221
|
+
base: 'colorPalette.700',
|
|
3222
|
+
_dark: 'colorPalette.300',
|
|
3081
3223
|
},
|
|
3082
3224
|
},
|
|
3083
3225
|
bg: {
|
|
3084
|
-
base:
|
|
3085
|
-
_dark:
|
|
3226
|
+
base: 'colorPalette.100',
|
|
3227
|
+
_dark: 'colorPalette.900',
|
|
3086
3228
|
_hover: {
|
|
3087
|
-
base:
|
|
3088
|
-
_dark:
|
|
3229
|
+
base: 'colorPalette.200',
|
|
3230
|
+
_dark: 'colorPalette.800',
|
|
3089
3231
|
},
|
|
3090
|
-
}, children: jsxs(Flex, { gap: "0.5rem", alignItems:
|
|
3232
|
+
}, children: jsxs(Flex, { gap: "0.5rem", alignItems: 'center', children: [header.isPlaceholder
|
|
3091
3233
|
? null
|
|
3092
|
-
: flexRender(header.column.columnDef.header, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && jsx(Fragment, {}), header.column.getIsSorted() ===
|
|
3093
|
-
header.column.pin(
|
|
3094
|
-
}, children: [jsx(MdPushPin, {}), getHeaderText(header,
|
|
3234
|
+
: flexRender(header.column.columnDef.header, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && jsx(Fragment, {}), header.column.getIsSorted() === 'asc' && (jsx(BiUpArrow, {})), header.column.getIsSorted() === 'desc' && (jsx(BiDownArrow, {}))] })) }), jsx(Box, { children: header.column.getIsFiltered() && jsx(MdFilterListAlt, {}) })] }) }) }), jsxs(MenuContent, { children: [!header.column.getIsPinned() && (jsx(MenuItem, { asChild: true, value: "pin-column", children: jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
3235
|
+
header.column.pin('left');
|
|
3236
|
+
}, children: [jsx(MdPushPin, {}), getHeaderText(header, 'pinColumn')] }) })), header.column.getIsPinned() && (jsx(MenuItem, { asChild: true, value: "cancel-pin", children: jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
3095
3237
|
header.column.pin(false);
|
|
3096
|
-
}, children: [jsx(MdCancel, {}), getHeaderText(header,
|
|
3238
|
+
}, children: [jsx(MdCancel, {}), getHeaderText(header, 'cancelPin')] }) })), header.column.getCanSort() && (jsxs(Fragment, { children: [jsx(MenuItem, { asChild: true, value: "sort-ascend", children: jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
3097
3239
|
table.setSorting((state) => {
|
|
3098
3240
|
return [
|
|
3099
3241
|
...state.filter((column) => {
|
|
@@ -3102,7 +3244,7 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
|
|
|
3102
3244
|
{ id: header.id, desc: false },
|
|
3103
3245
|
];
|
|
3104
3246
|
});
|
|
3105
|
-
}, children: [jsx(GrAscend, {}), getHeaderText(header,
|
|
3247
|
+
}, children: [jsx(GrAscend, {}), getHeaderText(header, 'sortAscending')] }) }), jsx(MenuItem, { asChild: true, value: "sort-descend", children: jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
3106
3248
|
table.setSorting((state) => {
|
|
3107
3249
|
return [
|
|
3108
3250
|
...state.filter((column) => {
|
|
@@ -3111,14 +3253,16 @@ const TableHeader = ({ canResize = true, showSelector = false, isSticky = true,
|
|
|
3111
3253
|
{ id: header.id, desc: true },
|
|
3112
3254
|
];
|
|
3113
3255
|
});
|
|
3114
|
-
}, children: [jsx(GrDescend, {}), getHeaderText(header,
|
|
3256
|
+
}, children: [jsx(GrDescend, {}), getHeaderText(header, 'sortDescending')] }) }), header.column.getIsSorted() && (jsx(MenuItem, { asChild: true, value: "clear-sorting", children: jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
3115
3257
|
header.column.clearSorting();
|
|
3116
|
-
}, children: [jsx(MdClear, {}), getHeaderText(header,
|
|
3117
|
-
?
|
|
3118
|
-
:
|
|
3258
|
+
}, children: [jsx(MdClear, {}), getHeaderText(header, 'clearSorting')] }) }))] }))] })] }), canResize && (jsx(Box, { borderRight: '0.2rem solid', borderRightColor: header.column.getIsResizing()
|
|
3259
|
+
? 'colorPalette.700'
|
|
3260
|
+
: 'transparent', position: 'relative', right: '0.1rem', width: '2px', height: '100%', userSelect: 'none', style: { touchAction: 'none' }, _hover: {
|
|
3119
3261
|
borderRightColor: header.column.getIsResizing()
|
|
3120
|
-
?
|
|
3121
|
-
:
|
|
3262
|
+
? 'colorPalette.700'
|
|
3263
|
+
: 'colorPalette.400',
|
|
3264
|
+
}, onDoubleClick: (e) => {
|
|
3265
|
+
handleAutoSize(header, e);
|
|
3122
3266
|
}, ...resizeProps }))] }, `chakra-table-header-${header.id}`));
|
|
3123
3267
|
})] }, `chakra-table-headergroup-${headerGroup.id}`))) }));
|
|
3124
3268
|
};
|
|
@@ -3607,7 +3751,7 @@ const FormRoot = ({ schema, idMap, setIdMap, form, serverUrl, translate, childre
|
|
|
3607
3751
|
showSubmitButton: true,
|
|
3608
3752
|
showResetButton: true,
|
|
3609
3753
|
showTitle: true,
|
|
3610
|
-
}, requireConfirmation = false, dateTimePickerLabels, idPickerLabels, enumPickerLabels, filePickerLabels,
|
|
3754
|
+
}, requireConfirmation = false, dateTimePickerLabels, idPickerLabels, enumPickerLabels, filePickerLabels, insideDialog = false, }) => {
|
|
3611
3755
|
const [isSuccess, setIsSuccess] = useState(false);
|
|
3612
3756
|
const [isError, setIsError] = useState(false);
|
|
3613
3757
|
const [isSubmiting, setIsSubmiting] = useState(false);
|
|
@@ -3698,7 +3842,7 @@ const FormRoot = ({ schema, idMap, setIdMap, form, serverUrl, translate, childre
|
|
|
3698
3842
|
enumPickerLabels,
|
|
3699
3843
|
filePickerLabels,
|
|
3700
3844
|
ajvResolver: ajvResolver(schema),
|
|
3701
|
-
|
|
3845
|
+
insideDialog,
|
|
3702
3846
|
}, children: jsx(FormProvider, { ...form, children: children }) }));
|
|
3703
3847
|
};
|
|
3704
3848
|
|
|
@@ -4159,7 +4303,7 @@ const DateRangePicker = ({ column, schema, prefix, }) => {
|
|
|
4159
4303
|
|
|
4160
4304
|
const EnumPicker = ({ column, isMultiple = false, schema, prefix, showTotalAndLimit = false, }) => {
|
|
4161
4305
|
const { watch, formState: { errors }, setValue, } = useFormContext();
|
|
4162
|
-
const { enumPickerLabels,
|
|
4306
|
+
const { enumPickerLabels, insideDialog } = useSchemaContext();
|
|
4163
4307
|
const formI18n = useFormI18n(column, prefix);
|
|
4164
4308
|
const { required, variant } = schema;
|
|
4165
4309
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
@@ -4228,11 +4372,11 @@ const EnumPicker = ({ column, isMultiple = false, schema, prefix, showTotalAndLi
|
|
|
4228
4372
|
}, children: !!renderDisplay === true
|
|
4229
4373
|
? renderDisplay(enumValue)
|
|
4230
4374
|
: formI18n.t(enumValue) }, enumValue));
|
|
4231
|
-
}) })), jsxs(Combobox.Root, { collection: collection, value: currentValue, onValueChange: handleValueChange, onInputValueChange: handleInputValueChange, multiple: isMultiple, closeOnSelect: !isMultiple, openOnClick: true, invalid: !!errors[colLabel], width: "100%", positioning:
|
|
4375
|
+
}) })), jsxs(Combobox.Root, { collection: collection, value: currentValue, onValueChange: handleValueChange, onInputValueChange: handleInputValueChange, multiple: isMultiple, closeOnSelect: !isMultiple, openOnClick: true, invalid: !!errors[colLabel], width: "100%", positioning: insideDialog
|
|
4232
4376
|
? { strategy: 'fixed', hideWhenDetached: true }
|
|
4233
4377
|
: undefined, children: [jsxs(Combobox.Control, { children: [jsx(Combobox.Input, { placeholder: enumPickerLabels?.typeToSearch ?? formI18n.t('type_to_search') }), jsxs(Combobox.IndicatorGroup, { children: [!isMultiple && currentValue.length > 0 && (jsx(Combobox.ClearTrigger, { onClick: () => {
|
|
4234
4378
|
setValue(colLabel, '');
|
|
4235
|
-
} })), jsx(Combobox.Trigger, {})] })] }),
|
|
4379
|
+
} })), jsx(Combobox.Trigger, {})] })] }), insideDialog ? (jsx(Combobox.Positioner, { children: jsxs(Combobox.Content, { children: [showTotalAndLimit && (jsx(Text, { p: 2, fontSize: "sm", color: "fg.muted", children: `${enumPickerLabels?.total ?? formI18n.t('total')}: ${collection.items.length}` })), collection.items.length === 0 ? (jsx(Combobox.Empty, { children: enumPickerLabels?.emptySearchResult ??
|
|
4236
4380
|
formI18n.t('empty_search_result') })) : (jsx(Fragment, { children: collection.items.map((item, index) => (jsxs(Combobox.Item, { item: item, children: [jsx(Combobox.ItemText, { children: item.label }), jsx(Combobox.ItemIndicator, {})] }, item.value ?? `item-${index}`))) }))] }) })) : (jsx(Portal, { children: jsx(Combobox.Positioner, { children: jsxs(Combobox.Content, { children: [showTotalAndLimit && (jsx(Text, { p: 2, fontSize: "sm", color: "fg.muted", children: `${enumPickerLabels?.total ?? formI18n.t('total')}: ${collection.items.length}` })), collection.items.length === 0 ? (jsx(Combobox.Empty, { children: enumPickerLabels?.emptySearchResult ??
|
|
4237
4381
|
formI18n.t('empty_search_result') })) : (jsx(Fragment, { children: collection.items.map((item, index) => (jsxs(Combobox.Item, { item: item, children: [jsx(Combobox.ItemText, { children: item.label }), jsx(Combobox.ItemIndicator, {})] }, item.value ?? `item-${index}`))) }))] }) }) }))] })] }));
|
|
4238
4382
|
};
|
|
@@ -5023,7 +5167,7 @@ const getTableData = async ({ serverUrl, in_table, searching = "", where = [], l
|
|
|
5023
5167
|
|
|
5024
5168
|
const IdPicker = ({ column, schema, prefix, isMultiple = false, }) => {
|
|
5025
5169
|
const { watch, getValues, formState: { errors }, setValue, } = useFormContext();
|
|
5026
|
-
const { serverUrl, idMap, setIdMap,
|
|
5170
|
+
const { serverUrl, idMap, setIdMap, idPickerLabels, insideDialog } = useSchemaContext();
|
|
5027
5171
|
const formI18n = useFormI18n(column, prefix);
|
|
5028
5172
|
const { required, gridColumn = 'span 12', gridRow = 'span 1', renderDisplay, foreign_key, } = schema;
|
|
5029
5173
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
@@ -5100,60 +5244,6 @@ const IdPicker = ({ column, schema, prefix, isMultiple = false, }) => {
|
|
|
5100
5244
|
enabled: true, // Always enabled for combobox
|
|
5101
5245
|
staleTime: 300000,
|
|
5102
5246
|
});
|
|
5103
|
-
// Query for currently selected items (to display them properly)
|
|
5104
|
-
// This query is needed for side effects (populating idMap) even though the result isn't directly used
|
|
5105
|
-
useQuery({
|
|
5106
|
-
queryKey: [
|
|
5107
|
-
`idpicker-default`,
|
|
5108
|
-
{
|
|
5109
|
-
form: parentSchema.title,
|
|
5110
|
-
column,
|
|
5111
|
-
id: isMultiple ? currentIds : currentId,
|
|
5112
|
-
},
|
|
5113
|
-
],
|
|
5114
|
-
queryFn: async () => {
|
|
5115
|
-
const queryId = currentId;
|
|
5116
|
-
const queryIds = currentIds;
|
|
5117
|
-
if (customQueryFn) {
|
|
5118
|
-
const { data, idMap } = await customQueryFn({
|
|
5119
|
-
searching: '',
|
|
5120
|
-
limit: isMultiple ? queryIds.length : 1,
|
|
5121
|
-
offset: 0,
|
|
5122
|
-
where: [{ id: column_ref, value: isMultiple ? queryIds : queryId }],
|
|
5123
|
-
});
|
|
5124
|
-
setIdMap((state) => {
|
|
5125
|
-
return { ...state, ...idMap };
|
|
5126
|
-
});
|
|
5127
|
-
return data;
|
|
5128
|
-
}
|
|
5129
|
-
if (!queryId && (!queryIds || queryIds.length === 0)) {
|
|
5130
|
-
return { data: [] };
|
|
5131
|
-
}
|
|
5132
|
-
const data = await getTableData({
|
|
5133
|
-
serverUrl,
|
|
5134
|
-
searching: '',
|
|
5135
|
-
in_table: table,
|
|
5136
|
-
where: [{ id: column_ref, value: isMultiple ? queryIds : queryId }],
|
|
5137
|
-
limit: isMultiple ? queryIds.length : 1,
|
|
5138
|
-
offset: 0,
|
|
5139
|
-
});
|
|
5140
|
-
const newMap = Object.fromEntries((data ?? { data: [] }).data.map((item) => {
|
|
5141
|
-
return [
|
|
5142
|
-
item[column_ref],
|
|
5143
|
-
{
|
|
5144
|
-
...item,
|
|
5145
|
-
},
|
|
5146
|
-
];
|
|
5147
|
-
}));
|
|
5148
|
-
setIdMap((state) => {
|
|
5149
|
-
return { ...state, ...newMap };
|
|
5150
|
-
});
|
|
5151
|
-
return data;
|
|
5152
|
-
},
|
|
5153
|
-
enabled: isMultiple
|
|
5154
|
-
? Array.isArray(currentIds) && currentIds.length > 0
|
|
5155
|
-
: !!currentId,
|
|
5156
|
-
});
|
|
5157
5247
|
const { isLoading, isFetching, data, isPending, isError } = query;
|
|
5158
5248
|
const dataList = data?.data ?? [];
|
|
5159
5249
|
// Check if we're currently searching (user typed but debounce hasn't fired yet)
|
|
@@ -5216,11 +5306,11 @@ const IdPicker = ({ column, schema, prefix, isMultiple = false, }) => {
|
|
|
5216
5306
|
}, children: !!renderDisplay === true
|
|
5217
5307
|
? renderDisplay(item)
|
|
5218
5308
|
: item[display_column] }, id));
|
|
5219
|
-
}) })), jsxs(Combobox.Root, { collection: collection, value: currentValue, onValueChange: handleValueChange, onInputValueChange: handleInputValueChange, multiple: isMultiple, closeOnSelect: !isMultiple, openOnClick: true, invalid: !!errors[colLabel], width: "100%", positioning:
|
|
5309
|
+
}) })), jsxs(Combobox.Root, { collection: collection, value: currentValue, onValueChange: handleValueChange, onInputValueChange: handleInputValueChange, multiple: isMultiple, closeOnSelect: !isMultiple, openOnClick: true, invalid: !!errors[colLabel], width: "100%", positioning: insideDialog
|
|
5220
5310
|
? { strategy: 'fixed', hideWhenDetached: true }
|
|
5221
5311
|
: undefined, children: [jsxs(Combobox.Control, { children: [jsx(Combobox.Input, { placeholder: idPickerLabels?.typeToSearch ?? formI18n.t('type_to_search') }), jsxs(Combobox.IndicatorGroup, { children: [(isFetching || isLoading || isPending) && jsx(Spinner, { size: "xs" }), isError && (jsx(Icon, { color: "fg.error", children: jsx(BiError, {}) })), !isMultiple && currentValue.length > 0 && (jsx(Combobox.ClearTrigger, { onClick: () => {
|
|
5222
5312
|
setValue(colLabel, '');
|
|
5223
|
-
} })), jsx(Combobox.Trigger, {})] })] }),
|
|
5313
|
+
} })), jsx(Combobox.Trigger, {})] })] }), insideDialog ? (jsx(Combobox.Positioner, { children: jsx(Combobox.Content, { children: isError ? (jsx(Text, { p: 2, color: "fg.error", fontSize: "sm", children: formI18n.t('loading_failed') })) : isFetching || isLoading || isPending || isSearching ? (
|
|
5224
5314
|
// Show skeleton items to prevent UI shift
|
|
5225
5315
|
jsx(Fragment, { children: Array.from({ length: 5 }).map((_, index) => (jsx(Flex, { p: 2, align: "center", gap: 2, children: jsx(Skeleton, { height: "20px", flex: "1" }) }, `skeleton-${index}`))) })) : collection.items.length === 0 ? (jsx(Combobox.Empty, { children: searchText
|
|
5226
5316
|
? idPickerLabels?.emptySearchResult ??
|
|
@@ -7263,7 +7353,7 @@ const DensityFeature = {
|
|
|
7263
7353
|
// define the new feature's initial state
|
|
7264
7354
|
getInitialState: (state) => {
|
|
7265
7355
|
return {
|
|
7266
|
-
density:
|
|
7356
|
+
density: 'sm',
|
|
7267
7357
|
...state,
|
|
7268
7358
|
};
|
|
7269
7359
|
},
|
|
@@ -7271,7 +7361,7 @@ const DensityFeature = {
|
|
|
7271
7361
|
getDefaultOptions: (table) => {
|
|
7272
7362
|
return {
|
|
7273
7363
|
enableDensity: true,
|
|
7274
|
-
onDensityChange: makeStateUpdater(
|
|
7364
|
+
onDensityChange: makeStateUpdater('density', table),
|
|
7275
7365
|
};
|
|
7276
7366
|
},
|
|
7277
7367
|
// if you need to add a default column definition...
|
|
@@ -7291,13 +7381,16 @@ const DensityFeature = {
|
|
|
7291
7381
|
table.setDensity((old) => {
|
|
7292
7382
|
if (value)
|
|
7293
7383
|
return value;
|
|
7294
|
-
if (old ===
|
|
7295
|
-
return
|
|
7384
|
+
if (old === 'xs') {
|
|
7385
|
+
return 'sm';
|
|
7386
|
+
}
|
|
7387
|
+
if (old === 'sm') {
|
|
7388
|
+
return 'md';
|
|
7296
7389
|
}
|
|
7297
|
-
if (old ===
|
|
7298
|
-
return
|
|
7390
|
+
if (old === 'md') {
|
|
7391
|
+
return 'lg';
|
|
7299
7392
|
}
|
|
7300
|
-
return
|
|
7393
|
+
return 'xs';
|
|
7301
7394
|
});
|
|
7302
7395
|
};
|
|
7303
7396
|
table.getDensityValue = (value) => {
|
|
@@ -7308,13 +7401,16 @@ const DensityFeature = {
|
|
|
7308
7401
|
else {
|
|
7309
7402
|
density = table.getState().density;
|
|
7310
7403
|
}
|
|
7311
|
-
if (density ===
|
|
7312
|
-
return
|
|
7404
|
+
if (density === 'xs') {
|
|
7405
|
+
return 2;
|
|
7406
|
+
}
|
|
7407
|
+
if (density === 'sm') {
|
|
7408
|
+
return 4;
|
|
7313
7409
|
}
|
|
7314
|
-
if (density ===
|
|
7315
|
-
return
|
|
7410
|
+
if (density === 'md') {
|
|
7411
|
+
return 8;
|
|
7316
7412
|
}
|
|
7317
|
-
return
|
|
7413
|
+
return 12;
|
|
7318
7414
|
};
|
|
7319
7415
|
},
|
|
7320
7416
|
// if you need to add row instance APIs...
|
|
@@ -7539,4 +7635,4 @@ function DataTableServer({ columns, enableRowSelection = true, enableMultiRowSel
|
|
|
7539
7635
|
}, children: jsx(DataTableServerContext.Provider, { value: { url, query }, children: children }) }));
|
|
7540
7636
|
}
|
|
7541
7637
|
|
|
7542
|
-
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultForm, DefaultTable, DefaultTableServer, DensityToggleButton, EditSortingButton, EmptyState, ErrorAlert, FilterDialog, FormBody, FormRoot, FormTitle, GlobalFilter, MediaLibraryBrowser, PageSizeControl, Pagination, RecordDisplay, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableDataDisplay, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableSelector, TableSorter, TableViewer, TextCell, ViewDialog, buildErrorMessages, buildFieldErrors, buildRequiredErrors, convertToAjvErrorsFormat, createErrorMessage, getColumns, getMultiDates, getRangeDates, idPickerSanityCheck, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
|
|
7638
|
+
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultForm, DefaultTable, DefaultTableServer, DensityToggleButton, EditSortingButton, EmptyState, ErrorAlert, FilterDialog, FormBody, FormRoot, FormTitle, GlobalFilter, MediaLibraryBrowser, PageSizeControl, Pagination, RecordDisplay, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, SelectAllRowsToggle, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableDataDisplay, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableSelector, TableSorter, TableViewer, TextCell, ViewDialog, buildErrorMessages, buildFieldErrors, buildRequiredErrors, convertToAjvErrorsFormat, createErrorMessage, getColumns, getMultiDates, getRangeDates, idPickerSanityCheck, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
|