@cimpress-ui/react 1.31.0 → 1.32.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/dist/commonjs/components/table/contexts/refs.d.ts +10 -0
- package/dist/commonjs/components/table/contexts/refs.d.ts.map +1 -0
- package/dist/commonjs/components/table/contexts/refs.js +22 -0
- package/dist/commonjs/components/table/contexts/refs.js.map +1 -0
- package/dist/commonjs/components/table/table-body.d.ts.map +1 -1
- package/dist/commonjs/components/table/table-body.js +13 -2
- package/dist/commonjs/components/table/table-body.js.map +1 -1
- package/dist/commonjs/components/table/table-container.d.ts +1 -1
- package/dist/commonjs/components/table/table-container.d.ts.map +1 -1
- package/dist/commonjs/components/table/table-container.js +43 -1
- package/dist/commonjs/components/table/table-container.js.map +1 -1
- package/dist/commonjs/components/table/table-header.d.ts +1 -1
- package/dist/commonjs/components/table/table-header.d.ts.map +1 -1
- package/dist/commonjs/components/table/table-header.js +6 -1
- package/dist/commonjs/components/table/table-header.js.map +1 -1
- package/dist/esm/components/table/contexts/refs.d.ts +10 -0
- package/dist/esm/components/table/contexts/refs.d.ts.map +1 -0
- package/dist/esm/components/table/contexts/refs.js +18 -0
- package/dist/esm/components/table/contexts/refs.js.map +1 -0
- package/dist/esm/components/table/table-body.d.ts.map +1 -1
- package/dist/esm/components/table/table-body.js +14 -3
- package/dist/esm/components/table/table-body.js.map +1 -1
- package/dist/esm/components/table/table-container.d.ts +1 -1
- package/dist/esm/components/table/table-container.d.ts.map +1 -1
- package/dist/esm/components/table/table-container.js +43 -1
- package/dist/esm/components/table/table-container.js.map +1 -1
- package/dist/esm/components/table/table-header.d.ts +1 -1
- package/dist/esm/components/table/table-header.d.ts.map +1 -1
- package/dist/esm/components/table/table-header.js +6 -1
- package/dist/esm/components/table/table-header.js.map +1 -1
- package/dist-styles/core.css +1 -1
- package/dist-styles/styles.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MutableRefObject, type ReactNode } from 'react';
|
|
2
|
+
export interface TableRefs {
|
|
3
|
+
header: MutableRefObject<HTMLTableSectionElement | null>;
|
|
4
|
+
}
|
|
5
|
+
export declare function TableRefsProvider({ children, header, }: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
header: MutableRefObject<HTMLTableSectionElement | null>;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function useTableRefs(): TableRefs;
|
|
10
|
+
//# sourceMappingURL=refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/contexts/refs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAElG,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;CAC1D;AAID,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;CAC1D,2CASA;AAGD,wBAAgB,YAAY,IAAI,SAAS,CAOxC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableRefsProvider = TableRefsProvider;
|
|
4
|
+
exports.useTableRefs = useTableRefs;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const TableRefsContext = (0, react_1.createContext)(null);
|
|
8
|
+
function TableRefsProvider({ children, header, }) {
|
|
9
|
+
const tableRefs = (0, react_1.useMemo)(() => ({
|
|
10
|
+
header,
|
|
11
|
+
}), [header]);
|
|
12
|
+
return (0, jsx_runtime_1.jsx)(TableRefsContext.Provider, { value: tableRefs, children: children });
|
|
13
|
+
}
|
|
14
|
+
// eslint-disable-next-line react-refresh/only-export-components
|
|
15
|
+
function useTableRefs() {
|
|
16
|
+
const tableRefs = (0, react_1.useContext)(TableRefsContext);
|
|
17
|
+
if (!tableRefs) {
|
|
18
|
+
throw new Error('Cannot use table refs outside of a table');
|
|
19
|
+
}
|
|
20
|
+
return tableRefs;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../../../src/components/table/contexts/refs.tsx"],"names":[],"mappings":";;AAQA,8CAeC;AAGD,oCAOC;;AAjCD,iCAAkG;AAMlG,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAmB,IAAI,CAAC,CAAC;AAE/D,SAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,GAIP;IACC,MAAM,SAAS,GAAc,IAAA,eAAO,EAClC,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;KACP,CAAC,EACF,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,uBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,YAAG,QAAQ,GAA6B,CAAC;AAC7F,CAAC;AAED,gEAAgE;AAChE,SAAgB,YAAY;IAC1B,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { createContext, type MutableRefObject, type ReactNode, useContext, useMemo } from 'react';\n\nexport interface TableRefs {\n header: MutableRefObject<HTMLTableSectionElement | null>;\n}\n\nconst TableRefsContext = createContext<TableRefs | null>(null);\n\nexport function TableRefsProvider({\n children,\n header,\n}: {\n children: ReactNode;\n header: MutableRefObject<HTMLTableSectionElement | null>;\n}) {\n const tableRefs: TableRefs = useMemo(\n () => ({\n header,\n }),\n [header],\n );\n\n return <TableRefsContext.Provider value={tableRefs}>{children}</TableRefsContext.Provider>;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useTableRefs(): TableRefs {\n const tableRefs = useContext(TableRefsContext);\n if (!tableRefs) {\n throw new Error('Cannot use table refs outside of a table');\n }\n\n return tableRefs;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,+CAA+C;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;GAIG;AACH,QAAA,MAAM,UAAU,wHAAqC,CAAC;AAEtD,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -4,11 +4,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.TableBody = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const react_1 = require("react");
|
|
7
|
+
const react_aria_1 = require("react-aria");
|
|
7
8
|
const forward_ref_js_1 = require("../../forward-ref.js");
|
|
8
9
|
const localization_provider_js_1 = require("../../i18n/localization-provider.js");
|
|
9
10
|
const spinner_js_1 = require("../spinner/spinner.js");
|
|
10
11
|
const column_collection_js_1 = require("./contexts/column-collection.js");
|
|
11
12
|
const loading_js_1 = require("./contexts/loading.js");
|
|
13
|
+
const row_state_js_1 = require("./contexts/row-state.js");
|
|
14
|
+
const use_table_cell_js_1 = require("./hooks/use-table-cell.js");
|
|
12
15
|
function TableBody({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
13
16
|
const isLoading = (0, loading_js_1.useTableLoading)();
|
|
14
17
|
return ((0, jsx_runtime_1.jsxs)("tbody", { ...props, ref: ref, className: UNSAFE_className, style: UNSAFE_style, children: [isLoading && (0, jsx_runtime_1.jsx)(TableLoader, {}), children] }));
|
|
@@ -21,9 +24,17 @@ function TableBody({ children, UNSAFE_className, UNSAFE_style, ...props }, ref)
|
|
|
21
24
|
const _TableBody = (0, forward_ref_js_1.forwardRef)(TableBody, 'TableBody');
|
|
22
25
|
exports.TableBody = _TableBody;
|
|
23
26
|
function TableLoader() {
|
|
27
|
+
const rowKey = (0, react_aria_1.useId)();
|
|
28
|
+
return ((0, jsx_runtime_1.jsx)(row_state_js_1.TableRowStateProvider, { rowKey: rowKey, children: (0, jsx_runtime_1.jsx)(TableLoaderInner, {}) }));
|
|
29
|
+
}
|
|
30
|
+
function TableLoaderInner() {
|
|
24
31
|
const loaderCellRef = (0, react_1.useRef)(null);
|
|
25
|
-
const {
|
|
32
|
+
const { rowKey } = (0, row_state_js_1.useTableRowState)();
|
|
33
|
+
const { colSpan, columnKey } = (0, column_collection_js_1.useFullWidthCell)(loaderCellRef);
|
|
34
|
+
// `useTableCell` requires `TableRowStateProvider`
|
|
35
|
+
const { cellProps } = (0, use_table_cell_js_1.useTableCell)(loaderCellRef, rowKey, columnKey);
|
|
36
|
+
const columnData = (0, column_collection_js_1.useColumnData)(columnKey);
|
|
26
37
|
const messages = (0, localization_provider_js_1.useLocalizedMessages)('table');
|
|
27
|
-
return ((0, jsx_runtime_1.jsx)("tr", { children: (0, jsx_runtime_1.jsx)("td", { ref: loaderCellRef, className: "cim-table-loading-state", colSpan: colSpan, "data-alignment": "center", children: (0, jsx_runtime_1.jsx)("div", { className: "cim-table-loading-state-overlay", children: (0, jsx_runtime_1.jsx)(spinner_js_1.Spinner, { size: "medium", "aria-label": messages.format('loadingData'), UNSAFE_style: { height: 'min(70%, 48px)' } }) }) }) }, "__cim__internal__loading-state__"));
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)("tr", { children: (0, jsx_runtime_1.jsx)("td", { ...cellProps, ref: loaderCellRef, className: "cim-table-loading-state", "aria-colindex": columnData?.number, colSpan: colSpan, "data-alignment": "center", children: (0, jsx_runtime_1.jsx)("div", { className: "cim-table-loading-state-overlay", children: (0, jsx_runtime_1.jsx)(spinner_js_1.Spinner, { size: "medium", "aria-label": messages.format('loadingData'), UNSAFE_style: { height: 'min(70%, 48px)' } }) }) }) }, "__cim__internal__loading-state__"));
|
|
28
39
|
}
|
|
29
40
|
//# sourceMappingURL=table-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-body.js","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,iCAAkE;AAClE,yDAAkD;AAClD,kFAA2E;AAC3E,sDAAgD;AAEhD,
|
|
1
|
+
{"version":3,"file":"table-body.js","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,iCAAkE;AAClE,2CAAmC;AACnC,yDAAkD;AAClD,kFAA2E;AAC3E,sDAAgD;AAEhD,0EAAkF;AAClF,sDAAwD;AACxD,0DAAkF;AAClF,iEAAyD;AAOzD,SAAS,SAAS,CAChB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,EAAkB,EACtE,GAA0C;IAE1C,MAAM,SAAS,GAAG,IAAA,4BAAe,GAAE,CAAC;IAEpC,OAAO,CACL,sCAAW,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,aACzE,SAAS,IAAI,uBAAC,WAAW,KAAG,EAC5B,QAAQ,IACH,CACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,IAAA,2BAAU,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE/B,+BAAS;AAEhC,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,IAAA,kBAAK,GAAE,CAAC;IAEvB,OAAO,CACL,uBAAC,oCAAqB,IAAC,MAAM,EAAE,MAAM,YACnC,uBAAC,gBAAgB,KAAG,GACE,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,aAAa,GAAG,IAAA,cAAM,EAAuB,IAAI,CAAC,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAgB,GAAE,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAA,uCAAgB,EAAC,aAAa,CAAC,CAAC;IAC/D,kDAAkD;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,gCAAY,EAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAA,oCAAa,EAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAA,+CAAoB,EAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CACL,yCACE,kCACM,SAAS,EACb,GAAG,EAAE,aAAa,EAClB,SAAS,EAAC,yBAAyB,mBACpB,UAAU,EAAE,MAAM,EACjC,OAAO,EAAE,OAAO,oBACD,QAAQ,YAEvB,gCAAK,SAAS,EAAC,iCAAiC,YAC9C,uBAAC,oBAAO,IACN,IAAI,EAAC,QAAQ,gBACD,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAC1C,YAAY,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAC1C,GACE,GACH,IAhBC,kCAAkC,CAiBrC,CACN,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport { useRef, type ForwardedRef, type ReactNode } from 'react';\nimport { useId } from 'react-aria';\nimport { forwardRef } from '../../forward-ref.js';\nimport { useLocalizedMessages } from '../../i18n/localization-provider.js';\nimport { Spinner } from '../spinner/spinner.js';\nimport type { CommonProps } from '../types.js';\nimport { useColumnData, useFullWidthCell } from './contexts/column-collection.js';\nimport { useTableLoading } from './contexts/loading.js';\nimport { TableRowStateProvider, useTableRowState } from './contexts/row-state.js';\nimport { useTableCell } from './hooks/use-table-cell.js';\n\nexport interface TableBodyProps extends CommonProps {\n /** The rows that belong to this table body. */\n children: ReactNode;\n}\n\nfunction TableBody(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableBodyProps,\n ref: ForwardedRef<HTMLTableSectionElement>,\n) {\n const isLoading = useTableLoading();\n\n return (\n <tbody {...props} ref={ref} className={UNSAFE_className} style={UNSAFE_style}>\n {isLoading && <TableLoader />}\n {children}\n </tbody>\n );\n}\n\n/**\n * Renders a body section within a table.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableBody = forwardRef(TableBody, 'TableBody');\n\nexport { _TableBody as TableBody };\n\nfunction TableLoader() {\n const rowKey = useId();\n\n return (\n <TableRowStateProvider rowKey={rowKey}>\n <TableLoaderInner />\n </TableRowStateProvider>\n );\n}\n\nfunction TableLoaderInner() {\n const loaderCellRef = useRef<HTMLTableCellElement>(null);\n const { rowKey } = useTableRowState();\n const { colSpan, columnKey } = useFullWidthCell(loaderCellRef);\n // `useTableCell` requires `TableRowStateProvider`\n const { cellProps } = useTableCell(loaderCellRef, rowKey, columnKey);\n const columnData = useColumnData(columnKey);\n const messages = useLocalizedMessages('table');\n\n return (\n <tr key=\"__cim__internal__loading-state__\">\n <td\n {...cellProps}\n ref={loaderCellRef}\n className=\"cim-table-loading-state\"\n aria-colindex={columnData?.number}\n colSpan={colSpan}\n data-alignment=\"center\"\n >\n <div className=\"cim-table-loading-state-overlay\">\n <Spinner\n size=\"medium\"\n aria-label={messages.format('loadingData')}\n UNSAFE_style={{ height: 'min(70%, 48px)' }}\n />\n </div>\n </td>\n </tr>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-container.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-container.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,iBAAiB;IACzE,qCAAqC;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAuED;;;;GAIG;AACH,QAAA,MAAM,eAAe,qKAA+D,CAAC;AAErF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -6,12 +6,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.TableContainer = void 0;
|
|
8
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const utils_1 = require("@react-aria/utils");
|
|
9
10
|
const clsx_1 = __importDefault(require("clsx"));
|
|
11
|
+
const react_1 = require("react");
|
|
10
12
|
const forward_ref_js_1 = require("../../forward-ref.js");
|
|
11
13
|
const with_style_props_js_1 = require("../../with-style-props.js");
|
|
12
14
|
const focusable_container_js_1 = require("../internal/focusable-container/focusable-container.js");
|
|
15
|
+
const refs_js_1 = require("./contexts/refs.js");
|
|
13
16
|
function TableContainer({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
14
|
-
|
|
17
|
+
const containerRef = (0, utils_1.useObjectRef)(ref);
|
|
18
|
+
const headerRef = (0, react_1.useRef)(null);
|
|
19
|
+
const [headerHeight, setHeaderHeight] = (0, react_1.useState)(40);
|
|
20
|
+
const [hasClassicHorizontalScrollbar, setHasClassicHorizontalScrollbar] = (0, react_1.useState)(false);
|
|
21
|
+
const [hasClassicVerticalScrollbar, setHasClassicVerticalScrollbar] = (0, react_1.useState)(false);
|
|
22
|
+
(0, utils_1.useResizeObserver)({
|
|
23
|
+
ref: containerRef,
|
|
24
|
+
onResize: () => {
|
|
25
|
+
const element = containerRef.current;
|
|
26
|
+
if (element) {
|
|
27
|
+
setHasClassicHorizontalScrollbar(element.offsetHeight - element.clientHeight > Number.EPSILON);
|
|
28
|
+
setHasClassicVerticalScrollbar(element.offsetWidth - element.clientWidth > Number.EPSILON);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
(0, utils_1.useLayoutEffect)(() => {
|
|
33
|
+
const headerElement = headerRef.current;
|
|
34
|
+
const isSSR = typeof window === 'undefined';
|
|
35
|
+
let observer;
|
|
36
|
+
if (headerElement && !isSSR) {
|
|
37
|
+
observer = new window.ResizeObserver((entries) => {
|
|
38
|
+
if (entries[0]) {
|
|
39
|
+
const { target } = entries[0];
|
|
40
|
+
setHeaderHeight(target.clientHeight);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
observer.observe(headerElement);
|
|
44
|
+
}
|
|
45
|
+
return () => {
|
|
46
|
+
if (headerElement && observer) {
|
|
47
|
+
observer.unobserve(headerElement);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}, [headerRef]);
|
|
51
|
+
return ((0, jsx_runtime_1.jsx)(refs_js_1.TableRefsProvider, { header: headerRef, children: (0, jsx_runtime_1.jsx)("div", { className: "cim-table-container-outer", children: (0, jsx_runtime_1.jsx)(focusable_container_js_1.FocusableContainer, { ...props, ref: containerRef, className: (0, clsx_1.default)('cim-table-container', UNSAFE_className), style: {
|
|
52
|
+
...UNSAFE_style,
|
|
53
|
+
'--cim-table-header-height': `${headerHeight}px`,
|
|
54
|
+
'--cim-table-has-classic-v-scrollbar': hasClassicVerticalScrollbar ? 1 : 0,
|
|
55
|
+
'--cim-table-has-classic-h-scrollbar': hasClassicHorizontalScrollbar ? 1 : 0,
|
|
56
|
+
}, scrollDirection: "horizontal", children: children }) }) }));
|
|
15
57
|
}
|
|
16
58
|
/**
|
|
17
59
|
* Renders a scrollable container that allows a table to overflow in a responsive way.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-container.js","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;AAEb,gDAAwB;
|
|
1
|
+
{"version":3,"file":"table-container.js","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { useLayoutEffect, useObjectRef, useResizeObserver } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport { type CSSProperties, useRef, useState, type ForwardedRef, type ReactNode } from 'react';\nimport { forwardRef } from '../../forward-ref.js';\nimport { withStyleProps } from '../../with-style-props.js';\nimport { FocusableContainer } from '../internal/focusable-container/focusable-container.js';\nimport type { AriaLabelingProps, CommonProps } from '../types.js';\nimport { TableRefsProvider } from './contexts/refs.js';\n\nexport interface TableContainerProps extends CommonProps, AriaLabelingProps {\n /** The contents of the container. */\n children: ReactNode;\n}\n\nfunction TableContainer(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useObjectRef(ref);\n const headerRef = useRef<HTMLTableSectionElement | null>(null);\n const [headerHeight, setHeaderHeight] = useState(40);\n const [hasClassicHorizontalScrollbar, setHasClassicHorizontalScrollbar] = useState(false);\n const [hasClassicVerticalScrollbar, setHasClassicVerticalScrollbar] = useState(false);\n\n useResizeObserver({\n ref: containerRef,\n onResize: () => {\n const element = containerRef.current;\n if (element) {\n setHasClassicHorizontalScrollbar(element.offsetHeight - element.clientHeight > Number.EPSILON);\n setHasClassicVerticalScrollbar(element.offsetWidth - element.clientWidth > Number.EPSILON);\n }\n },\n });\n\n useLayoutEffect(() => {\n const headerElement = headerRef.current;\n const isSSR = typeof window === 'undefined';\n\n let observer: ResizeObserver | undefined;\n\n if (headerElement && !isSSR) {\n observer = new window.ResizeObserver((entries) => {\n if (entries[0]) {\n const { target } = entries[0];\n setHeaderHeight(target.clientHeight);\n }\n });\n\n observer.observe(headerElement);\n }\n\n return () => {\n if (headerElement && observer) {\n observer.unobserve(headerElement);\n }\n };\n }, [headerRef]);\n\n return (\n <TableRefsProvider header={headerRef}>\n <div className=\"cim-table-container-outer\">\n <FocusableContainer\n {...props}\n ref={containerRef}\n className={clsx('cim-table-container', UNSAFE_className)}\n style={\n {\n ...UNSAFE_style,\n '--cim-table-header-height': `${headerHeight}px`,\n '--cim-table-has-classic-v-scrollbar': hasClassicVerticalScrollbar ? 1 : 0,\n '--cim-table-has-classic-h-scrollbar': hasClassicHorizontalScrollbar ? 1 : 0,\n } as CSSProperties\n }\n scrollDirection=\"horizontal\"\n >\n {children}\n </FocusableContainer>\n </div>\n </TableRefsProvider>\n );\n}\n\n/**\n * Renders a scrollable container that allows a table to overflow in a responsive way.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableContainer = withStyleProps(forwardRef(TableContainer), 'TableContainer');\n\nexport { _TableContainer as TableContainer };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,wDAAwD;IACxD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;GAIG;AACH,QAAA,MAAM,YAAY,0HAAyC,CAAC;AAE5D,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.TableHeader = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const utils_1 = require("@react-aria/utils");
|
|
7
|
+
const react_1 = require("react");
|
|
6
8
|
const forward_ref_js_1 = require("../../forward-ref.js");
|
|
9
|
+
const refs_js_1 = require("./contexts/refs.js");
|
|
7
10
|
function TableHeader({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
8
|
-
|
|
11
|
+
const { header: headerRef } = (0, refs_js_1.useTableRefs)();
|
|
12
|
+
const mergedRef = (0, utils_1.useObjectRef)((0, react_1.useMemo)(() => (0, utils_1.mergeRefs)(ref, headerRef), [ref, headerRef]));
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)("thead", { ...props, ref: mergedRef, className: UNSAFE_className, style: UNSAFE_style, children: children }));
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
11
16
|
* Renders a header section within a table.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-header.js","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;
|
|
1
|
+
{"version":3,"file":"table-header.js","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,6CAA4D;AAC5D,iCAAmE;AACnE,yDAAkD;AAElD,gDAAkD;AAOlD,SAAS,WAAW,CAClB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,EAAoB,EACxE,GAA0C;IAE1C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,sBAAY,GAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,iBAAS,EAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO,CACL,qCAAW,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,YAC/E,QAAQ,GACH,CACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAAG,IAAA,2BAAU,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAEnC,mCAAW","sourcesContent":["'use client';\n\nimport { mergeRefs, useObjectRef } from '@react-aria/utils';\nimport { useMemo, type ForwardedRef, type ReactNode } from 'react';\nimport { forwardRef } from '../../forward-ref.js';\nimport type { CommonProps } from '../types.js';\nimport { useTableRefs } from './contexts/refs.js';\n\nexport interface TableHeaderProps extends CommonProps {\n /** The header rows that belong to this table header. */\n children: ReactNode;\n}\n\nfunction TableHeader(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableHeaderProps,\n ref: ForwardedRef<HTMLTableSectionElement>,\n) {\n const { header: headerRef } = useTableRefs();\n const mergedRef = useObjectRef(useMemo(() => mergeRefs(ref, headerRef), [ref, headerRef]));\n\n return (\n <thead {...props} ref={mergedRef} className={UNSAFE_className} style={UNSAFE_style}>\n {children}\n </thead>\n );\n}\n\n/**\n * Renders a header section within a table.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableHeader = forwardRef(TableHeader, 'TableHeader');\n\nexport { _TableHeader as TableHeader };\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MutableRefObject, type ReactNode } from 'react';
|
|
2
|
+
export interface TableRefs {
|
|
3
|
+
header: MutableRefObject<HTMLTableSectionElement | null>;
|
|
4
|
+
}
|
|
5
|
+
export declare function TableRefsProvider({ children, header, }: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
header: MutableRefObject<HTMLTableSectionElement | null>;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function useTableRefs(): TableRefs;
|
|
10
|
+
//# sourceMappingURL=refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/contexts/refs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAElG,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;CAC1D;AAID,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;CAC1D,2CASA;AAGD,wBAAgB,YAAY,IAAI,SAAS,CAOxC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
|
+
const TableRefsContext = createContext(null);
|
|
4
|
+
export function TableRefsProvider({ children, header, }) {
|
|
5
|
+
const tableRefs = useMemo(() => ({
|
|
6
|
+
header,
|
|
7
|
+
}), [header]);
|
|
8
|
+
return _jsx(TableRefsContext.Provider, { value: tableRefs, children: children });
|
|
9
|
+
}
|
|
10
|
+
// eslint-disable-next-line react-refresh/only-export-components
|
|
11
|
+
export function useTableRefs() {
|
|
12
|
+
const tableRefs = useContext(TableRefsContext);
|
|
13
|
+
if (!tableRefs) {
|
|
14
|
+
throw new Error('Cannot use table refs outside of a table');
|
|
15
|
+
}
|
|
16
|
+
return tableRefs;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../../../src/components/table/contexts/refs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAyC,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAMlG,MAAM,gBAAgB,GAAG,aAAa,CAAmB,IAAI,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,GAIP;IACC,MAAM,SAAS,GAAc,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;KACP,CAAC,EACF,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,YAAG,QAAQ,GAA6B,CAAC;AAC7F,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY;IAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { createContext, type MutableRefObject, type ReactNode, useContext, useMemo } from 'react';\n\nexport interface TableRefs {\n header: MutableRefObject<HTMLTableSectionElement | null>;\n}\n\nconst TableRefsContext = createContext<TableRefs | null>(null);\n\nexport function TableRefsProvider({\n children,\n header,\n}: {\n children: ReactNode;\n header: MutableRefObject<HTMLTableSectionElement | null>;\n}) {\n const tableRefs: TableRefs = useMemo(\n () => ({\n header,\n }),\n [header],\n );\n\n return <TableRefsContext.Provider value={tableRefs}>{children}</TableRefsContext.Provider>;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useTableRefs(): TableRefs {\n const tableRefs = useContext(TableRefsContext);\n if (!tableRefs) {\n throw new Error('Cannot use table refs outside of a table');\n }\n\n return tableRefs;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,+CAA+C;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;GAIG;AACH,QAAA,MAAM,UAAU,wHAAqC,CAAC;AAEtD,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useRef } from 'react';
|
|
4
|
+
import { useId } from 'react-aria';
|
|
4
5
|
import { forwardRef } from '../../forward-ref.js';
|
|
5
6
|
import { useLocalizedMessages } from '../../i18n/localization-provider.js';
|
|
6
7
|
import { Spinner } from '../spinner/spinner.js';
|
|
7
|
-
import { useFullWidthCell } from './contexts/column-collection.js';
|
|
8
|
+
import { useColumnData, useFullWidthCell } from './contexts/column-collection.js';
|
|
8
9
|
import { useTableLoading } from './contexts/loading.js';
|
|
10
|
+
import { TableRowStateProvider, useTableRowState } from './contexts/row-state.js';
|
|
11
|
+
import { useTableCell } from './hooks/use-table-cell.js';
|
|
9
12
|
function TableBody({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
10
13
|
const isLoading = useTableLoading();
|
|
11
14
|
return (_jsxs("tbody", { ...props, ref: ref, className: UNSAFE_className, style: UNSAFE_style, children: [isLoading && _jsx(TableLoader, {}), children] }));
|
|
@@ -18,9 +21,17 @@ function TableBody({ children, UNSAFE_className, UNSAFE_style, ...props }, ref)
|
|
|
18
21
|
const _TableBody = forwardRef(TableBody, 'TableBody');
|
|
19
22
|
export { _TableBody as TableBody };
|
|
20
23
|
function TableLoader() {
|
|
24
|
+
const rowKey = useId();
|
|
25
|
+
return (_jsx(TableRowStateProvider, { rowKey: rowKey, children: _jsx(TableLoaderInner, {}) }));
|
|
26
|
+
}
|
|
27
|
+
function TableLoaderInner() {
|
|
21
28
|
const loaderCellRef = useRef(null);
|
|
22
|
-
const {
|
|
29
|
+
const { rowKey } = useTableRowState();
|
|
30
|
+
const { colSpan, columnKey } = useFullWidthCell(loaderCellRef);
|
|
31
|
+
// `useTableCell` requires `TableRowStateProvider`
|
|
32
|
+
const { cellProps } = useTableCell(loaderCellRef, rowKey, columnKey);
|
|
33
|
+
const columnData = useColumnData(columnKey);
|
|
23
34
|
const messages = useLocalizedMessages('table');
|
|
24
|
-
return (_jsx("tr", { children: _jsx("td", { ref: loaderCellRef, className: "cim-table-loading-state", colSpan: colSpan, "data-alignment": "center", children: _jsx("div", { className: "cim-table-loading-state-overlay", children: _jsx(Spinner, { size: "medium", "aria-label": messages.format('loadingData'), UNSAFE_style: { height: 'min(70%, 48px)' } }) }) }) }, "__cim__internal__loading-state__"));
|
|
35
|
+
return (_jsx("tr", { children: _jsx("td", { ...cellProps, ref: loaderCellRef, className: "cim-table-loading-state", "aria-colindex": columnData?.number, colSpan: colSpan, "data-alignment": "center", children: _jsx("div", { className: "cim-table-loading-state-overlay", children: _jsx(Spinner, { size: "medium", "aria-label": messages.format('loadingData'), UNSAFE_style: { height: 'min(70%, 48px)' } }) }) }) }, "__cim__internal__loading-state__"));
|
|
25
36
|
}
|
|
26
37
|
//# sourceMappingURL=table-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-body.js","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAqC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"table-body.js","sourceRoot":"","sources":["../../../../src/components/table/table-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAqC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAOzD,SAAS,SAAS,CAChB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,EAAkB,EACtE,GAA0C;IAE1C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IAEpC,OAAO,CACL,oBAAW,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,aACzE,SAAS,IAAI,KAAC,WAAW,KAAG,EAC5B,QAAQ,IACH,CACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEtD,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;AAEnC,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IAEvB,OAAO,CACL,KAAC,qBAAqB,IAAC,MAAM,EAAE,MAAM,YACnC,KAAC,gBAAgB,KAAG,GACE,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,aAAa,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC/D,kDAAkD;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CACL,uBACE,gBACM,SAAS,EACb,GAAG,EAAE,aAAa,EAClB,SAAS,EAAC,yBAAyB,mBACpB,UAAU,EAAE,MAAM,EACjC,OAAO,EAAE,OAAO,oBACD,QAAQ,YAEvB,cAAK,SAAS,EAAC,iCAAiC,YAC9C,KAAC,OAAO,IACN,IAAI,EAAC,QAAQ,gBACD,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAC1C,YAAY,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAC1C,GACE,GACH,IAhBC,kCAAkC,CAiBrC,CACN,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport { useRef, type ForwardedRef, type ReactNode } from 'react';\nimport { useId } from 'react-aria';\nimport { forwardRef } from '../../forward-ref.js';\nimport { useLocalizedMessages } from '../../i18n/localization-provider.js';\nimport { Spinner } from '../spinner/spinner.js';\nimport type { CommonProps } from '../types.js';\nimport { useColumnData, useFullWidthCell } from './contexts/column-collection.js';\nimport { useTableLoading } from './contexts/loading.js';\nimport { TableRowStateProvider, useTableRowState } from './contexts/row-state.js';\nimport { useTableCell } from './hooks/use-table-cell.js';\n\nexport interface TableBodyProps extends CommonProps {\n /** The rows that belong to this table body. */\n children: ReactNode;\n}\n\nfunction TableBody(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableBodyProps,\n ref: ForwardedRef<HTMLTableSectionElement>,\n) {\n const isLoading = useTableLoading();\n\n return (\n <tbody {...props} ref={ref} className={UNSAFE_className} style={UNSAFE_style}>\n {isLoading && <TableLoader />}\n {children}\n </tbody>\n );\n}\n\n/**\n * Renders a body section within a table.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableBody = forwardRef(TableBody, 'TableBody');\n\nexport { _TableBody as TableBody };\n\nfunction TableLoader() {\n const rowKey = useId();\n\n return (\n <TableRowStateProvider rowKey={rowKey}>\n <TableLoaderInner />\n </TableRowStateProvider>\n );\n}\n\nfunction TableLoaderInner() {\n const loaderCellRef = useRef<HTMLTableCellElement>(null);\n const { rowKey } = useTableRowState();\n const { colSpan, columnKey } = useFullWidthCell(loaderCellRef);\n // `useTableCell` requires `TableRowStateProvider`\n const { cellProps } = useTableCell(loaderCellRef, rowKey, columnKey);\n const columnData = useColumnData(columnKey);\n const messages = useLocalizedMessages('table');\n\n return (\n <tr key=\"__cim__internal__loading-state__\">\n <td\n {...cellProps}\n ref={loaderCellRef}\n className=\"cim-table-loading-state\"\n aria-colindex={columnData?.number}\n colSpan={colSpan}\n data-alignment=\"center\"\n >\n <div className=\"cim-table-loading-state-overlay\">\n <Spinner\n size=\"medium\"\n aria-label={messages.format('loadingData')}\n UNSAFE_style={{ height: 'min(70%, 48px)' }}\n />\n </div>\n </td>\n </tr>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-container.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-container.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,iBAAiB;IACzE,qCAAqC;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAuED;;;;GAIG;AACH,QAAA,MAAM,eAAe,qKAA+D,CAAC;AAErF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -1,11 +1,53 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useLayoutEffect, useObjectRef, useResizeObserver } from '@react-aria/utils';
|
|
3
4
|
import clsx from 'clsx';
|
|
5
|
+
import { useRef, useState } from 'react';
|
|
4
6
|
import { forwardRef } from '../../forward-ref.js';
|
|
5
7
|
import { withStyleProps } from '../../with-style-props.js';
|
|
6
8
|
import { FocusableContainer } from '../internal/focusable-container/focusable-container.js';
|
|
9
|
+
import { TableRefsProvider } from './contexts/refs.js';
|
|
7
10
|
function TableContainer({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
8
|
-
|
|
11
|
+
const containerRef = useObjectRef(ref);
|
|
12
|
+
const headerRef = useRef(null);
|
|
13
|
+
const [headerHeight, setHeaderHeight] = useState(40);
|
|
14
|
+
const [hasClassicHorizontalScrollbar, setHasClassicHorizontalScrollbar] = useState(false);
|
|
15
|
+
const [hasClassicVerticalScrollbar, setHasClassicVerticalScrollbar] = useState(false);
|
|
16
|
+
useResizeObserver({
|
|
17
|
+
ref: containerRef,
|
|
18
|
+
onResize: () => {
|
|
19
|
+
const element = containerRef.current;
|
|
20
|
+
if (element) {
|
|
21
|
+
setHasClassicHorizontalScrollbar(element.offsetHeight - element.clientHeight > Number.EPSILON);
|
|
22
|
+
setHasClassicVerticalScrollbar(element.offsetWidth - element.clientWidth > Number.EPSILON);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
useLayoutEffect(() => {
|
|
27
|
+
const headerElement = headerRef.current;
|
|
28
|
+
const isSSR = typeof window === 'undefined';
|
|
29
|
+
let observer;
|
|
30
|
+
if (headerElement && !isSSR) {
|
|
31
|
+
observer = new window.ResizeObserver((entries) => {
|
|
32
|
+
if (entries[0]) {
|
|
33
|
+
const { target } = entries[0];
|
|
34
|
+
setHeaderHeight(target.clientHeight);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
observer.observe(headerElement);
|
|
38
|
+
}
|
|
39
|
+
return () => {
|
|
40
|
+
if (headerElement && observer) {
|
|
41
|
+
observer.unobserve(headerElement);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, [headerRef]);
|
|
45
|
+
return (_jsx(TableRefsProvider, { header: headerRef, children: _jsx("div", { className: "cim-table-container-outer", children: _jsx(FocusableContainer, { ...props, ref: containerRef, className: clsx('cim-table-container', UNSAFE_className), style: {
|
|
46
|
+
...UNSAFE_style,
|
|
47
|
+
'--cim-table-header-height': `${headerHeight}px`,
|
|
48
|
+
'--cim-table-has-classic-v-scrollbar': hasClassicVerticalScrollbar ? 1 : 0,
|
|
49
|
+
'--cim-table-has-classic-h-scrollbar': hasClassicHorizontalScrollbar ? 1 : 0,
|
|
50
|
+
}, scrollDirection: "horizontal", children: children }) }) }));
|
|
9
51
|
}
|
|
10
52
|
/**
|
|
11
53
|
* Renders a scrollable container that allows a table to overflow in a responsive way.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-container.js","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"table-container.js","sourceRoot":"","sources":["../../../../src/components/table/table-container.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { useLayoutEffect, useObjectRef, useResizeObserver } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport { type CSSProperties, useRef, useState, type ForwardedRef, type ReactNode } from 'react';\nimport { forwardRef } from '../../forward-ref.js';\nimport { withStyleProps } from '../../with-style-props.js';\nimport { FocusableContainer } from '../internal/focusable-container/focusable-container.js';\nimport type { AriaLabelingProps, CommonProps } from '../types.js';\nimport { TableRefsProvider } from './contexts/refs.js';\n\nexport interface TableContainerProps extends CommonProps, AriaLabelingProps {\n /** The contents of the container. */\n children: ReactNode;\n}\n\nfunction TableContainer(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const containerRef = useObjectRef(ref);\n const headerRef = useRef<HTMLTableSectionElement | null>(null);\n const [headerHeight, setHeaderHeight] = useState(40);\n const [hasClassicHorizontalScrollbar, setHasClassicHorizontalScrollbar] = useState(false);\n const [hasClassicVerticalScrollbar, setHasClassicVerticalScrollbar] = useState(false);\n\n useResizeObserver({\n ref: containerRef,\n onResize: () => {\n const element = containerRef.current;\n if (element) {\n setHasClassicHorizontalScrollbar(element.offsetHeight - element.clientHeight > Number.EPSILON);\n setHasClassicVerticalScrollbar(element.offsetWidth - element.clientWidth > Number.EPSILON);\n }\n },\n });\n\n useLayoutEffect(() => {\n const headerElement = headerRef.current;\n const isSSR = typeof window === 'undefined';\n\n let observer: ResizeObserver | undefined;\n\n if (headerElement && !isSSR) {\n observer = new window.ResizeObserver((entries) => {\n if (entries[0]) {\n const { target } = entries[0];\n setHeaderHeight(target.clientHeight);\n }\n });\n\n observer.observe(headerElement);\n }\n\n return () => {\n if (headerElement && observer) {\n observer.unobserve(headerElement);\n }\n };\n }, [headerRef]);\n\n return (\n <TableRefsProvider header={headerRef}>\n <div className=\"cim-table-container-outer\">\n <FocusableContainer\n {...props}\n ref={containerRef}\n className={clsx('cim-table-container', UNSAFE_className)}\n style={\n {\n ...UNSAFE_style,\n '--cim-table-header-height': `${headerHeight}px`,\n '--cim-table-has-classic-v-scrollbar': hasClassicVerticalScrollbar ? 1 : 0,\n '--cim-table-has-classic-h-scrollbar': hasClassicHorizontalScrollbar ? 1 : 0,\n } as CSSProperties\n }\n scrollDirection=\"horizontal\"\n >\n {children}\n </FocusableContainer>\n </div>\n </TableRefsProvider>\n );\n}\n\n/**\n * Renders a scrollable container that allows a table to overflow in a responsive way.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableContainer = withStyleProps(forwardRef(TableContainer), 'TableContainer');\n\nexport { _TableContainer as TableContainer };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,wDAAwD;IACxD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;GAIG;AACH,QAAA,MAAM,YAAY,0HAAyC,CAAC;AAE5D,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { mergeRefs, useObjectRef } from '@react-aria/utils';
|
|
4
|
+
import { useMemo } from 'react';
|
|
3
5
|
import { forwardRef } from '../../forward-ref.js';
|
|
6
|
+
import { useTableRefs } from './contexts/refs.js';
|
|
4
7
|
function TableHeader({ children, UNSAFE_className, UNSAFE_style, ...props }, ref) {
|
|
5
|
-
|
|
8
|
+
const { header: headerRef } = useTableRefs();
|
|
9
|
+
const mergedRef = useObjectRef(useMemo(() => mergeRefs(ref, headerRef), [ref, headerRef]));
|
|
10
|
+
return (_jsx("thead", { ...props, ref: mergedRef, className: UNSAFE_className, style: UNSAFE_style, children: children }));
|
|
6
11
|
}
|
|
7
12
|
/**
|
|
8
13
|
* Renders a header section within a table.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-header.js","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"table-header.js","sourceRoot":"","sources":["../../../../src/components/table/table-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAqC,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,SAAS,WAAW,CAClB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,EAAoB,EACxE,GAA0C;IAE1C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO,CACL,mBAAW,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,YAC/E,QAAQ,GACH,CACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAE5D,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC","sourcesContent":["'use client';\n\nimport { mergeRefs, useObjectRef } from '@react-aria/utils';\nimport { useMemo, type ForwardedRef, type ReactNode } from 'react';\nimport { forwardRef } from '../../forward-ref.js';\nimport type { CommonProps } from '../types.js';\nimport { useTableRefs } from './contexts/refs.js';\n\nexport interface TableHeaderProps extends CommonProps {\n /** The header rows that belong to this table header. */\n children: ReactNode;\n}\n\nfunction TableHeader(\n { children, UNSAFE_className, UNSAFE_style, ...props }: TableHeaderProps,\n ref: ForwardedRef<HTMLTableSectionElement>,\n) {\n const { header: headerRef } = useTableRefs();\n const mergedRef = useObjectRef(useMemo(() => mergeRefs(ref, headerRef), [ref, headerRef]));\n\n return (\n <thead {...props} ref={mergedRef} className={UNSAFE_className} style={UNSAFE_style}>\n {children}\n </thead>\n );\n}\n\n/**\n * Renders a header section within a table.\n *\n * See [table usage guidelines](https://ui.cimpress.io/components/table/) and [table building guide](https://ui.cimpress.io/dev-guides/tables/).\n */\nconst _TableHeader = forwardRef(TableHeader, 'TableHeader');\n\nexport { _TableHeader as TableHeader };\n"]}
|