@semcore/data-table 17.0.0-prerelease.29 → 17.0.0-prerelease.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,12 +2,19 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [17.0.0] - 2026-02-27
5
+ ## [17.0.0] - 2026-03-09
6
6
 
7
7
  ### BREAK
8
8
 
9
9
  - New major version.
10
10
 
11
+ ### Fixed
12
+
13
+ - Impossible to navigate by keyboard when sorting was clicked by mouse.
14
+ - Impossible to navigate cells near the merger when accordion collapsed.
15
+ - Sorted column remains visually selected after sorting another column
16
+ via mouse when sorted was focused
17
+
11
18
  ## [16.5.3] - 2026-02-10
12
19
 
13
20
  ### Fixed
@@ -88,6 +88,13 @@ class BodyRoot extends _core.Component {
88
88
  (0, _defineProperty2.default)(this, "spinContainerIsFocused", false);
89
89
  (0, _defineProperty2.default)(this, "calculateAriaRowIndex", () => {
90
90
  requestAnimationFrame(() => {
91
+ const collapsedElements = this.bodyRef.current?.querySelectorAll('[role=row][data-ui-name="Collapse"]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
92
+ collapsedElements?.forEach(collapsedElement => {
93
+ const parent = collapsedElement.parentElement;
94
+ if (parent?.getAttribute('role') === 'rowgroup') {
95
+ parent?.appendChild(collapsedElement);
96
+ }
97
+ });
91
98
  const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
92
99
  visibleRows?.forEach((row, index) => {
93
100
  if (row instanceof HTMLElement) {
@@ -1 +1 @@
1
- {"version":3,"file":"Body.js","names":["_core","require","_baseComponents","_canUseDOM","_interopRequireDefault","_hasParent","_spin","React","_interopRequireWildcard","_MergedCells","_Row","_DataTable","style","sstyled","insert","ROWS_BUFFER","APROX_ROWS_ON_PAGE","INDEX_OFFSET","exports","BodyRoot","Component","constructor","props","_defineProperty2","default","Map","createRef","requestAnimationFrame","visibleRows","bodyRef","current","querySelectorAll","forEach","row","index","HTMLElement","setAttribute","startIndex","toString","asProps","totalRows","tableRef","length","node","rowsHeightMap","has","set","setRowHeight","component","rowsComponentsMap","UNIQ_ROW_KEY","delete","headerHeight","propsHeaderHeight","tableContainerRef","stickyHeader","scrollTop","spinContainerIsFocused","bind","componentDidMount","calculateAriaRowIndex","componentDidUpdate","prevProps","loading","activeElement","document","setTimeout","hasParent","focus","getRowProps","use","gridTemplateAreas","gridTemplateColumns","expandedRows","columns","onExpandRow","hasGroups","scrollAreaRef","uid","onBackFromAccordion","rowProps","rows","flatRows","sideIndents","selectedRows","onSelectRow","getFixedStyle","accordionDuration","accordionAnimationRows","getI18nText","renderCell","onCellClick","rawData","shadowVertical","accordionMode","virtualScroll","limit","variant","ROW_INDEX","gridRowIndex","GRID_ROW_INDEX","sideIndentsValue","calculatedRowProps","rowUniqKey","includes","theme","rowIndex","inert","undefined","mergedRow","componentsMap","render","_ref","_ref2","SBody","Box","SRowGroup","SSpinContainer","styles","spinnerRef","scrollDirection","renderEmptyData","renderCellOverlay","rowsToRender","lastIndex","rowsBuffer","offsetHeight","prevPrepared","nextPrepared","aproxRowsOnPage","i","indexForDownIterate","size","value","get","key","valueFromToCompare","valueToToCompare","Math","max","min","indexForUpIterate","slice","rowHeight","floor","ceil","rowMarginTop","emptyRow","IS_EMPTY_DATA_ROW","name","MergedColumnsCell","dataKey","canUseDOM","createElement","cn","assignProps","Body","Row","isNonInteractive","map","Array","isArray","_ref3","groupUniqKey","isFirstCellAreMergedRows","nextColumnName","firstCell","MergedRowsCell","SELECT_ALL","rowsCount","handleRef","item","componentRef","handleComponentRef","_extends2","ref","getSpinnerTopOffset","handleFocusSpinContainer","handleBlurSpinContainer","firstChild","role","children","offset","offsetTop","height","getBoundingClientRect","nextSibling","createComponent"],"sources":["../../../../src/components/Body/Body.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { hasParent } from '@semcore/core/lib/utils/hasParent';\nimport Spin from '@semcore/spin';\nimport * as React from 'react';\n\nimport type { BodyPropsInner, DataTableBodyProps, DataTableBodyType } from './Body.types';\nimport { MergedColumnsCell, MergedRowsCell } from './MergedCells';\nimport type { RowRoot } from './Row';\nimport { Row } from './Row';\nimport type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types';\nimport style from './style.shadow.css';\nimport {\n GRID_ROW_INDEX,\n IS_EMPTY_DATA_ROW,\n ROW_INDEX, SELECT_ALL,\n UNIQ_ROW_KEY,\n} from '../DataTable/DataTable';\nimport type { DataTableData } from '../DataTable/DataTable.types';\n\nconst ROWS_BUFFER = 20;\nconst APROX_ROWS_ON_PAGE = 20;\nexport const INDEX_OFFSET = 2; // 1 - for header, 1 - because start not from 0, but from 1\n\nclass BodyRoot<Data extends DataTableData, UniqKeyType> extends Component<DataTableBodyProps<Data, UniqKeyType>, [], {}, BodyPropsInner<Data, UniqKeyType>> {\n static displayName = 'Body';\n static style = style;\n\n rowsHeightMap = new Map<number, [number, number, HTMLElement]>();\n rowsComponentsMap = new Map<UniqKeyType, RowRoot<Data, UniqKeyType>>();\n\n indexForDownIterate = 0;\n indexForUpIterate = 0;\n\n startIndex = -1;\n\n bodyRef = React.createRef<HTMLDivElement>();\n spinContainerIsFocused = false;\n\n constructor(props: DataTableBodyProps<Data, UniqKeyType>) {\n super(props);\n this.setRowHeight = this.setRowHeight.bind(this);\n }\n\n componentDidMount() {\n this.calculateAriaRowIndex();\n }\n\n componentDidUpdate(prevProps: DataTableBodyProps<Data, UniqKeyType> & BodyPropsInner<Data, UniqKeyType>) {\n const { loading, tableRef } = this.asProps;\n if (prevProps.loading !== loading) {\n if (loading) {\n const activeElement = document.activeElement; // need to define it here because of FF\n setTimeout(() => {\n if ((tableRef.current && hasParent(activeElement, tableRef.current))) {\n tableRef.current?.focus();\n }\n });\n } else if (!loading && this.spinContainerIsFocused) {\n setTimeout(() => {\n tableRef.current?.focus();\n });\n this.spinContainerIsFocused = false;\n }\n }\n }\n\n calculateAriaRowIndex = () => {\n requestAnimationFrame(() => {\n const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n visibleRows?.forEach((row, index) => {\n if (row instanceof HTMLElement) {\n row.setAttribute('aria-rowindex', (index + 2 + this.startIndex).toString());\n }\n });\n\n if (!this.asProps.totalRows) {\n this.asProps.tableRef.current?.setAttribute('aria-rowcount', (visibleRows?.length ?? 0).toString());\n }\n });\n };\n\n handleRef = (index: number, row: DTRow<UniqKeyType>) => (node: HTMLElement | null) => {\n if (!this.rowsHeightMap.has(index) && node) {\n this.rowsHeightMap.set(index, [0, 0, node]);\n this.setRowHeight(index, row);\n }\n };\n\n handleComponentRef = (row: DTRow<UniqKeyType>) => (component: RowRoot<Data, UniqKeyType> | null) => {\n requestAnimationFrame(() => {\n if (component) {\n this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component);\n } else {\n this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]);\n }\n });\n };\n\n getRowProps(props: { row: DTRow<UniqKeyType>; mergedRow?: boolean }): RowPropsInner<Data, UniqKeyType> {\n const {\n use,\n gridTemplateAreas,\n gridTemplateColumns,\n expandedRows,\n columns,\n onExpandRow,\n loading,\n hasGroups,\n scrollAreaRef,\n uid,\n onBackFromAccordion,\n rowProps,\n rows,\n flatRows,\n sideIndents,\n selectedRows,\n onSelectRow,\n getFixedStyle,\n accordionDuration,\n accordionAnimationRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n shadowVertical,\n accordionMode,\n virtualScroll,\n limit,\n variant,\n } = this.asProps;\n const row = props.row;\n const index = row[ROW_INDEX];\n const gridRowIndex = row[GRID_ROW_INDEX] + (hasGroups ? INDEX_OFFSET + 1 : INDEX_OFFSET); // 1 - for header, 1 - because start not from 0, but from 1\n\n const sideIndentsValue = variant === 'card' ? 'wide' : sideIndents;\n\n const calculatedRowProps = rowProps?.(row, index) ?? {};\n\n const rowUniqKey = row[UNIQ_ROW_KEY];\n if (selectedRows?.includes(rowUniqKey)) {\n calculatedRowProps.theme = 'info';\n }\n\n return {\n ...calculatedRowProps,\n use,\n uid,\n gridTemplateAreas,\n gridTemplateColumns,\n columns,\n rowIndex: index,\n gridRowIndex,\n rows,\n onBackFromAccordion,\n row,\n onExpandRow,\n selectedRows,\n onSelectRow,\n inert: loading ? '' : undefined,\n scrollAreaRef,\n sideIndents: sideIndentsValue,\n getFixedStyle,\n mergedRow: props.mergedRow,\n accordionDuration,\n accordionAnimationRows,\n flatRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n expandedRows,\n rowsHeightMap: this.rowsHeightMap,\n setRowHeight: this.setRowHeight,\n shadowVertical,\n accordionMode,\n componentsMap: this.rowsComponentsMap,\n calculateAriaRowIndex: this.calculateAriaRowIndex,\n virtualScroll,\n variant,\n limit,\n hasGroups,\n };\n }\n\n getSpinnerTopOffset = () => {\n const { headerHeight: propsHeaderHeight, tableContainerRef, stickyHeader } = this.asProps;\n\n let headerHeight = propsHeaderHeight;\n\n if (stickyHeader) {\n return headerHeight;\n }\n\n if (tableContainerRef.current) {\n if (tableContainerRef.current.scrollTop > headerHeight) {\n headerHeight = 0;\n } else {\n headerHeight = headerHeight - tableContainerRef.current.scrollTop;\n }\n }\n\n return headerHeight;\n };\n\n handleFocusSpinContainer = () => {\n this.spinContainerIsFocused = true;\n };\n\n handleBlurSpinContainer = () => {\n this.spinContainerIsFocused = false;\n };\n\n render() {\n const SBody = Root;\n const SRowGroup = Box;\n const SSpinContainer = Box;\n const {\n styles,\n loading,\n spinnerRef,\n virtualScroll,\n scrollDirection,\n tableContainerRef,\n scrollTop,\n renderEmptyData,\n columns,\n uid,\n rows,\n renderCellOverlay,\n selectedRows,\n } = this.asProps;\n\n let rowsToRender = rows;\n\n let startIndex = -1;\n let lastIndex = -1;\n\n if (virtualScroll) {\n const rowsBuffer =\n typeof virtualScroll !== 'boolean' && 'rowsBuffer' in virtualScroll\n ? virtualScroll.rowsBuffer ?? ROWS_BUFFER\n : ROWS_BUFFER;\n const offsetHeight = tableContainerRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'up' ? rowsBuffer : 4;\n const nextPrepared = scrollDirection === 'up' ? 4 : rowsBuffer;\n\n if (typeof virtualScroll === 'boolean' || 'aproxRowsOnPage' in virtualScroll) {\n const aproxRowsOnPage =\n typeof virtualScroll !== 'boolean'\n ? virtualScroll.aproxRowsOnPage ?? APROX_ROWS_ON_PAGE\n : APROX_ROWS_ON_PAGE;\n if (scrollDirection === 'down') {\n for (let i = this.indexForDownIterate; i < this.rowsHeightMap.size - 1; i++) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n if (startIndex === -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && scrollTop + offsetHeight < valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop + offsetHeight < (this.rowsHeightMap.get(lastIndex ?? 0)?.[1] ?? 0)) {\n lastIndex = lastIndex + aproxRowsOnPage;\n }\n } else if (scrollDirection === 'up') {\n for (let i = this.indexForUpIterate; i >= 0; i--) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n\n if (lastIndex === -1 && scrollTop + offsetHeight > valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (lastIndex !== -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop < (this.rowsHeightMap.get(startIndex ?? 0)?.[0] ?? 0)) {\n startIndex = Math.max(startIndex - aproxRowsOnPage, 0);\n }\n }\n\n if (startIndex === -1) {\n startIndex = scrollTop === 0 ? 0 : Math.max(rows.length - aproxRowsOnPage, 0);\n }\n\n if (lastIndex === -1) {\n lastIndex = scrollTop === 0 ? aproxRowsOnPage : rows.length;\n }\n\n this.indexForDownIterate = startIndex;\n this.indexForUpIterate = lastIndex;\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n } else if ('rowHeight' in virtualScroll) {\n const rowHeight = virtualScroll.rowHeight;\n\n startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n }\n }\n\n this.startIndex = startIndex === -1 ? 0 : startIndex;\n const rowMarginTop = this.rowsHeightMap.get(this.startIndex - 1)?.[1];\n\n let emptyRow: DTRow<string> | null = null;\n\n if (rowsToRender.length === 0) {\n emptyRow = {\n [UNIQ_ROW_KEY]: `${uid}_empty_data`,\n [IS_EMPTY_DATA_ROW]: true,\n [ROW_INDEX]: 0,\n [GRID_ROW_INDEX]: 0,\n [columns[0].name]: new MergedColumnsCell(renderEmptyData(), {\n dataKey: columns[0].name,\n size: columns.length,\n }),\n };\n }\n\n if (canUseDOM()) {\n this.calculateAriaRowIndex();\n }\n\n return sstyled(styles)(\n <SBody render={Box} __excludeProps={['data']} ref={this.bodyRef}>\n {emptyRow && <Body.Row row={emptyRow} isNonInteractive />}\n {typeof virtualScroll === 'boolean' && rowMarginTop && <Box h={rowMarginTop} />}\n {rowsToRender.map((row, index) => {\n if (Array.isArray(row)) {\n const groupUniqKey = row[0][UNIQ_ROW_KEY];\n\n let isFirstCellAreMergedRows = false;\n const theme: 'info' | undefined = undefined;\n\n if (selectedRows) {\n const nextColumnName = columns[1].name;\n const firstCell = row[0][nextColumnName];\n\n if (firstCell instanceof MergedRowsCell) {\n row[0][SELECT_ALL.toString()] = new MergedRowsCell('', firstCell.rowsCount);\n\n isFirstCellAreMergedRows = true;\n }\n }\n\n return sstyled(styles)(\n <SRowGroup\n role='rowgroup'\n key={`gg_${groupUniqKey}`}\n ref={this.handleRef(this.startIndex + index, row[0])}\n >\n {row.map((item, i) => {\n const rowProps: DataTableRowProps<any, any> = {\n row: item,\n mergedRow: i > 0 ? true : false,\n componentRef: this.handleComponentRef(item),\n };\n\n if ((isFirstCellAreMergedRows && selectedRows?.includes(groupUniqKey))) {\n rowProps.theme = 'info';\n }\n\n return (\n <Body.Row\n key={item[UNIQ_ROW_KEY]?.toString() ?? `gg_${groupUniqKey}_row_${i}`}\n {...rowProps}\n />\n );\n })}\n </SRowGroup>,\n );\n }\n\n return (\n <Body.Row\n key={row[UNIQ_ROW_KEY]?.toString()}\n row={row}\n ref={virtualScroll ? this.handleRef(this.startIndex + index, row) : undefined}\n componentRef={this.handleComponentRef(row)}\n />\n );\n })}\n {renderCellOverlay?.()}\n {loading && (\n <SSpinContainer\n innerOutline\n // @ts-ignore\n headerHeight={`${this.getSpinnerTopOffset()}px`}\n tabIndex={-1}\n ref={spinnerRef}\n role='row'\n onFocus={this.handleFocusSpinContainer}\n onBlur={this.handleBlurSpinContainer}\n >\n <Spin size='xxl' role='gridcell' />\n </SSpinContainer>\n )}\n </SBody>,\n );\n }\n\n private setRowHeight(index: number, row: DTRow<UniqKeyType>) {\n const { expandedRows } = this.asProps;\n const node = this.rowsHeightMap.get(index)?.[2];\n const firstChild =\n node?.role === 'rowgroup' ? node?.children.item(0)?.children.item(0) : node?.children.item(0);\n if (node && firstChild instanceof HTMLElement) {\n const offset = firstChild.offsetTop - this.asProps.headerHeight;\n let height = firstChild.getBoundingClientRect().height;\n\n if (expandedRows.has(row[UNIQ_ROW_KEY]) && node.nextSibling instanceof HTMLElement) {\n height = height + node.nextSibling.getBoundingClientRect().height;\n }\n\n this.rowsHeightMap.set(index, [offset, offset + height, node]);\n }\n }\n}\n\nexport const Body = createComponent(BodyRoot, {\n Row,\n}) as unknown as DataTableBodyType & {\n Row: DataTableRowType;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Body.js","names":["_core","require","_baseComponents","_canUseDOM","_interopRequireDefault","_hasParent","_spin","React","_interopRequireWildcard","_MergedCells","_Row","_DataTable","style","sstyled","insert","ROWS_BUFFER","APROX_ROWS_ON_PAGE","INDEX_OFFSET","exports","BodyRoot","Component","constructor","props","_defineProperty2","default","Map","createRef","requestAnimationFrame","collapsedElements","bodyRef","current","querySelectorAll","forEach","collapsedElement","parent","parentElement","getAttribute","appendChild","visibleRows","row","index","HTMLElement","setAttribute","startIndex","toString","asProps","totalRows","tableRef","length","node","rowsHeightMap","has","set","setRowHeight","component","rowsComponentsMap","UNIQ_ROW_KEY","delete","headerHeight","propsHeaderHeight","tableContainerRef","stickyHeader","scrollTop","spinContainerIsFocused","bind","componentDidMount","calculateAriaRowIndex","componentDidUpdate","prevProps","loading","activeElement","document","setTimeout","hasParent","focus","getRowProps","use","gridTemplateAreas","gridTemplateColumns","expandedRows","columns","onExpandRow","hasGroups","scrollAreaRef","uid","onBackFromAccordion","rowProps","rows","flatRows","sideIndents","selectedRows","onSelectRow","getFixedStyle","accordionDuration","accordionAnimationRows","getI18nText","renderCell","onCellClick","rawData","shadowVertical","accordionMode","virtualScroll","limit","variant","ROW_INDEX","gridRowIndex","GRID_ROW_INDEX","sideIndentsValue","calculatedRowProps","rowUniqKey","includes","theme","rowIndex","inert","undefined","mergedRow","componentsMap","render","_ref","_ref2","SBody","Box","SRowGroup","SSpinContainer","styles","spinnerRef","scrollDirection","renderEmptyData","renderCellOverlay","rowsToRender","lastIndex","rowsBuffer","offsetHeight","prevPrepared","nextPrepared","aproxRowsOnPage","i","indexForDownIterate","size","value","get","key","valueFromToCompare","valueToToCompare","Math","max","min","indexForUpIterate","slice","rowHeight","floor","ceil","rowMarginTop","emptyRow","IS_EMPTY_DATA_ROW","name","MergedColumnsCell","dataKey","canUseDOM","createElement","cn","assignProps","Body","Row","isNonInteractive","map","Array","isArray","_ref3","groupUniqKey","isFirstCellAreMergedRows","nextColumnName","firstCell","MergedRowsCell","SELECT_ALL","rowsCount","handleRef","item","componentRef","handleComponentRef","_extends2","ref","getSpinnerTopOffset","handleFocusSpinContainer","handleBlurSpinContainer","firstChild","role","children","offset","offsetTop","height","getBoundingClientRect","nextSibling","createComponent"],"sources":["../../../../src/components/Body/Body.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { hasParent } from '@semcore/core/lib/utils/hasParent';\nimport Spin from '@semcore/spin';\nimport * as React from 'react';\n\nimport type { BodyPropsInner, DataTableBodyProps, DataTableBodyType } from './Body.types';\nimport { MergedColumnsCell, MergedRowsCell } from './MergedCells';\nimport type { RowRoot } from './Row';\nimport { Row } from './Row';\nimport type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types';\nimport style from './style.shadow.css';\nimport {\n GRID_ROW_INDEX,\n IS_EMPTY_DATA_ROW,\n ROW_INDEX, SELECT_ALL,\n UNIQ_ROW_KEY,\n} from '../DataTable/DataTable';\nimport type { DataTableData } from '../DataTable/DataTable.types';\n\nconst ROWS_BUFFER = 20;\nconst APROX_ROWS_ON_PAGE = 20;\nexport const INDEX_OFFSET = 2; // 1 - for header, 1 - because start not from 0, but from 1\n\nclass BodyRoot<Data extends DataTableData, UniqKeyType> extends Component<DataTableBodyProps<Data, UniqKeyType>, [], {}, BodyPropsInner<Data, UniqKeyType>> {\n static displayName = 'Body';\n static style = style;\n\n rowsHeightMap = new Map<number, [number, number, HTMLElement]>();\n rowsComponentsMap = new Map<UniqKeyType, RowRoot<Data, UniqKeyType>>();\n\n indexForDownIterate = 0;\n indexForUpIterate = 0;\n\n startIndex = -1;\n\n bodyRef = React.createRef<HTMLDivElement>();\n spinContainerIsFocused = false;\n\n constructor(props: DataTableBodyProps<Data, UniqKeyType>) {\n super(props);\n this.setRowHeight = this.setRowHeight.bind(this);\n }\n\n componentDidMount() {\n this.calculateAriaRowIndex();\n }\n\n componentDidUpdate(prevProps: DataTableBodyProps<Data, UniqKeyType> & BodyPropsInner<Data, UniqKeyType>) {\n const { loading, tableRef } = this.asProps;\n if (prevProps.loading !== loading) {\n if (loading) {\n const activeElement = document.activeElement; // need to define it here because of FF\n setTimeout(() => {\n if ((tableRef.current && hasParent(activeElement, tableRef.current))) {\n tableRef.current?.focus();\n }\n });\n } else if (!loading && this.spinContainerIsFocused) {\n setTimeout(() => {\n tableRef.current?.focus();\n });\n this.spinContainerIsFocused = false;\n }\n }\n }\n\n calculateAriaRowIndex = () => {\n requestAnimationFrame(() => {\n const collapsedElements = this.bodyRef.current?.querySelectorAll('[role=row][data-ui-name=\"Collapse\"]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n collapsedElements?.forEach((collapsedElement) => {\n const parent = collapsedElement.parentElement;\n if (parent?.getAttribute('role') === 'rowgroup') {\n parent?.appendChild(collapsedElement);\n }\n });\n\n const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n visibleRows?.forEach((row, index) => {\n if (row instanceof HTMLElement) {\n row.setAttribute('aria-rowindex', (index + 2 + this.startIndex).toString());\n }\n });\n\n if (!this.asProps.totalRows) {\n this.asProps.tableRef.current?.setAttribute('aria-rowcount', (visibleRows?.length ?? 0).toString());\n }\n });\n };\n\n handleRef = (index: number, row: DTRow<UniqKeyType>) => (node: HTMLElement | null) => {\n if (!this.rowsHeightMap.has(index) && node) {\n this.rowsHeightMap.set(index, [0, 0, node]);\n this.setRowHeight(index, row);\n }\n };\n\n handleComponentRef = (row: DTRow<UniqKeyType>) => (component: RowRoot<Data, UniqKeyType> | null) => {\n requestAnimationFrame(() => {\n if (component) {\n this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component);\n } else {\n this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]);\n }\n });\n };\n\n getRowProps(props: { row: DTRow<UniqKeyType>; mergedRow?: boolean }): RowPropsInner<Data, UniqKeyType> {\n const {\n use,\n gridTemplateAreas,\n gridTemplateColumns,\n expandedRows,\n columns,\n onExpandRow,\n loading,\n hasGroups,\n scrollAreaRef,\n uid,\n onBackFromAccordion,\n rowProps,\n rows,\n flatRows,\n sideIndents,\n selectedRows,\n onSelectRow,\n getFixedStyle,\n accordionDuration,\n accordionAnimationRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n shadowVertical,\n accordionMode,\n virtualScroll,\n limit,\n variant,\n } = this.asProps;\n const row = props.row;\n const index = row[ROW_INDEX];\n const gridRowIndex = row[GRID_ROW_INDEX] + (hasGroups ? INDEX_OFFSET + 1 : INDEX_OFFSET); // 1 - for header, 1 - because start not from 0, but from 1\n\n const sideIndentsValue = variant === 'card' ? 'wide' : sideIndents;\n\n const calculatedRowProps = rowProps?.(row, index) ?? {};\n\n const rowUniqKey = row[UNIQ_ROW_KEY];\n if (selectedRows?.includes(rowUniqKey)) {\n calculatedRowProps.theme = 'info';\n }\n\n return {\n ...calculatedRowProps,\n use,\n uid,\n gridTemplateAreas,\n gridTemplateColumns,\n columns,\n rowIndex: index,\n gridRowIndex,\n rows,\n onBackFromAccordion,\n row,\n onExpandRow,\n selectedRows,\n onSelectRow,\n inert: loading ? '' : undefined,\n scrollAreaRef,\n sideIndents: sideIndentsValue,\n getFixedStyle,\n mergedRow: props.mergedRow,\n accordionDuration,\n accordionAnimationRows,\n flatRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n expandedRows,\n rowsHeightMap: this.rowsHeightMap,\n setRowHeight: this.setRowHeight,\n shadowVertical,\n accordionMode,\n componentsMap: this.rowsComponentsMap,\n calculateAriaRowIndex: this.calculateAriaRowIndex,\n virtualScroll,\n variant,\n limit,\n hasGroups,\n };\n }\n\n getSpinnerTopOffset = () => {\n const { headerHeight: propsHeaderHeight, tableContainerRef, stickyHeader } = this.asProps;\n\n let headerHeight = propsHeaderHeight;\n\n if (stickyHeader) {\n return headerHeight;\n }\n\n if (tableContainerRef.current) {\n if (tableContainerRef.current.scrollTop > headerHeight) {\n headerHeight = 0;\n } else {\n headerHeight = headerHeight - tableContainerRef.current.scrollTop;\n }\n }\n\n return headerHeight;\n };\n\n handleFocusSpinContainer = () => {\n this.spinContainerIsFocused = true;\n };\n\n handleBlurSpinContainer = () => {\n this.spinContainerIsFocused = false;\n };\n\n render() {\n const SBody = Root;\n const SRowGroup = Box;\n const SSpinContainer = Box;\n const {\n styles,\n loading,\n spinnerRef,\n virtualScroll,\n scrollDirection,\n tableContainerRef,\n scrollTop,\n renderEmptyData,\n columns,\n uid,\n rows,\n renderCellOverlay,\n selectedRows,\n } = this.asProps;\n\n let rowsToRender = rows;\n\n let startIndex = -1;\n let lastIndex = -1;\n\n if (virtualScroll) {\n const rowsBuffer =\n typeof virtualScroll !== 'boolean' && 'rowsBuffer' in virtualScroll\n ? virtualScroll.rowsBuffer ?? ROWS_BUFFER\n : ROWS_BUFFER;\n const offsetHeight = tableContainerRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'up' ? rowsBuffer : 4;\n const nextPrepared = scrollDirection === 'up' ? 4 : rowsBuffer;\n\n if (typeof virtualScroll === 'boolean' || 'aproxRowsOnPage' in virtualScroll) {\n const aproxRowsOnPage =\n typeof virtualScroll !== 'boolean'\n ? virtualScroll.aproxRowsOnPage ?? APROX_ROWS_ON_PAGE\n : APROX_ROWS_ON_PAGE;\n if (scrollDirection === 'down') {\n for (let i = this.indexForDownIterate; i < this.rowsHeightMap.size - 1; i++) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n if (startIndex === -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && scrollTop + offsetHeight < valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop + offsetHeight < (this.rowsHeightMap.get(lastIndex ?? 0)?.[1] ?? 0)) {\n lastIndex = lastIndex + aproxRowsOnPage;\n }\n } else if (scrollDirection === 'up') {\n for (let i = this.indexForUpIterate; i >= 0; i--) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n\n if (lastIndex === -1 && scrollTop + offsetHeight > valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (lastIndex !== -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop < (this.rowsHeightMap.get(startIndex ?? 0)?.[0] ?? 0)) {\n startIndex = Math.max(startIndex - aproxRowsOnPage, 0);\n }\n }\n\n if (startIndex === -1) {\n startIndex = scrollTop === 0 ? 0 : Math.max(rows.length - aproxRowsOnPage, 0);\n }\n\n if (lastIndex === -1) {\n lastIndex = scrollTop === 0 ? aproxRowsOnPage : rows.length;\n }\n\n this.indexForDownIterate = startIndex;\n this.indexForUpIterate = lastIndex;\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n } else if ('rowHeight' in virtualScroll) {\n const rowHeight = virtualScroll.rowHeight;\n\n startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n }\n }\n\n this.startIndex = startIndex === -1 ? 0 : startIndex;\n const rowMarginTop = this.rowsHeightMap.get(this.startIndex - 1)?.[1];\n\n let emptyRow: DTRow<string> | null = null;\n\n if (rowsToRender.length === 0) {\n emptyRow = {\n [UNIQ_ROW_KEY]: `${uid}_empty_data`,\n [IS_EMPTY_DATA_ROW]: true,\n [ROW_INDEX]: 0,\n [GRID_ROW_INDEX]: 0,\n [columns[0].name]: new MergedColumnsCell(renderEmptyData(), {\n dataKey: columns[0].name,\n size: columns.length,\n }),\n };\n }\n\n if (canUseDOM()) {\n this.calculateAriaRowIndex();\n }\n\n return sstyled(styles)(\n <SBody render={Box} __excludeProps={['data']} ref={this.bodyRef}>\n {emptyRow && <Body.Row row={emptyRow} isNonInteractive />}\n {typeof virtualScroll === 'boolean' && rowMarginTop && <Box h={rowMarginTop} />}\n {rowsToRender.map((row, index) => {\n if (Array.isArray(row)) {\n const groupUniqKey = row[0][UNIQ_ROW_KEY];\n\n let isFirstCellAreMergedRows = false;\n const theme: 'info' | undefined = undefined;\n\n if (selectedRows) {\n const nextColumnName = columns[1].name;\n const firstCell = row[0][nextColumnName];\n\n if (firstCell instanceof MergedRowsCell) {\n row[0][SELECT_ALL.toString()] = new MergedRowsCell('', firstCell.rowsCount);\n\n isFirstCellAreMergedRows = true;\n }\n }\n\n return sstyled(styles)(\n <SRowGroup\n role='rowgroup'\n key={`gg_${groupUniqKey}`}\n ref={this.handleRef(this.startIndex + index, row[0])}\n >\n {row.map((item, i) => {\n const rowProps: DataTableRowProps<any, any> = {\n row: item,\n mergedRow: i > 0 ? true : false,\n componentRef: this.handleComponentRef(item),\n };\n\n if ((isFirstCellAreMergedRows && selectedRows?.includes(groupUniqKey))) {\n rowProps.theme = 'info';\n }\n\n return (\n <Body.Row\n key={item[UNIQ_ROW_KEY]?.toString() ?? `gg_${groupUniqKey}_row_${i}`}\n {...rowProps}\n />\n );\n })}\n </SRowGroup>,\n );\n }\n\n return (\n <Body.Row\n key={row[UNIQ_ROW_KEY]?.toString()}\n row={row}\n ref={virtualScroll ? this.handleRef(this.startIndex + index, row) : undefined}\n componentRef={this.handleComponentRef(row)}\n />\n );\n })}\n {renderCellOverlay?.()}\n {loading && (\n <SSpinContainer\n innerOutline\n // @ts-ignore\n headerHeight={`${this.getSpinnerTopOffset()}px`}\n tabIndex={-1}\n ref={spinnerRef}\n role='row'\n onFocus={this.handleFocusSpinContainer}\n onBlur={this.handleBlurSpinContainer}\n >\n <Spin size='xxl' role='gridcell' />\n </SSpinContainer>\n )}\n </SBody>,\n );\n }\n\n private setRowHeight(index: number, row: DTRow<UniqKeyType>) {\n const { expandedRows } = this.asProps;\n const node = this.rowsHeightMap.get(index)?.[2];\n const firstChild =\n node?.role === 'rowgroup' ? node?.children.item(0)?.children.item(0) : node?.children.item(0);\n if (node && firstChild instanceof HTMLElement) {\n const offset = firstChild.offsetTop - this.asProps.headerHeight;\n let height = firstChild.getBoundingClientRect().height;\n\n if (expandedRows.has(row[UNIQ_ROW_KEY]) && node.nextSibling instanceof HTMLElement) {\n height = height + node.nextSibling.getBoundingClientRect().height;\n }\n\n this.rowsHeightMap.set(index, [offset, offset + height, node]);\n }\n }\n}\n\nexport const Body = createComponent(BodyRoot, {\n Row,\n}) as unknown as DataTableBodyType & {\n Row: DataTableRowType;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -125,25 +125,28 @@ class Column extends _core.Component {
125
125
  });
126
126
  (0, _defineProperty2.default)(this, "handleBlur", e => {
127
127
  const relatedTarget = e.relatedTarget;
128
- if (!(0, _isFocusInside.isFocusInside)(e.currentTarget, relatedTarget) && _core.lastInteraction.isKeyboard()) {
128
+ if (!(0, _isFocusInside.isFocusInside)(e.currentTarget, relatedTarget)) {
129
129
  this.setState({
130
130
  sortVisible: false
131
131
  });
132
132
  }
133
133
  });
134
- (0, _defineProperty2.default)(this, "handleSortClick", e => {
135
- e.stopPropagation();
134
+ (0, _defineProperty2.default)(this, "handleSort", e => {
136
135
  const {
137
136
  sort,
138
137
  onSortChange,
139
138
  name,
140
139
  sortable
141
140
  } = this.asProps;
142
- if (_core.lastInteraction.isMouse() || _core.lastInteraction.isKeyboard() && e.target === e.currentTarget) {
143
- if (sortable && onSortChange) {
144
- const sortDirection = sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
145
- onSortChange([name, sortDirection], e);
146
- }
141
+ if (sortable && onSortChange) {
142
+ const sortDirection = sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
143
+ onSortChange([name, sortDirection], e);
144
+ }
145
+ });
146
+ (0, _defineProperty2.default)(this, "handleSortClick", e => {
147
+ if (_core.lastInteraction.isKeyboard()) {
148
+ e.stopPropagation();
149
+ this.handleSort(e);
147
150
  }
148
151
  });
149
152
  (0, _defineProperty2.default)(this, "handleFocusableCellKeyDown", e => {
@@ -173,7 +176,7 @@ class Column extends _core.Component {
173
176
  columnIndex
174
177
  } = this.asProps;
175
178
  if (sortable) {
176
- this.handleSortClick(e);
179
+ this.handleSort(e);
177
180
  }
178
181
  const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap(node => (0, _getFocusableIn.getFocusableIn)(node));
179
182
  if ((0, _isInteractiveElement.isInteractiveElement)(e.target) && this.columnRef.current && focusableChildren.length > 1) {
@@ -304,9 +307,9 @@ class Column extends _core.Component {
304
307
  }), /*#__PURE__*/React.createElement(Children, _ref2.cn("Children", {})), sortable && /*#__PURE__*/React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {
305
308
  "ref": this.sortWrapperRef
306
309
  }), /*#__PURE__*/React.createElement(SSortButton, _ref2.cn("SSortButton", {
307
- "onClick": this.handleSortClick,
308
310
  "aria-label": ariaSortValue,
309
- "color": '--intergalactic-icon-primary-neutral'
311
+ "color": '--intergalactic-icon-primary-neutral',
312
+ "onClick": this.handleSortClick
310
313
  }), /*#__PURE__*/React.createElement(SSortButton.Addon, {
311
314
  tag: SSortIcon
312
315
  }))));
@@ -1 +1 @@
1
- {"version":3,"file":"Column.js","names":["_core","require","_baseComponents","_button","_canUseDOM","_interopRequireDefault","_cssToIntDefault","_getFocusableIn","_isFocusInside","_isInteractiveElement","_m","_m2","React","_interopRequireWildcard","_focusableCell","style","sstyled","insert","SORTING_ICON","desc","SortDesc","asc","SortAsc","ARIA_SORT","SORT_ICON_WIDTH","DEFAULT_DIRECTION","reversedSortDirection","Column","Component","constructor","args","_defineProperty2","default","createRef","sortVisible","node","columnRef","current","clonedColumn","document","createElement","computedStyle","window","getComputedStyle","childNodes","forEach","sortWrapperRef","append","cloneNode","setProperty","styles","key","getPropertyValue","getPropertyPriority","body","appendChild","computedWidth","Math","ceil","getBoundingClientRect","width","removeChild","defaultNodeWidth","clientWidth","freeSpace","setState","e","relatedTarget","isFocusInside","currentTarget","lastInteraction","isKeyboard","stopPropagation","sort","onSortChange","name","sortable","asProps","isMouse","target","sortDirection","defaultDirection","handleKeydownFocusCell","lockedCell","cellElement","handleFocusCell","focusableChildren","Array","from","children","flatMap","getFocusableIn","isInteractiveElement","length","onClick","columnIndex","handleSortClick","rowIndex","colIndex","componentDidMount","parent","sticky","changeSortSize","scrollDirection","columnElement","groupElement","parentElement","item","groupRectHeight","height","topOffset","HTMLElement","cssToIntDefault","top","canUseDOM","changeTemplateColumnBySort","componentDidUpdate","prevProps","tableRef","gridTemplateColumns","newWidth","calculateActiveColumnMinWidth","setTimeout","map","gtcWidth","index","join","currentGridTemplateColumns","split","render","_ref","_ref2","SColumn","Flex","SSortWrapper","SSortButton","ButtonLink","uid","sortableColumnDescribeId","Children","sortBy","undefined","isSorted","SSortIcon","visibleSort","Boolean","state","ariaDescribedBy","push","ariaSortValue","cn","assignProps","handleMouseEnter","handleMouseLeave","handleFocusableCellFocus","handleBlur","handleFocusableCellKeyDown","handleClick","Addon","tag","exports"],"sources":["../../../../src/components/Head/Column.tsx"],"sourcesContent":["import { Flex } from '@semcore/base-components';\nimport { ButtonLink } from '@semcore/button';\nimport { Component, lastInteraction, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport cssToIntDefault from '@semcore/core/lib/utils/cssToIntDefault';\nimport { getFocusableIn } from '@semcore/core/lib/utils/focus-lock/getFocusableIn';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { isInteractiveElement } from '@semcore/core/lib/utils/isInteractiveElement';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport * as React from 'react';\n\nimport type { ColumnPropsInner, DataTableColumnProps } from './Column.types';\nimport style from './style.shadow.css';\nimport type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell';\nimport { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell';\nimport type { ROW_GROUP } from '../DataTable/DataTable';\nimport type { DataTableData, SortDirection } from '../DataTable/DataTable.types';\n\nconst SORTING_ICON: { [key in SortDirection]: React.FC<React.SVGProps<SVGSVGElement>> } = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\n\nconst ARIA_SORT = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\nconst SORT_ICON_WIDTH = 20;\n\nconst DEFAULT_DIRECTION = 'desc';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\n\ntype State = {\n sortVisible: boolean;\n};\n\nexport class Column<\n Data extends DataTableData,\n UniqKey extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? keyof Data[number][typeof ROW_GROUP][number] : keyof Data[number]),\n UniqKeyType extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? Data[number][typeof ROW_GROUP][number][UniqKey] : Data[number][UniqKey]),\n> extends Component<\n DataTableColumnProps,\n [],\n {},\n ColumnPropsInner<Data, UniqKey, UniqKeyType>,\n State\n > implements IFocusableCell {\n lockedCell: LockedCell = [null, false];\n\n static displayName = 'Column';\n static style = style;\n\n columnRef = React.createRef<HTMLDivElement>();\n sortWrapperRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n sortVisible: false,\n };\n\n componentDidMount() {\n const { parent, sticky, changeSortSize, name, sort, scrollDirection } = this.asProps;\n\n if (parent && sticky && scrollDirection !== 'horizontal') {\n const columnElement = this.columnRef.current;\n const groupElement = columnElement?.parentElement?.children.item(0);\n\n const groupRectHeight = groupElement?.getBoundingClientRect().height ?? 0;\n const topOffset = (groupElement instanceof HTMLElement) ? cssToIntDefault(groupElement.style.top) : 0;\n\n columnElement?.style.setProperty('top', `${groupRectHeight + topOffset}px`);\n }\n\n if (canUseDOM() && changeSortSize && sort?.[0] === name) {\n this.changeTemplateColumnBySort();\n }\n }\n\n componentDidUpdate(prevProps: DataTableColumnProps & ColumnPropsInner<Data, UniqKey, UniqKeyType>): void {\n if (\n this.asProps.changeSortSize &&\n canUseDOM() &&\n prevProps.sort?.[0] !== this.asProps.sort?.[0]\n ) {\n this.changeTemplateColumnBySort();\n }\n }\n\n changeTemplateColumnBySort() {\n const { tableRef, gridTemplateColumns, columnIndex, sort, name } = this.asProps;\n\n if (sort?.[0] === name) {\n const newWidth = this.calculateActiveColumnMinWidth();\n\n setTimeout(() => {\n if (tableRef.current && newWidth !== null) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n gridTemplateColumns\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return `${newWidth}px`;\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n });\n } else if (sort?.[0] !== name) {\n setTimeout(() => {\n if (tableRef.current) {\n const currentGridTemplateColumns = tableRef.current.style.getPropertyValue('grid-template-columns');\n\n if (currentGridTemplateColumns) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n currentGridTemplateColumns.split(' ')\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return gridTemplateColumns[index];\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n }\n });\n }\n }\n\n calculateActiveColumnMinWidth = (): number | null => {\n const node = this.columnRef.current;\n\n if (node) {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (this.sortWrapperRef.current !== node) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.columnRef.current?.clientWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n return defaultNodeWidth + SORT_ICON_WIDTH;\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n return computedWidth + SORT_ICON_WIDTH;\n }\n }\n }\n\n return null;\n };\n\n get defaultDirection() {\n const { sortable } = this.asProps;\n\n if (typeof sortable === 'string') {\n return sortable;\n }\n\n return DEFAULT_DIRECTION;\n }\n\n handleMouseEnter = () => {\n this.setState({ sortVisible: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ sortVisible: false });\n };\n\n handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const relatedTarget = e.relatedTarget as HTMLElement | undefined;\n if (!isFocusInside(e.currentTarget, relatedTarget) && lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: false });\n }\n };\n\n handleSortClick = (e: React.SyntheticEvent<HTMLElement>) => {\n e.stopPropagation();\n\n const { sort, onSortChange, name, sortable } = this.asProps;\n\n if (\n lastInteraction.isMouse() ||\n (lastInteraction.isKeyboard() && e.target === e.currentTarget)\n ) {\n if (sortable && onSortChange) {\n const sortDirection =\n sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;\n\n onSortChange([name, sortDirection], e);\n }\n }\n };\n\n handleFocusableCellKeyDown = (e: React.KeyboardEvent) => {\n handleKeydownFocusCell(this.lockedCell, e);\n };\n\n handleFocusableCellFocus = (e: React.FocusEvent<HTMLElement, HTMLElement>) => {\n const cellElement = e.currentTarget;\n const target = e.target;\n\n if (lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: true }, () => {\n handleFocusCell(this.lockedCell, target, cellElement);\n });\n } else {\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n }\n };\n\n handleClick = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sortable, onClick, columnIndex } = this.asProps;\n if (sortable) {\n this.handleSortClick(e);\n }\n\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n\n onClick?.(e, { rowIndex: -1, colIndex: columnIndex });\n };\n\n render() {\n const SColumn = Root;\n const SSortWrapper = 'div';\n const SSortButton = ButtonLink;\n const { styles, sortable, sort, uid, name, parent, sortableColumnDescribeId, Children } =\n this.asProps;\n\n const [sortBy, sortDirection] = sort ?? [undefined, undefined];\n const isSorted = sortBy === name && !!sortDirection;\n\n const SSortIcon = isSorted ? SORTING_ICON[sortDirection] : SORTING_ICON[this.defaultDirection];\n\n const visibleSort = Boolean(sortable) && (this.state.sortVisible || isSorted);\n\n const ariaDescribedBy = [];\n if (sortable) {\n ariaDescribedBy.push(sortableColumnDescribeId);\n }\n if (parent) {\n ariaDescribedBy.push(`igc-table-${uid}-${parent.name}-group`);\n }\n\n const ariaSortValue = isSorted ? ARIA_SORT[sortDirection] : undefined;\n\n return sstyled(styles)(\n <SColumn\n render={Flex}\n ref={this.columnRef}\n role='columnheader'\n tabIndex={-1}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onFocus={this.handleFocusableCellFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleFocusableCellKeyDown}\n visibleSort={visibleSort}\n isSorted={isSorted}\n innerOutline\n aria-describedby={ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined}\n aria-sort={ariaSortValue}\n use:onClick={this.handleClick}\n >\n <Children />\n\n {sortable && (\n <SSortWrapper ref={this.sortWrapperRef}>\n <SSortButton\n onClick={this.handleSortClick}\n aria-label={ariaSortValue}\n color='--intergalactic-icon-primary-neutral'\n >\n <SSortButton.Addon tag={SSortIcon} />\n </SSortButton>\n </SSortWrapper>\n )}\n </SColumn>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Column.js","names":["_core","require","_baseComponents","_button","_canUseDOM","_interopRequireDefault","_cssToIntDefault","_getFocusableIn","_isFocusInside","_isInteractiveElement","_m","_m2","React","_interopRequireWildcard","_focusableCell","style","sstyled","insert","SORTING_ICON","desc","SortDesc","asc","SortAsc","ARIA_SORT","SORT_ICON_WIDTH","DEFAULT_DIRECTION","reversedSortDirection","Column","Component","constructor","args","_defineProperty2","default","createRef","sortVisible","node","columnRef","current","clonedColumn","document","createElement","computedStyle","window","getComputedStyle","childNodes","forEach","sortWrapperRef","append","cloneNode","setProperty","styles","key","getPropertyValue","getPropertyPriority","body","appendChild","computedWidth","Math","ceil","getBoundingClientRect","width","removeChild","defaultNodeWidth","clientWidth","freeSpace","setState","e","relatedTarget","isFocusInside","currentTarget","sort","onSortChange","name","sortable","asProps","sortDirection","defaultDirection","lastInteraction","isKeyboard","stopPropagation","handleSort","handleKeydownFocusCell","lockedCell","cellElement","target","handleFocusCell","focusableChildren","Array","from","children","flatMap","getFocusableIn","isInteractiveElement","length","onClick","columnIndex","rowIndex","colIndex","componentDidMount","parent","sticky","changeSortSize","scrollDirection","columnElement","groupElement","parentElement","item","groupRectHeight","height","topOffset","HTMLElement","cssToIntDefault","top","canUseDOM","changeTemplateColumnBySort","componentDidUpdate","prevProps","tableRef","gridTemplateColumns","newWidth","calculateActiveColumnMinWidth","setTimeout","map","gtcWidth","index","join","currentGridTemplateColumns","split","render","_ref","_ref2","SColumn","Flex","SSortWrapper","SSortButton","ButtonLink","uid","sortableColumnDescribeId","Children","sortBy","undefined","isSorted","SSortIcon","visibleSort","Boolean","state","ariaDescribedBy","push","ariaSortValue","cn","assignProps","handleMouseEnter","handleMouseLeave","handleFocusableCellFocus","handleBlur","handleFocusableCellKeyDown","handleClick","handleSortClick","Addon","tag","exports"],"sources":["../../../../src/components/Head/Column.tsx"],"sourcesContent":["import { Flex } from '@semcore/base-components';\nimport { ButtonLink } from '@semcore/button';\nimport { Component, lastInteraction, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport cssToIntDefault from '@semcore/core/lib/utils/cssToIntDefault';\nimport { getFocusableIn } from '@semcore/core/lib/utils/focus-lock/getFocusableIn';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { isInteractiveElement } from '@semcore/core/lib/utils/isInteractiveElement';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport * as React from 'react';\n\nimport type { ColumnPropsInner, DataTableColumnProps } from './Column.types';\nimport style from './style.shadow.css';\nimport type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell';\nimport { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell';\nimport type { ROW_GROUP } from '../DataTable/DataTable';\nimport type { DataTableData, SortDirection } from '../DataTable/DataTable.types';\n\nconst SORTING_ICON: { [key in SortDirection]: React.FC<React.SVGProps<SVGSVGElement>> } = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\n\nconst ARIA_SORT = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\nconst SORT_ICON_WIDTH = 20;\n\nconst DEFAULT_DIRECTION = 'desc';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\n\ntype State = {\n sortVisible: boolean;\n};\n\nexport class Column<\n Data extends DataTableData,\n UniqKey extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? keyof Data[number][typeof ROW_GROUP][number] : keyof Data[number]),\n UniqKeyType extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? Data[number][typeof ROW_GROUP][number][UniqKey] : Data[number][UniqKey]),\n> extends Component<\n DataTableColumnProps,\n [],\n {},\n ColumnPropsInner<Data, UniqKey, UniqKeyType>,\n State\n > implements IFocusableCell {\n lockedCell: LockedCell = [null, false];\n\n static displayName = 'Column';\n static style = style;\n\n columnRef = React.createRef<HTMLDivElement>();\n sortWrapperRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n sortVisible: false,\n };\n\n componentDidMount() {\n const { parent, sticky, changeSortSize, name, sort, scrollDirection } = this.asProps;\n\n if (parent && sticky && scrollDirection !== 'horizontal') {\n const columnElement = this.columnRef.current;\n const groupElement = columnElement?.parentElement?.children.item(0);\n\n const groupRectHeight = groupElement?.getBoundingClientRect().height ?? 0;\n const topOffset = (groupElement instanceof HTMLElement) ? cssToIntDefault(groupElement.style.top) : 0;\n\n columnElement?.style.setProperty('top', `${groupRectHeight + topOffset}px`);\n }\n\n if (canUseDOM() && changeSortSize && sort?.[0] === name) {\n this.changeTemplateColumnBySort();\n }\n }\n\n componentDidUpdate(prevProps: DataTableColumnProps & ColumnPropsInner<Data, UniqKey, UniqKeyType>): void {\n if (\n this.asProps.changeSortSize &&\n canUseDOM() &&\n prevProps.sort?.[0] !== this.asProps.sort?.[0]\n ) {\n this.changeTemplateColumnBySort();\n }\n }\n\n changeTemplateColumnBySort() {\n const { tableRef, gridTemplateColumns, columnIndex, sort, name } = this.asProps;\n\n if (sort?.[0] === name) {\n const newWidth = this.calculateActiveColumnMinWidth();\n\n setTimeout(() => {\n if (tableRef.current && newWidth !== null) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n gridTemplateColumns\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return `${newWidth}px`;\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n });\n } else if (sort?.[0] !== name) {\n setTimeout(() => {\n if (tableRef.current) {\n const currentGridTemplateColumns = tableRef.current.style.getPropertyValue('grid-template-columns');\n\n if (currentGridTemplateColumns) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n currentGridTemplateColumns.split(' ')\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return gridTemplateColumns[index];\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n }\n });\n }\n }\n\n calculateActiveColumnMinWidth = (): number | null => {\n const node = this.columnRef.current;\n\n if (node) {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (this.sortWrapperRef.current !== node) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.columnRef.current?.clientWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n return defaultNodeWidth + SORT_ICON_WIDTH;\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n return computedWidth + SORT_ICON_WIDTH;\n }\n }\n }\n\n return null;\n };\n\n get defaultDirection() {\n const { sortable } = this.asProps;\n\n if (typeof sortable === 'string') {\n return sortable;\n }\n\n return DEFAULT_DIRECTION;\n }\n\n handleMouseEnter = () => {\n this.setState({ sortVisible: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ sortVisible: false });\n };\n\n handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const relatedTarget = e.relatedTarget as HTMLElement | undefined;\n if (!isFocusInside(e.currentTarget, relatedTarget)) {\n this.setState({ sortVisible: false });\n }\n };\n\n handleSort = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sort, onSortChange, name, sortable } = this.asProps;\n\n if (sortable && onSortChange) {\n const sortDirection =\n sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;\n\n onSortChange([name, sortDirection], e);\n }\n };\n\n handleSortClick = (e: React.SyntheticEvent<HTMLElement>) => {\n if (lastInteraction.isKeyboard()) {\n e.stopPropagation();\n this.handleSort(e);\n }\n };\n\n handleFocusableCellKeyDown = (e: React.KeyboardEvent) => {\n handleKeydownFocusCell(this.lockedCell, e);\n };\n\n handleFocusableCellFocus = (e: React.FocusEvent<HTMLElement, HTMLElement>) => {\n const cellElement = e.currentTarget;\n const target = e.target;\n\n if (lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: true }, () => {\n handleFocusCell(this.lockedCell, target, cellElement);\n });\n } else {\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n }\n };\n\n handleClick = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sortable, onClick, columnIndex } = this.asProps;\n if (sortable) {\n this.handleSort(e);\n }\n\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n\n onClick?.(e, { rowIndex: -1, colIndex: columnIndex });\n };\n\n render() {\n const SColumn = Root;\n const SSortWrapper = 'div';\n const SSortButton = ButtonLink;\n const { styles, sortable, sort, uid, name, parent, sortableColumnDescribeId, Children } =\n this.asProps;\n\n const [sortBy, sortDirection] = sort ?? [undefined, undefined];\n const isSorted = sortBy === name && !!sortDirection;\n\n const SSortIcon = isSorted ? SORTING_ICON[sortDirection] : SORTING_ICON[this.defaultDirection];\n\n const visibleSort = Boolean(sortable) && (this.state.sortVisible || isSorted);\n\n const ariaDescribedBy = [];\n if (sortable) {\n ariaDescribedBy.push(sortableColumnDescribeId);\n }\n if (parent) {\n ariaDescribedBy.push(`igc-table-${uid}-${parent.name}-group`);\n }\n\n const ariaSortValue = isSorted ? ARIA_SORT[sortDirection] : undefined;\n\n return sstyled(styles)(\n <SColumn\n render={Flex}\n ref={this.columnRef}\n role='columnheader'\n tabIndex={-1}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onFocus={this.handleFocusableCellFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleFocusableCellKeyDown}\n visibleSort={visibleSort}\n isSorted={isSorted}\n innerOutline\n aria-describedby={ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined}\n aria-sort={ariaSortValue}\n use:onClick={this.handleClick}\n >\n <Children />\n\n {sortable && (\n <SSortWrapper ref={this.sortWrapperRef}>\n <SSortButton\n aria-label={ariaSortValue}\n color='--intergalactic-icon-primary-neutral'\n onClick={this.handleSortClick}\n >\n <SSortButton.Addon tag={SSortIcon} />\n </SSortButton>\n </SSortWrapper>\n )}\n </SColumn>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -82,6 +82,13 @@ class BodyRoot extends Component {
82
82
  _defineProperty(this, "spinContainerIsFocused", false);
83
83
  _defineProperty(this, "calculateAriaRowIndex", () => {
84
84
  requestAnimationFrame(() => {
85
+ const collapsedElements = this.bodyRef.current?.querySelectorAll('[role=row][data-ui-name="Collapse"]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
86
+ collapsedElements?.forEach(collapsedElement => {
87
+ const parent = collapsedElement.parentElement;
88
+ if (parent?.getAttribute('role') === 'rowgroup') {
89
+ parent?.appendChild(collapsedElement);
90
+ }
91
+ });
85
92
  const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
86
93
  visibleRows?.forEach((row, index) => {
87
94
  if (row instanceof HTMLElement) {
@@ -1 +1 @@
1
- {"version":3,"file":"Body.js","names":["Box","Component","createComponent","Root","sstyled","canUseDOM","hasParent","Spin","React","MergedColumnsCell","MergedRowsCell","Row","style","_sstyled","insert","GRID_ROW_INDEX","IS_EMPTY_DATA_ROW","ROW_INDEX","SELECT_ALL","UNIQ_ROW_KEY","ROWS_BUFFER","APROX_ROWS_ON_PAGE","INDEX_OFFSET","BodyRoot","constructor","props","_defineProperty","Map","createRef","requestAnimationFrame","visibleRows","bodyRef","current","querySelectorAll","forEach","row","index","HTMLElement","setAttribute","startIndex","toString","asProps","totalRows","tableRef","length","node","rowsHeightMap","has","set","setRowHeight","component","rowsComponentsMap","delete","headerHeight","propsHeaderHeight","tableContainerRef","stickyHeader","scrollTop","spinContainerIsFocused","bind","componentDidMount","calculateAriaRowIndex","componentDidUpdate","prevProps","loading","activeElement","document","setTimeout","focus","getRowProps","use","gridTemplateAreas","gridTemplateColumns","expandedRows","columns","onExpandRow","hasGroups","scrollAreaRef","uid","onBackFromAccordion","rowProps","rows","flatRows","sideIndents","selectedRows","onSelectRow","getFixedStyle","accordionDuration","accordionAnimationRows","getI18nText","renderCell","onCellClick","rawData","shadowVertical","accordionMode","virtualScroll","limit","variant","gridRowIndex","sideIndentsValue","calculatedRowProps","rowUniqKey","includes","theme","rowIndex","inert","undefined","mergedRow","componentsMap","render","_ref","_ref2","SBody","SRowGroup","SSpinContainer","styles","spinnerRef","scrollDirection","renderEmptyData","renderCellOverlay","rowsToRender","lastIndex","rowsBuffer","offsetHeight","prevPrepared","nextPrepared","aproxRowsOnPage","i","indexForDownIterate","size","value","get","key","valueFromToCompare","valueToToCompare","Math","max","min","indexForUpIterate","slice","rowHeight","floor","ceil","rowMarginTop","emptyRow","name","dataKey","createElement","cn","_assignProps","Body","isNonInteractive","map","Array","isArray","_ref3","groupUniqKey","isFirstCellAreMergedRows","nextColumnName","firstCell","rowsCount","handleRef","item","componentRef","handleComponentRef","_extends","ref","getSpinnerTopOffset","handleFocusSpinContainer","handleBlurSpinContainer","firstChild","role","children","offset","offsetTop","height","getBoundingClientRect","nextSibling"],"sources":["../../../../src/components/Body/Body.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { hasParent } from '@semcore/core/lib/utils/hasParent';\nimport Spin from '@semcore/spin';\nimport * as React from 'react';\n\nimport type { BodyPropsInner, DataTableBodyProps, DataTableBodyType } from './Body.types';\nimport { MergedColumnsCell, MergedRowsCell } from './MergedCells';\nimport type { RowRoot } from './Row';\nimport { Row } from './Row';\nimport type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types';\nimport style from './style.shadow.css';\nimport {\n GRID_ROW_INDEX,\n IS_EMPTY_DATA_ROW,\n ROW_INDEX, SELECT_ALL,\n UNIQ_ROW_KEY,\n} from '../DataTable/DataTable';\nimport type { DataTableData } from '../DataTable/DataTable.types';\n\nconst ROWS_BUFFER = 20;\nconst APROX_ROWS_ON_PAGE = 20;\nexport const INDEX_OFFSET = 2; // 1 - for header, 1 - because start not from 0, but from 1\n\nclass BodyRoot<Data extends DataTableData, UniqKeyType> extends Component<DataTableBodyProps<Data, UniqKeyType>, [], {}, BodyPropsInner<Data, UniqKeyType>> {\n static displayName = 'Body';\n static style = style;\n\n rowsHeightMap = new Map<number, [number, number, HTMLElement]>();\n rowsComponentsMap = new Map<UniqKeyType, RowRoot<Data, UniqKeyType>>();\n\n indexForDownIterate = 0;\n indexForUpIterate = 0;\n\n startIndex = -1;\n\n bodyRef = React.createRef<HTMLDivElement>();\n spinContainerIsFocused = false;\n\n constructor(props: DataTableBodyProps<Data, UniqKeyType>) {\n super(props);\n this.setRowHeight = this.setRowHeight.bind(this);\n }\n\n componentDidMount() {\n this.calculateAriaRowIndex();\n }\n\n componentDidUpdate(prevProps: DataTableBodyProps<Data, UniqKeyType> & BodyPropsInner<Data, UniqKeyType>) {\n const { loading, tableRef } = this.asProps;\n if (prevProps.loading !== loading) {\n if (loading) {\n const activeElement = document.activeElement; // need to define it here because of FF\n setTimeout(() => {\n if ((tableRef.current && hasParent(activeElement, tableRef.current))) {\n tableRef.current?.focus();\n }\n });\n } else if (!loading && this.spinContainerIsFocused) {\n setTimeout(() => {\n tableRef.current?.focus();\n });\n this.spinContainerIsFocused = false;\n }\n }\n }\n\n calculateAriaRowIndex = () => {\n requestAnimationFrame(() => {\n const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n visibleRows?.forEach((row, index) => {\n if (row instanceof HTMLElement) {\n row.setAttribute('aria-rowindex', (index + 2 + this.startIndex).toString());\n }\n });\n\n if (!this.asProps.totalRows) {\n this.asProps.tableRef.current?.setAttribute('aria-rowcount', (visibleRows?.length ?? 0).toString());\n }\n });\n };\n\n handleRef = (index: number, row: DTRow<UniqKeyType>) => (node: HTMLElement | null) => {\n if (!this.rowsHeightMap.has(index) && node) {\n this.rowsHeightMap.set(index, [0, 0, node]);\n this.setRowHeight(index, row);\n }\n };\n\n handleComponentRef = (row: DTRow<UniqKeyType>) => (component: RowRoot<Data, UniqKeyType> | null) => {\n requestAnimationFrame(() => {\n if (component) {\n this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component);\n } else {\n this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]);\n }\n });\n };\n\n getRowProps(props: { row: DTRow<UniqKeyType>; mergedRow?: boolean }): RowPropsInner<Data, UniqKeyType> {\n const {\n use,\n gridTemplateAreas,\n gridTemplateColumns,\n expandedRows,\n columns,\n onExpandRow,\n loading,\n hasGroups,\n scrollAreaRef,\n uid,\n onBackFromAccordion,\n rowProps,\n rows,\n flatRows,\n sideIndents,\n selectedRows,\n onSelectRow,\n getFixedStyle,\n accordionDuration,\n accordionAnimationRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n shadowVertical,\n accordionMode,\n virtualScroll,\n limit,\n variant,\n } = this.asProps;\n const row = props.row;\n const index = row[ROW_INDEX];\n const gridRowIndex = row[GRID_ROW_INDEX] + (hasGroups ? INDEX_OFFSET + 1 : INDEX_OFFSET); // 1 - for header, 1 - because start not from 0, but from 1\n\n const sideIndentsValue = variant === 'card' ? 'wide' : sideIndents;\n\n const calculatedRowProps = rowProps?.(row, index) ?? {};\n\n const rowUniqKey = row[UNIQ_ROW_KEY];\n if (selectedRows?.includes(rowUniqKey)) {\n calculatedRowProps.theme = 'info';\n }\n\n return {\n ...calculatedRowProps,\n use,\n uid,\n gridTemplateAreas,\n gridTemplateColumns,\n columns,\n rowIndex: index,\n gridRowIndex,\n rows,\n onBackFromAccordion,\n row,\n onExpandRow,\n selectedRows,\n onSelectRow,\n inert: loading ? '' : undefined,\n scrollAreaRef,\n sideIndents: sideIndentsValue,\n getFixedStyle,\n mergedRow: props.mergedRow,\n accordionDuration,\n accordionAnimationRows,\n flatRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n expandedRows,\n rowsHeightMap: this.rowsHeightMap,\n setRowHeight: this.setRowHeight,\n shadowVertical,\n accordionMode,\n componentsMap: this.rowsComponentsMap,\n calculateAriaRowIndex: this.calculateAriaRowIndex,\n virtualScroll,\n variant,\n limit,\n hasGroups,\n };\n }\n\n getSpinnerTopOffset = () => {\n const { headerHeight: propsHeaderHeight, tableContainerRef, stickyHeader } = this.asProps;\n\n let headerHeight = propsHeaderHeight;\n\n if (stickyHeader) {\n return headerHeight;\n }\n\n if (tableContainerRef.current) {\n if (tableContainerRef.current.scrollTop > headerHeight) {\n headerHeight = 0;\n } else {\n headerHeight = headerHeight - tableContainerRef.current.scrollTop;\n }\n }\n\n return headerHeight;\n };\n\n handleFocusSpinContainer = () => {\n this.spinContainerIsFocused = true;\n };\n\n handleBlurSpinContainer = () => {\n this.spinContainerIsFocused = false;\n };\n\n render() {\n const SBody = Root;\n const SRowGroup = Box;\n const SSpinContainer = Box;\n const {\n styles,\n loading,\n spinnerRef,\n virtualScroll,\n scrollDirection,\n tableContainerRef,\n scrollTop,\n renderEmptyData,\n columns,\n uid,\n rows,\n renderCellOverlay,\n selectedRows,\n } = this.asProps;\n\n let rowsToRender = rows;\n\n let startIndex = -1;\n let lastIndex = -1;\n\n if (virtualScroll) {\n const rowsBuffer =\n typeof virtualScroll !== 'boolean' && 'rowsBuffer' in virtualScroll\n ? virtualScroll.rowsBuffer ?? ROWS_BUFFER\n : ROWS_BUFFER;\n const offsetHeight = tableContainerRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'up' ? rowsBuffer : 4;\n const nextPrepared = scrollDirection === 'up' ? 4 : rowsBuffer;\n\n if (typeof virtualScroll === 'boolean' || 'aproxRowsOnPage' in virtualScroll) {\n const aproxRowsOnPage =\n typeof virtualScroll !== 'boolean'\n ? virtualScroll.aproxRowsOnPage ?? APROX_ROWS_ON_PAGE\n : APROX_ROWS_ON_PAGE;\n if (scrollDirection === 'down') {\n for (let i = this.indexForDownIterate; i < this.rowsHeightMap.size - 1; i++) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n if (startIndex === -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && scrollTop + offsetHeight < valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop + offsetHeight < (this.rowsHeightMap.get(lastIndex ?? 0)?.[1] ?? 0)) {\n lastIndex = lastIndex + aproxRowsOnPage;\n }\n } else if (scrollDirection === 'up') {\n for (let i = this.indexForUpIterate; i >= 0; i--) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n\n if (lastIndex === -1 && scrollTop + offsetHeight > valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (lastIndex !== -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop < (this.rowsHeightMap.get(startIndex ?? 0)?.[0] ?? 0)) {\n startIndex = Math.max(startIndex - aproxRowsOnPage, 0);\n }\n }\n\n if (startIndex === -1) {\n startIndex = scrollTop === 0 ? 0 : Math.max(rows.length - aproxRowsOnPage, 0);\n }\n\n if (lastIndex === -1) {\n lastIndex = scrollTop === 0 ? aproxRowsOnPage : rows.length;\n }\n\n this.indexForDownIterate = startIndex;\n this.indexForUpIterate = lastIndex;\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n } else if ('rowHeight' in virtualScroll) {\n const rowHeight = virtualScroll.rowHeight;\n\n startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n }\n }\n\n this.startIndex = startIndex === -1 ? 0 : startIndex;\n const rowMarginTop = this.rowsHeightMap.get(this.startIndex - 1)?.[1];\n\n let emptyRow: DTRow<string> | null = null;\n\n if (rowsToRender.length === 0) {\n emptyRow = {\n [UNIQ_ROW_KEY]: `${uid}_empty_data`,\n [IS_EMPTY_DATA_ROW]: true,\n [ROW_INDEX]: 0,\n [GRID_ROW_INDEX]: 0,\n [columns[0].name]: new MergedColumnsCell(renderEmptyData(), {\n dataKey: columns[0].name,\n size: columns.length,\n }),\n };\n }\n\n if (canUseDOM()) {\n this.calculateAriaRowIndex();\n }\n\n return sstyled(styles)(\n <SBody render={Box} __excludeProps={['data']} ref={this.bodyRef}>\n {emptyRow && <Body.Row row={emptyRow} isNonInteractive />}\n {typeof virtualScroll === 'boolean' && rowMarginTop && <Box h={rowMarginTop} />}\n {rowsToRender.map((row, index) => {\n if (Array.isArray(row)) {\n const groupUniqKey = row[0][UNIQ_ROW_KEY];\n\n let isFirstCellAreMergedRows = false;\n const theme: 'info' | undefined = undefined;\n\n if (selectedRows) {\n const nextColumnName = columns[1].name;\n const firstCell = row[0][nextColumnName];\n\n if (firstCell instanceof MergedRowsCell) {\n row[0][SELECT_ALL.toString()] = new MergedRowsCell('', firstCell.rowsCount);\n\n isFirstCellAreMergedRows = true;\n }\n }\n\n return sstyled(styles)(\n <SRowGroup\n role='rowgroup'\n key={`gg_${groupUniqKey}`}\n ref={this.handleRef(this.startIndex + index, row[0])}\n >\n {row.map((item, i) => {\n const rowProps: DataTableRowProps<any, any> = {\n row: item,\n mergedRow: i > 0 ? true : false,\n componentRef: this.handleComponentRef(item),\n };\n\n if ((isFirstCellAreMergedRows && selectedRows?.includes(groupUniqKey))) {\n rowProps.theme = 'info';\n }\n\n return (\n <Body.Row\n key={item[UNIQ_ROW_KEY]?.toString() ?? `gg_${groupUniqKey}_row_${i}`}\n {...rowProps}\n />\n );\n })}\n </SRowGroup>,\n );\n }\n\n return (\n <Body.Row\n key={row[UNIQ_ROW_KEY]?.toString()}\n row={row}\n ref={virtualScroll ? this.handleRef(this.startIndex + index, row) : undefined}\n componentRef={this.handleComponentRef(row)}\n />\n );\n })}\n {renderCellOverlay?.()}\n {loading && (\n <SSpinContainer\n innerOutline\n // @ts-ignore\n headerHeight={`${this.getSpinnerTopOffset()}px`}\n tabIndex={-1}\n ref={spinnerRef}\n role='row'\n onFocus={this.handleFocusSpinContainer}\n onBlur={this.handleBlurSpinContainer}\n >\n <Spin size='xxl' role='gridcell' />\n </SSpinContainer>\n )}\n </SBody>,\n );\n }\n\n private setRowHeight(index: number, row: DTRow<UniqKeyType>) {\n const { expandedRows } = this.asProps;\n const node = this.rowsHeightMap.get(index)?.[2];\n const firstChild =\n node?.role === 'rowgroup' ? node?.children.item(0)?.children.item(0) : node?.children.item(0);\n if (node && firstChild instanceof HTMLElement) {\n const offset = firstChild.offsetTop - this.asProps.headerHeight;\n let height = firstChild.getBoundingClientRect().height;\n\n if (expandedRows.has(row[UNIQ_ROW_KEY]) && node.nextSibling instanceof HTMLElement) {\n height = height + node.nextSibling.getBoundingClientRect().height;\n }\n\n this.rowsHeightMap.set(index, [offset, offset + height, node]);\n }\n }\n}\n\nexport const Body = createComponent(BodyRoot, {\n Row,\n}) as unknown as DataTableBodyType & {\n Row: DataTableRowType;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Body.js","names":["Box","Component","createComponent","Root","sstyled","canUseDOM","hasParent","Spin","React","MergedColumnsCell","MergedRowsCell","Row","style","_sstyled","insert","GRID_ROW_INDEX","IS_EMPTY_DATA_ROW","ROW_INDEX","SELECT_ALL","UNIQ_ROW_KEY","ROWS_BUFFER","APROX_ROWS_ON_PAGE","INDEX_OFFSET","BodyRoot","constructor","props","_defineProperty","Map","createRef","requestAnimationFrame","collapsedElements","bodyRef","current","querySelectorAll","forEach","collapsedElement","parent","parentElement","getAttribute","appendChild","visibleRows","row","index","HTMLElement","setAttribute","startIndex","toString","asProps","totalRows","tableRef","length","node","rowsHeightMap","has","set","setRowHeight","component","rowsComponentsMap","delete","headerHeight","propsHeaderHeight","tableContainerRef","stickyHeader","scrollTop","spinContainerIsFocused","bind","componentDidMount","calculateAriaRowIndex","componentDidUpdate","prevProps","loading","activeElement","document","setTimeout","focus","getRowProps","use","gridTemplateAreas","gridTemplateColumns","expandedRows","columns","onExpandRow","hasGroups","scrollAreaRef","uid","onBackFromAccordion","rowProps","rows","flatRows","sideIndents","selectedRows","onSelectRow","getFixedStyle","accordionDuration","accordionAnimationRows","getI18nText","renderCell","onCellClick","rawData","shadowVertical","accordionMode","virtualScroll","limit","variant","gridRowIndex","sideIndentsValue","calculatedRowProps","rowUniqKey","includes","theme","rowIndex","inert","undefined","mergedRow","componentsMap","render","_ref","_ref2","SBody","SRowGroup","SSpinContainer","styles","spinnerRef","scrollDirection","renderEmptyData","renderCellOverlay","rowsToRender","lastIndex","rowsBuffer","offsetHeight","prevPrepared","nextPrepared","aproxRowsOnPage","i","indexForDownIterate","size","value","get","key","valueFromToCompare","valueToToCompare","Math","max","min","indexForUpIterate","slice","rowHeight","floor","ceil","rowMarginTop","emptyRow","name","dataKey","createElement","cn","_assignProps","Body","isNonInteractive","map","Array","isArray","_ref3","groupUniqKey","isFirstCellAreMergedRows","nextColumnName","firstCell","rowsCount","handleRef","item","componentRef","handleComponentRef","_extends","ref","getSpinnerTopOffset","handleFocusSpinContainer","handleBlurSpinContainer","firstChild","role","children","offset","offsetTop","height","getBoundingClientRect","nextSibling"],"sources":["../../../../src/components/Body/Body.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Component, createComponent, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { hasParent } from '@semcore/core/lib/utils/hasParent';\nimport Spin from '@semcore/spin';\nimport * as React from 'react';\n\nimport type { BodyPropsInner, DataTableBodyProps, DataTableBodyType } from './Body.types';\nimport { MergedColumnsCell, MergedRowsCell } from './MergedCells';\nimport type { RowRoot } from './Row';\nimport { Row } from './Row';\nimport type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types';\nimport style from './style.shadow.css';\nimport {\n GRID_ROW_INDEX,\n IS_EMPTY_DATA_ROW,\n ROW_INDEX, SELECT_ALL,\n UNIQ_ROW_KEY,\n} from '../DataTable/DataTable';\nimport type { DataTableData } from '../DataTable/DataTable.types';\n\nconst ROWS_BUFFER = 20;\nconst APROX_ROWS_ON_PAGE = 20;\nexport const INDEX_OFFSET = 2; // 1 - for header, 1 - because start not from 0, but from 1\n\nclass BodyRoot<Data extends DataTableData, UniqKeyType> extends Component<DataTableBodyProps<Data, UniqKeyType>, [], {}, BodyPropsInner<Data, UniqKeyType>> {\n static displayName = 'Body';\n static style = style;\n\n rowsHeightMap = new Map<number, [number, number, HTMLElement]>();\n rowsComponentsMap = new Map<UniqKeyType, RowRoot<Data, UniqKeyType>>();\n\n indexForDownIterate = 0;\n indexForUpIterate = 0;\n\n startIndex = -1;\n\n bodyRef = React.createRef<HTMLDivElement>();\n spinContainerIsFocused = false;\n\n constructor(props: DataTableBodyProps<Data, UniqKeyType>) {\n super(props);\n this.setRowHeight = this.setRowHeight.bind(this);\n }\n\n componentDidMount() {\n this.calculateAriaRowIndex();\n }\n\n componentDidUpdate(prevProps: DataTableBodyProps<Data, UniqKeyType> & BodyPropsInner<Data, UniqKeyType>) {\n const { loading, tableRef } = this.asProps;\n if (prevProps.loading !== loading) {\n if (loading) {\n const activeElement = document.activeElement; // need to define it here because of FF\n setTimeout(() => {\n if ((tableRef.current && hasParent(activeElement, tableRef.current))) {\n tableRef.current?.focus();\n }\n });\n } else if (!loading && this.spinContainerIsFocused) {\n setTimeout(() => {\n tableRef.current?.focus();\n });\n this.spinContainerIsFocused = false;\n }\n }\n }\n\n calculateAriaRowIndex = () => {\n requestAnimationFrame(() => {\n const collapsedElements = this.bodyRef.current?.querySelectorAll('[role=row][data-ui-name=\"Collapse\"]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n collapsedElements?.forEach((collapsedElement) => {\n const parent = collapsedElement.parentElement;\n if (parent?.getAttribute('role') === 'rowgroup') {\n parent?.appendChild(collapsedElement);\n }\n });\n\n const visibleRows = this.bodyRef.current?.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name=\"DataTable\"] [role=row]:not([aria-hidden=true]))');\n\n visibleRows?.forEach((row, index) => {\n if (row instanceof HTMLElement) {\n row.setAttribute('aria-rowindex', (index + 2 + this.startIndex).toString());\n }\n });\n\n if (!this.asProps.totalRows) {\n this.asProps.tableRef.current?.setAttribute('aria-rowcount', (visibleRows?.length ?? 0).toString());\n }\n });\n };\n\n handleRef = (index: number, row: DTRow<UniqKeyType>) => (node: HTMLElement | null) => {\n if (!this.rowsHeightMap.has(index) && node) {\n this.rowsHeightMap.set(index, [0, 0, node]);\n this.setRowHeight(index, row);\n }\n };\n\n handleComponentRef = (row: DTRow<UniqKeyType>) => (component: RowRoot<Data, UniqKeyType> | null) => {\n requestAnimationFrame(() => {\n if (component) {\n this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component);\n } else {\n this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]);\n }\n });\n };\n\n getRowProps(props: { row: DTRow<UniqKeyType>; mergedRow?: boolean }): RowPropsInner<Data, UniqKeyType> {\n const {\n use,\n gridTemplateAreas,\n gridTemplateColumns,\n expandedRows,\n columns,\n onExpandRow,\n loading,\n hasGroups,\n scrollAreaRef,\n uid,\n onBackFromAccordion,\n rowProps,\n rows,\n flatRows,\n sideIndents,\n selectedRows,\n onSelectRow,\n getFixedStyle,\n accordionDuration,\n accordionAnimationRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n shadowVertical,\n accordionMode,\n virtualScroll,\n limit,\n variant,\n } = this.asProps;\n const row = props.row;\n const index = row[ROW_INDEX];\n const gridRowIndex = row[GRID_ROW_INDEX] + (hasGroups ? INDEX_OFFSET + 1 : INDEX_OFFSET); // 1 - for header, 1 - because start not from 0, but from 1\n\n const sideIndentsValue = variant === 'card' ? 'wide' : sideIndents;\n\n const calculatedRowProps = rowProps?.(row, index) ?? {};\n\n const rowUniqKey = row[UNIQ_ROW_KEY];\n if (selectedRows?.includes(rowUniqKey)) {\n calculatedRowProps.theme = 'info';\n }\n\n return {\n ...calculatedRowProps,\n use,\n uid,\n gridTemplateAreas,\n gridTemplateColumns,\n columns,\n rowIndex: index,\n gridRowIndex,\n rows,\n onBackFromAccordion,\n row,\n onExpandRow,\n selectedRows,\n onSelectRow,\n inert: loading ? '' : undefined,\n scrollAreaRef,\n sideIndents: sideIndentsValue,\n getFixedStyle,\n mergedRow: props.mergedRow,\n accordionDuration,\n accordionAnimationRows,\n flatRows,\n getI18nText,\n renderCell,\n tableRef,\n onCellClick,\n rawData,\n expandedRows,\n rowsHeightMap: this.rowsHeightMap,\n setRowHeight: this.setRowHeight,\n shadowVertical,\n accordionMode,\n componentsMap: this.rowsComponentsMap,\n calculateAriaRowIndex: this.calculateAriaRowIndex,\n virtualScroll,\n variant,\n limit,\n hasGroups,\n };\n }\n\n getSpinnerTopOffset = () => {\n const { headerHeight: propsHeaderHeight, tableContainerRef, stickyHeader } = this.asProps;\n\n let headerHeight = propsHeaderHeight;\n\n if (stickyHeader) {\n return headerHeight;\n }\n\n if (tableContainerRef.current) {\n if (tableContainerRef.current.scrollTop > headerHeight) {\n headerHeight = 0;\n } else {\n headerHeight = headerHeight - tableContainerRef.current.scrollTop;\n }\n }\n\n return headerHeight;\n };\n\n handleFocusSpinContainer = () => {\n this.spinContainerIsFocused = true;\n };\n\n handleBlurSpinContainer = () => {\n this.spinContainerIsFocused = false;\n };\n\n render() {\n const SBody = Root;\n const SRowGroup = Box;\n const SSpinContainer = Box;\n const {\n styles,\n loading,\n spinnerRef,\n virtualScroll,\n scrollDirection,\n tableContainerRef,\n scrollTop,\n renderEmptyData,\n columns,\n uid,\n rows,\n renderCellOverlay,\n selectedRows,\n } = this.asProps;\n\n let rowsToRender = rows;\n\n let startIndex = -1;\n let lastIndex = -1;\n\n if (virtualScroll) {\n const rowsBuffer =\n typeof virtualScroll !== 'boolean' && 'rowsBuffer' in virtualScroll\n ? virtualScroll.rowsBuffer ?? ROWS_BUFFER\n : ROWS_BUFFER;\n const offsetHeight = tableContainerRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'up' ? rowsBuffer : 4;\n const nextPrepared = scrollDirection === 'up' ? 4 : rowsBuffer;\n\n if (typeof virtualScroll === 'boolean' || 'aproxRowsOnPage' in virtualScroll) {\n const aproxRowsOnPage =\n typeof virtualScroll !== 'boolean'\n ? virtualScroll.aproxRowsOnPage ?? APROX_ROWS_ON_PAGE\n : APROX_ROWS_ON_PAGE;\n if (scrollDirection === 'down') {\n for (let i = this.indexForDownIterate; i < this.rowsHeightMap.size - 1; i++) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n if (startIndex === -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && scrollTop + offsetHeight < valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop + offsetHeight < (this.rowsHeightMap.get(lastIndex ?? 0)?.[1] ?? 0)) {\n lastIndex = lastIndex + aproxRowsOnPage;\n }\n } else if (scrollDirection === 'up') {\n for (let i = this.indexForUpIterate; i >= 0; i--) {\n const value = this.rowsHeightMap.get(i);\n if (!value) continue;\n const key = i;\n const valueFromToCompare = value[1];\n const valueToToCompare = value[0];\n\n if (lastIndex === -1 && scrollTop + offsetHeight > valueToToCompare) {\n lastIndex = Math.min(key + nextPrepared, rows.length);\n }\n\n if (lastIndex !== -1 && scrollTop < valueFromToCompare) {\n startIndex = Math.max(key - prevPrepared, 0);\n }\n\n if (startIndex !== -1 && lastIndex !== -1) {\n break;\n }\n }\n\n if (scrollTop < (this.rowsHeightMap.get(startIndex ?? 0)?.[0] ?? 0)) {\n startIndex = Math.max(startIndex - aproxRowsOnPage, 0);\n }\n }\n\n if (startIndex === -1) {\n startIndex = scrollTop === 0 ? 0 : Math.max(rows.length - aproxRowsOnPage, 0);\n }\n\n if (lastIndex === -1) {\n lastIndex = scrollTop === 0 ? aproxRowsOnPage : rows.length;\n }\n\n this.indexForDownIterate = startIndex;\n this.indexForUpIterate = lastIndex;\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n } else if ('rowHeight' in virtualScroll) {\n const rowHeight = virtualScroll.rowHeight;\n\n startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n rowsToRender = rows.slice(startIndex, lastIndex);\n }\n }\n\n this.startIndex = startIndex === -1 ? 0 : startIndex;\n const rowMarginTop = this.rowsHeightMap.get(this.startIndex - 1)?.[1];\n\n let emptyRow: DTRow<string> | null = null;\n\n if (rowsToRender.length === 0) {\n emptyRow = {\n [UNIQ_ROW_KEY]: `${uid}_empty_data`,\n [IS_EMPTY_DATA_ROW]: true,\n [ROW_INDEX]: 0,\n [GRID_ROW_INDEX]: 0,\n [columns[0].name]: new MergedColumnsCell(renderEmptyData(), {\n dataKey: columns[0].name,\n size: columns.length,\n }),\n };\n }\n\n if (canUseDOM()) {\n this.calculateAriaRowIndex();\n }\n\n return sstyled(styles)(\n <SBody render={Box} __excludeProps={['data']} ref={this.bodyRef}>\n {emptyRow && <Body.Row row={emptyRow} isNonInteractive />}\n {typeof virtualScroll === 'boolean' && rowMarginTop && <Box h={rowMarginTop} />}\n {rowsToRender.map((row, index) => {\n if (Array.isArray(row)) {\n const groupUniqKey = row[0][UNIQ_ROW_KEY];\n\n let isFirstCellAreMergedRows = false;\n const theme: 'info' | undefined = undefined;\n\n if (selectedRows) {\n const nextColumnName = columns[1].name;\n const firstCell = row[0][nextColumnName];\n\n if (firstCell instanceof MergedRowsCell) {\n row[0][SELECT_ALL.toString()] = new MergedRowsCell('', firstCell.rowsCount);\n\n isFirstCellAreMergedRows = true;\n }\n }\n\n return sstyled(styles)(\n <SRowGroup\n role='rowgroup'\n key={`gg_${groupUniqKey}`}\n ref={this.handleRef(this.startIndex + index, row[0])}\n >\n {row.map((item, i) => {\n const rowProps: DataTableRowProps<any, any> = {\n row: item,\n mergedRow: i > 0 ? true : false,\n componentRef: this.handleComponentRef(item),\n };\n\n if ((isFirstCellAreMergedRows && selectedRows?.includes(groupUniqKey))) {\n rowProps.theme = 'info';\n }\n\n return (\n <Body.Row\n key={item[UNIQ_ROW_KEY]?.toString() ?? `gg_${groupUniqKey}_row_${i}`}\n {...rowProps}\n />\n );\n })}\n </SRowGroup>,\n );\n }\n\n return (\n <Body.Row\n key={row[UNIQ_ROW_KEY]?.toString()}\n row={row}\n ref={virtualScroll ? this.handleRef(this.startIndex + index, row) : undefined}\n componentRef={this.handleComponentRef(row)}\n />\n );\n })}\n {renderCellOverlay?.()}\n {loading && (\n <SSpinContainer\n innerOutline\n // @ts-ignore\n headerHeight={`${this.getSpinnerTopOffset()}px`}\n tabIndex={-1}\n ref={spinnerRef}\n role='row'\n onFocus={this.handleFocusSpinContainer}\n onBlur={this.handleBlurSpinContainer}\n >\n <Spin size='xxl' role='gridcell' />\n </SSpinContainer>\n )}\n </SBody>,\n );\n }\n\n private setRowHeight(index: number, row: DTRow<UniqKeyType>) {\n const { expandedRows } = this.asProps;\n const node = this.rowsHeightMap.get(index)?.[2];\n const firstChild =\n node?.role === 'rowgroup' ? node?.children.item(0)?.children.item(0) : node?.children.item(0);\n if (node && firstChild instanceof HTMLElement) {\n const offset = firstChild.offsetTop - this.asProps.headerHeight;\n let height = firstChild.getBoundingClientRect().height;\n\n if (expandedRows.has(row[UNIQ_ROW_KEY]) && node.nextSibling instanceof HTMLElement) {\n height = height + node.nextSibling.getBoundingClientRect().height;\n }\n\n this.rowsHeightMap.set(index, [offset, offset + height, node]);\n }\n }\n}\n\nexport const Body = createComponent(BodyRoot, {\n Row,\n}) as unknown as DataTableBodyType & {\n Row: DataTableRowType;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -119,25 +119,28 @@ export class Column extends Component {
119
119
  });
120
120
  _defineProperty(this, "handleBlur", e => {
121
121
  const relatedTarget = e.relatedTarget;
122
- if (!isFocusInside(e.currentTarget, relatedTarget) && lastInteraction.isKeyboard()) {
122
+ if (!isFocusInside(e.currentTarget, relatedTarget)) {
123
123
  this.setState({
124
124
  sortVisible: false
125
125
  });
126
126
  }
127
127
  });
128
- _defineProperty(this, "handleSortClick", e => {
129
- e.stopPropagation();
128
+ _defineProperty(this, "handleSort", e => {
130
129
  const {
131
130
  sort,
132
131
  onSortChange,
133
132
  name,
134
133
  sortable
135
134
  } = this.asProps;
136
- if (lastInteraction.isMouse() || lastInteraction.isKeyboard() && e.target === e.currentTarget) {
137
- if (sortable && onSortChange) {
138
- const sortDirection = sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
139
- onSortChange([name, sortDirection], e);
140
- }
135
+ if (sortable && onSortChange) {
136
+ const sortDirection = sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
137
+ onSortChange([name, sortDirection], e);
138
+ }
139
+ });
140
+ _defineProperty(this, "handleSortClick", e => {
141
+ if (lastInteraction.isKeyboard()) {
142
+ e.stopPropagation();
143
+ this.handleSort(e);
141
144
  }
142
145
  });
143
146
  _defineProperty(this, "handleFocusableCellKeyDown", e => {
@@ -167,7 +170,7 @@ export class Column extends Component {
167
170
  columnIndex
168
171
  } = this.asProps;
169
172
  if (sortable) {
170
- this.handleSortClick(e);
173
+ this.handleSort(e);
171
174
  }
172
175
  const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap(node => getFocusableIn(node));
173
176
  if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {
@@ -298,9 +301,9 @@ export class Column extends Component {
298
301
  }), /*#__PURE__*/React.createElement(Children, _ref2.cn("Children", {})), sortable && /*#__PURE__*/React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {
299
302
  "ref": this.sortWrapperRef
300
303
  }), /*#__PURE__*/React.createElement(SSortButton, _ref2.cn("SSortButton", {
301
- "onClick": this.handleSortClick,
302
304
  "aria-label": ariaSortValue,
303
- "color": '--intergalactic-icon-primary-neutral'
305
+ "color": '--intergalactic-icon-primary-neutral',
306
+ "onClick": this.handleSortClick
304
307
  }), /*#__PURE__*/React.createElement(SSortButton.Addon, {
305
308
  tag: SSortIcon
306
309
  }))));
@@ -1 +1 @@
1
- {"version":3,"file":"Column.js","names":["Flex","ButtonLink","Component","lastInteraction","Root","sstyled","canUseDOM","cssToIntDefault","getFocusableIn","isFocusInside","isInteractiveElement","SortAsc","SortDesc","React","style","_sstyled","insert","handleFocusCell","handleKeydownFocusCell","SORTING_ICON","desc","asc","ARIA_SORT","SORT_ICON_WIDTH","DEFAULT_DIRECTION","reversedSortDirection","Column","constructor","args","_defineProperty","createRef","sortVisible","node","columnRef","current","clonedColumn","document","createElement","computedStyle","window","getComputedStyle","childNodes","forEach","sortWrapperRef","append","cloneNode","setProperty","styles","key","getPropertyValue","getPropertyPriority","body","appendChild","computedWidth","Math","ceil","getBoundingClientRect","width","removeChild","defaultNodeWidth","clientWidth","freeSpace","setState","e","relatedTarget","currentTarget","isKeyboard","stopPropagation","sort","onSortChange","name","sortable","asProps","isMouse","target","sortDirection","defaultDirection","lockedCell","cellElement","focusableChildren","Array","from","children","flatMap","length","onClick","columnIndex","handleSortClick","rowIndex","colIndex","componentDidMount","parent","sticky","changeSortSize","scrollDirection","columnElement","groupElement","parentElement","item","groupRectHeight","height","topOffset","HTMLElement","top","changeTemplateColumnBySort","componentDidUpdate","prevProps","tableRef","gridTemplateColumns","newWidth","calculateActiveColumnMinWidth","setTimeout","map","gtcWidth","index","join","currentGridTemplateColumns","split","render","_ref","_ref2","SColumn","SSortWrapper","SSortButton","uid","sortableColumnDescribeId","Children","sortBy","undefined","isSorted","SSortIcon","visibleSort","Boolean","state","ariaDescribedBy","push","ariaSortValue","cn","_assignProps","handleMouseEnter","handleMouseLeave","handleFocusableCellFocus","handleBlur","handleFocusableCellKeyDown","handleClick","Addon","tag"],"sources":["../../../../src/components/Head/Column.tsx"],"sourcesContent":["import { Flex } from '@semcore/base-components';\nimport { ButtonLink } from '@semcore/button';\nimport { Component, lastInteraction, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport cssToIntDefault from '@semcore/core/lib/utils/cssToIntDefault';\nimport { getFocusableIn } from '@semcore/core/lib/utils/focus-lock/getFocusableIn';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { isInteractiveElement } from '@semcore/core/lib/utils/isInteractiveElement';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport * as React from 'react';\n\nimport type { ColumnPropsInner, DataTableColumnProps } from './Column.types';\nimport style from './style.shadow.css';\nimport type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell';\nimport { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell';\nimport type { ROW_GROUP } from '../DataTable/DataTable';\nimport type { DataTableData, SortDirection } from '../DataTable/DataTable.types';\n\nconst SORTING_ICON: { [key in SortDirection]: React.FC<React.SVGProps<SVGSVGElement>> } = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\n\nconst ARIA_SORT = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\nconst SORT_ICON_WIDTH = 20;\n\nconst DEFAULT_DIRECTION = 'desc';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\n\ntype State = {\n sortVisible: boolean;\n};\n\nexport class Column<\n Data extends DataTableData,\n UniqKey extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? keyof Data[number][typeof ROW_GROUP][number] : keyof Data[number]),\n UniqKeyType extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? Data[number][typeof ROW_GROUP][number][UniqKey] : Data[number][UniqKey]),\n> extends Component<\n DataTableColumnProps,\n [],\n {},\n ColumnPropsInner<Data, UniqKey, UniqKeyType>,\n State\n > implements IFocusableCell {\n lockedCell: LockedCell = [null, false];\n\n static displayName = 'Column';\n static style = style;\n\n columnRef = React.createRef<HTMLDivElement>();\n sortWrapperRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n sortVisible: false,\n };\n\n componentDidMount() {\n const { parent, sticky, changeSortSize, name, sort, scrollDirection } = this.asProps;\n\n if (parent && sticky && scrollDirection !== 'horizontal') {\n const columnElement = this.columnRef.current;\n const groupElement = columnElement?.parentElement?.children.item(0);\n\n const groupRectHeight = groupElement?.getBoundingClientRect().height ?? 0;\n const topOffset = (groupElement instanceof HTMLElement) ? cssToIntDefault(groupElement.style.top) : 0;\n\n columnElement?.style.setProperty('top', `${groupRectHeight + topOffset}px`);\n }\n\n if (canUseDOM() && changeSortSize && sort?.[0] === name) {\n this.changeTemplateColumnBySort();\n }\n }\n\n componentDidUpdate(prevProps: DataTableColumnProps & ColumnPropsInner<Data, UniqKey, UniqKeyType>): void {\n if (\n this.asProps.changeSortSize &&\n canUseDOM() &&\n prevProps.sort?.[0] !== this.asProps.sort?.[0]\n ) {\n this.changeTemplateColumnBySort();\n }\n }\n\n changeTemplateColumnBySort() {\n const { tableRef, gridTemplateColumns, columnIndex, sort, name } = this.asProps;\n\n if (sort?.[0] === name) {\n const newWidth = this.calculateActiveColumnMinWidth();\n\n setTimeout(() => {\n if (tableRef.current && newWidth !== null) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n gridTemplateColumns\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return `${newWidth}px`;\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n });\n } else if (sort?.[0] !== name) {\n setTimeout(() => {\n if (tableRef.current) {\n const currentGridTemplateColumns = tableRef.current.style.getPropertyValue('grid-template-columns');\n\n if (currentGridTemplateColumns) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n currentGridTemplateColumns.split(' ')\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return gridTemplateColumns[index];\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n }\n });\n }\n }\n\n calculateActiveColumnMinWidth = (): number | null => {\n const node = this.columnRef.current;\n\n if (node) {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (this.sortWrapperRef.current !== node) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.columnRef.current?.clientWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n return defaultNodeWidth + SORT_ICON_WIDTH;\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n return computedWidth + SORT_ICON_WIDTH;\n }\n }\n }\n\n return null;\n };\n\n get defaultDirection() {\n const { sortable } = this.asProps;\n\n if (typeof sortable === 'string') {\n return sortable;\n }\n\n return DEFAULT_DIRECTION;\n }\n\n handleMouseEnter = () => {\n this.setState({ sortVisible: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ sortVisible: false });\n };\n\n handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const relatedTarget = e.relatedTarget as HTMLElement | undefined;\n if (!isFocusInside(e.currentTarget, relatedTarget) && lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: false });\n }\n };\n\n handleSortClick = (e: React.SyntheticEvent<HTMLElement>) => {\n e.stopPropagation();\n\n const { sort, onSortChange, name, sortable } = this.asProps;\n\n if (\n lastInteraction.isMouse() ||\n (lastInteraction.isKeyboard() && e.target === e.currentTarget)\n ) {\n if (sortable && onSortChange) {\n const sortDirection =\n sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;\n\n onSortChange([name, sortDirection], e);\n }\n }\n };\n\n handleFocusableCellKeyDown = (e: React.KeyboardEvent) => {\n handleKeydownFocusCell(this.lockedCell, e);\n };\n\n handleFocusableCellFocus = (e: React.FocusEvent<HTMLElement, HTMLElement>) => {\n const cellElement = e.currentTarget;\n const target = e.target;\n\n if (lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: true }, () => {\n handleFocusCell(this.lockedCell, target, cellElement);\n });\n } else {\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n }\n };\n\n handleClick = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sortable, onClick, columnIndex } = this.asProps;\n if (sortable) {\n this.handleSortClick(e);\n }\n\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n\n onClick?.(e, { rowIndex: -1, colIndex: columnIndex });\n };\n\n render() {\n const SColumn = Root;\n const SSortWrapper = 'div';\n const SSortButton = ButtonLink;\n const { styles, sortable, sort, uid, name, parent, sortableColumnDescribeId, Children } =\n this.asProps;\n\n const [sortBy, sortDirection] = sort ?? [undefined, undefined];\n const isSorted = sortBy === name && !!sortDirection;\n\n const SSortIcon = isSorted ? SORTING_ICON[sortDirection] : SORTING_ICON[this.defaultDirection];\n\n const visibleSort = Boolean(sortable) && (this.state.sortVisible || isSorted);\n\n const ariaDescribedBy = [];\n if (sortable) {\n ariaDescribedBy.push(sortableColumnDescribeId);\n }\n if (parent) {\n ariaDescribedBy.push(`igc-table-${uid}-${parent.name}-group`);\n }\n\n const ariaSortValue = isSorted ? ARIA_SORT[sortDirection] : undefined;\n\n return sstyled(styles)(\n <SColumn\n render={Flex}\n ref={this.columnRef}\n role='columnheader'\n tabIndex={-1}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onFocus={this.handleFocusableCellFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleFocusableCellKeyDown}\n visibleSort={visibleSort}\n isSorted={isSorted}\n innerOutline\n aria-describedby={ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined}\n aria-sort={ariaSortValue}\n use:onClick={this.handleClick}\n >\n <Children />\n\n {sortable && (\n <SSortWrapper ref={this.sortWrapperRef}>\n <SSortButton\n onClick={this.handleSortClick}\n aria-label={ariaSortValue}\n color='--intergalactic-icon-primary-neutral'\n >\n <SSortButton.Addon tag={SSortIcon} />\n </SSortButton>\n </SSortWrapper>\n )}\n </SColumn>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Column.js","names":["Flex","ButtonLink","Component","lastInteraction","Root","sstyled","canUseDOM","cssToIntDefault","getFocusableIn","isFocusInside","isInteractiveElement","SortAsc","SortDesc","React","style","_sstyled","insert","handleFocusCell","handleKeydownFocusCell","SORTING_ICON","desc","asc","ARIA_SORT","SORT_ICON_WIDTH","DEFAULT_DIRECTION","reversedSortDirection","Column","constructor","args","_defineProperty","createRef","sortVisible","node","columnRef","current","clonedColumn","document","createElement","computedStyle","window","getComputedStyle","childNodes","forEach","sortWrapperRef","append","cloneNode","setProperty","styles","key","getPropertyValue","getPropertyPriority","body","appendChild","computedWidth","Math","ceil","getBoundingClientRect","width","removeChild","defaultNodeWidth","clientWidth","freeSpace","setState","e","relatedTarget","currentTarget","sort","onSortChange","name","sortable","asProps","sortDirection","defaultDirection","isKeyboard","stopPropagation","handleSort","lockedCell","cellElement","target","focusableChildren","Array","from","children","flatMap","length","onClick","columnIndex","rowIndex","colIndex","componentDidMount","parent","sticky","changeSortSize","scrollDirection","columnElement","groupElement","parentElement","item","groupRectHeight","height","topOffset","HTMLElement","top","changeTemplateColumnBySort","componentDidUpdate","prevProps","tableRef","gridTemplateColumns","newWidth","calculateActiveColumnMinWidth","setTimeout","map","gtcWidth","index","join","currentGridTemplateColumns","split","render","_ref","_ref2","SColumn","SSortWrapper","SSortButton","uid","sortableColumnDescribeId","Children","sortBy","undefined","isSorted","SSortIcon","visibleSort","Boolean","state","ariaDescribedBy","push","ariaSortValue","cn","_assignProps","handleMouseEnter","handleMouseLeave","handleFocusableCellFocus","handleBlur","handleFocusableCellKeyDown","handleClick","handleSortClick","Addon","tag"],"sources":["../../../../src/components/Head/Column.tsx"],"sourcesContent":["import { Flex } from '@semcore/base-components';\nimport { ButtonLink } from '@semcore/button';\nimport { Component, lastInteraction, Root, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport cssToIntDefault from '@semcore/core/lib/utils/cssToIntDefault';\nimport { getFocusableIn } from '@semcore/core/lib/utils/focus-lock/getFocusableIn';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { isInteractiveElement } from '@semcore/core/lib/utils/isInteractiveElement';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport * as React from 'react';\n\nimport type { ColumnPropsInner, DataTableColumnProps } from './Column.types';\nimport style from './style.shadow.css';\nimport type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell';\nimport { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell';\nimport type { ROW_GROUP } from '../DataTable/DataTable';\nimport type { DataTableData, SortDirection } from '../DataTable/DataTable.types';\n\nconst SORTING_ICON: { [key in SortDirection]: React.FC<React.SVGProps<SVGSVGElement>> } = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\n\nconst ARIA_SORT = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\nconst SORT_ICON_WIDTH = 20;\n\nconst DEFAULT_DIRECTION = 'desc';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\n\ntype State = {\n sortVisible: boolean;\n};\n\nexport class Column<\n Data extends DataTableData,\n UniqKey extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? keyof Data[number][typeof ROW_GROUP][number] : keyof Data[number]),\n UniqKeyType extends (Data[number] extends { [ROW_GROUP]: DataTableData } ? Data[number][typeof ROW_GROUP][number][UniqKey] : Data[number][UniqKey]),\n> extends Component<\n DataTableColumnProps,\n [],\n {},\n ColumnPropsInner<Data, UniqKey, UniqKeyType>,\n State\n > implements IFocusableCell {\n lockedCell: LockedCell = [null, false];\n\n static displayName = 'Column';\n static style = style;\n\n columnRef = React.createRef<HTMLDivElement>();\n sortWrapperRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n sortVisible: false,\n };\n\n componentDidMount() {\n const { parent, sticky, changeSortSize, name, sort, scrollDirection } = this.asProps;\n\n if (parent && sticky && scrollDirection !== 'horizontal') {\n const columnElement = this.columnRef.current;\n const groupElement = columnElement?.parentElement?.children.item(0);\n\n const groupRectHeight = groupElement?.getBoundingClientRect().height ?? 0;\n const topOffset = (groupElement instanceof HTMLElement) ? cssToIntDefault(groupElement.style.top) : 0;\n\n columnElement?.style.setProperty('top', `${groupRectHeight + topOffset}px`);\n }\n\n if (canUseDOM() && changeSortSize && sort?.[0] === name) {\n this.changeTemplateColumnBySort();\n }\n }\n\n componentDidUpdate(prevProps: DataTableColumnProps & ColumnPropsInner<Data, UniqKey, UniqKeyType>): void {\n if (\n this.asProps.changeSortSize &&\n canUseDOM() &&\n prevProps.sort?.[0] !== this.asProps.sort?.[0]\n ) {\n this.changeTemplateColumnBySort();\n }\n }\n\n changeTemplateColumnBySort() {\n const { tableRef, gridTemplateColumns, columnIndex, sort, name } = this.asProps;\n\n if (sort?.[0] === name) {\n const newWidth = this.calculateActiveColumnMinWidth();\n\n setTimeout(() => {\n if (tableRef.current && newWidth !== null) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n gridTemplateColumns\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return `${newWidth}px`;\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n });\n } else if (sort?.[0] !== name) {\n setTimeout(() => {\n if (tableRef.current) {\n const currentGridTemplateColumns = tableRef.current.style.getPropertyValue('grid-template-columns');\n\n if (currentGridTemplateColumns) {\n tableRef.current.style.setProperty(\n 'grid-template-columns',\n currentGridTemplateColumns.split(' ')\n .map((gtcWidth, index) => {\n if (index === columnIndex) {\n return gridTemplateColumns[index];\n }\n return gtcWidth;\n })\n .join(' '),\n );\n }\n }\n });\n }\n }\n\n calculateActiveColumnMinWidth = (): number | null => {\n const node = this.columnRef.current;\n\n if (node) {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (this.sortWrapperRef.current !== node) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.columnRef.current?.clientWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n return defaultNodeWidth + SORT_ICON_WIDTH;\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n return computedWidth + SORT_ICON_WIDTH;\n }\n }\n }\n\n return null;\n };\n\n get defaultDirection() {\n const { sortable } = this.asProps;\n\n if (typeof sortable === 'string') {\n return sortable;\n }\n\n return DEFAULT_DIRECTION;\n }\n\n handleMouseEnter = () => {\n this.setState({ sortVisible: true });\n };\n\n handleMouseLeave = () => {\n this.setState({ sortVisible: false });\n };\n\n handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const relatedTarget = e.relatedTarget as HTMLElement | undefined;\n if (!isFocusInside(e.currentTarget, relatedTarget)) {\n this.setState({ sortVisible: false });\n }\n };\n\n handleSort = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sort, onSortChange, name, sortable } = this.asProps;\n\n if (sortable && onSortChange) {\n const sortDirection =\n sort?.[0] === name ? reversedSortDirection[sort[1]] : this.defaultDirection;\n\n onSortChange([name, sortDirection], e);\n }\n };\n\n handleSortClick = (e: React.SyntheticEvent<HTMLElement>) => {\n if (lastInteraction.isKeyboard()) {\n e.stopPropagation();\n this.handleSort(e);\n }\n };\n\n handleFocusableCellKeyDown = (e: React.KeyboardEvent) => {\n handleKeydownFocusCell(this.lockedCell, e);\n };\n\n handleFocusableCellFocus = (e: React.FocusEvent<HTMLElement, HTMLElement>) => {\n const cellElement = e.currentTarget;\n const target = e.target;\n\n if (lastInteraction.isKeyboard()) {\n this.setState({ sortVisible: true }, () => {\n handleFocusCell(this.lockedCell, target, cellElement);\n });\n } else {\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n }\n };\n\n handleClick = (e: React.SyntheticEvent<HTMLElement>) => {\n const { sortable, onClick, columnIndex } = this.asProps;\n if (sortable) {\n this.handleSort(e);\n }\n\n const focusableChildren = Array.from(this.columnRef.current?.children ?? []).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n\n if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {\n this.lockedCell[0] = this.columnRef.current;\n this.lockedCell[1] = true;\n }\n\n onClick?.(e, { rowIndex: -1, colIndex: columnIndex });\n };\n\n render() {\n const SColumn = Root;\n const SSortWrapper = 'div';\n const SSortButton = ButtonLink;\n const { styles, sortable, sort, uid, name, parent, sortableColumnDescribeId, Children } =\n this.asProps;\n\n const [sortBy, sortDirection] = sort ?? [undefined, undefined];\n const isSorted = sortBy === name && !!sortDirection;\n\n const SSortIcon = isSorted ? SORTING_ICON[sortDirection] : SORTING_ICON[this.defaultDirection];\n\n const visibleSort = Boolean(sortable) && (this.state.sortVisible || isSorted);\n\n const ariaDescribedBy = [];\n if (sortable) {\n ariaDescribedBy.push(sortableColumnDescribeId);\n }\n if (parent) {\n ariaDescribedBy.push(`igc-table-${uid}-${parent.name}-group`);\n }\n\n const ariaSortValue = isSorted ? ARIA_SORT[sortDirection] : undefined;\n\n return sstyled(styles)(\n <SColumn\n render={Flex}\n ref={this.columnRef}\n role='columnheader'\n tabIndex={-1}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onFocus={this.handleFocusableCellFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleFocusableCellKeyDown}\n visibleSort={visibleSort}\n isSorted={isSorted}\n innerOutline\n aria-describedby={ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined}\n aria-sort={ariaSortValue}\n use:onClick={this.handleClick}\n >\n <Children />\n\n {sortable && (\n <SSortWrapper ref={this.sortWrapperRef}>\n <SSortButton\n aria-label={ariaSortValue}\n color='--intergalactic-icon-primary-neutral'\n onClick={this.handleSortClick}\n >\n <SSortButton.Addon tag={SSortIcon} />\n </SSortButton>\n </SSortWrapper>\n )}\n </SColumn>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -86,15 +86,22 @@ class BodyRoot extends Component {
86
86
  _defineProperty(this, "spinContainerIsFocused", false);
87
87
  _defineProperty(this, "calculateAriaRowIndex", () => {
88
88
  requestAnimationFrame(() => {
89
- var _a, _b;
90
- const visibleRows = (_a = this.bodyRef.current) == null ? void 0 : _a.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
89
+ var _a, _b, _c;
90
+ const collapsedElements = (_a = this.bodyRef.current) == null ? void 0 : _a.querySelectorAll('[role=row][data-ui-name="Collapse"]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
91
+ collapsedElements == null ? void 0 : collapsedElements.forEach((collapsedElement) => {
92
+ const parent = collapsedElement.parentElement;
93
+ if ((parent == null ? void 0 : parent.getAttribute("role")) === "rowgroup") {
94
+ parent == null ? void 0 : parent.appendChild(collapsedElement);
95
+ }
96
+ });
97
+ const visibleRows = (_b = this.bodyRef.current) == null ? void 0 : _b.querySelectorAll('[role=row]:not([aria-hidden=true]):not(:scope [data-ui-name="DataTable"] [role=row]:not([aria-hidden=true]))');
91
98
  visibleRows == null ? void 0 : visibleRows.forEach((row, index) => {
92
99
  if (row instanceof HTMLElement) {
93
100
  row.setAttribute("aria-rowindex", (index + 2 + this.startIndex).toString());
94
101
  }
95
102
  });
96
103
  if (!this.asProps.totalRows) {
97
- (_b = this.asProps.tableRef.current) == null ? void 0 : _b.setAttribute("aria-rowcount", ((visibleRows == null ? void 0 : visibleRows.length) ?? 0).toString());
104
+ (_c = this.asProps.tableRef.current) == null ? void 0 : _c.setAttribute("aria-rowcount", ((visibleRows == null ? void 0 : visibleRows.length) ?? 0).toString());
98
105
  }
99
106
  });
100
107
  });
@@ -125,25 +125,28 @@ class Column extends Component {
125
125
  });
126
126
  _defineProperty(this, "handleBlur", (e) => {
127
127
  const relatedTarget = e.relatedTarget;
128
- if (!isFocusInside(e.currentTarget, relatedTarget) && lastInteraction.isKeyboard()) {
128
+ if (!isFocusInside(e.currentTarget, relatedTarget)) {
129
129
  this.setState({
130
130
  sortVisible: false
131
131
  });
132
132
  }
133
133
  });
134
- _defineProperty(this, "handleSortClick", (e) => {
135
- e.stopPropagation();
134
+ _defineProperty(this, "handleSort", (e) => {
136
135
  const {
137
136
  sort,
138
137
  onSortChange,
139
138
  name,
140
139
  sortable
141
140
  } = this.asProps;
142
- if (lastInteraction.isMouse() || lastInteraction.isKeyboard() && e.target === e.currentTarget) {
143
- if (sortable && onSortChange) {
144
- const sortDirection = (sort == null ? void 0 : sort[0]) === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
145
- onSortChange([name, sortDirection], e);
146
- }
141
+ if (sortable && onSortChange) {
142
+ const sortDirection = (sort == null ? void 0 : sort[0]) === name ? reversedSortDirection[sort[1]] : this.defaultDirection;
143
+ onSortChange([name, sortDirection], e);
144
+ }
145
+ });
146
+ _defineProperty(this, "handleSortClick", (e) => {
147
+ if (lastInteraction.isKeyboard()) {
148
+ e.stopPropagation();
149
+ this.handleSort(e);
147
150
  }
148
151
  });
149
152
  _defineProperty(this, "handleFocusableCellKeyDown", (e) => {
@@ -175,7 +178,7 @@ class Column extends Component {
175
178
  columnIndex
176
179
  } = this.asProps;
177
180
  if (sortable) {
178
- this.handleSortClick(e);
181
+ this.handleSort(e);
179
182
  }
180
183
  const focusableChildren = Array.from(((_a = this.columnRef.current) == null ? void 0 : _a.children) ?? []).flatMap((node) => getFocusableIn(node));
181
184
  if (isInteractiveElement(e.target) && this.columnRef.current && focusableChildren.length > 1) {
@@ -307,9 +310,9 @@ class Column extends Component {
307
310
  }), /* @__PURE__ */ React.createElement(Children, _ref2.cn("Children", {})), sortable && /* @__PURE__ */ React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {
308
311
  "ref": this.sortWrapperRef
309
312
  }), /* @__PURE__ */ React.createElement(SSortButton, _ref2.cn("SSortButton", {
310
- "onClick": this.handleSortClick,
311
313
  "aria-label": ariaSortValue,
312
- "color": "--intergalactic-icon-primary-neutral"
314
+ "color": "--intergalactic-icon-primary-neutral",
315
+ "onClick": this.handleSortClick
313
316
  }), /* @__PURE__ */ React.createElement(SSortButton.Addon, {
314
317
  tag: SSortIcon
315
318
  }))));
@@ -29,6 +29,7 @@ export declare class Column<Data extends DataTableData, UniqKey extends (Data[nu
29
29
  handleMouseEnter: () => void;
30
30
  handleMouseLeave: () => void;
31
31
  handleBlur: (e: React.FocusEvent<HTMLElement>) => void;
32
+ handleSort: (e: React.SyntheticEvent<HTMLElement>) => void;
32
33
  handleSortClick: (e: React.SyntheticEvent<HTMLElement>) => void;
33
34
  handleFocusableCellKeyDown: (e: React.KeyboardEvent) => void;
34
35
  handleFocusableCellFocus: (e: React.FocusEvent<HTMLElement, HTMLElement>) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/data-table",
3
3
  "description": "Semrush DataTable Component",
4
- "version": "17.0.0-prerelease.29",
4
+ "version": "17.0.0-prerelease.30",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,28 +14,28 @@
14
14
  "types": "./lib/types/index.d.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/button": "^17.0.0-prerelease.29",
18
- "@semcore/checkbox": "^17.0.0-prerelease.29",
19
- "@semcore/spin": "^17.0.0-prerelease.29",
20
- "@semcore/tooltip": "^17.0.0-prerelease.29",
21
- "@semcore/widget-empty": "^17.0.0-prerelease.29"
17
+ "@semcore/button": "^17.0.0-prerelease.30",
18
+ "@semcore/checkbox": "^17.0.0-prerelease.30",
19
+ "@semcore/spin": "^17.0.0-prerelease.30",
20
+ "@semcore/tooltip": "^17.0.0-prerelease.30",
21
+ "@semcore/widget-empty": "^17.0.0-prerelease.30"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "18.16.15",
25
25
  "csstype": "3.1.3",
26
- "@semcore/base-trigger": "17.0.0-prerelease.29",
27
- "@semcore/dropdown-menu": "17.0.0-prerelease.29",
28
- "@semcore/accordion": "17.0.0-prerelease.29",
29
26
  "@semcore/testing-utils": "1.0.0",
30
- "@semcore/typography": "17.0.0-prerelease.29",
31
- "@semcore/divider": "17.0.0-prerelease.29",
32
- "@semcore/progress-bar": "17.0.0-prerelease.29",
33
- "@semcore/skeleton": "17.0.0-prerelease.29",
34
- "@semcore/spin": "17.0.0-prerelease.29",
35
- "@semcore/spin-container": "17.0.0-prerelease.29",
36
- "@semcore/tooltip": "17.0.0-prerelease.29",
37
- "@semcore/base-components": "17.0.0-prerelease.29",
38
- "@semcore/icon": "16.7.2-prerelease.29"
27
+ "@semcore/base-trigger": "17.0.0-prerelease.30",
28
+ "@semcore/dropdown-menu": "17.0.0-prerelease.30",
29
+ "@semcore/typography": "17.0.0-prerelease.30",
30
+ "@semcore/accordion": "17.0.0-prerelease.30",
31
+ "@semcore/divider": "17.0.0-prerelease.30",
32
+ "@semcore/progress-bar": "17.0.0-prerelease.30",
33
+ "@semcore/skeleton": "17.0.0-prerelease.30",
34
+ "@semcore/spin": "17.0.0-prerelease.30",
35
+ "@semcore/spin-container": "17.0.0-prerelease.30",
36
+ "@semcore/tooltip": "17.0.0-prerelease.30",
37
+ "@semcore/base-components": "17.0.0-prerelease.30",
38
+ "@semcore/icon": "16.7.2-prerelease.30"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@semcore/base-components": "^17.0.0 || ^17.0.0-0",