@paubox/ui 3.5.0 → 4.0.0
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/index.esm.js +30 -15
- package/package.json +1 -1
- package/src/lib/Table/Table.d.ts +32 -4
- package/src/lib/Table/TableBody.d.ts +2 -2
- package/src/lib/Table/TableHeader.d.ts +2 -2
package/index.esm.js
CHANGED
|
@@ -36210,7 +36210,7 @@ var ResizeHandleContainer = styled.div(_templateObject3$3());
|
|
|
36210
36210
|
var ResizeHandle = styled.div(_templateObject4$3(), neutral300$1);
|
|
36211
36211
|
var SortIcon = styled.span(_templateObject5$2(), spacing(1));
|
|
36212
36212
|
var TableHeader = function(param) {
|
|
36213
|
-
var table = param.table, disableControls = param.disableControls, dense = param.dense,
|
|
36213
|
+
var table = param.table, disableControls = param.disableControls, dense = param.dense, tableId = param.tableId;
|
|
36214
36214
|
return /*#__PURE__*/ jsx(StyledHeader, {
|
|
36215
36215
|
children: table.getHeaderGroups().map(function(headerGroup) {
|
|
36216
36216
|
return /*#__PURE__*/ jsx("tr", {
|
|
@@ -36244,7 +36244,7 @@ var TableHeader = function(param) {
|
|
|
36244
36244
|
cursor: header.column.getCanSort() ? 'pointer' : 'default',
|
|
36245
36245
|
justifyContent: justifyContent
|
|
36246
36246
|
},
|
|
36247
|
-
"data-testid": header.column.getCanSort() ? "".concat(
|
|
36247
|
+
"data-testid": header.column.getCanSort() ? "".concat(tableId, "-column-header-").concat(formatForId(header.id), "-sort-button") : undefined,
|
|
36248
36248
|
children: [
|
|
36249
36249
|
flexRender(header.column.columnDef.header, header.getContext()),
|
|
36250
36250
|
header.column.getCanSort() && /*#__PURE__*/ jsxs(SortIcon, {
|
|
@@ -36406,7 +36406,7 @@ var ClampWrapper = styled.div(_templateObject8(), function(props) {
|
|
|
36406
36406
|
return props.maxLines;
|
|
36407
36407
|
});
|
|
36408
36408
|
var TableBody = function(param) {
|
|
36409
|
-
var table = param.table, enableRowSelection = param.enableRowSelection, onRowClick = param.onRowClick, getRowDisabled = param.getRowDisabled, dense = param.dense,
|
|
36409
|
+
var table = param.table, enableRowSelection = param.enableRowSelection, onRowClick = param.onRowClick, getRowDisabled = param.getRowDisabled, dense = param.dense, tableId = param.tableId;
|
|
36410
36410
|
return /*#__PURE__*/ jsx(StyledTableBody, {
|
|
36411
36411
|
children: table.getRowModel().rows.map(function(row) {
|
|
36412
36412
|
var rowClickEnabled = enableRowSelection || !!onRowClick;
|
|
@@ -36422,7 +36422,7 @@ var TableBody = function(param) {
|
|
|
36422
36422
|
cursor: rowClickEnabled ? isDisabled ? 'not-allowed' : 'pointer' : undefined
|
|
36423
36423
|
},
|
|
36424
36424
|
enableHover: rowClickEnabled,
|
|
36425
|
-
"data-testid": "".concat(
|
|
36425
|
+
"data-testid": "".concat(tableId, "-row-").concat(row.id),
|
|
36426
36426
|
children: row.getVisibleCells().map(function(cell) {
|
|
36427
36427
|
var cellValue = cell.getValue();
|
|
36428
36428
|
var columnDef = cell.column.columnDef;
|
|
@@ -36698,11 +36698,25 @@ var BottomBar = styled.div(_templateObject3$1(), spacing(2));
|
|
|
36698
36698
|
var TopBarElement = styled.div(_templateObject4$1(), spacing(1));
|
|
36699
36699
|
var ContextMenuButton = styled(Button)(_templateObject5(), spacing(0.5));
|
|
36700
36700
|
var Table = function(param) {
|
|
36701
|
-
var columns = param.columns, _param_data = param.data, data = _param_data === void 0 ? [] : _param_data, getRowId = param.getRowId, _param_isLoading = param.isLoading, isLoading = _param_isLoading === void 0 ? false : _param_isLoading, _param_paginationMode = param.paginationMode, paginationMode = _param_paginationMode === void 0 ? 'page' : _param_paginationMode, pageInfo = param.pageInfo, subText = param.subText, onPageSizeChange = param.onPageSizeChange, pageSizeOptions = param.pageSizeOptions, onPageChange = param.onPageChange, sortBy = param.sortBy, sortOrder = param.sortOrder, onSortChange = param.onSortChange, _param_enableRowSelection = param.enableRowSelection, enableRowSelection = _param_enableRowSelection === void 0 ? false : _param_enableRowSelection, _param_selectedRows = param.selectedRows, selectedRows = _param_selectedRows === void 0 ? {} : _param_selectedRows, onRowSelectionChange = param.onRowSelectionChange, getRowDisabled = param.getRowDisabled, onRowClick = param.onRowClick, contextMenuActions = param.contextMenuActions, _param_dense = param.dense, dense = _param_dense === void 0 ? false : _param_dense, height = param.height, containerStyle = param.containerStyle, error = param.error,
|
|
36701
|
+
var columns = param.columns, _param_data = param.data, data = _param_data === void 0 ? [] : _param_data, getRowId = param.getRowId, _param_isLoading = param.isLoading, isLoading = _param_isLoading === void 0 ? false : _param_isLoading, _param_paginationMode = param.paginationMode, paginationMode = _param_paginationMode === void 0 ? 'page' : _param_paginationMode, pageInfo = param.pageInfo, subText = param.subText, onPageSizeChange = param.onPageSizeChange, pageSizeOptions = param.pageSizeOptions, onPageChange = param.onPageChange, sortBy = param.sortBy, sortOrder = param.sortOrder, onSortChange = param.onSortChange, columnSizingProp = param.columnSizing, onColumnSizingChange = param.onColumnSizingChange, _param_enableRowSelection = param.enableRowSelection, enableRowSelection = _param_enableRowSelection === void 0 ? false : _param_enableRowSelection, _param_selectedRows = param.selectedRows, selectedRows = _param_selectedRows === void 0 ? {} : _param_selectedRows, onRowSelectionChange = param.onRowSelectionChange, getRowDisabled = param.getRowDisabled, onRowClick = param.onRowClick, contextMenuActions = param.contextMenuActions, _param_dense = param.dense, dense = _param_dense === void 0 ? false : _param_dense, height = param.height, containerStyle = param.containerStyle, error = param.error, tableId = param.tableId, toolbar = param.toolbar;
|
|
36702
36702
|
var containerRef = useRef(null);
|
|
36703
36703
|
var ctxMenuAnchorRef = useRef(null);
|
|
36704
|
-
|
|
36704
|
+
// Column widths support both controlled (consumer passes `columnSizing` +
|
|
36705
|
+
// `onColumnSizingChange`, e.g. to persist them) and uncontrolled (internal
|
|
36706
|
+
// state) modes.
|
|
36707
|
+
var _useState = _sliced_to_array$1(useState({}), 2), internalColumnSizing = _useState[0], setInternalColumnSizing = _useState[1];
|
|
36708
|
+
var isSizingControlled = columnSizingProp !== undefined;
|
|
36709
|
+
var columnSizing = isSizingControlled ? columnSizingProp : internalColumnSizing;
|
|
36705
36710
|
var _useState1 = _sliced_to_array$1(useState(null), 2), ctxMenuRow = _useState1[0], setCtxMenuRow = _useState1[1];
|
|
36711
|
+
var handleColumnSizingChange = useCallback(function(updater) {
|
|
36712
|
+
var next = typeof updater === 'function' ? updater(columnSizing) : updater;
|
|
36713
|
+
if (!isSizingControlled) setInternalColumnSizing(next);
|
|
36714
|
+
onColumnSizingChange === null || onColumnSizingChange === void 0 ? void 0 : onColumnSizingChange(next);
|
|
36715
|
+
}, [
|
|
36716
|
+
columnSizing,
|
|
36717
|
+
isSizingControlled,
|
|
36718
|
+
onColumnSizingChange
|
|
36719
|
+
]);
|
|
36706
36720
|
var disableControls = isLoading || !(data === null || data === void 0 ? void 0 : data.length) || !!error;
|
|
36707
36721
|
var hasSomePageProps = !!(pageInfo || onPageSizeChange || onPageChange);
|
|
36708
36722
|
var hasPaginationHandlers = !!(onPageSizeChange && onPageChange);
|
|
@@ -36753,7 +36767,7 @@ var Table = function(param) {
|
|
|
36753
36767
|
indeterminate: table.getIsSomeRowsSelected(),
|
|
36754
36768
|
onChange: table.getToggleAllPageRowsSelectedHandler(),
|
|
36755
36769
|
disabled: disableControls,
|
|
36756
|
-
"data-testid": "".concat(
|
|
36770
|
+
"data-testid": "".concat(tableId, "-header-checkbox")
|
|
36757
36771
|
});
|
|
36758
36772
|
},
|
|
36759
36773
|
cell: function(param) {
|
|
@@ -36766,13 +36780,13 @@ var Table = function(param) {
|
|
|
36766
36780
|
return e.stopPropagation();
|
|
36767
36781
|
},
|
|
36768
36782
|
onChange: row.getToggleSelectedHandler(),
|
|
36769
|
-
"data-testid": "".concat(
|
|
36783
|
+
"data-testid": "".concat(tableId, "-row-").concat(row.id, "-checkbox")
|
|
36770
36784
|
});
|
|
36771
36785
|
}
|
|
36772
36786
|
};
|
|
36773
36787
|
}, [
|
|
36774
36788
|
disableControls,
|
|
36775
|
-
|
|
36789
|
+
tableId
|
|
36776
36790
|
]);
|
|
36777
36791
|
var handleContextMenu = useCallback(function(e, row) {
|
|
36778
36792
|
e.stopPropagation();
|
|
@@ -36801,7 +36815,7 @@ var Table = function(param) {
|
|
|
36801
36815
|
e.stopPropagation();
|
|
36802
36816
|
handleContextMenu(e, row);
|
|
36803
36817
|
},
|
|
36804
|
-
"data-testid": "".concat(
|
|
36818
|
+
"data-testid": "".concat(tableId, "-row-").concat(row.id, "-context-menu-button"),
|
|
36805
36819
|
style: {
|
|
36806
36820
|
margin: '0 auto'
|
|
36807
36821
|
},
|
|
@@ -36811,7 +36825,7 @@ var Table = function(param) {
|
|
|
36811
36825
|
};
|
|
36812
36826
|
}, [
|
|
36813
36827
|
handleContextMenu,
|
|
36814
|
-
|
|
36828
|
+
tableId,
|
|
36815
36829
|
ctxMenuRow
|
|
36816
36830
|
]);
|
|
36817
36831
|
var allColumns = useMemo(function() {
|
|
@@ -36879,7 +36893,7 @@ var Table = function(param) {
|
|
|
36879
36893
|
getFilteredRowModel: getFilteredRowModel(),
|
|
36880
36894
|
onRowSelectionChange: onRowSelectionChange,
|
|
36881
36895
|
enableRowSelection: !!enableRowSelection,
|
|
36882
|
-
onColumnSizingChange:
|
|
36896
|
+
onColumnSizingChange: handleColumnSizingChange,
|
|
36883
36897
|
columnResizeMode: 'onChange'
|
|
36884
36898
|
});
|
|
36885
36899
|
var renderPagination = function() {
|
|
@@ -36892,7 +36906,7 @@ var Table = function(param) {
|
|
|
36892
36906
|
resetContainerScroll();
|
|
36893
36907
|
onPageSizeChange(size);
|
|
36894
36908
|
},
|
|
36895
|
-
testId: "".concat(
|
|
36909
|
+
testId: "".concat(tableId, "-pagination")
|
|
36896
36910
|
};
|
|
36897
36911
|
return paginationMode === 'page' && 'currentPage' in pageInfo ? /*#__PURE__*/ jsx(Pagination, _object_spread_props$2(_object_spread$2({
|
|
36898
36912
|
mode: "page",
|
|
@@ -36914,6 +36928,7 @@ var Table = function(param) {
|
|
|
36914
36928
|
};
|
|
36915
36929
|
var showTopBar = hasPaginationHandlers || toolbar;
|
|
36916
36930
|
return /*#__PURE__*/ jsxs("div", {
|
|
36931
|
+
"data-testid": tableId,
|
|
36917
36932
|
children: [
|
|
36918
36933
|
showTopBar && /*#__PURE__*/ jsxs(TopBar, {
|
|
36919
36934
|
children: [
|
|
@@ -36977,7 +36992,7 @@ var Table = function(param) {
|
|
|
36977
36992
|
table: table,
|
|
36978
36993
|
disableControls: disableControls,
|
|
36979
36994
|
dense: dense,
|
|
36980
|
-
|
|
36995
|
+
tableId: tableId
|
|
36981
36996
|
}),
|
|
36982
36997
|
/*#__PURE__*/ jsx(TableBody, {
|
|
36983
36998
|
table: table,
|
|
@@ -36985,7 +37000,7 @@ var Table = function(param) {
|
|
|
36985
37000
|
onRowClick: onRowClick,
|
|
36986
37001
|
getRowDisabled: getRowDisabled,
|
|
36987
37002
|
dense: dense,
|
|
36988
|
-
|
|
37003
|
+
tableId: tableId
|
|
36989
37004
|
})
|
|
36990
37005
|
]
|
|
36991
37006
|
})
|
package/package.json
CHANGED
package/src/lib/Table/Table.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSProperties, HTMLProps, ReactNode } from 'react';
|
|
2
|
-
import { ColumnDef, OnChangeFn, Row } from '@tanstack/react-table';
|
|
2
|
+
import { ColumnDef, OnChangeFn, Row, ColumnSizingState } from '@tanstack/react-table';
|
|
3
3
|
import { PageInfoPageBased, PageInfoCursorBased } from '../Pagination/Pagination';
|
|
4
4
|
export type CellOverflow = 'truncate' | 'wrap' | 'clamp';
|
|
5
5
|
export type ColumnAlign = 'left' | 'right' | 'center';
|
|
@@ -43,6 +43,21 @@ interface TableRowProps<T> {
|
|
|
43
43
|
getRowDisabled?: (row: T) => boolean;
|
|
44
44
|
contextMenuActions?: RowAction<T>[];
|
|
45
45
|
}
|
|
46
|
+
interface TableSizingProps {
|
|
47
|
+
/**
|
|
48
|
+
* Controlled column widths, keyed by column `key`. When provided, the table
|
|
49
|
+
* is controlled — the consumer owns the value (e.g. seeded from persisted
|
|
50
|
+
* state) and must update it via `onColumnSizingChange`. When omitted, the
|
|
51
|
+
* table manages widths internally.
|
|
52
|
+
*/
|
|
53
|
+
columnSizing?: ColumnSizingState;
|
|
54
|
+
/**
|
|
55
|
+
* Called with the fully-resolved next column-sizing state whenever the user
|
|
56
|
+
* resizes a column. Mirrors `onSortChange`: the consumer receives a plain
|
|
57
|
+
* value (not a TanStack updater), so it can persist it directly.
|
|
58
|
+
*/
|
|
59
|
+
onColumnSizingChange?: (columnSizing: ColumnSizingState) => void;
|
|
60
|
+
}
|
|
46
61
|
interface PaginationProps {
|
|
47
62
|
paginationMode?: 'page' | 'cursor';
|
|
48
63
|
pageInfo?: PageInfoPageBased | PageInfoCursorBased;
|
|
@@ -53,7 +68,20 @@ interface PaginationProps {
|
|
|
53
68
|
}
|
|
54
69
|
interface TableDataProps<T> {
|
|
55
70
|
columns: TableColumn<T>[];
|
|
56
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Stable, app-wide-unique identifier for this table. Required.
|
|
73
|
+
*
|
|
74
|
+
* Serves two purposes:
|
|
75
|
+
* - Namespaces every derived `data-testid` (rows, checkboxes, headers,
|
|
76
|
+
* context menus, pagination) and is rendered as the root `data-testid`.
|
|
77
|
+
* - Acts as the persistence key consumers use to store per-table view
|
|
78
|
+
* state (sort, column widths).
|
|
79
|
+
*
|
|
80
|
+
* Contract: must be stable for the life of the table and unique across the
|
|
81
|
+
* whole app — NOT just the current page. Changing it orphans any persisted
|
|
82
|
+
* state and breaks selectors that reference the old value.
|
|
83
|
+
*/
|
|
84
|
+
tableId: string;
|
|
57
85
|
data?: T[];
|
|
58
86
|
getRowId: (originalRow: T, index: number, parent?: Row<T> | undefined) => string;
|
|
59
87
|
isLoading?: boolean;
|
|
@@ -63,7 +91,7 @@ interface TableDataProps<T> {
|
|
|
63
91
|
error?: string;
|
|
64
92
|
toolbar?: ReactNode | ReactNode[];
|
|
65
93
|
}
|
|
66
|
-
export interface TableProps<T extends object> extends TableStyleProps, TableRowProps<T>, TableDataProps<T>, PaginationProps {
|
|
94
|
+
export interface TableProps<T extends object> extends TableStyleProps, TableRowProps<T>, TableDataProps<T>, TableSizingProps, PaginationProps {
|
|
67
95
|
}
|
|
68
|
-
export declare const Table: <T extends object>({ columns, data, getRowId, isLoading, paginationMode, pageInfo, subText, onPageSizeChange, pageSizeOptions, onPageChange, sortBy, sortOrder, onSortChange, enableRowSelection, selectedRows, onRowSelectionChange, getRowDisabled, onRowClick, contextMenuActions, dense, height, containerStyle, error,
|
|
96
|
+
export declare const Table: <T extends object>({ columns, data, getRowId, isLoading, paginationMode, pageInfo, subText, onPageSizeChange, pageSizeOptions, onPageChange, sortBy, sortOrder, onSortChange, columnSizing: columnSizingProp, onColumnSizingChange, enableRowSelection, selectedRows, onRowSelectionChange, getRowDisabled, onRowClick, contextMenuActions, dense, height, containerStyle, error, tableId, toolbar, }: TableProps<T>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
69
97
|
export {};
|
|
@@ -6,7 +6,7 @@ interface TableBodyProps<T extends object> {
|
|
|
6
6
|
title?: string;
|
|
7
7
|
dense: boolean;
|
|
8
8
|
getRowDisabled?: (row: T) => boolean;
|
|
9
|
-
|
|
9
|
+
tableId: string;
|
|
10
10
|
}
|
|
11
|
-
export declare const TableBody: <T extends object>({ table, enableRowSelection, onRowClick, getRowDisabled, dense,
|
|
11
|
+
export declare const TableBody: <T extends object>({ table, enableRowSelection, onRowClick, getRowDisabled, dense, tableId, }: TableBodyProps<T>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
12
12
|
export {};
|
|
@@ -3,7 +3,7 @@ interface TableHeaderProps<T> {
|
|
|
3
3
|
table: Table<T>;
|
|
4
4
|
disableControls: boolean;
|
|
5
5
|
dense: boolean;
|
|
6
|
-
|
|
6
|
+
tableId: string;
|
|
7
7
|
}
|
|
8
|
-
export declare const TableHeader: <T extends object>({ table, disableControls, dense,
|
|
8
|
+
export declare const TableHeader: <T extends object>({ table, disableControls, dense, tableId, }: TableHeaderProps<T>) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
9
|
export {};
|