@veeqo/ui 9.10.2 → 9.11.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.
Files changed (49) hide show
  1. package/dist/components/Accordion/Accordion.cjs +4 -4
  2. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  3. package/dist/components/Accordion/Accordion.js +4 -4
  4. package/dist/components/Accordion/Accordion.js.map +1 -1
  5. package/dist/components/DataGrid/DataGrid.cjs +22 -52
  6. package/dist/components/DataGrid/DataGrid.cjs.map +1 -1
  7. package/dist/components/DataGrid/DataGrid.d.ts +1 -1
  8. package/dist/components/DataGrid/DataGrid.js +22 -52
  9. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  10. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs +9 -0
  11. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs.map +1 -1
  12. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +9 -0
  13. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js.map +1 -1
  14. package/dist/components/DataGrid/components/Columns/Columns.cjs +9 -8
  15. package/dist/components/DataGrid/components/Columns/Columns.cjs.map +1 -1
  16. package/dist/components/DataGrid/components/Columns/Columns.js +9 -8
  17. package/dist/components/DataGrid/components/Columns/Columns.js.map +1 -1
  18. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs +7 -0
  19. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs.map +1 -1
  20. package/dist/components/DataGrid/components/GridContainer/GridContainer.js +7 -0
  21. package/dist/components/DataGrid/components/GridContainer/GridContainer.js.map +1 -1
  22. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +10 -2
  23. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs.map +1 -1
  24. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +10 -2
  25. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js.map +1 -1
  26. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.cjs +2 -2
  27. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.cjs.map +1 -1
  28. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.js +2 -2
  29. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.js.map +1 -1
  30. package/dist/components/DataGrid/hooks/index.d.ts +4 -0
  31. package/dist/components/DataGrid/hooks/useColumnState.cjs +67 -0
  32. package/dist/components/DataGrid/hooks/useColumnState.cjs.map +1 -0
  33. package/dist/components/DataGrid/hooks/useColumnState.d.ts +14 -0
  34. package/dist/components/DataGrid/hooks/useColumnState.js +65 -0
  35. package/dist/components/DataGrid/hooks/useColumnState.js.map +1 -0
  36. package/dist/components/DataGrid/hooks/useColumnWidthState.cjs +52 -0
  37. package/dist/components/DataGrid/hooks/useColumnWidthState.cjs.map +1 -0
  38. package/dist/components/DataGrid/hooks/useColumnWidthState.d.ts +25 -0
  39. package/dist/components/DataGrid/hooks/useColumnWidthState.js +50 -0
  40. package/dist/components/DataGrid/hooks/useColumnWidthState.js.map +1 -0
  41. package/dist/components/DataGrid/types/ColumnWidths.d.ts +1 -0
  42. package/dist/components/DataGrid/types/DataGridProps.d.ts +10 -0
  43. package/dist/components/DataGrid/utils/index.d.ts +0 -1
  44. package/package.json +1 -1
  45. package/dist/components/DataGrid/utils/isLastColumn.cjs +0 -11
  46. package/dist/components/DataGrid/utils/isLastColumn.cjs.map +0 -1
  47. package/dist/components/DataGrid/utils/isLastColumn.d.ts +0 -2
  48. package/dist/components/DataGrid/utils/isLastColumn.js +0 -9
  49. package/dist/components/DataGrid/utils/isLastColumn.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Columns.cjs","sources":["../../../../../src/components/DataGrid/components/Columns/Columns.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { useResizeObserver } from '../../../../hooks';\nimport { isLastColumn } from '../../utils';\n\ntype ColumnsProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n};\n\n/**\n * Renders the colgroup and col's for the table, responsible for controlling the width of columns within the table, including\n * handling situations where overflow may be necessary while resizing.\n *\n * Separated from the Header component to allow for better performance, since we can reliably memoize col's and limit updates only\n * to when the table sizing state changes.\n */\nexport const Columns = ({ table }: ColumnsProps) => {\n const headers = table.getLeafHeaders();\n\n // Setup state and hook to observe the last column in the table. If the last column is larger than its\n // default size, we allow it to render with `width: auto;` to ensure the table fills the container.\n // If the last column is smaller than its default size, the table should start to 'overflow' its parent,\n // so we switch to using a fixed width on the column instead.\n const lastColumnRef = useRef<HTMLTableColElement>(null);\n const [lastColumnAuto, setLastColumnAuto] = useState(true);\n useResizeObserver({\n targetRef: lastColumnRef,\n resizeHandler: ({ width }) => {\n const lastHeader = headers[headers.length - 1];\n\n if (width <= lastHeader.column.columnDef.size!) {\n setLastColumnAuto(false);\n } else {\n setLastColumnAuto(true);\n }\n },\n throttleMs: 10,\n });\n\n // Memoized columns.\n const columns = useMemo(\n () => (\n <colgroup>\n {headers.map((header) => {\n const lastColumn = isLastColumn(table, header.column);\n const columnWidth =\n lastColumn && lastColumnAuto ? 'auto' : `${header.column.getSize()}px`;\n\n return (\n <col\n ref={lastColumn ? lastColumnRef : undefined}\n key={header.column.id}\n style={{ width: columnWidth, minWidth: header.column.columnDef.minSize }}\n />\n );\n })}\n </colgroup>\n ),\n // Dependencies here are as recommended by TanStack docs (https://tanstack.com/table/latest/docs/framework/react/examples/column-resizing-performant)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table.getState().columnSizingInfo, table.getState().columnSizing, lastColumnAuto, headers],\n );\n\n return columns;\n};\n"],"names":["useRef","useState","useResizeObserver","useMemo","React","isLastColumn"],"mappings":";;;;;;;;;;;;;;AAaA;;;;;;AAMG;MACU,OAAO,GAAG,CAAC,EAAE,KAAK,EAAgB,KAAI;AACjD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE;;;;;AAMtC,IAAA,MAAM,aAAa,GAAGA,YAAM,CAAsB,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGC,cAAQ,CAAC,IAAI,CAAC;AAC1D,IAAAC,mCAAiB,CAAC;AAChB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9C,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAK,EAAE;gBAC9C,iBAAiB,CAAC,KAAK,CAAC;AACzB;AAAM,iBAAA;gBACL,iBAAiB,CAAC,IAAI,CAAC;AACxB;SACF;AACD,QAAA,UAAU,EAAE,EAAE;AACf,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAGC,aAAO,CACrB,OACEC,sBACG,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QACtB,MAAM,UAAU,GAAGC,yBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACrD,MAAM,WAAW,GACf,UAAU,IAAI,cAAc,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAExE,QAAA,QACED,sBACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,EAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACrB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAA,CACxE;KAEL,CAAC,CACO,CACZ;;;AAGD,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAC5F;AAED,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"Columns.cjs","sources":["../../../../../src/components/DataGrid/components/Columns/Columns.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { useResizeObserver } from '../../../../hooks';\n\ntype ColumnsProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n};\n\n/**\n * Renders the colgroup and col's for the table, responsible for controlling the width of columns within the table, including\n * handling situations where overflow may be necessary while resizing.\n *\n * Separated from the Header component to allow for better performance, since we can reliably memoize col's and limit updates only\n * to when the table sizing state changes.\n */\nexport const Columns = ({ table }: ColumnsProps) => {\n const headers = table.getLeafHeaders();\n\n /**\n * Setup state and hook to observe the last column in the table. If the last column is larger than its\n * default size, we allow it to render with `width: auto;` to ensure the table fills the container.\n *\n * If the last column is smaller than its default size, the table should start to 'overflow' its parent,\n * so we switch to using a fixed width on the column instead.\n */\n const lastColumnRef = useRef<HTMLTableColElement>(null);\n const [lastColumnAuto, setLastColumnAuto] = useState(true);\n useResizeObserver({\n targetRef: lastColumnRef,\n resizeHandler: ({ width }) => {\n const lastHeader = headers[headers.length - 1];\n if (width <= lastHeader.column.getSize()) {\n setLastColumnAuto(false);\n } else {\n setLastColumnAuto(true);\n }\n },\n throttleMs: 10,\n });\n\n // Memoized columns.\n const columns = useMemo(\n () => (\n <colgroup>\n {headers.map((header) => {\n const lastColumn = header.column.getIsLastColumn();\n const columnWidth =\n lastColumn && lastColumnAuto ? 'auto' : `${header.column.getSize()}px`;\n\n return (\n <col\n ref={lastColumn ? lastColumnRef : undefined}\n key={header.column.id}\n style={{ width: columnWidth, minWidth: header.column.columnDef.minSize }}\n />\n );\n })}\n </colgroup>\n ),\n // Dependencies here are as recommended by TanStack docs (https://tanstack.com/table/latest/docs/framework/react/examples/column-resizing-performant)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table.getState().columnSizingInfo, table.getState().columnSizing, lastColumnAuto, headers],\n );\n\n return columns;\n};\n"],"names":["useRef","useState","useResizeObserver","useMemo","React"],"mappings":";;;;;;;;;;;;AAYA;;;;;;AAMG;MACU,OAAO,GAAG,CAAC,EAAE,KAAK,EAAgB,KAAI;AACjD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE;AAEtC;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,GAAGA,YAAM,CAAsB,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGC,cAAQ,CAAC,IAAI,CAAC;AAC1D,IAAAC,mCAAiB,CAAC;AAChB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACxC,iBAAiB,CAAC,KAAK,CAAC;AACzB;AAAM,iBAAA;gBACL,iBAAiB,CAAC,IAAI,CAAC;AACxB;SACF;AACD,QAAA,UAAU,EAAE,EAAE;AACf,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAGC,aAAO,CACrB,OACEC,sBACG,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;QAClD,MAAM,WAAW,GACf,UAAU,IAAI,cAAc,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAExE,QAAA,QACEA,sBACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,EAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACrB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAA,CACxE;KAEL,CAAC,CACO,CACZ;;;AAGD,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAC5F;AAED,IAAA,OAAO,OAAO;AAChB;;;;"}
@@ -3,8 +3,6 @@ import '../../../../hooks/useFocusVisible.js';
3
3
  import 'uid/secure';
4
4
  import { useResizeObserver } from '../../../../hooks/useResizeObserver.js';
5
5
  import 'lodash.throttle';
6
- import { isLastColumn } from '../../utils/isLastColumn.js';
7
- import '@tanstack/react-table';
8
6
 
9
7
  /**
10
8
  * Renders the colgroup and col's for the table, responsible for controlling the width of columns within the table, including
@@ -15,17 +13,20 @@ import '@tanstack/react-table';
15
13
  */
16
14
  const Columns = ({ table }) => {
17
15
  const headers = table.getLeafHeaders();
18
- // Setup state and hook to observe the last column in the table. If the last column is larger than its
19
- // default size, we allow it to render with `width: auto;` to ensure the table fills the container.
20
- // If the last column is smaller than its default size, the table should start to 'overflow' its parent,
21
- // so we switch to using a fixed width on the column instead.
16
+ /**
17
+ * Setup state and hook to observe the last column in the table. If the last column is larger than its
18
+ * default size, we allow it to render with `width: auto;` to ensure the table fills the container.
19
+ *
20
+ * If the last column is smaller than its default size, the table should start to 'overflow' its parent,
21
+ * so we switch to using a fixed width on the column instead.
22
+ */
22
23
  const lastColumnRef = useRef(null);
23
24
  const [lastColumnAuto, setLastColumnAuto] = useState(true);
24
25
  useResizeObserver({
25
26
  targetRef: lastColumnRef,
26
27
  resizeHandler: ({ width }) => {
27
28
  const lastHeader = headers[headers.length - 1];
28
- if (width <= lastHeader.column.columnDef.size) {
29
+ if (width <= lastHeader.column.getSize()) {
29
30
  setLastColumnAuto(false);
30
31
  }
31
32
  else {
@@ -36,7 +37,7 @@ const Columns = ({ table }) => {
36
37
  });
37
38
  // Memoized columns.
38
39
  const columns = useMemo(() => (React__default.createElement("colgroup", null, headers.map((header) => {
39
- const lastColumn = isLastColumn(table, header.column);
40
+ const lastColumn = header.column.getIsLastColumn();
40
41
  const columnWidth = lastColumn && lastColumnAuto ? 'auto' : `${header.column.getSize()}px`;
41
42
  return (React__default.createElement("col", { ref: lastColumn ? lastColumnRef : undefined, key: header.column.id, style: { width: columnWidth, minWidth: header.column.columnDef.minSize } }));
42
43
  }))),
@@ -1 +1 @@
1
- {"version":3,"file":"Columns.js","sources":["../../../../../src/components/DataGrid/components/Columns/Columns.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { useResizeObserver } from '../../../../hooks';\nimport { isLastColumn } from '../../utils';\n\ntype ColumnsProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n};\n\n/**\n * Renders the colgroup and col's for the table, responsible for controlling the width of columns within the table, including\n * handling situations where overflow may be necessary while resizing.\n *\n * Separated from the Header component to allow for better performance, since we can reliably memoize col's and limit updates only\n * to when the table sizing state changes.\n */\nexport const Columns = ({ table }: ColumnsProps) => {\n const headers = table.getLeafHeaders();\n\n // Setup state and hook to observe the last column in the table. If the last column is larger than its\n // default size, we allow it to render with `width: auto;` to ensure the table fills the container.\n // If the last column is smaller than its default size, the table should start to 'overflow' its parent,\n // so we switch to using a fixed width on the column instead.\n const lastColumnRef = useRef<HTMLTableColElement>(null);\n const [lastColumnAuto, setLastColumnAuto] = useState(true);\n useResizeObserver({\n targetRef: lastColumnRef,\n resizeHandler: ({ width }) => {\n const lastHeader = headers[headers.length - 1];\n\n if (width <= lastHeader.column.columnDef.size!) {\n setLastColumnAuto(false);\n } else {\n setLastColumnAuto(true);\n }\n },\n throttleMs: 10,\n });\n\n // Memoized columns.\n const columns = useMemo(\n () => (\n <colgroup>\n {headers.map((header) => {\n const lastColumn = isLastColumn(table, header.column);\n const columnWidth =\n lastColumn && lastColumnAuto ? 'auto' : `${header.column.getSize()}px`;\n\n return (\n <col\n ref={lastColumn ? lastColumnRef : undefined}\n key={header.column.id}\n style={{ width: columnWidth, minWidth: header.column.columnDef.minSize }}\n />\n );\n })}\n </colgroup>\n ),\n // Dependencies here are as recommended by TanStack docs (https://tanstack.com/table/latest/docs/framework/react/examples/column-resizing-performant)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table.getState().columnSizingInfo, table.getState().columnSizing, lastColumnAuto, headers],\n );\n\n return columns;\n};\n"],"names":["React"],"mappings":";;;;;;;;AAaA;;;;;;AAMG;MACU,OAAO,GAAG,CAAC,EAAE,KAAK,EAAgB,KAAI;AACjD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE;;;;;AAMtC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAsB,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC1D,IAAA,iBAAiB,CAAC;AAChB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9C,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAK,EAAE;gBAC9C,iBAAiB,CAAC,KAAK,CAAC;AACzB;AAAM,iBAAA;gBACL,iBAAiB,CAAC,IAAI,CAAC;AACxB;SACF;AACD,QAAA,UAAU,EAAE,EAAE;AACf,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,OAAO,CACrB,OACEA,cACG,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QACtB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACrD,MAAM,WAAW,GACf,UAAU,IAAI,cAAc,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAExE,QAAA,QACEA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,EAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACrB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAA,CACxE;KAEL,CAAC,CACO,CACZ;;;AAGD,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAC5F;AAED,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"Columns.js","sources":["../../../../../src/components/DataGrid/components/Columns/Columns.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { useResizeObserver } from '../../../../hooks';\n\ntype ColumnsProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n};\n\n/**\n * Renders the colgroup and col's for the table, responsible for controlling the width of columns within the table, including\n * handling situations where overflow may be necessary while resizing.\n *\n * Separated from the Header component to allow for better performance, since we can reliably memoize col's and limit updates only\n * to when the table sizing state changes.\n */\nexport const Columns = ({ table }: ColumnsProps) => {\n const headers = table.getLeafHeaders();\n\n /**\n * Setup state and hook to observe the last column in the table. If the last column is larger than its\n * default size, we allow it to render with `width: auto;` to ensure the table fills the container.\n *\n * If the last column is smaller than its default size, the table should start to 'overflow' its parent,\n * so we switch to using a fixed width on the column instead.\n */\n const lastColumnRef = useRef<HTMLTableColElement>(null);\n const [lastColumnAuto, setLastColumnAuto] = useState(true);\n useResizeObserver({\n targetRef: lastColumnRef,\n resizeHandler: ({ width }) => {\n const lastHeader = headers[headers.length - 1];\n if (width <= lastHeader.column.getSize()) {\n setLastColumnAuto(false);\n } else {\n setLastColumnAuto(true);\n }\n },\n throttleMs: 10,\n });\n\n // Memoized columns.\n const columns = useMemo(\n () => (\n <colgroup>\n {headers.map((header) => {\n const lastColumn = header.column.getIsLastColumn();\n const columnWidth =\n lastColumn && lastColumnAuto ? 'auto' : `${header.column.getSize()}px`;\n\n return (\n <col\n ref={lastColumn ? lastColumnRef : undefined}\n key={header.column.id}\n style={{ width: columnWidth, minWidth: header.column.columnDef.minSize }}\n />\n );\n })}\n </colgroup>\n ),\n // Dependencies here are as recommended by TanStack docs (https://tanstack.com/table/latest/docs/framework/react/examples/column-resizing-performant)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table.getState().columnSizingInfo, table.getState().columnSizing, lastColumnAuto, headers],\n );\n\n return columns;\n};\n"],"names":["React"],"mappings":";;;;;;AAYA;;;;;;AAMG;MACU,OAAO,GAAG,CAAC,EAAE,KAAK,EAAgB,KAAI;AACjD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE;AAEtC;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,GAAG,MAAM,CAAsB,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC1D,IAAA,iBAAiB,CAAC;AAChB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACxC,iBAAiB,CAAC,KAAK,CAAC;AACzB;AAAM,iBAAA;gBACL,iBAAiB,CAAC,IAAI,CAAC;AACxB;SACF;AACD,QAAA,UAAU,EAAE,EAAE;AACf,KAAA,CAAC;;AAGF,IAAA,MAAM,OAAO,GAAG,OAAO,CACrB,OACEA,cACG,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;QAClD,MAAM,WAAW,GACf,UAAU,IAAI,cAAc,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAExE,QAAA,QACEA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,EAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACrB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAA,CACxE;KAEL,CAAC,CACO,CACZ;;;AAGD,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAC5F;AAED,IAAA,OAAO,OAAO;AAChB;;;;"}
@@ -6,6 +6,13 @@ var buildClassnames = require('../../../../utils/buildClassnames.cjs');
6
6
  var Container = require('./Container/Container.cjs');
7
7
  var GridContainer_module = require('./GridContainer.module.scss.cjs');
8
8
  var usePinnedColumnLayout = require('../../hooks/usePinnedColumnLayout.cjs');
9
+ require('@tanstack/react-table');
10
+ require('../../../Stack/Stack.cjs');
11
+ require('../../../Choice/components/styled.cjs');
12
+ require('../../../Text/Text.cjs');
13
+ require('../../../Checkbox/styled.cjs');
14
+ require('uid/secure');
15
+ require('../../../Radio/Radio.cjs');
9
16
 
10
17
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"GridContainer.cjs","sources":["../../../../../src/components/DataGrid/components/GridContainer/GridContainer.tsx"],"sourcesContent":["import React, { RefObject, CSSProperties, ReactNode, AriaAttributes } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\nimport { SizeScale } from 'Theme/modules/sizes';\n\nimport { BorderMode } from '../../types/enums';\nimport { AriaRoles } from '../../types';\nimport { buildClassnames } from '../../../../utils/buildClassnames';\n\nimport { Container } from './Container';\n\nimport styles from './GridContainer.module.scss';\nimport { usePinnedColumnLayout } from '../../hooks';\n\ntype GridContainerProps = Pick<AriaAttributes, 'aria-label'> & {\n /**\n * Reference to be used for the outer container element.\n */\n containerRef?: RefObject<HTMLDivElement>;\n\n /**\n * Reference to be used for the table element.\n */\n tableRef?: RefObject<HTMLTableElement>;\n\n /**\n * Border mode.\n */\n borderMode: BorderMode;\n\n /**\n * Additional container styles.\n */\n containerStyles?: CSSProperties;\n\n /**\n * ARIA roles used in the grid.\n */\n ariaRoles: AriaRoles;\n\n /**\n * Whether resizeable columns are enabled or not.\n */\n enableResizeableColumns: boolean;\n\n /**\n * Density of the grid.\n */\n density: keyof SizeScale;\n\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * Child elements (table contents).\n */\n children: ReactNode;\n};\n\nconst gridContainerClassname = buildClassnames([styles.dataGridStyle, 'data-grid']);\n\n/**\n * The Grid container, which includes a wrapper and the table element itself. Controls table layout, applies\n * styling and sets table-specific CSS variables (such as density).\n */\nexport const GridContainer = ({\n containerRef,\n tableRef,\n borderMode,\n containerStyles,\n ariaRoles,\n enableResizeableColumns,\n density,\n table,\n children,\n 'aria-label': ariaLabel,\n}: GridContainerProps) => {\n const { pinnedColumnLayoutStyles } = usePinnedColumnLayout({ table });\n\n return (\n <Container ref={containerRef} borderMode={borderMode} style={containerStyles}>\n <table\n ref={tableRef}\n className={gridContainerClassname}\n role={ariaRoles.table}\n style={\n {\n tableLayout: enableResizeableColumns ? 'fixed' : 'auto',\n '--density': theme.sizes[density],\n ...pinnedColumnLayoutStyles,\n } as CSSProperties\n }\n aria-colcount={table.getFlatHeaders().length}\n aria-rowcount={table.getRowCount()}\n aria-label={ariaLabel}\n >\n {children}\n </table>\n </Container>\n );\n};\n"],"names":["buildClassnames","styles","usePinnedColumnLayout","React","Container","theme"],"mappings":";;;;;;;;;;;;;AA8DA,MAAM,sBAAsB,GAAGA,+BAAe,CAAC,CAACC,oBAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEnF;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EAAE,SAAS,GACJ,KAAI;IACvB,MAAM,EAAE,wBAAwB,EAAE,GAAGC,2CAAqB,CAAC,EAAE,KAAK,EAAE,CAAC;AAErE,IAAA,QACEC,sBAAA,CAAA,aAAA,CAACC,mBAAS,EAAA,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAA;AAC1E,QAAAD,sBAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,SAAS,CAAC,KAAK,EACrB,KAAK,EACH;gBACE,WAAW,EAAE,uBAAuB,GAAG,OAAO,GAAG,MAAM;AACvD,gBAAA,WAAW,EAAEE,WAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACjC,gBAAA,GAAG,wBAAwB;AACX,aAAA,EAAA,eAAA,EAEL,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,mBAC7B,KAAK,CAAC,WAAW,EAAE,gBACtB,SAAS,EAAA,EAEpB,QAAQ,CACH,CACE;AAEhB;;;;"}
1
+ {"version":3,"file":"GridContainer.cjs","sources":["../../../../../src/components/DataGrid/components/GridContainer/GridContainer.tsx"],"sourcesContent":["import React, { RefObject, CSSProperties, ReactNode, AriaAttributes } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\nimport { SizeScale } from 'Theme/modules/sizes';\n\nimport { BorderMode } from '../../types/enums';\nimport { AriaRoles } from '../../types';\nimport { buildClassnames } from '../../../../utils/buildClassnames';\n\nimport { Container } from './Container';\n\nimport styles from './GridContainer.module.scss';\nimport { usePinnedColumnLayout } from '../../hooks';\n\ntype GridContainerProps = Pick<AriaAttributes, 'aria-label'> & {\n /**\n * Reference to be used for the outer container element.\n */\n containerRef?: RefObject<HTMLDivElement>;\n\n /**\n * Reference to be used for the table element.\n */\n tableRef?: RefObject<HTMLTableElement>;\n\n /**\n * Border mode.\n */\n borderMode: BorderMode;\n\n /**\n * Additional container styles.\n */\n containerStyles?: CSSProperties;\n\n /**\n * ARIA roles used in the grid.\n */\n ariaRoles: AriaRoles;\n\n /**\n * Whether resizeable columns are enabled or not.\n */\n enableResizeableColumns: boolean;\n\n /**\n * Density of the grid.\n */\n density: keyof SizeScale;\n\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * Child elements (table contents).\n */\n children: ReactNode;\n};\n\nconst gridContainerClassname = buildClassnames([styles.dataGridStyle, 'data-grid']);\n\n/**\n * The Grid container, which includes a wrapper and the table element itself. Controls table layout, applies\n * styling and sets table-specific CSS variables (such as density).\n */\nexport const GridContainer = ({\n containerRef,\n tableRef,\n borderMode,\n containerStyles,\n ariaRoles,\n enableResizeableColumns,\n density,\n table,\n children,\n 'aria-label': ariaLabel,\n}: GridContainerProps) => {\n const { pinnedColumnLayoutStyles } = usePinnedColumnLayout({ table });\n\n return (\n <Container ref={containerRef} borderMode={borderMode} style={containerStyles}>\n <table\n ref={tableRef}\n className={gridContainerClassname}\n role={ariaRoles.table}\n style={\n {\n tableLayout: enableResizeableColumns ? 'fixed' : 'auto',\n '--density': theme.sizes[density],\n ...pinnedColumnLayoutStyles,\n } as CSSProperties\n }\n aria-colcount={table.getFlatHeaders().length}\n aria-rowcount={table.getRowCount()}\n aria-label={ariaLabel}\n >\n {children}\n </table>\n </Container>\n );\n};\n"],"names":["buildClassnames","styles","usePinnedColumnLayout","React","Container","theme"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8DA,MAAM,sBAAsB,GAAGA,+BAAe,CAAC,CAACC,oBAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEnF;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EAAE,SAAS,GACJ,KAAI;IACvB,MAAM,EAAE,wBAAwB,EAAE,GAAGC,2CAAqB,CAAC,EAAE,KAAK,EAAE,CAAC;AAErE,IAAA,QACEC,sBAAA,CAAA,aAAA,CAACC,mBAAS,EAAA,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAA;AAC1E,QAAAD,sBAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,SAAS,CAAC,KAAK,EACrB,KAAK,EACH;gBACE,WAAW,EAAE,uBAAuB,GAAG,OAAO,GAAG,MAAM;AACvD,gBAAA,WAAW,EAAEE,WAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACjC,gBAAA,GAAG,wBAAwB;AACX,aAAA,EAAA,eAAA,EAEL,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,mBAC7B,KAAK,CAAC,WAAW,EAAE,gBACtB,SAAS,EAAA,EAEpB,QAAQ,CACH,CACE;AAEhB;;;;"}
@@ -4,6 +4,13 @@ import { buildClassnames } from '../../../../utils/buildClassnames.js';
4
4
  import { Container } from './Container/Container.js';
5
5
  import styles from './GridContainer.module.scss.js';
6
6
  import { usePinnedColumnLayout } from '../../hooks/usePinnedColumnLayout.js';
7
+ import '@tanstack/react-table';
8
+ import '../../../Stack/Stack.js';
9
+ import '../../../Choice/components/styled.js';
10
+ import '../../../Text/Text.js';
11
+ import '../../../Checkbox/styled.js';
12
+ import 'uid/secure';
13
+ import '../../../Radio/Radio.js';
7
14
 
8
15
  const gridContainerClassname = buildClassnames([styles.dataGridStyle, 'data-grid']);
9
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"GridContainer.js","sources":["../../../../../src/components/DataGrid/components/GridContainer/GridContainer.tsx"],"sourcesContent":["import React, { RefObject, CSSProperties, ReactNode, AriaAttributes } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\nimport { SizeScale } from 'Theme/modules/sizes';\n\nimport { BorderMode } from '../../types/enums';\nimport { AriaRoles } from '../../types';\nimport { buildClassnames } from '../../../../utils/buildClassnames';\n\nimport { Container } from './Container';\n\nimport styles from './GridContainer.module.scss';\nimport { usePinnedColumnLayout } from '../../hooks';\n\ntype GridContainerProps = Pick<AriaAttributes, 'aria-label'> & {\n /**\n * Reference to be used for the outer container element.\n */\n containerRef?: RefObject<HTMLDivElement>;\n\n /**\n * Reference to be used for the table element.\n */\n tableRef?: RefObject<HTMLTableElement>;\n\n /**\n * Border mode.\n */\n borderMode: BorderMode;\n\n /**\n * Additional container styles.\n */\n containerStyles?: CSSProperties;\n\n /**\n * ARIA roles used in the grid.\n */\n ariaRoles: AriaRoles;\n\n /**\n * Whether resizeable columns are enabled or not.\n */\n enableResizeableColumns: boolean;\n\n /**\n * Density of the grid.\n */\n density: keyof SizeScale;\n\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * Child elements (table contents).\n */\n children: ReactNode;\n};\n\nconst gridContainerClassname = buildClassnames([styles.dataGridStyle, 'data-grid']);\n\n/**\n * The Grid container, which includes a wrapper and the table element itself. Controls table layout, applies\n * styling and sets table-specific CSS variables (such as density).\n */\nexport const GridContainer = ({\n containerRef,\n tableRef,\n borderMode,\n containerStyles,\n ariaRoles,\n enableResizeableColumns,\n density,\n table,\n children,\n 'aria-label': ariaLabel,\n}: GridContainerProps) => {\n const { pinnedColumnLayoutStyles } = usePinnedColumnLayout({ table });\n\n return (\n <Container ref={containerRef} borderMode={borderMode} style={containerStyles}>\n <table\n ref={tableRef}\n className={gridContainerClassname}\n role={ariaRoles.table}\n style={\n {\n tableLayout: enableResizeableColumns ? 'fixed' : 'auto',\n '--density': theme.sizes[density],\n ...pinnedColumnLayoutStyles,\n } as CSSProperties\n }\n aria-colcount={table.getFlatHeaders().length}\n aria-rowcount={table.getRowCount()}\n aria-label={ariaLabel}\n >\n {children}\n </table>\n </Container>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;AA8DA,MAAM,sBAAsB,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEnF;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EAAE,SAAS,GACJ,KAAI;IACvB,MAAM,EAAE,wBAAwB,EAAE,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC;AAErE,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAA;AAC1E,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,SAAS,CAAC,KAAK,EACrB,KAAK,EACH;gBACE,WAAW,EAAE,uBAAuB,GAAG,OAAO,GAAG,MAAM;AACvD,gBAAA,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACjC,gBAAA,GAAG,wBAAwB;AACX,aAAA,EAAA,eAAA,EAEL,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,mBAC7B,KAAK,CAAC,WAAW,EAAE,gBACtB,SAAS,EAAA,EAEpB,QAAQ,CACH,CACE;AAEhB;;;;"}
1
+ {"version":3,"file":"GridContainer.js","sources":["../../../../../src/components/DataGrid/components/GridContainer/GridContainer.tsx"],"sourcesContent":["import React, { RefObject, CSSProperties, ReactNode, AriaAttributes } from 'react';\nimport { Table } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\nimport { SizeScale } from 'Theme/modules/sizes';\n\nimport { BorderMode } from '../../types/enums';\nimport { AriaRoles } from '../../types';\nimport { buildClassnames } from '../../../../utils/buildClassnames';\n\nimport { Container } from './Container';\n\nimport styles from './GridContainer.module.scss';\nimport { usePinnedColumnLayout } from '../../hooks';\n\ntype GridContainerProps = Pick<AriaAttributes, 'aria-label'> & {\n /**\n * Reference to be used for the outer container element.\n */\n containerRef?: RefObject<HTMLDivElement>;\n\n /**\n * Reference to be used for the table element.\n */\n tableRef?: RefObject<HTMLTableElement>;\n\n /**\n * Border mode.\n */\n borderMode: BorderMode;\n\n /**\n * Additional container styles.\n */\n containerStyles?: CSSProperties;\n\n /**\n * ARIA roles used in the grid.\n */\n ariaRoles: AriaRoles;\n\n /**\n * Whether resizeable columns are enabled or not.\n */\n enableResizeableColumns: boolean;\n\n /**\n * Density of the grid.\n */\n density: keyof SizeScale;\n\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * Child elements (table contents).\n */\n children: ReactNode;\n};\n\nconst gridContainerClassname = buildClassnames([styles.dataGridStyle, 'data-grid']);\n\n/**\n * The Grid container, which includes a wrapper and the table element itself. Controls table layout, applies\n * styling and sets table-specific CSS variables (such as density).\n */\nexport const GridContainer = ({\n containerRef,\n tableRef,\n borderMode,\n containerStyles,\n ariaRoles,\n enableResizeableColumns,\n density,\n table,\n children,\n 'aria-label': ariaLabel,\n}: GridContainerProps) => {\n const { pinnedColumnLayoutStyles } = usePinnedColumnLayout({ table });\n\n return (\n <Container ref={containerRef} borderMode={borderMode} style={containerStyles}>\n <table\n ref={tableRef}\n className={gridContainerClassname}\n role={ariaRoles.table}\n style={\n {\n tableLayout: enableResizeableColumns ? 'fixed' : 'auto',\n '--density': theme.sizes[density],\n ...pinnedColumnLayoutStyles,\n } as CSSProperties\n }\n aria-colcount={table.getFlatHeaders().length}\n aria-rowcount={table.getRowCount()}\n aria-label={ariaLabel}\n >\n {children}\n </table>\n </Container>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;AA8DA,MAAM,sBAAsB,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEnF;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EAAE,SAAS,GACJ,KAAI;IACvB,MAAM,EAAE,wBAAwB,EAAE,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC;AAErE,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAA;AAC1E,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,SAAS,CAAC,KAAK,EACrB,KAAK,EACH;gBACE,WAAW,EAAE,uBAAuB,GAAG,OAAO,GAAG,MAAM;AACvD,gBAAA,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACjC,gBAAA,GAAG,wBAAwB;AACX,aAAA,EAAA,eAAA,EAEL,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,mBAC7B,KAAK,CAAC,WAAW,EAAE,gBACtB,SAAS,EAAA,EAEpB,QAAQ,CACH,CACE;AAEhB;;;;"}
@@ -4,8 +4,16 @@ var React = require('react');
4
4
  var reactTable = require('@tanstack/react-table');
5
5
  var buildClassnames = require('../../../../../utils/buildClassnames.cjs');
6
6
  require('uid/secure');
7
- var isLastColumn = require('../../../utils/isLastColumn.cjs');
8
7
  var usePinnedColumnStyles = require('../../../hooks/usePinnedColumnStyles.cjs');
8
+ require('../../../../Stack/Stack.cjs');
9
+ require('../../../../../theme/modules/shadows.cjs');
10
+ require('../../../../../theme/modules/sizes.cjs');
11
+ require('../../../../../theme/modules/text.cjs');
12
+ require('styled-components');
13
+ require('../../../../Choice/components/styled.cjs');
14
+ require('../../../../Text/Text.cjs');
15
+ require('../../../../Checkbox/styled.cjs');
16
+ require('../../../../Radio/Radio.cjs');
9
17
  var Resizer = require('../Resizer/Resizer.cjs');
10
18
  var HeaderCell_module = require('./HeaderCell.module.scss.cjs');
11
19
  var SortIcon = require('./SortIcon/SortIcon.cjs');
@@ -32,7 +40,7 @@ const HeaderCell = ({ table, header, index }) => {
32
40
  const ariaSort = getAriaSort(isSorted);
33
41
  const resizeable = table.options.enableColumnResizing &&
34
42
  header.column.getCanResize() &&
35
- !isLastColumn.isLastColumn(table, header.column); // Last column can't be resized since it occupies all remaining space.
43
+ !header.column.getIsLastColumn(); // Last column can't be resized since it occupies all remaining space.
36
44
  const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles.usePinnedColumnStyles({
37
45
  column: header.column,
38
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { flexRender, Header, SortDirection, Table } from '@tanstack/react-table';\n\nimport { buildClassnames } from '../../../../../utils';\nimport { isLastColumn } from '../../../utils';\n\nimport { usePinnedColumnStyles } from '../../../hooks';\n\nimport { Resizer } from '../Resizer';\nimport styles from './HeaderCell.module.scss';\n\nimport { SortIcon } from './SortIcon';\n\ntype HeaderCellProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * The Header within the TanStack Table instance.\n */\n header: Header<any, any>;\n\n /**\n * The index of this header in the grid.\n */\n index: number;\n};\n\nconst getAriaSort = (sortDirection: false | SortDirection) => {\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === 'asc' ? 'ascending' : 'descending';\n};\n\n/**\n * A header cell within the DataGrid component. Responsible for rendering the column header and resize bar,\n * if resizing is enabled.\n */\nexport const HeaderCell = ({ table, header, index }: HeaderCellProps) => {\n const { justifyContent, textAlign, getAriaLabel } = header.column.columnDef.meta!;\n const headerRenderer = header.column.columnDef.header;\n\n const sortable = table.options.enableSorting && header.column.getCanSort();\n const isSorted = header.column.getIsSorted();\n const ariaSort = getAriaSort(isSorted);\n\n const resizeable =\n table.options.enableColumnResizing &&\n header.column.getCanResize() &&\n !isLastColumn(table, header.column); // Last column can't be resized since it occupies all remaining space.\n\n const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles({\n column: header.column,\n });\n\n const headerCellClassname = buildClassnames([\n styles.headerCell,\n pinnedCellClassName,\n 'data-grid-header-cell',\n ]);\n\n const HeaderContents = flexRender(headerRenderer, header.getContext());\n const HeaderContentComponent = sortable ? 'button' : 'div';\n const headerContentClassname = buildClassnames([\n sortable ? styles.clickableHeaderContent : styles.headerContent,\n 'data-grid-header-content',\n ]);\n const headerContentProps = {\n justifyContent,\n textAlign,\n } as CSSProperties;\n\n return (\n <th\n className={headerCellClassname}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={index + 1}\n aria-label={getAriaLabel?.()}\n style={pinnedCellStyles}\n aria-sort={ariaSort}\n >\n {/* Header content */}\n <HeaderContentComponent\n className={headerContentClassname}\n style={headerContentProps}\n onClick={sortable ? header.column.getToggleSortingHandler() : undefined}\n >\n {/* If we've been given just text to render, apply styles for text overflow */}\n {typeof headerRenderer === 'string' ? (\n <span className={styles.headerOverflow}>{HeaderContents}</span>\n ) : (\n HeaderContents\n )}\n\n {sortable && <SortIcon isSorted={isSorted} />}\n </HeaderContentComponent>\n\n {/* Column resizer */}\n {resizeable && (\n <Resizer\n getIsResizing={header.column.getIsResizing}\n getResizeHandler={header.getResizeHandler()}\n resetSize={header.column.resetSize}\n deltaOffset={\n table.options.columnResizeMode === 'onChange'\n ? null\n : table.getState().columnSizingInfo.deltaOffset\n }\n />\n )}\n </th>\n );\n};\n"],"names":["isLastColumn","usePinnedColumnStyles","buildClassnames","styles","flexRender","React","SortIcon","Resizer"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderCell.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { flexRender, Header, SortDirection, Table } from '@tanstack/react-table';\n\nimport { buildClassnames } from '../../../../../utils';\n\nimport { usePinnedColumnStyles } from '../../../hooks';\n\nimport { Resizer } from '../Resizer';\nimport styles from './HeaderCell.module.scss';\n\nimport { SortIcon } from './SortIcon';\n\ntype HeaderCellProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * The Header within the TanStack Table instance.\n */\n header: Header<any, any>;\n\n /**\n * The index of this header in the grid.\n */\n index: number;\n};\n\nconst getAriaSort = (sortDirection: false | SortDirection) => {\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === 'asc' ? 'ascending' : 'descending';\n};\n\n/**\n * A header cell within the DataGrid component. Responsible for rendering the column header and resize bar,\n * if resizing is enabled.\n */\nexport const HeaderCell = ({ table, header, index }: HeaderCellProps) => {\n const { justifyContent, textAlign, getAriaLabel } = header.column.columnDef.meta!;\n const headerRenderer = header.column.columnDef.header;\n\n const sortable = table.options.enableSorting && header.column.getCanSort();\n const isSorted = header.column.getIsSorted();\n const ariaSort = getAriaSort(isSorted);\n\n const resizeable =\n table.options.enableColumnResizing &&\n header.column.getCanResize() &&\n !header.column.getIsLastColumn(); // Last column can't be resized since it occupies all remaining space.\n\n const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles({\n column: header.column,\n });\n\n const headerCellClassname = buildClassnames([\n styles.headerCell,\n pinnedCellClassName,\n 'data-grid-header-cell',\n ]);\n\n const HeaderContents = flexRender(headerRenderer, header.getContext());\n const HeaderContentComponent = sortable ? 'button' : 'div';\n const headerContentClassname = buildClassnames([\n sortable ? styles.clickableHeaderContent : styles.headerContent,\n 'data-grid-header-content',\n ]);\n const headerContentProps = {\n justifyContent,\n textAlign,\n } as CSSProperties;\n\n return (\n <th\n className={headerCellClassname}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={index + 1}\n aria-label={getAriaLabel?.()}\n style={pinnedCellStyles}\n aria-sort={ariaSort}\n >\n {/* Header content */}\n <HeaderContentComponent\n className={headerContentClassname}\n style={headerContentProps}\n onClick={sortable ? header.column.getToggleSortingHandler() : undefined}\n >\n {/* If we've been given just text to render, apply styles for text overflow */}\n {typeof headerRenderer === 'string' ? (\n <span className={styles.headerOverflow}>{HeaderContents}</span>\n ) : (\n HeaderContents\n )}\n\n {sortable && <SortIcon isSorted={isSorted} />}\n </HeaderContentComponent>\n\n {/* Column resizer */}\n {resizeable && (\n <Resizer\n getIsResizing={header.column.getIsResizing}\n getResizeHandler={header.getResizeHandler()}\n resetSize={header.column.resetSize}\n deltaOffset={\n table.options.columnResizeMode === 'onChange'\n ? null\n : table.getState().columnSizingInfo.deltaOffset\n }\n />\n )}\n </th>\n );\n};\n"],"names":["usePinnedColumnStyles","buildClassnames","styles","flexRender","React","SortIcon","Resizer"],"mappings":"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"}
@@ -2,8 +2,16 @@ import React__default from 'react';
2
2
  import { flexRender } from '@tanstack/react-table';
3
3
  import { buildClassnames } from '../../../../../utils/buildClassnames.js';
4
4
  import 'uid/secure';
5
- import { isLastColumn } from '../../../utils/isLastColumn.js';
6
5
  import { usePinnedColumnStyles } from '../../../hooks/usePinnedColumnStyles.js';
6
+ import '../../../../Stack/Stack.js';
7
+ import '../../../../../theme/modules/shadows.js';
8
+ import '../../../../../theme/modules/sizes.js';
9
+ import '../../../../../theme/modules/text.js';
10
+ import 'styled-components';
11
+ import '../../../../Choice/components/styled.js';
12
+ import '../../../../Text/Text.js';
13
+ import '../../../../Checkbox/styled.js';
14
+ import '../../../../Radio/Radio.js';
7
15
  import { Resizer } from '../Resizer/Resizer.js';
8
16
  import styles from './HeaderCell.module.scss.js';
9
17
  import { SortIcon } from './SortIcon/SortIcon.js';
@@ -26,7 +34,7 @@ const HeaderCell = ({ table, header, index }) => {
26
34
  const ariaSort = getAriaSort(isSorted);
27
35
  const resizeable = table.options.enableColumnResizing &&
28
36
  header.column.getCanResize() &&
29
- !isLastColumn(table, header.column); // Last column can't be resized since it occupies all remaining space.
37
+ !header.column.getIsLastColumn(); // Last column can't be resized since it occupies all remaining space.
30
38
  const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles({
31
39
  column: header.column,
32
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { flexRender, Header, SortDirection, Table } from '@tanstack/react-table';\n\nimport { buildClassnames } from '../../../../../utils';\nimport { isLastColumn } from '../../../utils';\n\nimport { usePinnedColumnStyles } from '../../../hooks';\n\nimport { Resizer } from '../Resizer';\nimport styles from './HeaderCell.module.scss';\n\nimport { SortIcon } from './SortIcon';\n\ntype HeaderCellProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * The Header within the TanStack Table instance.\n */\n header: Header<any, any>;\n\n /**\n * The index of this header in the grid.\n */\n index: number;\n};\n\nconst getAriaSort = (sortDirection: false | SortDirection) => {\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === 'asc' ? 'ascending' : 'descending';\n};\n\n/**\n * A header cell within the DataGrid component. Responsible for rendering the column header and resize bar,\n * if resizing is enabled.\n */\nexport const HeaderCell = ({ table, header, index }: HeaderCellProps) => {\n const { justifyContent, textAlign, getAriaLabel } = header.column.columnDef.meta!;\n const headerRenderer = header.column.columnDef.header;\n\n const sortable = table.options.enableSorting && header.column.getCanSort();\n const isSorted = header.column.getIsSorted();\n const ariaSort = getAriaSort(isSorted);\n\n const resizeable =\n table.options.enableColumnResizing &&\n header.column.getCanResize() &&\n !isLastColumn(table, header.column); // Last column can't be resized since it occupies all remaining space.\n\n const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles({\n column: header.column,\n });\n\n const headerCellClassname = buildClassnames([\n styles.headerCell,\n pinnedCellClassName,\n 'data-grid-header-cell',\n ]);\n\n const HeaderContents = flexRender(headerRenderer, header.getContext());\n const HeaderContentComponent = sortable ? 'button' : 'div';\n const headerContentClassname = buildClassnames([\n sortable ? styles.clickableHeaderContent : styles.headerContent,\n 'data-grid-header-content',\n ]);\n const headerContentProps = {\n justifyContent,\n textAlign,\n } as CSSProperties;\n\n return (\n <th\n className={headerCellClassname}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={index + 1}\n aria-label={getAriaLabel?.()}\n style={pinnedCellStyles}\n aria-sort={ariaSort}\n >\n {/* Header content */}\n <HeaderContentComponent\n className={headerContentClassname}\n style={headerContentProps}\n onClick={sortable ? header.column.getToggleSortingHandler() : undefined}\n >\n {/* If we've been given just text to render, apply styles for text overflow */}\n {typeof headerRenderer === 'string' ? (\n <span className={styles.headerOverflow}>{HeaderContents}</span>\n ) : (\n HeaderContents\n )}\n\n {sortable && <SortIcon isSorted={isSorted} />}\n </HeaderContentComponent>\n\n {/* Column resizer */}\n {resizeable && (\n <Resizer\n getIsResizing={header.column.getIsResizing}\n getResizeHandler={header.getResizeHandler()}\n resetSize={header.column.resetSize}\n deltaOffset={\n table.options.columnResizeMode === 'onChange'\n ? null\n : table.getState().columnSizingInfo.deltaOffset\n }\n />\n )}\n </th>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderCell.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { flexRender, Header, SortDirection, Table } from '@tanstack/react-table';\n\nimport { buildClassnames } from '../../../../../utils';\n\nimport { usePinnedColumnStyles } from '../../../hooks';\n\nimport { Resizer } from '../Resizer';\nimport styles from './HeaderCell.module.scss';\n\nimport { SortIcon } from './SortIcon';\n\ntype HeaderCellProps = {\n /**\n * The TanStack Table instance.\n */\n table: Table<any>;\n\n /**\n * The Header within the TanStack Table instance.\n */\n header: Header<any, any>;\n\n /**\n * The index of this header in the grid.\n */\n index: number;\n};\n\nconst getAriaSort = (sortDirection: false | SortDirection) => {\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === 'asc' ? 'ascending' : 'descending';\n};\n\n/**\n * A header cell within the DataGrid component. Responsible for rendering the column header and resize bar,\n * if resizing is enabled.\n */\nexport const HeaderCell = ({ table, header, index }: HeaderCellProps) => {\n const { justifyContent, textAlign, getAriaLabel } = header.column.columnDef.meta!;\n const headerRenderer = header.column.columnDef.header;\n\n const sortable = table.options.enableSorting && header.column.getCanSort();\n const isSorted = header.column.getIsSorted();\n const ariaSort = getAriaSort(isSorted);\n\n const resizeable =\n table.options.enableColumnResizing &&\n header.column.getCanResize() &&\n !header.column.getIsLastColumn(); // Last column can't be resized since it occupies all remaining space.\n\n const { pinnedCellClassName, pinnedCellStyles } = usePinnedColumnStyles({\n column: header.column,\n });\n\n const headerCellClassname = buildClassnames([\n styles.headerCell,\n pinnedCellClassName,\n 'data-grid-header-cell',\n ]);\n\n const HeaderContents = flexRender(headerRenderer, header.getContext());\n const HeaderContentComponent = sortable ? 'button' : 'div';\n const headerContentClassname = buildClassnames([\n sortable ? styles.clickableHeaderContent : styles.headerContent,\n 'data-grid-header-content',\n ]);\n const headerContentProps = {\n justifyContent,\n textAlign,\n } as CSSProperties;\n\n return (\n <th\n className={headerCellClassname}\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={index + 1}\n aria-label={getAriaLabel?.()}\n style={pinnedCellStyles}\n aria-sort={ariaSort}\n >\n {/* Header content */}\n <HeaderContentComponent\n className={headerContentClassname}\n style={headerContentProps}\n onClick={sortable ? header.column.getToggleSortingHandler() : undefined}\n >\n {/* If we've been given just text to render, apply styles for text overflow */}\n {typeof headerRenderer === 'string' ? (\n <span className={styles.headerOverflow}>{HeaderContents}</span>\n ) : (\n HeaderContents\n )}\n\n {sortable && <SortIcon isSorted={isSorted} />}\n </HeaderContentComponent>\n\n {/* Column resizer */}\n {resizeable && (\n <Resizer\n getIsResizing={header.column.getIsResizing}\n getResizeHandler={header.getResizeHandler()}\n resetSize={header.column.resetSize}\n deltaOffset={\n table.options.columnResizeMode === 'onChange'\n ? null\n : table.getState().columnSizingInfo.deltaOffset\n }\n />\n )}\n </th>\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  var ___$insertStyle = require('../../../../../_virtual/____insertStyle.cjs');
4
4
 
5
- ___$insertStyle("._baseCell_k0pyd_1, ._headerCell_k0pyd_1 {\n position: relative;\n box-sizing: border-box;\n}\n._baseCell_k0pyd_1:focus, ._headerCell_k0pyd_1:focus, ._baseCell_k0pyd_1:focus-visible, ._headerCell_k0pyd_1:focus-visible {\n outline: var(--sizes-none);\n box-shadow: inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);\n}\n\n._pinnedColumnBase_k0pyd_10::after, ._pinnedColumnRight_k0pyd_10::after, ._pinnedColumnLeft_k0pyd_10::after {\n position: absolute;\n top: var(--sizes-none);\n bottom: -1px;\n width: 30px;\n content: \"\";\n pointer-events: none;\n box-sizing: border-box;\n}\n\n._pinnedColumnLeft_k0pyd_10::after {\n transform: translate(100%);\n right: var(--sizes-none);\n box-shadow: inset 10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._pinnedColumnRight_k0pyd_10::after {\n transform: translate(-100%);\n left: var(--sizes-none);\n box-shadow: inset -10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._headerCell_k0pyd_1 {\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n._headerContent_k0pyd_37, ._clickableHeaderContent_k0pyd_37 {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n padding: var(--density);\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n._headerOverflow_k0pyd_51 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._clickableHeaderContent_k0pyd_37 {\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n}\n._clickableHeaderContent_k0pyd_37:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n}\n._clickableHeaderContent_k0pyd_37:hover ._sortIcon_k0pyd_69 {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n}\n\n._sortIcon_k0pyd_69 {\n width: var(--sizes-4);\n height: var(--sizes-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}");
6
- var styles = {"baseCell":"_baseCell_k0pyd_1","headerCell":"_headerCell_k0pyd_1","pinnedColumnBase":"_pinnedColumnBase_k0pyd_10","pinnedColumnRight":"_pinnedColumnRight_k0pyd_10","pinnedColumnLeft":"_pinnedColumnLeft_k0pyd_10","headerContent":"_headerContent_k0pyd_37","clickableHeaderContent":"_clickableHeaderContent_k0pyd_37","headerOverflow":"_headerOverflow_k0pyd_51","sortIcon":"_sortIcon_k0pyd_69"};
5
+ ___$insertStyle("._baseCell_6gs1a_1, ._headerCell_6gs1a_1 {\n position: relative;\n box-sizing: border-box;\n}\n._baseCell_6gs1a_1:focus, ._headerCell_6gs1a_1:focus, ._baseCell_6gs1a_1:focus-visible, ._headerCell_6gs1a_1:focus-visible {\n outline: var(--sizes-none);\n box-shadow: inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);\n}\n\n._pinnedColumnBase_6gs1a_10::after, ._pinnedColumnRight_6gs1a_10::after, ._pinnedColumnLeft_6gs1a_10::after {\n position: absolute;\n top: var(--sizes-none);\n bottom: -1px;\n width: 30px;\n content: \"\";\n pointer-events: none;\n box-sizing: border-box;\n}\n\n._pinnedColumnLeft_6gs1a_10::after {\n transform: translate(100%);\n right: var(--sizes-none);\n box-shadow: inset 10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._pinnedColumnRight_6gs1a_10::after {\n transform: translate(-100%);\n left: var(--sizes-none);\n box-shadow: inset -10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._headerCell_6gs1a_1 {\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n._headerContent_6gs1a_37, ._clickableHeaderContent_6gs1a_37 {\n display: flex;\n min-height: var(--sizes-12);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n padding: var(--density);\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n._headerOverflow_6gs1a_51 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._clickableHeaderContent_6gs1a_37 {\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n}\n._clickableHeaderContent_6gs1a_37:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n}\n._clickableHeaderContent_6gs1a_37:hover ._sortIcon_6gs1a_69 {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n}\n\n._sortIcon_6gs1a_69 {\n width: var(--sizes-4);\n height: var(--sizes-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}");
6
+ var styles = {"baseCell":"_baseCell_6gs1a_1","headerCell":"_headerCell_6gs1a_1","pinnedColumnBase":"_pinnedColumnBase_6gs1a_10","pinnedColumnRight":"_pinnedColumnRight_6gs1a_10","pinnedColumnLeft":"_pinnedColumnLeft_6gs1a_10","headerContent":"_headerContent_6gs1a_37","clickableHeaderContent":"_clickableHeaderContent_6gs1a_37","headerOverflow":"_headerOverflow_6gs1a_51","sortIcon":"_sortIcon_6gs1a_69"};
7
7
 
8
8
  module.exports = styles;
9
9
  //# sourceMappingURL=HeaderCell.module.scss.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.module.scss.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss"],"sourcesContent":["@use '../../../DataGrid.module.scss';\n\n.headerCell {\n @extend .baseCell;\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n @extend .headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px\n var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,46EAAA;AACA,aAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,mBAAA,CAAA,6BAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,eAAA,CAAA,yBAAA,CAAA,wBAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,oBAAA;;;;"}
1
+ {"version":3,"file":"HeaderCell.module.scss.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss"],"sourcesContent":["@use '../../../DataGrid.module.scss';\n\n.headerCell {\n @extend .baseCell;\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n min-height: var(--sizes-12);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n @extend .headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px\n var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,i7EAAA;AACA,aAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,mBAAA,CAAA,6BAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,eAAA,CAAA,yBAAA,CAAA,wBAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,oBAAA;;;;"}
@@ -1,7 +1,7 @@
1
1
  import insertStyle from '../../../../../_virtual/____insertStyle.js';
2
2
 
3
- insertStyle("._baseCell_k0pyd_1, ._headerCell_k0pyd_1 {\n position: relative;\n box-sizing: border-box;\n}\n._baseCell_k0pyd_1:focus, ._headerCell_k0pyd_1:focus, ._baseCell_k0pyd_1:focus-visible, ._headerCell_k0pyd_1:focus-visible {\n outline: var(--sizes-none);\n box-shadow: inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);\n}\n\n._pinnedColumnBase_k0pyd_10::after, ._pinnedColumnRight_k0pyd_10::after, ._pinnedColumnLeft_k0pyd_10::after {\n position: absolute;\n top: var(--sizes-none);\n bottom: -1px;\n width: 30px;\n content: \"\";\n pointer-events: none;\n box-sizing: border-box;\n}\n\n._pinnedColumnLeft_k0pyd_10::after {\n transform: translate(100%);\n right: var(--sizes-none);\n box-shadow: inset 10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._pinnedColumnRight_k0pyd_10::after {\n transform: translate(-100%);\n left: var(--sizes-none);\n box-shadow: inset -10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._headerCell_k0pyd_1 {\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n._headerContent_k0pyd_37, ._clickableHeaderContent_k0pyd_37 {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n padding: var(--density);\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n._headerOverflow_k0pyd_51 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._clickableHeaderContent_k0pyd_37 {\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n}\n._clickableHeaderContent_k0pyd_37:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n}\n._clickableHeaderContent_k0pyd_37:hover ._sortIcon_k0pyd_69 {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n}\n\n._sortIcon_k0pyd_69 {\n width: var(--sizes-4);\n height: var(--sizes-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}");
4
- var styles = {"baseCell":"_baseCell_k0pyd_1","headerCell":"_headerCell_k0pyd_1","pinnedColumnBase":"_pinnedColumnBase_k0pyd_10","pinnedColumnRight":"_pinnedColumnRight_k0pyd_10","pinnedColumnLeft":"_pinnedColumnLeft_k0pyd_10","headerContent":"_headerContent_k0pyd_37","clickableHeaderContent":"_clickableHeaderContent_k0pyd_37","headerOverflow":"_headerOverflow_k0pyd_51","sortIcon":"_sortIcon_k0pyd_69"};
3
+ insertStyle("._baseCell_6gs1a_1, ._headerCell_6gs1a_1 {\n position: relative;\n box-sizing: border-box;\n}\n._baseCell_6gs1a_1:focus, ._headerCell_6gs1a_1:focus, ._baseCell_6gs1a_1:focus-visible, ._headerCell_6gs1a_1:focus-visible {\n outline: var(--sizes-none);\n box-shadow: inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);\n}\n\n._pinnedColumnBase_6gs1a_10::after, ._pinnedColumnRight_6gs1a_10::after, ._pinnedColumnLeft_6gs1a_10::after {\n position: absolute;\n top: var(--sizes-none);\n bottom: -1px;\n width: 30px;\n content: \"\";\n pointer-events: none;\n box-sizing: border-box;\n}\n\n._pinnedColumnLeft_6gs1a_10::after {\n transform: translate(100%);\n right: var(--sizes-none);\n box-shadow: inset 10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._pinnedColumnRight_6gs1a_10::after {\n transform: translate(-100%);\n left: var(--sizes-none);\n box-shadow: inset -10px 0px 10px -8px rgba(0, 0, 0, 0.25);\n}\n\n._headerCell_6gs1a_1 {\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n._headerContent_6gs1a_37, ._clickableHeaderContent_6gs1a_37 {\n display: flex;\n min-height: var(--sizes-12);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n padding: var(--density);\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n._headerOverflow_6gs1a_51 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._clickableHeaderContent_6gs1a_37 {\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n}\n._clickableHeaderContent_6gs1a_37:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n}\n._clickableHeaderContent_6gs1a_37:hover ._sortIcon_6gs1a_69 {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n}\n\n._sortIcon_6gs1a_69 {\n width: var(--sizes-4);\n height: var(--sizes-4);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}");
4
+ var styles = {"baseCell":"_baseCell_6gs1a_1","headerCell":"_headerCell_6gs1a_1","pinnedColumnBase":"_pinnedColumnBase_6gs1a_10","pinnedColumnRight":"_pinnedColumnRight_6gs1a_10","pinnedColumnLeft":"_pinnedColumnLeft_6gs1a_10","headerContent":"_headerContent_6gs1a_37","clickableHeaderContent":"_clickableHeaderContent_6gs1a_37","headerOverflow":"_headerOverflow_6gs1a_51","sortIcon":"_sortIcon_6gs1a_69"};
5
5
 
6
6
  export { styles as default };
7
7
  //# sourceMappingURL=HeaderCell.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.module.scss.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss"],"sourcesContent":["@use '../../../DataGrid.module.scss';\n\n.headerCell {\n @extend .baseCell;\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n @extend .headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px\n var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,46EAAA;AACA,aAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,mBAAA,CAAA,6BAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,eAAA,CAAA,yBAAA,CAAA,wBAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,oBAAA;;;;"}
1
+ {"version":3,"file":"HeaderCell.module.scss.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss"],"sourcesContent":["@use '../../../DataGrid.module.scss';\n\n.headerCell {\n @extend .baseCell;\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n min-height: var(--sizes-12);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n @extend .headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px\n var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,i7EAAA;AACA,aAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,mBAAA,CAAA,6BAAA,CAAA,kBAAA,CAAA,4BAAA,CAAA,eAAA,CAAA,yBAAA,CAAA,wBAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,0BAAA,CAAA,UAAA,CAAA,oBAAA;;;;"}
@@ -1,4 +1,8 @@
1
1
  export { useSortingState } from './useSortingState';
2
+ export { useSelectionState } from './useSelectionState';
2
3
  export { usePinnedColumnStyles } from './usePinnedColumnStyles';
3
4
  export { usePinnedColumnLayout } from './usePinnedColumnLayout';
4
5
  export { useKeyboardNavigation } from './useKeyboardNavigation';
6
+ export { useColumnState } from './useColumnState';
7
+ export { useColumnWidthState } from './useColumnWidthState';
8
+ export { useExpandedState } from './useExpandedState';
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var ColumnMapper = require('../utils/ColumnMapper.cjs');
5
+ var SelectionColumnDefinition = require('../columns/SelectionColumnDefinition.cjs');
6
+ var constants = require('../constants.cjs');
7
+
8
+ const useColumnState = ({ columns, hiddenColumns, columnOrdering, pinnedColumns, enableRowSelection, }) => {
9
+ /**
10
+ * Mapping of column definitions.
11
+ */
12
+ const columnMapper = React.useRef(new ColumnMapper.ColumnMapper());
13
+ const mappedColumnDefinitions = React.useMemo(() => {
14
+ const mappedColumns = columns.map((column) => columnMapper.current.mapColumnDefinition(column));
15
+ if (enableRowSelection) {
16
+ mappedColumns.unshift(SelectionColumnDefinition.SelectionColumnDefinition);
17
+ }
18
+ return mappedColumns;
19
+ }, [columns, enableRowSelection]);
20
+ /**
21
+ * Stable references for column states (visibility, order, pinning).
22
+ */
23
+ // Column render order - the order of the array indicates the order on screen.
24
+ const columnOrder = React.useMemo(() => {
25
+ if (!columnOrdering || columnOrdering.length === 0) {
26
+ return undefined;
27
+ }
28
+ // If we have a custom column order, we need to make sure the selection column always appears first.
29
+ if (enableRowSelection) {
30
+ return ['selection', ...columnOrdering];
31
+ }
32
+ return columnOrdering;
33
+ }, [columnOrdering, enableRowSelection]);
34
+ // Column visibiilty - record of column ID's to visibility, where false/no value = hidden.
35
+ const columnVisibility = React.useMemo(() => {
36
+ // We can't have no columns visible - if the array is empty we show them all.
37
+ if (!hiddenColumns || hiddenColumns.length === columns.length) {
38
+ return undefined;
39
+ }
40
+ return columns.reduce((acc, column) => ({
41
+ ...acc,
42
+ [column.id]: !hiddenColumns.includes(column.id),
43
+ }), {});
44
+ }, [hiddenColumns, columns]);
45
+ // Pinned columns
46
+ const columnPinning = React.useMemo(() => {
47
+ var _a, _b;
48
+ let left = (_a = pinnedColumns === null || pinnedColumns === undefined ? undefined : pinnedColumns.left) !== null && _a !== undefined ? _a : [];
49
+ // If we have any left-pinned columns, we need to include the selection column as it should appear first.
50
+ if (enableRowSelection && left.length > 0) {
51
+ left = [constants.SELECTION_COLUMN_ID, ...left];
52
+ }
53
+ return {
54
+ left,
55
+ right: (_b = pinnedColumns === null || pinnedColumns === undefined ? undefined : pinnedColumns.right) !== null && _b !== undefined ? _b : [],
56
+ };
57
+ }, [pinnedColumns, enableRowSelection]);
58
+ return {
59
+ mappedColumnDefinitions,
60
+ columnOrder,
61
+ columnVisibility,
62
+ columnPinning,
63
+ };
64
+ };
65
+
66
+ exports.useColumnState = useColumnState;
67
+ //# sourceMappingURL=useColumnState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnState.cjs","sources":["../../../../src/components/DataGrid/hooks/useColumnState.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport { ColumnMapper } from '../utils';\nimport { DataGridProps } from '../types';\nimport { SelectionColumnDefinition } from '../columns';\nimport { SELECTION_COLUMN_ID } from '../constants';\n\ntype UseColumnStateProps = Pick<\n DataGridProps,\n 'columns' | 'hiddenColumns' | 'columnOrdering' | 'pinnedColumns'\n> & {\n enableRowSelection: boolean;\n};\n\nexport const useColumnState = ({\n columns,\n hiddenColumns,\n columnOrdering,\n pinnedColumns,\n enableRowSelection,\n}: UseColumnStateProps) => {\n /**\n * Mapping of column definitions.\n */\n const columnMapper = useRef(new ColumnMapper());\n const mappedColumnDefinitions = useMemo(() => {\n const mappedColumns = columns.map((column) => columnMapper.current.mapColumnDefinition(column));\n\n if (enableRowSelection) {\n mappedColumns.unshift(SelectionColumnDefinition);\n }\n\n return mappedColumns;\n }, [columns, enableRowSelection]);\n\n /**\n * Stable references for column states (visibility, order, pinning).\n */\n\n // Column render order - the order of the array indicates the order on screen.\n const columnOrder = useMemo(() => {\n if (!columnOrdering || columnOrdering.length === 0) {\n return undefined;\n }\n\n // If we have a custom column order, we need to make sure the selection column always appears first.\n if (enableRowSelection) {\n return ['selection', ...columnOrdering];\n }\n\n return columnOrdering;\n }, [columnOrdering, enableRowSelection]);\n\n // Column visibiilty - record of column ID's to visibility, where false/no value = hidden.\n const columnVisibility = useMemo(() => {\n // We can't have no columns visible - if the array is empty we show them all.\n if (!hiddenColumns || hiddenColumns.length === columns.length) {\n return undefined;\n }\n\n return columns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: !hiddenColumns.includes(column.id),\n }),\n {},\n );\n }, [hiddenColumns, columns]);\n\n // Pinned columns\n const columnPinning = useMemo(() => {\n let left = pinnedColumns?.left ?? [];\n\n // If we have any left-pinned columns, we need to include the selection column as it should appear first.\n if (enableRowSelection && left.length > 0) {\n left = [SELECTION_COLUMN_ID, ...left];\n }\n\n return {\n left,\n right: pinnedColumns?.right ?? [],\n };\n }, [pinnedColumns, enableRowSelection]);\n\n return {\n mappedColumnDefinitions,\n columnOrder,\n columnVisibility,\n columnPinning,\n };\n};\n"],"names":["useRef","ColumnMapper","useMemo","SelectionColumnDefinition","SELECTION_COLUMN_ID"],"mappings":";;;;;;;AAaa,MAAA,cAAc,GAAG,CAAC,EAC7B,OAAO,EACP,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACE,KAAI;AACxB;;AAEG;IACH,MAAM,YAAY,GAAGA,YAAM,CAAC,IAAIC,yBAAY,EAAE,CAAC;AAC/C,IAAA,MAAM,uBAAuB,GAAGC,aAAO,CAAC,MAAK;QAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE/F,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,aAAa,CAAC,OAAO,CAACC,mDAAyB,CAAC;AACjD;AAED,QAAA,OAAO,aAAa;AACtB,KAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAEjC;;AAEG;;AAGH,IAAA,MAAM,WAAW,GAAGD,aAAO,CAAC,MAAK;QAC/B,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,SAAS;AACjB;;AAGD,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,OAAO,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC;AACxC;AAED,QAAA,OAAO,cAAc;AACvB,KAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;;AAGxC,IAAA,MAAM,gBAAgB,GAAGA,aAAO,CAAC,MAAK;;QAEpC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;AAC7D,YAAA,OAAO,SAAS;AACjB;QAED,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,MAAM,MAAM;AAChB,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;SAChD,CAAC,EACF,EAAE,CACH;AACH,KAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;;AAG5B,IAAA,MAAM,aAAa,GAAGA,aAAO,CAAC,MAAK;;AACjC,QAAA,IAAI,IAAI,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,SAAA,GAAA,SAAA,GAAA,aAAa,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAA,EAAE;;AAGpC,QAAA,IAAI,kBAAkB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,IAAI,GAAG,CAACE,6BAAmB,EAAE,GAAG,IAAI,CAAC;AACtC;QAED,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,6BAAb,aAAa,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAI,EAAE;SAClC;AACH,KAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAEvC,OAAO;QACL,uBAAuB;QACvB,WAAW;QACX,gBAAgB;QAChB,aAAa;KACd;AACH;;;;"}
@@ -0,0 +1,14 @@
1
+ import { DataGridProps } from '../types';
2
+ type UseColumnStateProps = Pick<DataGridProps, 'columns' | 'hiddenColumns' | 'columnOrdering' | 'pinnedColumns'> & {
3
+ enableRowSelection: boolean;
4
+ };
5
+ export declare const useColumnState: ({ columns, hiddenColumns, columnOrdering, pinnedColumns, enableRowSelection, }: UseColumnStateProps) => {
6
+ mappedColumnDefinitions: import("@tanstack/table-core").ColumnDef<any, any>[];
7
+ columnOrder: string[] | undefined;
8
+ columnVisibility: {} | undefined;
9
+ columnPinning: {
10
+ left: string[];
11
+ right: string[];
12
+ };
13
+ };
14
+ export {};
@@ -0,0 +1,65 @@
1
+ import { useRef, useMemo } from 'react';
2
+ import { ColumnMapper } from '../utils/ColumnMapper.js';
3
+ import { SelectionColumnDefinition } from '../columns/SelectionColumnDefinition.js';
4
+ import { SELECTION_COLUMN_ID } from '../constants.js';
5
+
6
+ const useColumnState = ({ columns, hiddenColumns, columnOrdering, pinnedColumns, enableRowSelection, }) => {
7
+ /**
8
+ * Mapping of column definitions.
9
+ */
10
+ const columnMapper = useRef(new ColumnMapper());
11
+ const mappedColumnDefinitions = useMemo(() => {
12
+ const mappedColumns = columns.map((column) => columnMapper.current.mapColumnDefinition(column));
13
+ if (enableRowSelection) {
14
+ mappedColumns.unshift(SelectionColumnDefinition);
15
+ }
16
+ return mappedColumns;
17
+ }, [columns, enableRowSelection]);
18
+ /**
19
+ * Stable references for column states (visibility, order, pinning).
20
+ */
21
+ // Column render order - the order of the array indicates the order on screen.
22
+ const columnOrder = useMemo(() => {
23
+ if (!columnOrdering || columnOrdering.length === 0) {
24
+ return undefined;
25
+ }
26
+ // If we have a custom column order, we need to make sure the selection column always appears first.
27
+ if (enableRowSelection) {
28
+ return ['selection', ...columnOrdering];
29
+ }
30
+ return columnOrdering;
31
+ }, [columnOrdering, enableRowSelection]);
32
+ // Column visibiilty - record of column ID's to visibility, where false/no value = hidden.
33
+ const columnVisibility = useMemo(() => {
34
+ // We can't have no columns visible - if the array is empty we show them all.
35
+ if (!hiddenColumns || hiddenColumns.length === columns.length) {
36
+ return undefined;
37
+ }
38
+ return columns.reduce((acc, column) => ({
39
+ ...acc,
40
+ [column.id]: !hiddenColumns.includes(column.id),
41
+ }), {});
42
+ }, [hiddenColumns, columns]);
43
+ // Pinned columns
44
+ const columnPinning = useMemo(() => {
45
+ var _a, _b;
46
+ let left = (_a = pinnedColumns === null || pinnedColumns === undefined ? undefined : pinnedColumns.left) !== null && _a !== undefined ? _a : [];
47
+ // If we have any left-pinned columns, we need to include the selection column as it should appear first.
48
+ if (enableRowSelection && left.length > 0) {
49
+ left = [SELECTION_COLUMN_ID, ...left];
50
+ }
51
+ return {
52
+ left,
53
+ right: (_b = pinnedColumns === null || pinnedColumns === undefined ? undefined : pinnedColumns.right) !== null && _b !== undefined ? _b : [],
54
+ };
55
+ }, [pinnedColumns, enableRowSelection]);
56
+ return {
57
+ mappedColumnDefinitions,
58
+ columnOrder,
59
+ columnVisibility,
60
+ columnPinning,
61
+ };
62
+ };
63
+
64
+ export { useColumnState };
65
+ //# sourceMappingURL=useColumnState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnState.js","sources":["../../../../src/components/DataGrid/hooks/useColumnState.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport { ColumnMapper } from '../utils';\nimport { DataGridProps } from '../types';\nimport { SelectionColumnDefinition } from '../columns';\nimport { SELECTION_COLUMN_ID } from '../constants';\n\ntype UseColumnStateProps = Pick<\n DataGridProps,\n 'columns' | 'hiddenColumns' | 'columnOrdering' | 'pinnedColumns'\n> & {\n enableRowSelection: boolean;\n};\n\nexport const useColumnState = ({\n columns,\n hiddenColumns,\n columnOrdering,\n pinnedColumns,\n enableRowSelection,\n}: UseColumnStateProps) => {\n /**\n * Mapping of column definitions.\n */\n const columnMapper = useRef(new ColumnMapper());\n const mappedColumnDefinitions = useMemo(() => {\n const mappedColumns = columns.map((column) => columnMapper.current.mapColumnDefinition(column));\n\n if (enableRowSelection) {\n mappedColumns.unshift(SelectionColumnDefinition);\n }\n\n return mappedColumns;\n }, [columns, enableRowSelection]);\n\n /**\n * Stable references for column states (visibility, order, pinning).\n */\n\n // Column render order - the order of the array indicates the order on screen.\n const columnOrder = useMemo(() => {\n if (!columnOrdering || columnOrdering.length === 0) {\n return undefined;\n }\n\n // If we have a custom column order, we need to make sure the selection column always appears first.\n if (enableRowSelection) {\n return ['selection', ...columnOrdering];\n }\n\n return columnOrdering;\n }, [columnOrdering, enableRowSelection]);\n\n // Column visibiilty - record of column ID's to visibility, where false/no value = hidden.\n const columnVisibility = useMemo(() => {\n // We can't have no columns visible - if the array is empty we show them all.\n if (!hiddenColumns || hiddenColumns.length === columns.length) {\n return undefined;\n }\n\n return columns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: !hiddenColumns.includes(column.id),\n }),\n {},\n );\n }, [hiddenColumns, columns]);\n\n // Pinned columns\n const columnPinning = useMemo(() => {\n let left = pinnedColumns?.left ?? [];\n\n // If we have any left-pinned columns, we need to include the selection column as it should appear first.\n if (enableRowSelection && left.length > 0) {\n left = [SELECTION_COLUMN_ID, ...left];\n }\n\n return {\n left,\n right: pinnedColumns?.right ?? [],\n };\n }, [pinnedColumns, enableRowSelection]);\n\n return {\n mappedColumnDefinitions,\n columnOrder,\n columnVisibility,\n columnPinning,\n };\n};\n"],"names":[],"mappings":";;;;;AAaa,MAAA,cAAc,GAAG,CAAC,EAC7B,OAAO,EACP,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACE,KAAI;AACxB;;AAEG;IACH,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;AAC/C,IAAA,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAK;QAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE/F,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,aAAa,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACjD;AAED,QAAA,OAAO,aAAa;AACtB,KAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAEjC;;AAEG;;AAGH,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAK;QAC/B,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,SAAS;AACjB;;AAGD,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,OAAO,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC;AACxC;AAED,QAAA,OAAO,cAAc;AACvB,KAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;;AAGxC,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAK;;QAEpC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;AAC7D,YAAA,OAAO,SAAS;AACjB;QAED,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,MAAM,MAAM;AAChB,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;SAChD,CAAC,EACF,EAAE,CACH;AACH,KAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;;AAG5B,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAK;;AACjC,QAAA,IAAI,IAAI,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,SAAA,GAAA,SAAA,GAAA,aAAa,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAA,EAAE;;AAGpC,QAAA,IAAI,kBAAkB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,IAAI,GAAG,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC;AACtC;QAED,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,6BAAb,aAAa,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAI,EAAE;SAClC;AACH,KAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAEvC,OAAO;QACL,uBAAuB;QACvB,WAAW;QACX,gBAAgB;QAChB,aAAa;KACd;AACH;;;;"}
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /**
6
+ * Normalizes the column widths to ensure they are within the min/max bounds defined in the column definitions. Internally within
7
+ * the columnSizing state, TanStack will allow columns to be resized to values exceeding the min/max bounds - this corrects for
8
+ * that behaviour.
9
+ * @param columnDefinitions Mapped column definitions.
10
+ * @param columnWidths An object containing the current widths of the columns.
11
+ * @returns An object containing the current widths of the columns, with the min/max sizes taken into account.
12
+ */
13
+ const normalizeColumnWidths = (columnDefinitions, columnWidths) => {
14
+ const normalizedColumnWidths = {};
15
+ Object.entries(columnWidths).forEach(([columnId, width]) => {
16
+ const { minSize, maxSize } = columnDefinitions.find((col) => col.id === columnId);
17
+ // Both minSize and maxSize properties should always be defined since they're set to defaults by the ColumnMapper - but, just in case.
18
+ if (!minSize || !maxSize) {
19
+ normalizedColumnWidths[columnId] = width;
20
+ return;
21
+ }
22
+ const newWidth = Math.max(minSize, Math.min(maxSize, width));
23
+ normalizedColumnWidths[columnId] = newWidth;
24
+ });
25
+ return normalizedColumnWidths;
26
+ };
27
+ /**
28
+ * Hook used to handle column width state for the grid. By default, it sets up internal state, but if the user provides columnWidths
29
+ * and onColumnsResized props to the grid, it will use those to manage the column widths externally.
30
+ */
31
+ const useColumnWidthState = ({ mappedColumnDefinitions, columnWidths, onColumnsResized, }) => {
32
+ // Internal state to store the column widths if the user doesn't provide them.
33
+ const [internalColumnWidthState, setInternalColumnWidthState] = React.useState({});
34
+ // If the user provides columnWidths and an onColumnsResized callback, we use them to control the column widths externally.
35
+ const isControlledExternally = columnWidths && onColumnsResized;
36
+ const columnSizing = isControlledExternally ? columnWidths : internalColumnWidthState;
37
+ const onColumnSizingChange = React.useCallback((onUpdate) => {
38
+ const newColumnSizing = typeof onUpdate === 'function' ? onUpdate(columnSizing) : onUpdate;
39
+ const normalizedColumnSizing = normalizeColumnWidths(mappedColumnDefinitions, newColumnSizing);
40
+ if (isControlledExternally || onColumnsResized) {
41
+ onColumnsResized(normalizedColumnSizing);
42
+ }
43
+ setInternalColumnWidthState(normalizedColumnSizing);
44
+ }, [columnSizing, isControlledExternally, onColumnsResized, mappedColumnDefinitions]);
45
+ return {
46
+ columnSizing,
47
+ onColumnSizingChange,
48
+ };
49
+ };
50
+
51
+ exports.useColumnWidthState = useColumnWidthState;
52
+ //# sourceMappingURL=useColumnWidthState.cjs.map