@deque/cauldron-react 6.11.0 → 6.12.0-canary.4505ef2e
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/lib/components/Table/Table.d.ts +18 -6
- package/lib/components/Table/TableBody.d.ts +4 -5
- package/lib/components/Table/TableCell.d.ts +6 -5
- package/lib/components/Table/TableContext.d.ts +15 -0
- package/lib/components/Table/TableFooter.d.ts +4 -5
- package/lib/components/Table/TableHead.d.ts +4 -5
- package/lib/components/Table/TableHeader.d.ts +5 -6
- package/lib/components/Table/useTableGridStyles.d.ts +10 -0
- package/lib/index.js +129 -26
- package/package.json +1 -1
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import React
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type Column = {
|
|
3
|
+
align: ColumnAlignment;
|
|
4
|
+
width?: ColumnWidth;
|
|
5
|
+
};
|
|
6
|
+
export type ColumnAlignment = 'start' | 'center' | 'end';
|
|
7
|
+
export type ColumnWidth = 'auto' | 'min-content' | 'max-content' | `${number}` | `${number}%` | `${number}fr`;
|
|
8
|
+
export type RowAlignment = 'start' | 'center';
|
|
9
|
+
type TableBaseProps = {
|
|
10
|
+
layout: never;
|
|
11
|
+
columns: never;
|
|
12
|
+
variant?: 'border';
|
|
13
|
+
};
|
|
14
|
+
type TableGridProps = {
|
|
15
|
+
layout: 'grid';
|
|
16
|
+
columns?: Array<Column> | number;
|
|
3
17
|
variant?: 'border';
|
|
4
|
-
}
|
|
5
|
-
declare const Table: {
|
|
6
|
-
({ children, className, variant, ...other }: TableProps): React.JSX.Element;
|
|
7
|
-
displayName: string;
|
|
8
18
|
};
|
|
19
|
+
type TableProps = (TableBaseProps | Partial<TableGridProps>) & React.TableHTMLAttributes<HTMLTableElement>;
|
|
20
|
+
declare const Table: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLTableElement>>;
|
|
9
21
|
export default Table;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React
|
|
2
|
-
declare const TableBody: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const TableBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & {
|
|
3
|
+
className?: string | undefined;
|
|
4
|
+
} & React.RefAttributes<HTMLTableSectionElement>>;
|
|
6
5
|
export default TableBody;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
1
|
+
import type { ColumnAlignment } from './Table';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
interface TableCellProps extends Omit<React.TdHTMLAttributes<HTMLTableDataCellElement>, 'align'> {
|
|
4
|
+
align?: ColumnAlignment;
|
|
5
|
+
}
|
|
6
|
+
declare const TableCell: React.ForwardRefExoticComponent<TableCellProps & React.RefAttributes<HTMLTableCellElement>>;
|
|
6
7
|
export default TableCell;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Column } from './Table';
|
|
3
|
+
type TableContext = {
|
|
4
|
+
layout: 'table' | 'grid';
|
|
5
|
+
columns: Array<Column>;
|
|
6
|
+
};
|
|
7
|
+
type TableProvider = {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
layout: 'table' | 'grid';
|
|
10
|
+
columns: Array<Column>;
|
|
11
|
+
};
|
|
12
|
+
declare const TableContext: React.Context<TableContext>;
|
|
13
|
+
declare function TableProvider({ children, layout, columns }: TableProvider): JSX.Element;
|
|
14
|
+
declare function useTable(): TableContext;
|
|
15
|
+
export { TableProvider, useTable };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React
|
|
2
|
-
declare const TableFooter: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const TableFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & {
|
|
3
|
+
className?: string | undefined;
|
|
4
|
+
} & React.RefAttributes<HTMLTableSectionElement>>;
|
|
6
5
|
export default TableFooter;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React
|
|
2
|
-
declare const TableHead: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const TableHead: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & {
|
|
3
|
+
className?: string | undefined;
|
|
4
|
+
} & React.RefAttributes<HTMLTableSectionElement>>;
|
|
6
5
|
export default TableHead;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ColumnAlignment } from './Table';
|
|
2
|
+
import React from 'react';
|
|
2
3
|
type SortDirection = 'ascending' | 'descending' | 'none';
|
|
3
|
-
interface TableHeaderProps extends ThHTMLAttributes<
|
|
4
|
+
interface TableHeaderProps extends Omit<React.ThHTMLAttributes<HTMLTableHeaderCellElement>, 'align'> {
|
|
4
5
|
sortDirection?: SortDirection;
|
|
5
6
|
onSort?: () => void;
|
|
6
7
|
sortAscendingAnnouncement?: string;
|
|
7
8
|
sortDescendingAnnouncement?: string;
|
|
9
|
+
align?: ColumnAlignment;
|
|
8
10
|
}
|
|
9
|
-
declare const TableHeader:
|
|
10
|
-
({ children, sortDirection, onSort, className, sortAscendingAnnouncement, sortDescendingAnnouncement, ...other }: TableHeaderProps): React.JSX.Element;
|
|
11
|
-
displayName: string;
|
|
12
|
-
};
|
|
11
|
+
declare const TableHeader: React.ForwardRefExoticComponent<TableHeaderProps & React.RefAttributes<HTMLTableHeaderCellElement>>;
|
|
13
12
|
export default TableHeader;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { useTable } from './TableContext';
|
|
2
|
+
import type { Column, ColumnAlignment } from './Table';
|
|
3
|
+
interface useTableGridStylesParameters<E extends HTMLTableCellElement = HTMLTableCellElement> {
|
|
4
|
+
elementRef: React.RefObject<E | null>;
|
|
5
|
+
align?: ColumnAlignment;
|
|
6
|
+
layout: ReturnType<typeof useTable>['layout'];
|
|
7
|
+
columns: Array<Column>;
|
|
8
|
+
}
|
|
9
|
+
export default function useTableGridStyles<E extends HTMLTableCellElement>({ elementRef, align, layout, columns }: useTableGridStylesParameters<E>): React.CSSProperties;
|
|
10
|
+
export {};
|
package/lib/index.js
CHANGED
|
@@ -1282,7 +1282,7 @@ var SideBar = /** @class */ (function (_super) {
|
|
|
1282
1282
|
}(React.Component));
|
|
1283
1283
|
|
|
1284
1284
|
var SideBarItem = function (_a) {
|
|
1285
|
-
var children = _a.children,
|
|
1285
|
+
var children = _a.children, _b = _a.autoClickLink, autoClickLink = _b === void 0 ? true : _b, other = tslib.__rest(_a, ["children", "autoClickLink"]);
|
|
1286
1286
|
var onClick = function (e) {
|
|
1287
1287
|
if (!autoClickLink) {
|
|
1288
1288
|
return;
|
|
@@ -1294,9 +1294,6 @@ var SideBarItem = function (_a) {
|
|
|
1294
1294
|
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
1295
1295
|
};
|
|
1296
1296
|
SideBarItem.displayName = 'SideBarItem';
|
|
1297
|
-
SideBarItem.defaultProps = {
|
|
1298
|
-
autoClickLink: true
|
|
1299
|
-
};
|
|
1300
1297
|
|
|
1301
1298
|
/**
|
|
1302
1299
|
* Handles aria-hidden for dialogs.
|
|
@@ -2783,32 +2780,138 @@ var TagButton = React__default["default"].forwardRef(function (_a, ref) {
|
|
|
2783
2780
|
});
|
|
2784
2781
|
TagButton.displayName = 'TagButton';
|
|
2785
2782
|
|
|
2786
|
-
var
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
};
|
|
2783
|
+
var TableContext = React.createContext({
|
|
2784
|
+
layout: 'table',
|
|
2785
|
+
columns: []
|
|
2786
|
+
});
|
|
2787
|
+
function TableProvider(_a) {
|
|
2788
|
+
var children = _a.children, layout = _a.layout, columns = _a.columns;
|
|
2789
|
+
var Provider = TableContext.Provider;
|
|
2790
|
+
var contextValue = React.useMemo(function () { return ({
|
|
2791
|
+
layout: layout,
|
|
2792
|
+
columns: columns
|
|
2793
|
+
}); }, [layout, columns]);
|
|
2794
|
+
return React__default["default"].createElement(Provider, { value: contextValue }, children);
|
|
2795
|
+
}
|
|
2796
|
+
function useTable() {
|
|
2797
|
+
return React.useContext(TableContext);
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2800
|
+
var Table = React__default["default"].forwardRef(function (_a, ref) {
|
|
2801
|
+
var children = _a.children, className = _a.className, variant = _a.variant, layout = _a.layout, _b = _a.columns, columnsProp = _b === void 0 ? [] : _b, style = _a.style, other = tslib.__rest(_a, ["children", "className", "variant", "layout", "columns", "style"]);
|
|
2802
|
+
var isGridLayout = layout === 'grid';
|
|
2803
|
+
var columns = React.useMemo(function () {
|
|
2804
|
+
if (typeof columnsProp === 'number') {
|
|
2805
|
+
return columnsProp > 0
|
|
2806
|
+
? Array(columnsProp).fill({ align: 'start' })
|
|
2807
|
+
: [{ align: 'start' }];
|
|
2808
|
+
}
|
|
2809
|
+
return columnsProp;
|
|
2810
|
+
}, [columnsProp]);
|
|
2811
|
+
var styleTemplateColumns = React.useMemo(function () {
|
|
2812
|
+
if (layout !== 'grid') {
|
|
2813
|
+
return;
|
|
2814
|
+
}
|
|
2815
|
+
if (!columns) {
|
|
2816
|
+
return 'auto';
|
|
2817
|
+
}
|
|
2818
|
+
return columns
|
|
2819
|
+
.map(function (_a) {
|
|
2820
|
+
var width = _a.width;
|
|
2821
|
+
return width || 'auto';
|
|
2822
|
+
})
|
|
2823
|
+
.join(' ');
|
|
2824
|
+
}, [layout, columns]);
|
|
2825
|
+
var tableGridStyles = isGridLayout
|
|
2826
|
+
? {
|
|
2827
|
+
'--table-grid-template-columns': styleTemplateColumns
|
|
2828
|
+
}
|
|
2829
|
+
: {};
|
|
2830
|
+
return (React__default["default"].createElement("table", tslib.__assign({ ref: ref, style: tslib.__assign(tslib.__assign({}, tableGridStyles), style), className: classNames__default["default"]('Table', className, {
|
|
2831
|
+
'Table--border': variant === 'border',
|
|
2832
|
+
TableGrid: isGridLayout
|
|
2833
|
+
}) }, other),
|
|
2834
|
+
React__default["default"].createElement(TableProvider, { layout: isGridLayout ? 'grid' : 'table', columns: columns }, children)));
|
|
2835
|
+
});
|
|
2790
2836
|
Table.displayName = 'Table';
|
|
2791
2837
|
|
|
2792
|
-
var TableBody = function (_a) {
|
|
2838
|
+
var TableBody = React.forwardRef(function (_a, ref) {
|
|
2793
2839
|
var children = _a.children, className = _a.className, other = tslib.__rest(_a, ["children", "className"]);
|
|
2794
|
-
return (React__default["default"].createElement("tbody", tslib.__assign({ className: classNames__default["default"]('TableBody', className) }, other), children));
|
|
2795
|
-
};
|
|
2840
|
+
return (React__default["default"].createElement("tbody", tslib.__assign({ ref: ref, className: classNames__default["default"]('TableBody', className) }, other), children));
|
|
2841
|
+
});
|
|
2796
2842
|
TableBody.displayName = 'TableBody';
|
|
2797
2843
|
|
|
2798
|
-
|
|
2799
|
-
var
|
|
2800
|
-
|
|
2801
|
-
|
|
2844
|
+
function useTableGridStyles(_a) {
|
|
2845
|
+
var elementRef = _a.elementRef, align = _a.align, layout = _a.layout, columns = _a.columns;
|
|
2846
|
+
var isGridLayout = layout === 'grid';
|
|
2847
|
+
var _b = tslib.__read(React.useState(align || 'start'), 2), columnAlignment = _b[0], setColumnAlignment = _b[1];
|
|
2848
|
+
var _c = tslib.__read(React.useState(1), 2), gridColumnSpan = _c[0], setGridColumnSpan = _c[1];
|
|
2849
|
+
var _d = tslib.__read(React.useState(1), 2), gridRowSpan = _d[0], setGridRowSpan = _d[1];
|
|
2850
|
+
React.useEffect(function () {
|
|
2851
|
+
var _a;
|
|
2852
|
+
if (!isGridLayout) {
|
|
2853
|
+
return;
|
|
2854
|
+
}
|
|
2855
|
+
var element = elementRef.current;
|
|
2856
|
+
var column = typeof columns !== 'number' && columns[(_a = element === null || element === void 0 ? void 0 : element.cellIndex) !== null && _a !== void 0 ? _a : -1];
|
|
2857
|
+
if (!column) {
|
|
2858
|
+
setColumnAlignment(align || 'start');
|
|
2859
|
+
}
|
|
2860
|
+
else {
|
|
2861
|
+
setColumnAlignment(column.align);
|
|
2862
|
+
}
|
|
2863
|
+
if (element === null || element === void 0 ? void 0 : element.colSpan) {
|
|
2864
|
+
setGridColumnSpan(element.colSpan);
|
|
2865
|
+
}
|
|
2866
|
+
else {
|
|
2867
|
+
setGridColumnSpan(1);
|
|
2868
|
+
}
|
|
2869
|
+
if (element === null || element === void 0 ? void 0 : element.rowSpan) {
|
|
2870
|
+
setGridRowSpan(element.rowSpan);
|
|
2871
|
+
}
|
|
2872
|
+
else {
|
|
2873
|
+
setGridRowSpan(1);
|
|
2874
|
+
}
|
|
2875
|
+
}, [isGridLayout, columns, align]);
|
|
2876
|
+
return isGridLayout
|
|
2877
|
+
? {
|
|
2878
|
+
textAlign: columnAlignment,
|
|
2879
|
+
gridColumn: gridColumnSpan > 1 ? "span ".concat(gridColumnSpan) : undefined,
|
|
2880
|
+
gridRow: gridRowSpan > 1 ? "span ".concat(gridRowSpan) : undefined
|
|
2881
|
+
}
|
|
2882
|
+
: {};
|
|
2883
|
+
}
|
|
2884
|
+
|
|
2885
|
+
var TableCell = React.forwardRef(function (_a, ref) {
|
|
2886
|
+
var children = _a.children, className = _a.className, align = _a.align, style = _a.style, other = tslib.__rest(_a, ["children", "className", "align", "style"]);
|
|
2887
|
+
var tableCellRef = useSharedRef(ref);
|
|
2888
|
+
var _b = useTable(), layout = _b.layout, columns = _b.columns;
|
|
2889
|
+
var tableGridStyles = useTableGridStyles({
|
|
2890
|
+
elementRef: tableCellRef,
|
|
2891
|
+
align: align,
|
|
2892
|
+
columns: columns,
|
|
2893
|
+
layout: layout
|
|
2894
|
+
});
|
|
2895
|
+
return (React__default["default"].createElement("td", tslib.__assign({ ref: tableCellRef, style: tslib.__assign(tslib.__assign({}, tableGridStyles), style), className: classNames__default["default"]('TableCell', className) }, other), children));
|
|
2896
|
+
});
|
|
2802
2897
|
TableCell.displayName = 'TableCell';
|
|
2803
2898
|
|
|
2804
|
-
var TableHead = function (_a) {
|
|
2899
|
+
var TableHead = React.forwardRef(function (_a, ref) {
|
|
2805
2900
|
var children = _a.children, className = _a.className, other = tslib.__rest(_a, ["children", "className"]);
|
|
2806
|
-
return (React__default["default"].createElement("thead", tslib.__assign({ className: classNames__default["default"]('TableHead', className) }, other), children));
|
|
2807
|
-
};
|
|
2901
|
+
return (React__default["default"].createElement("thead", tslib.__assign({ ref: ref, className: classNames__default["default"]('TableHead', className) }, other), children));
|
|
2902
|
+
});
|
|
2808
2903
|
TableHead.displayName = 'TableHead';
|
|
2809
2904
|
|
|
2810
|
-
var TableHeader = function (_a) {
|
|
2811
|
-
var children = _a.children, sortDirection = _a.sortDirection, onSort = _a.onSort, className = _a.className, _b = _a.sortAscendingAnnouncement, sortAscendingAnnouncement = _b === void 0 ? 'sorted ascending' : _b, _c = _a.sortDescendingAnnouncement, sortDescendingAnnouncement = _c === void 0 ? 'sorted descending' : _c, other = tslib.__rest(_a, ["children", "sortDirection", "onSort", "className", "sortAscendingAnnouncement", "sortDescendingAnnouncement"]);
|
|
2905
|
+
var TableHeader = React.forwardRef(function (_a, ref) {
|
|
2906
|
+
var children = _a.children, sortDirection = _a.sortDirection, onSort = _a.onSort, className = _a.className, _b = _a.sortAscendingAnnouncement, sortAscendingAnnouncement = _b === void 0 ? 'sorted ascending' : _b, _c = _a.sortDescendingAnnouncement, sortDescendingAnnouncement = _c === void 0 ? 'sorted descending' : _c, align = _a.align, style = _a.style, other = tslib.__rest(_a, ["children", "sortDirection", "onSort", "className", "sortAscendingAnnouncement", "sortDescendingAnnouncement", "align", "style"]);
|
|
2907
|
+
var tableHeaderRef = useSharedRef(ref);
|
|
2908
|
+
var _d = useTable(), layout = _d.layout, columns = _d.columns;
|
|
2909
|
+
var tableGridStyles = useTableGridStyles({
|
|
2910
|
+
elementRef: tableHeaderRef,
|
|
2911
|
+
align: align,
|
|
2912
|
+
columns: columns,
|
|
2913
|
+
layout: layout
|
|
2914
|
+
});
|
|
2812
2915
|
// When the sort direction changes, we want to announce the change in a live region
|
|
2813
2916
|
// because changes to the sort value is not widely supported yet
|
|
2814
2917
|
// see: https://a11ysupport.io/tech/aria/aria-sort_attribute
|
|
@@ -2817,15 +2920,15 @@ var TableHeader = function (_a) {
|
|
|
2817
2920
|
: sortDirection === 'descending'
|
|
2818
2921
|
? sortDescendingAnnouncement
|
|
2819
2922
|
: '';
|
|
2820
|
-
return (React__default["default"].createElement("th", tslib.__assign({ "aria-sort": sortDirection, className: classNames__default["default"]('TableHeader', className, {
|
|
2923
|
+
return (React__default["default"].createElement("th", tslib.__assign({ ref: tableHeaderRef, "aria-sort": sortDirection, className: classNames__default["default"]('TableHeader', className, {
|
|
2821
2924
|
'TableHeader--sort-ascending': sortDirection === 'ascending',
|
|
2822
2925
|
'TableHeader--sort-descending': sortDirection === 'descending'
|
|
2823
|
-
}) }, other), !!onSort && !!sortDirection ? (React__default["default"].createElement("button", { onClick: onSort, className: "TableHeader__sort-button", type: "button" },
|
|
2926
|
+
}), style: tslib.__assign(tslib.__assign({}, tableGridStyles), style) }, other), !!onSort && !!sortDirection ? (React__default["default"].createElement("button", { onClick: onSort, className: "TableHeader__sort-button", type: "button" },
|
|
2824
2927
|
children,
|
|
2825
2928
|
React__default["default"].createElement("span", { "aria-hidden": "true" }, sortDirection === 'none' ? (React__default["default"].createElement(Icon, { type: "sort-triangle" })) : sortDirection === 'ascending' ? (React__default["default"].createElement(Icon, { type: "table-sort-ascending" })) : (React__default["default"].createElement(Icon, { type: "table-sort-descending" }))),
|
|
2826
2929
|
React__default["default"].createElement(Offscreen, null,
|
|
2827
2930
|
React__default["default"].createElement("span", { role: "status", "aria-live": "polite" }, announcement)))) : (children)));
|
|
2828
|
-
};
|
|
2931
|
+
});
|
|
2829
2932
|
TableHeader.displayName = 'TableHeader';
|
|
2830
2933
|
|
|
2831
2934
|
var TableRow = function (_a) {
|
|
@@ -2834,10 +2937,10 @@ var TableRow = function (_a) {
|
|
|
2834
2937
|
};
|
|
2835
2938
|
TableRow.displayName = 'TableRow';
|
|
2836
2939
|
|
|
2837
|
-
var TableFooter = function (_a) {
|
|
2940
|
+
var TableFooter = React.forwardRef(function (_a, ref) {
|
|
2838
2941
|
var children = _a.children, className = _a.className, other = tslib.__rest(_a, ["children", "className"]);
|
|
2839
|
-
return (React__default["default"].createElement("tfoot", tslib.__assign({ className: classNames__default["default"]('TableFooter', className) }, other), children));
|
|
2840
|
-
};
|
|
2942
|
+
return (React__default["default"].createElement("tfoot", tslib.__assign({ ref: ref, className: classNames__default["default"]('TableFooter', className) }, other), children));
|
|
2943
|
+
});
|
|
2841
2944
|
TableFooter.displayName = 'TableFooter';
|
|
2842
2945
|
|
|
2843
2946
|
var Tab = React__default["default"].forwardRef(function (_a, ref) {
|
package/package.json
CHANGED