@veeqo/ui 9.10.2 → 9.10.3

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 (45) hide show
  1. package/dist/components/DataGrid/DataGrid.cjs +22 -52
  2. package/dist/components/DataGrid/DataGrid.cjs.map +1 -1
  3. package/dist/components/DataGrid/DataGrid.d.ts +1 -1
  4. package/dist/components/DataGrid/DataGrid.js +22 -52
  5. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  6. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs +9 -0
  7. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs.map +1 -1
  8. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +9 -0
  9. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js.map +1 -1
  10. package/dist/components/DataGrid/components/Columns/Columns.cjs +9 -8
  11. package/dist/components/DataGrid/components/Columns/Columns.cjs.map +1 -1
  12. package/dist/components/DataGrid/components/Columns/Columns.js +9 -8
  13. package/dist/components/DataGrid/components/Columns/Columns.js.map +1 -1
  14. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs +7 -0
  15. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs.map +1 -1
  16. package/dist/components/DataGrid/components/GridContainer/GridContainer.js +7 -0
  17. package/dist/components/DataGrid/components/GridContainer/GridContainer.js.map +1 -1
  18. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +10 -2
  19. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs.map +1 -1
  20. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +10 -2
  21. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js.map +1 -1
  22. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.cjs +2 -2
  23. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.cjs.map +1 -1
  24. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.js +2 -2
  25. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.scss.js.map +1 -1
  26. package/dist/components/DataGrid/hooks/index.d.ts +4 -0
  27. package/dist/components/DataGrid/hooks/useColumnState.cjs +67 -0
  28. package/dist/components/DataGrid/hooks/useColumnState.cjs.map +1 -0
  29. package/dist/components/DataGrid/hooks/useColumnState.d.ts +14 -0
  30. package/dist/components/DataGrid/hooks/useColumnState.js +65 -0
  31. package/dist/components/DataGrid/hooks/useColumnState.js.map +1 -0
  32. package/dist/components/DataGrid/hooks/useColumnWidthState.cjs +52 -0
  33. package/dist/components/DataGrid/hooks/useColumnWidthState.cjs.map +1 -0
  34. package/dist/components/DataGrid/hooks/useColumnWidthState.d.ts +25 -0
  35. package/dist/components/DataGrid/hooks/useColumnWidthState.js +50 -0
  36. package/dist/components/DataGrid/hooks/useColumnWidthState.js.map +1 -0
  37. package/dist/components/DataGrid/types/ColumnWidths.d.ts +1 -0
  38. package/dist/components/DataGrid/types/DataGridProps.d.ts +10 -0
  39. package/dist/components/DataGrid/utils/index.d.ts +0 -1
  40. package/package.json +1 -1
  41. package/dist/components/DataGrid/utils/isLastColumn.cjs +0 -11
  42. package/dist/components/DataGrid/utils/isLastColumn.cjs.map +0 -1
  43. package/dist/components/DataGrid/utils/isLastColumn.d.ts +0 -2
  44. package/dist/components/DataGrid/utils/isLastColumn.js +0 -9
  45. package/dist/components/DataGrid/utils/isLastColumn.js.map +0 -1
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWidthState.cjs","sources":["../../../../src/components/DataGrid/hooks/useColumnWidthState.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { ColumnDef, ColumnSizingState, OnChangeFn } from '@tanstack/react-table';\n\nimport { ColumnWidths } from '../types/ColumnWidths';\n\ntype UseColumnWidthStateProps = {\n /**\n * The TanStack Table column definitions.\n */\n mappedColumnDefinitions: ColumnDef<any, any>[];\n\n /**\n * The current widths of the columns.\n */\n columnWidths?: ColumnWidths;\n\n /**\n * Callback function to be called when the columns are resized.\n */\n onColumnsResized?: (columnWidths: ColumnWidths) => void;\n};\n\n/**\n * Normalizes the column widths to ensure they are within the min/max bounds defined in the column definitions. Internally within\n * the columnSizing state, TanStack will allow columns to be resized to values exceeding the min/max bounds - this corrects for\n * that behaviour.\n * @param columnDefinitions Mapped column definitions.\n * @param columnWidths An object containing the current widths of the columns.\n * @returns An object containing the current widths of the columns, with the min/max sizes taken into account.\n */\nconst normalizeColumnWidths = (\n columnDefinitions: ColumnDef<any, any>[],\n columnWidths: ColumnWidths,\n) => {\n const normalizedColumnWidths: Record<string, number> = {};\n\n Object.entries(columnWidths).forEach(([columnId, width]) => {\n const { minSize, maxSize } = columnDefinitions.find((col) => col.id === columnId)!;\n\n // Both minSize and maxSize properties should always be defined since they're set to defaults by the ColumnMapper - but, just in case.\n if (!minSize || !maxSize) {\n normalizedColumnWidths[columnId] = width;\n return;\n }\n\n const newWidth = Math.max(minSize, Math.min(maxSize, width));\n normalizedColumnWidths[columnId] = newWidth;\n });\n\n return normalizedColumnWidths;\n};\n\n/**\n * Hook used to handle column width state for the grid. By default, it sets up internal state, but if the user provides columnWidths\n * and onColumnsResized props to the grid, it will use those to manage the column widths externally.\n */\nexport const useColumnWidthState = ({\n mappedColumnDefinitions,\n columnWidths,\n onColumnsResized,\n}: UseColumnWidthStateProps) => {\n // Internal state to store the column widths if the user doesn't provide them.\n const [internalColumnWidthState, setInternalColumnWidthState] = useState<ColumnWidths>({});\n\n // If the user provides columnWidths and an onColumnsResized callback, we use them to control the column widths externally.\n const isControlledExternally = columnWidths && onColumnsResized;\n\n const columnSizing = isControlledExternally ? columnWidths : internalColumnWidthState;\n\n const onColumnSizingChange: OnChangeFn<ColumnSizingState> = useCallback(\n (onUpdate) => {\n const newColumnSizing = typeof onUpdate === 'function' ? onUpdate(columnSizing) : onUpdate;\n const normalizedColumnSizing = normalizeColumnWidths(\n mappedColumnDefinitions,\n newColumnSizing,\n );\n\n if (isControlledExternally || onColumnsResized) {\n onColumnsResized(normalizedColumnSizing);\n }\n\n setInternalColumnWidthState(normalizedColumnSizing);\n },\n [columnSizing, isControlledExternally, onColumnsResized, mappedColumnDefinitions],\n );\n\n return {\n columnSizing,\n onColumnSizingChange,\n };\n};\n"],"names":["useState","useCallback"],"mappings":";;;;AAsBA;;;;;;;AAOG;AACH,MAAM,qBAAqB,GAAG,CAC5B,iBAAwC,EACxC,YAA0B,KACxB;IACF,MAAM,sBAAsB,GAA2B,EAAE;AAEzD,IAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAI;QACzD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAE;;AAGlF,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AACxB,YAAA,sBAAsB,CAAC,QAAQ,CAAC,GAAG,KAAK;YACxC;AACD;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,sBAAsB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC7C,KAAC,CAAC;AAEF,IAAA,OAAO,sBAAsB;AAC/B,CAAC;AAED;;;AAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAClC,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,GACS,KAAI;;IAE7B,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAGA,cAAQ,CAAe,EAAE,CAAC;;AAG1F,IAAA,MAAM,sBAAsB,GAAG,YAAY,IAAI,gBAAgB;IAE/D,MAAM,YAAY,GAAG,sBAAsB,GAAG,YAAY,GAAG,wBAAwB;AAErF,IAAA,MAAM,oBAAoB,GAAkCC,iBAAW,CACrE,CAAC,QAAQ,KAAI;AACX,QAAA,MAAM,eAAe,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ;QAC1F,MAAM,sBAAsB,GAAG,qBAAqB,CAClD,uBAAuB,EACvB,eAAe,CAChB;QAED,IAAI,sBAAsB,IAAI,gBAAgB,EAAE;YAC9C,gBAAgB,CAAC,sBAAsB,CAAC;AACzC;QAED,2BAA2B,CAAC,sBAAsB,CAAC;KACpD,EACD,CAAC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAClF;IAED,OAAO;QACL,YAAY;QACZ,oBAAoB;KACrB;AACH;;;;"}
@@ -0,0 +1,25 @@
1
+ import { ColumnDef, ColumnSizingState, OnChangeFn } from '@tanstack/react-table';
2
+ import { ColumnWidths } from '../types/ColumnWidths';
3
+ type UseColumnWidthStateProps = {
4
+ /**
5
+ * The TanStack Table column definitions.
6
+ */
7
+ mappedColumnDefinitions: ColumnDef<any, any>[];
8
+ /**
9
+ * The current widths of the columns.
10
+ */
11
+ columnWidths?: ColumnWidths;
12
+ /**
13
+ * Callback function to be called when the columns are resized.
14
+ */
15
+ onColumnsResized?: (columnWidths: ColumnWidths) => void;
16
+ };
17
+ /**
18
+ * Hook used to handle column width state for the grid. By default, it sets up internal state, but if the user provides columnWidths
19
+ * and onColumnsResized props to the grid, it will use those to manage the column widths externally.
20
+ */
21
+ export declare const useColumnWidthState: ({ mappedColumnDefinitions, columnWidths, onColumnsResized, }: UseColumnWidthStateProps) => {
22
+ columnSizing: ColumnWidths;
23
+ onColumnSizingChange: OnChangeFn<ColumnSizingState>;
24
+ };
25
+ export {};
@@ -0,0 +1,50 @@
1
+ import { useState, useCallback } from 'react';
2
+
3
+ /**
4
+ * Normalizes the column widths to ensure they are within the min/max bounds defined in the column definitions. Internally within
5
+ * the columnSizing state, TanStack will allow columns to be resized to values exceeding the min/max bounds - this corrects for
6
+ * that behaviour.
7
+ * @param columnDefinitions Mapped column definitions.
8
+ * @param columnWidths An object containing the current widths of the columns.
9
+ * @returns An object containing the current widths of the columns, with the min/max sizes taken into account.
10
+ */
11
+ const normalizeColumnWidths = (columnDefinitions, columnWidths) => {
12
+ const normalizedColumnWidths = {};
13
+ Object.entries(columnWidths).forEach(([columnId, width]) => {
14
+ const { minSize, maxSize } = columnDefinitions.find((col) => col.id === columnId);
15
+ // Both minSize and maxSize properties should always be defined since they're set to defaults by the ColumnMapper - but, just in case.
16
+ if (!minSize || !maxSize) {
17
+ normalizedColumnWidths[columnId] = width;
18
+ return;
19
+ }
20
+ const newWidth = Math.max(minSize, Math.min(maxSize, width));
21
+ normalizedColumnWidths[columnId] = newWidth;
22
+ });
23
+ return normalizedColumnWidths;
24
+ };
25
+ /**
26
+ * Hook used to handle column width state for the grid. By default, it sets up internal state, but if the user provides columnWidths
27
+ * and onColumnsResized props to the grid, it will use those to manage the column widths externally.
28
+ */
29
+ const useColumnWidthState = ({ mappedColumnDefinitions, columnWidths, onColumnsResized, }) => {
30
+ // Internal state to store the column widths if the user doesn't provide them.
31
+ const [internalColumnWidthState, setInternalColumnWidthState] = useState({});
32
+ // If the user provides columnWidths and an onColumnsResized callback, we use them to control the column widths externally.
33
+ const isControlledExternally = columnWidths && onColumnsResized;
34
+ const columnSizing = isControlledExternally ? columnWidths : internalColumnWidthState;
35
+ const onColumnSizingChange = useCallback((onUpdate) => {
36
+ const newColumnSizing = typeof onUpdate === 'function' ? onUpdate(columnSizing) : onUpdate;
37
+ const normalizedColumnSizing = normalizeColumnWidths(mappedColumnDefinitions, newColumnSizing);
38
+ if (isControlledExternally || onColumnsResized) {
39
+ onColumnsResized(normalizedColumnSizing);
40
+ }
41
+ setInternalColumnWidthState(normalizedColumnSizing);
42
+ }, [columnSizing, isControlledExternally, onColumnsResized, mappedColumnDefinitions]);
43
+ return {
44
+ columnSizing,
45
+ onColumnSizingChange,
46
+ };
47
+ };
48
+
49
+ export { useColumnWidthState };
50
+ //# sourceMappingURL=useColumnWidthState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWidthState.js","sources":["../../../../src/components/DataGrid/hooks/useColumnWidthState.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { ColumnDef, ColumnSizingState, OnChangeFn } from '@tanstack/react-table';\n\nimport { ColumnWidths } from '../types/ColumnWidths';\n\ntype UseColumnWidthStateProps = {\n /**\n * The TanStack Table column definitions.\n */\n mappedColumnDefinitions: ColumnDef<any, any>[];\n\n /**\n * The current widths of the columns.\n */\n columnWidths?: ColumnWidths;\n\n /**\n * Callback function to be called when the columns are resized.\n */\n onColumnsResized?: (columnWidths: ColumnWidths) => void;\n};\n\n/**\n * Normalizes the column widths to ensure they are within the min/max bounds defined in the column definitions. Internally within\n * the columnSizing state, TanStack will allow columns to be resized to values exceeding the min/max bounds - this corrects for\n * that behaviour.\n * @param columnDefinitions Mapped column definitions.\n * @param columnWidths An object containing the current widths of the columns.\n * @returns An object containing the current widths of the columns, with the min/max sizes taken into account.\n */\nconst normalizeColumnWidths = (\n columnDefinitions: ColumnDef<any, any>[],\n columnWidths: ColumnWidths,\n) => {\n const normalizedColumnWidths: Record<string, number> = {};\n\n Object.entries(columnWidths).forEach(([columnId, width]) => {\n const { minSize, maxSize } = columnDefinitions.find((col) => col.id === columnId)!;\n\n // Both minSize and maxSize properties should always be defined since they're set to defaults by the ColumnMapper - but, just in case.\n if (!minSize || !maxSize) {\n normalizedColumnWidths[columnId] = width;\n return;\n }\n\n const newWidth = Math.max(minSize, Math.min(maxSize, width));\n normalizedColumnWidths[columnId] = newWidth;\n });\n\n return normalizedColumnWidths;\n};\n\n/**\n * Hook used to handle column width state for the grid. By default, it sets up internal state, but if the user provides columnWidths\n * and onColumnsResized props to the grid, it will use those to manage the column widths externally.\n */\nexport const useColumnWidthState = ({\n mappedColumnDefinitions,\n columnWidths,\n onColumnsResized,\n}: UseColumnWidthStateProps) => {\n // Internal state to store the column widths if the user doesn't provide them.\n const [internalColumnWidthState, setInternalColumnWidthState] = useState<ColumnWidths>({});\n\n // If the user provides columnWidths and an onColumnsResized callback, we use them to control the column widths externally.\n const isControlledExternally = columnWidths && onColumnsResized;\n\n const columnSizing = isControlledExternally ? columnWidths : internalColumnWidthState;\n\n const onColumnSizingChange: OnChangeFn<ColumnSizingState> = useCallback(\n (onUpdate) => {\n const newColumnSizing = typeof onUpdate === 'function' ? onUpdate(columnSizing) : onUpdate;\n const normalizedColumnSizing = normalizeColumnWidths(\n mappedColumnDefinitions,\n newColumnSizing,\n );\n\n if (isControlledExternally || onColumnsResized) {\n onColumnsResized(normalizedColumnSizing);\n }\n\n setInternalColumnWidthState(normalizedColumnSizing);\n },\n [columnSizing, isControlledExternally, onColumnsResized, mappedColumnDefinitions],\n );\n\n return {\n columnSizing,\n onColumnSizingChange,\n };\n};\n"],"names":[],"mappings":";;AAsBA;;;;;;;AAOG;AACH,MAAM,qBAAqB,GAAG,CAC5B,iBAAwC,EACxC,YAA0B,KACxB;IACF,MAAM,sBAAsB,GAA2B,EAAE;AAEzD,IAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAI;QACzD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAE;;AAGlF,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AACxB,YAAA,sBAAsB,CAAC,QAAQ,CAAC,GAAG,KAAK;YACxC;AACD;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,sBAAsB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC7C,KAAC,CAAC;AAEF,IAAA,OAAO,sBAAsB;AAC/B,CAAC;AAED;;;AAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAClC,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,GACS,KAAI;;IAE7B,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC;;AAG1F,IAAA,MAAM,sBAAsB,GAAG,YAAY,IAAI,gBAAgB;IAE/D,MAAM,YAAY,GAAG,sBAAsB,GAAG,YAAY,GAAG,wBAAwB;AAErF,IAAA,MAAM,oBAAoB,GAAkC,WAAW,CACrE,CAAC,QAAQ,KAAI;AACX,QAAA,MAAM,eAAe,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ;QAC1F,MAAM,sBAAsB,GAAG,qBAAqB,CAClD,uBAAuB,EACvB,eAAe,CAChB;QAED,IAAI,sBAAsB,IAAI,gBAAgB,EAAE;YAC9C,gBAAgB,CAAC,sBAAsB,CAAC;AACzC;QAED,2BAA2B,CAAC,sBAAsB,CAAC;KACpD,EACD,CAAC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAClF;IAED,OAAO;QACL,YAAY;QACZ,oBAAoB;KACrB;AACH;;;;"}
@@ -0,0 +1 @@
1
+ export type ColumnWidths = Record<string, number>;
@@ -5,6 +5,7 @@ import { ColumnDefinition } from './ColumnDefinition';
5
5
  import { SortState } from './SortState';
6
6
  import { PinnedColumnState } from './PinnedColumnState';
7
7
  import { RowGroupingConfiguration } from './RowGroupingConfiguration';
8
+ import { ColumnWidths } from './ColumnWidths';
8
9
  export type CustomState = {
9
10
  iconSlot: ReactElement;
10
11
  heading: string;
@@ -110,4 +111,13 @@ export type DataGridProps = Pick<AriaAttributes, 'aria-label'> & {
110
111
  * Row grouping configuration for rendering nested data in the grid.
111
112
  */
112
113
  rowGrouping?: RowGroupingConfiguration;
114
+ /** Column widths */
115
+ /**
116
+ * Column widths, a map of column ID's to their widths in pixels. If this is undefined, or a column isn't included, the default width will be used.
117
+ */
118
+ columnWidths?: ColumnWidths;
119
+ /**
120
+ * Callback which is raised when the column widths change.
121
+ */
122
+ onColumnsResized?: (columnWidths: ColumnWidths) => void;
113
123
  };
@@ -1,4 +1,3 @@
1
- export { isLastColumn } from './isLastColumn';
2
1
  export { ColumnMapper } from './ColumnMapper';
3
2
  export { getAriaRoles } from './getAriaRoles';
4
3
  export { getPinnedColumnStyles, getPinnedColumnClassNames } from './pinnedColumnUtils';