From 421d513afd658bfdfaf835e27a90e3f0d39f64e0 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Tue, 21 Oct 2025 10:41:35 +0200 Subject: [PATCH 01/21] [data-table] some accordion performance --- semcore/core/CHANGELOG.md | 6 + semcore/core/src/styled/sstyled.tsx | 25 +- semcore/data-table/CHANGELOG.md | 6 + .../data-table/src/components/Body/Body.tsx | 30 +- .../src/components/Body/Body.types.ts | 7 +- .../data-table/src/components/Body/Cell.tsx | 78 ++---- .../src/components/Body/Cell.types.ts | 24 +- .../data-table/src/components/Body/Row.tsx | 259 ++++++++++++------ .../src/components/Body/Row.types.ts | 16 +- .../src/components/DataTable/DataTable.tsx | 7 +- .../components/DataTable/DataTable.types.ts | 8 +- .../src/components/Head/Column.types.ts | 4 +- .../src/components/Head/Head.types.ts | 4 +- .../advanced/data-table.advanced.stories.tsx | 8 + .../examples/accordion_with_many_rows.tsx | 210 ++++++++++++++ 15 files changed, 486 insertions(+), 206 deletions(-) create mode 100644 stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx diff --git a/semcore/core/CHANGELOG.md b/semcore/core/CHANGELOG.md index 0054bb0bb6..7644b35922 100644 --- a/semcore/core/CHANGELOG.md +++ b/semcore/core/CHANGELOG.md @@ -2,6 +2,12 @@ CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/). +## [16.5.1] - 2025-10-30 + +### Fixed + +- Unnecessary calculations in `sstyled` wrapper. + ## [16.5.0] - 2025-10-03 ### Changed diff --git a/semcore/core/src/styled/sstyled.tsx b/semcore/core/src/styled/sstyled.tsx index f2edbb4066..5fc815d248 100644 --- a/semcore/core/src/styled/sstyled.tsx +++ b/semcore/core/src/styled/sstyled.tsx @@ -99,8 +99,14 @@ function getClassAndVars(styles: any, name: any, props: any) { ); } +const reshadowMap = new WeakMap(); + function reshadowToShadow(obj: any) { - return Object.entries(obj).reduce((style: any, [name, value]) => { + if (reshadowMap.has(obj)) { + return reshadowMap.get(obj); + } + + const shadowStyle = Object.entries(obj).reduce((style: any, [name, value]) => { let n = name; if (name.startsWith('__')) { n = name.replace(/^__/, ''); @@ -110,6 +116,10 @@ function reshadowToShadow(obj: any) { style[n] = value; return style; }, {}); + + reshadowMap.set(obj, shadowStyle); + + return shadowStyle; } function sstyled(styles = {}): ((ReactNode: any) => React.ReactNode) & { @@ -119,21 +129,16 @@ function sstyled(styles = {}): ((ReactNode: any) => React.ReactNode) & { return { cn(name, props) { const [classes, style] = getClassAndVars(reshadowToShadow(styles), name, props); - const extraProps = {}; if (Object.keys(classes).length) { - // @ts-ignore - extraProps.className = cn(props.className, classes); + props.className = cn(props.className, classes); } if (Object.keys(style).length) { - // @ts-ignore - extraProps.style = Object.assign(style, props.style); + props.style = Object.assign(style, props.style); } - return { - ...props, - ...extraProps, - }; + + return props; }, }; } diff --git a/semcore/data-table/CHANGELOG.md b/semcore/data-table/CHANGELOG.md index 4f6c323e95..d2089b93c4 100644 --- a/semcore/data-table/CHANGELOG.md +++ b/semcore/data-table/CHANGELOG.md @@ -2,6 +2,12 @@ CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/). +## [16.4.2] - 2025-10-30 + +### Fixed + +- Low performance when opening an accordion with a large number of rows. + ## [16.4.1] - 2025-10-17 ### Fixed diff --git a/semcore/data-table/src/components/Body/Body.tsx b/semcore/data-table/src/components/Body/Body.tsx index 5b6059f851..5f61b4c602 100644 --- a/semcore/data-table/src/components/Body/Body.tsx +++ b/semcore/data-table/src/components/Body/Body.tsx @@ -69,6 +69,16 @@ class BodyRoot extends Component) => (component: RowRoot | null) => { + requestAnimationFrame(() => { + if (component) { + this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component); + } else { + this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]); + } + }); + }; + getRowProps(props: { row: DTRow; mergedRow?: boolean }): RowPropsInner { const { use, @@ -90,6 +100,7 @@ class BodyRoot extends Component extends Component extends Component 0 ? true : false} - componentRef={(component: RowRoot | null) => { - if (component) { - this.rowsComponentsMap.set(item[UNIQ_ROW_KEY], component); - } else { - this.rowsComponentsMap.delete(item[UNIQ_ROW_KEY]); - } - }} + componentRef={this.handleComponentRef(item)} /> ); })} @@ -320,13 +326,7 @@ class BodyRoot extends Component | null) => { - if (component) { - this.rowsComponentsMap.set(row[UNIQ_ROW_KEY], component); - } else { - this.rowsComponentsMap.delete(row[UNIQ_ROW_KEY]); - } - }} + componentRef={this.handleComponentRef(row)} /> ); })} diff --git a/semcore/data-table/src/components/Body/Body.types.ts b/semcore/data-table/src/components/Body/Body.types.ts index 86be68fb59..1af4fcd52e 100644 --- a/semcore/data-table/src/components/Body/Body.types.ts +++ b/semcore/data-table/src/components/Body/Body.types.ts @@ -1,8 +1,8 @@ import type { Intergalactic } from '@semcore/core'; import type * as React from 'react'; -import type { CellPropsInner, Theme } from './Cell.types'; -import type { DTRow } from './Row.types'; +import type { DataTableCellProps, Theme } from './Cell.types'; +import type { DTRow, RowPropsInner } from './Row.types'; import type { ACCORDION } from '../DataTable/DataTable'; import type { DataRowItem, DTUse, VirtualScroll, DataTableProps, DataTableData } from '../DataTable/DataTable.types'; import type { DTColumn } from '../Head/Column.types'; @@ -86,7 +86,7 @@ export type BodyPropsInner = DataTableB cell: Pick, ) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined]; accordionDuration?: DataTableProps['accordionDuration']; - onCellClick: CellPropsInner['onClick']; + onCellClick: DataTableCellProps['onClick']; rawData: DataRowItem[]; accordionMode?: DataTableProps['accordionMode']; shadowVertical?: '' | 'end' | 'start' | 'median'; @@ -94,6 +94,7 @@ export type BodyPropsInner = DataTableB limit?: DataTableProps['limit']; variant?: DataTableProps['variant']; totalRows?: number; + accordionAnimationRows: RowPropsInner['accordionAnimationRows']; }; export type DataTableBodyType = (< diff --git a/semcore/data-table/src/components/Body/Cell.tsx b/semcore/data-table/src/components/Body/Cell.tsx index e738c4a2e6..236702619f 100644 --- a/semcore/data-table/src/components/Body/Cell.tsx +++ b/semcore/data-table/src/components/Body/Cell.tsx @@ -1,27 +1,23 @@ -import { Box, Flex } from '@semcore/base-components'; -import { Component, Root, sstyled, createComponent } from '@semcore/core'; +import { Root, sstyled } from '@semcore/core'; import { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside'; import * as React from 'react'; -import type { CellPropsInner, DataTableCellProps } from './Cell.types'; +import type { DataTableCellProps } from './Cell.types'; import { MergedColumnsCell, MergedRowsCell } from './MergedCells'; -import style from './style.shadow.css'; +import styles from './style.shadow.css'; import type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell'; import { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell'; import type { DataTableData } from '../DataTable/DataTable.types'; -const DEFAULT_ROW_DURATION = 50; - -class CellRoot extends Component, {}, {}, [], CellPropsInner> implements IFocusableCell { +export class Cell extends React.PureComponent> implements IFocusableCell { lockedCell: LockedCell = [null, false]; static displayName = 'Cell'; - static style = style; cellRef = React.createRef(); componentWillUnmount() { - const { virtualScroll, tableRef } = this.asProps; + const { virtualScroll, tableRef } = this.props; if (virtualScroll && this.cellRef.current && isFocusInside(this.cellRef.current)) { tableRef.current?.setAttribute('tabIndex', '0'); } @@ -35,64 +31,30 @@ class CellRoot extends Component duration / rowsLength; - - const duration = Array.isArray(accordionDuration) - ? [durationPerRow(accordionDuration[0]), durationPerRow(accordionDuration[1])] - : accordionDuration !== undefined - ? durationPerRow(accordionDuration) - : rowsLength > 4 - ? durationPerRow(200) - : DEFAULT_ROW_DURATION; + handleClickCell = (e: React.SyntheticEvent) => { + const { rowIndex, columnIndex, onClick, row } = this.props; - let delay; - const delayIndex = animationExpand ? accordionRowIndex : rows.length - 1 - accordionRowIndex; - - if (Array.isArray(duration)) { - delay = [duration[0] * delayIndex, duration[1] * delayIndex]; - } else if (duration !== undefined) { - delay = duration * delayIndex; - } - - return { duration, delay }; - } - - handleClickCell = (e: React.SyntheticEvent) => { - const { rowIndex, columnIndex, onClick, row } = this.asProps; - - onClick(e, { rowIndex, colIndex: columnIndex, row }); + onClick?.(e, { rowIndex, colIndex: columnIndex, row }); }; render() { - const SCellWrapper = Box; + const SCellWrapper = 'div'; const SCell = Root; const { - Children, - styles, + children, row, column, columnIndex, gridRowIndex, isAccordionRow, animationExpand, - style, + style = {}, shadowVertical, calculatedHeight, - } = this.asProps; + use, + duration, + delay, + } = this.props; const cell = row[column.name]; const cellName = cell instanceof MergedColumnsCell ? cell.dataKey : column.name; @@ -113,7 +75,7 @@ class CellRoot extends Component extends Component extends Component - + {children} , ); } } - -export const Cell = createComponent(CellRoot); diff --git a/semcore/data-table/src/components/Body/Cell.types.ts b/semcore/data-table/src/components/Body/Cell.types.ts index f30083dbaf..df5c56f3b6 100644 --- a/semcore/data-table/src/components/Body/Cell.types.ts +++ b/semcore/data-table/src/components/Body/Cell.types.ts @@ -1,5 +1,6 @@ -import type { Intergalactic } from '@semcore/core'; +import type { Intergalactic } from '@semcore/ui/core'; import type * as React from 'react'; +import type { CSSProperties, HTMLAttributes } from 'react'; import type { BodyPropsInner } from './Body.types'; import type { DTRow, DTRows } from './Row.types'; @@ -8,7 +9,7 @@ import type { DTColumn } from '../Head/Column.types'; export type Theme = 'muted' | 'info' | 'success' | 'warning' | 'danger'; -export type DataTableCellProps = { +export type DataTableCellProps = Intergalactic.InternalTypings.EfficientOmit, 'onClick'> & { id: string; accordionId: string; row: DTRow; @@ -25,24 +26,21 @@ export type DataTableCellProps = { animationExpand?: boolean; accordionRowIndex?: number; rows: DTRows; -}; - -export type CellPropsInner = { use: DTUse; + style?: CSSProperties; + + duration?: number; + delay?: number; + virtualScroll: boolean; tableRef: React.RefObject; accordionDuration?: number | [number, number]; - onClick: (e: React.SyntheticEvent, opt: { rowIndex: number; colIndex: number; row?: DTRow }) => void; + onClick: (e: React.SyntheticEvent, opt: { rowIndex: number; colIndex: number; row?: DTRow }) => void; flatRows: DTRow[]; shadowVertical?: BodyPropsInner; - lastLeftFixedIndex: number; - firstRightFixedIndex: number; withoutBorder?: boolean; calculatedHeight: number; +} & { + 'data-aria-level'?: number; }; - -export type DataTableCellType = (( - props: Intergalactic.InternalTypings.ComponentProps> -) => Intergalactic.InternalTypings.ComponentRenderingResults) & -Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableCellProps>; diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index a5c538ac6d..eda2872e28 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -1,4 +1,4 @@ -import { Box, Collapse, Flex } from '@semcore/base-components'; +import { Box, Collapse } from '@semcore/base-components'; import { ButtonLink } from '@semcore/button'; import Checkbox from '@semcore/checkbox'; import { Component, Root, sstyled, createComponent } from '@semcore/core'; @@ -8,21 +8,25 @@ import ChevronRightM from '@semcore/icon/ChevronRight/m'; import * as React from 'react'; import { Cell } from './Cell'; -import type { DataTableCellProps, DataTableCellType } from './Cell.types'; +import type { DataTableCellProps } from './Cell.types'; import { LimitOverlay } from './LimitOverlay'; import { MergedColumnsCell, MergedRowsCell } from './MergedCells'; -import type { DataTableRowProps, DataTableRowType, DTRow, DTRows, RowPropsInner } from './Row.types'; +import type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types'; import style from './style.shadow.css'; import { ACCORDION, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, SELECT_ALL, UNIQ_ROW_KEY } from '../DataTable/DataTable'; import type { DataTableData, DTValue } from '../DataTable/DataTable.types'; -type State = { +type State = { expandedForAnimation: boolean; calculatedHeight: number; withAnimation: boolean; + accordionRows?: DTRow[]; + accordionComponent?: React.ReactNode; }; -export class RowRoot extends Component, {}, State, [], RowPropsInner> { +const DEFAULT_ROW_DURATION = 50; + +export class RowRoot extends Component, {}, State, [], RowPropsInner> { static displayName = 'Row'; static style = style; @@ -35,10 +39,12 @@ export class RowRoot extends Component< rowElementRef = React.createRef(); - state: State = { + state: State = { expandedForAnimation: false, calculatedHeight: 0, withAnimation: true, + accordionRows: undefined, + accordionComponent: undefined, }; constructor(props: DataTableRowProps) { @@ -50,7 +56,37 @@ export class RowRoot extends Component< componentDidMount() { this.asProps.componentRef?.(this); - const { animationExpand } = this.asProps; + const { animationExpand, row, accordionRowIndex } = this.asProps; + + let accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : undefined; + let accordionComponent: React.ReactNode = React.isValidElement(row[ACCORDION]) ? row[ACCORDION] : undefined; + + if (!accordionRows && !accordionComponent) { + const cells = Object.entries(row); + const foundCell = cells.find(([key, value]) => { + return this.cellHasAccordion(value) || (value instanceof MergedRowsCell && value.accordion); + }); + + if (foundCell) { + this.cellName = foundCell[0]; + const value = foundCell[1]; + + if (value instanceof MergedRowsCell && value.accordion) { + if (Array.isArray(value.accordion)) { + accordionRows = value.accordion; + } else { + accordionComponent = value.accordion; + } + } else if (this.cellHasAccordion(value)) { + accordionComponent = value[ACCORDION]; + } + } + } + + this.setState({ + accordionRows: accordionRows ? [] : undefined, + accordionComponent, + }); if (animationExpand && this.rowElementRef.current) { const height = this.calculateRowHeight(this.rowElementRef.current); @@ -103,7 +139,16 @@ export class RowRoot extends Component< }; handleExpandRow = (row: DTRow, index: number) => { - const { accordionDuration, accordionMode, expandedRows, onExpandRow, setRowHeight, rowsHeightMap, calculateAriaRowIndex } = this.asProps; + const { + accordionDuration, + accordionMode, + expandedRows, + onExpandRow, + setRowHeight, + rowsHeightMap, + calculateAriaRowIndex, + accordionAnimationRows, + } = this.asProps; const { expandedForAnimation } = this.state; const openDuration = Array.isArray(accordionDuration) ? accordionDuration[0] @@ -154,15 +199,41 @@ export class RowRoot extends Component< } onExpandRow(row); - this.forceUpdate(this.asProps.calculateAriaRowIndex); + const accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : []; + + let i = 0; + + const changeAccordionRows = () => { + const chunk = i === 0 ? accordionAnimationRows : 100; + + this.setState((prevState) => { + return { + accordionRows: prevState.accordionRows?.concat(accordionRows.slice(i, i + chunk)), + }; + }, () => { + i = i + chunk; + if (i < accordionRows.length) { + setTimeout(() => { + changeAccordionRows(); + }, openDuration); + } else { + this.asProps.calculateAriaRowIndex(); + } + }); + }; + + changeAccordionRows(); } }; closeAccordion = (row: DTRow, closeDuration: number) => { - const { onExpandRow, calculateAriaRowIndex } = this.asProps; + const { onExpandRow, calculateAriaRowIndex, accordionAnimationRows } = this.asProps; - this.setState({ - expandedForAnimation: true, + this.setState((prevState) => { + return { + expandedForAnimation: true, + accordionRows: prevState.accordionRows?.slice(0, accordionAnimationRows), + }; }, calculateAriaRowIndex); this.closeAccordionTimeout = window.setTimeout(() => { onExpandRow(row); @@ -189,16 +260,12 @@ export class RowRoot extends Component< } }; - getCellProps(props: DataTableCellProps) { + getCellProps(props: DataTableCellProps) { const { - use, renderCell, expandedRows, styles, getI18nText, - virtualScroll, - tableRef, - accordionDuration, onCellClick, rawData, shadowVertical, @@ -240,16 +307,10 @@ export class RowRoot extends Component< } const extraProps: Record = { - use, - virtualScroll: Boolean(virtualScroll), - tableRef, + ...props, children: props?.children ?? defaultRender(), - accordionDuration, - onClick: onCellClick, - flatRows: this.asProps.flatRows, shadowVertical, withoutBorder, - calculatedHeight: this.state.calculatedHeight, }; if (renderCell) { @@ -353,12 +414,43 @@ export class RowRoot extends Component< : undefined; } + calculateAnimationSettings() { + const { + accordionRowIndex = 0, + isAccordionRow, + animationExpand, + accordionDuration, + rows, + accordionAnimationRows, + } = this.asProps; + + if (!isAccordionRow || accordionRowIndex >= accordionAnimationRows) { + return {}; + } + + const rowsLength = rows.length; + const durationPerRow = (duration: number) => duration / rowsLength; + + const duration = Array.isArray(accordionDuration) + ? (animationExpand ? durationPerRow(accordionDuration[0]) : durationPerRow(accordionDuration[1])) + : accordionDuration !== undefined + ? durationPerRow(accordionDuration) + : rowsLength > 4 + ? durationPerRow(200) + : DEFAULT_ROW_DURATION; + + const delayIndex = animationExpand ? accordionRowIndex : rows.length - 1 - accordionRowIndex; + const delay = duration * delayIndex; + + return { duration, delay }; + } + render() { const SRow = Root; const SCollapseRow = Collapse; const SAccordionRows = Box; - const SCell = Row.Cell; - const SCheckboxCell = Row.Cell; + const SCell = Cell; + const SCheckboxCell = Cell; const { columns, row, @@ -387,39 +479,15 @@ export class RowRoot extends Component< hasGroups, tableRef, scrollAreaRef, + virtualScroll, + onCellClick, + accordionAnimationRows, } = this.asProps; - const { expandedForAnimation, withAnimation } = this.state; - + const { expandedForAnimation, withAnimation, accordionRows, accordionComponent, calculatedHeight } = this.state; const expanded = expandedRows?.has(row[UNIQ_ROW_KEY]) && !expandedForAnimation; - - let accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : undefined; - let accordionComponent: React.ReactNode = React.isValidElement(row[ACCORDION]) ? row[ACCORDION] : undefined; - const accordionType = (accordionRows || accordionComponent) && !mergedRow ? 'row' : undefined; - if (!accordionRows && !accordionComponent) { - const cells = Object.entries(row); - const foundCell = cells.find(([key, value]) => { - return this.cellHasAccordion(value) || (value instanceof MergedRowsCell && value.accordion); - }); - - if (foundCell) { - this.cellName = foundCell[0]; - const value = foundCell[1]; - - if (value instanceof MergedRowsCell && value.accordion) { - if (Array.isArray(value.accordion)) { - accordionRows = value.accordion; - } else { - accordionComponent = value.accordion; - } - } else if (this.cellHasAccordion(value)) { - accordionComponent = value[ACCORDION]; - } - } - } - let accordionDataGridArea = ''; if (accordionRows || accordionComponent) { @@ -437,7 +505,9 @@ export class RowRoot extends Component< const rowsLimit = limit?.fromRow; const columnsLimit = limit?.fromColumn; - return sstyled(styles)( + const { duration, delay } = this.calculateAnimationSettings(); + + return sstyled(style)( <> extends Component< } } + const commonProps: DataTableCellProps = { + 'id': `${uid}_${rowUniqKey}_${index}`, + accordionId, + row, + rowIndex, + gridRowIndex, + 'columnIndex': index, + column, + expanded, + withAccordion, + isAccordionRow, + animationExpand, + accordionRowIndex, + rows, + 'aria-hidden': isCellHidden, + 'data-aria-level': index === 0 ? ariaLevel : undefined, + use, + duration, + delay, + 'virtualScroll': Boolean(virtualScroll), + tableRef, + 'onClick': onCellClick, + flatRows, + calculatedHeight, + }; + if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { const checked = selectedRows.includes(rowUniqKey); + + // @ts-ignore + commonProps.column = { name: SELECT_ALL.toString() }; + commonProps.onClick = this.handleClickCheckbox(!checked); + commonProps.columnIndex = 0; + return ( extends Component< } } + commonProps.style = style; + return ( - ); })} @@ -586,7 +667,6 @@ export class RowRoot extends Component< return ( extends Component< use={use} shadowVertical={shadowVertical} accordionDuration={accordionDuration} + accordionAnimationRows={accordionAnimationRows} variant={variant} flatRows={flatRows} sideIndents={sideIndents} @@ -664,8 +745,4 @@ export class RowRoot extends Component< } } -export const Row = createComponent(RowRoot, { - Cell, -}) as DataTableRowType & { - Cell: DataTableCellType; -}; +export const Row = createComponent(RowRoot) as DataTableRowType; diff --git a/semcore/data-table/src/components/Body/Row.types.ts b/semcore/data-table/src/components/Body/Row.types.ts index d209f774c6..bd6377f649 100644 --- a/semcore/data-table/src/components/Body/Row.types.ts +++ b/semcore/data-table/src/components/Body/Row.types.ts @@ -1,9 +1,8 @@ import type { Intergalactic } from '@semcore/core'; import type * as React from 'react'; -import type { Body } from './Body'; import type { CellRenderProps } from './Body.types'; -import type { CellPropsInner, DataTableCellProps } from './Cell.types'; +import type { DataTableCellProps } from './Cell.types'; import type { MergedColumnsCell, MergedRowsCell } from './MergedCells'; import type { RowRoot } from './Row'; import type { @@ -39,9 +38,9 @@ export type DataTableRowProps = { row: DTRow; mergedRow?: boolean; - isAccordionRow?: DataTableCellProps['isAccordionRow']; - animationExpand?: DataTableCellProps['animationExpand']; - accordionRowIndex?: DataTableCellProps['accordionRowIndex']; + isAccordionRow?: DataTableCellProps['isAccordionRow']; + animationExpand?: DataTableCellProps['animationExpand']; + accordionRowIndex?: DataTableCellProps['accordionRowIndex']; isNonInteractive?: boolean; componentRef?: (component: RowRoot | null) => void; @@ -78,7 +77,8 @@ export type RowPropsInner = JSX.Intrins inert?: ''; - accordionDuration?: number | [number, number]; + accordionDuration: number | [number, number]; + accordionAnimationRows: number; onBackFromAccordion: (colName: string) => void; scrollAreaRef: React.RefObject; @@ -92,7 +92,7 @@ export type RowPropsInner = JSX.Intrins getI18nText: (key: string) => string; virtualScroll?: VirtualScroll; tableRef: React.RefObject; - onCellClick: CellPropsInner['onClick']; + onCellClick: DataTableCellProps['onClick']; rawData: DataRowItem[]; shadowVertical?: '' | 'end' | 'start' | 'median'; expandedRows: Set; @@ -108,6 +108,6 @@ export type RowPropsInner = JSX.Intrins }; export type DataTableRowType = (( - props: Intergalactic.InternalTypings.ComponentProps> + props: Intergalactic.InternalTypings.ComponentProps & Partial, 'row'>>> ) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps>; diff --git a/semcore/data-table/src/components/DataTable/DataTable.tsx b/semcore/data-table/src/components/DataTable/DataTable.tsx index 046890c2d1..f892272c1c 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.tsx +++ b/semcore/data-table/src/components/DataTable/DataTable.tsx @@ -64,7 +64,7 @@ class DataTableRoot< {}, {}, typeof DataTableRoot.enhance, - { use: DTRow; expandedRows: Set; renderEmptyData: () => React.ReactNode } + typeof DataTableRoot.defaultProps > { static displayName = 'DataTable'; static style = style; @@ -82,6 +82,7 @@ class DataTableRoot< h: 'fit-content', renderEmptyData: () => , variant: 'default', + accordionAnimationRows: 20, }; private columns: DTColumn[] = []; @@ -319,12 +320,14 @@ class DataTableRoot< limit, variant, totalRows, + accordionAnimationRows, } = this.asProps; const { gridTemplateColumns, gridTemplateAreas } = this.gridSettings; const { shadowVertical } = this.state; return { accordionDuration, + accordionAnimationRows, accordionMode, columns: this.columns, rows: this.getRows(), @@ -403,7 +406,7 @@ class DataTableRoot< } }); - handleCellClick = (e: React.SyntheticEvent, opt: { rowIndex: number; colIndex: number; row?: DTRow }) => { + handleCellClick = (e: React.SyntheticEvent, opt: { rowIndex: number; colIndex: number; row?: DTRow }) => { if (lastInteraction.isMouse()) { this.initFocusableCell([this.hasFocusableInHeader() ? opt.rowIndex + 1 : opt.rowIndex, opt.colIndex]); } diff --git a/semcore/data-table/src/components/DataTable/DataTable.types.ts b/semcore/data-table/src/components/DataTable/DataTable.types.ts index d29d354bc8..f9a77cb468 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.types.ts +++ b/semcore/data-table/src/components/DataTable/DataTable.types.ts @@ -5,7 +5,7 @@ import type * as React from 'react'; import type { ACCORDION, ROW_GROUP, UNIQ_ROW_KEY } from './DataTable'; import type { DataTableBodyProps } from '../Body/Body.types'; -import type { DTRow } from '../Body/Row.types'; +import type { DTRow, RowPropsInner } from '../Body/Row.types'; import type { DataTableColumnProps } from '../Head/Column.types'; import type { DataTableHeadProps } from '../Head/Head.types'; @@ -147,6 +147,12 @@ export type DataTableProps< */ accordionDuration?: number | [number, number]; + /** + * List of animated rows in accordion. + * @default 20 + */ + accordionAnimationRows?: RowPropsInner['accordionAnimationRows']; + /** * Whether multiple accordion items can be open at a time, or only one. * @default 'independent' diff --git a/semcore/data-table/src/components/Head/Column.types.ts b/semcore/data-table/src/components/Head/Column.types.ts index fe420909df..d42b5007cd 100644 --- a/semcore/data-table/src/components/Head/Column.types.ts +++ b/semcore/data-table/src/components/Head/Column.types.ts @@ -1,7 +1,7 @@ import type { Property } from 'csstype'; import type { BodyPropsInner } from '../Body/Body.types'; -import type { CellPropsInner } from '../Body/Cell.types'; +import type { DataTableCellProps } from '../Body/Cell.types'; import type { ColumnGroupConfig, ColumnItemConfig, @@ -96,7 +96,7 @@ export type ColumnPropsInner< gridTemplateColumns: string[]; gridTemplateAreas: string[]; sticky: boolean; - onClick: CellPropsInner['onClick']; + onClick: DataTableCellProps['onClick']; shadowVertical?: BodyPropsInner['shadowVertical']; scrollDirection?: 'horizontal' | 'vertical' | 'both'; }; diff --git a/semcore/data-table/src/components/Head/Head.types.ts b/semcore/data-table/src/components/Head/Head.types.ts index 3d505628e4..8aee0eb099 100644 --- a/semcore/data-table/src/components/Head/Head.types.ts +++ b/semcore/data-table/src/components/Head/Head.types.ts @@ -1,6 +1,6 @@ import type { ColumnPropsInner, DTColumn } from './Column.types'; import type { BodyPropsInner } from '../Body/Body.types'; -import type { CellPropsInner } from '../Body/Cell.types'; +import type { DataTableCellProps } from '../Body/Cell.types'; import type { DTRow } from '../Body/Row.types'; import type { DataTableData, DataTableProps, DTUse } from '../DataTable/DataTable.types'; @@ -60,7 +60,7 @@ export type HeadPropsInner< getFixedStyle: ( cell: Pick, ) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined]; - onCellClick: CellPropsInner['onClick']; + onCellClick: DataTableCellProps['onClick']; shadowVertical?: BodyPropsInner['shadowVertical']; scrollDirection?: ColumnPropsInner['scrollDirection']; isDataEmpty: boolean; diff --git a/stories/components/data-table/advanced/data-table.advanced.stories.tsx b/stories/components/data-table/advanced/data-table.advanced.stories.tsx index 6ce367df36..50dbbab66f 100644 --- a/stories/components/data-table/advanced/data-table.advanced.stories.tsx +++ b/stories/components/data-table/advanced/data-table.advanced.stories.tsx @@ -4,6 +4,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite'; import AccordionInMergedRowsExample, { accordionMergedProps } from './examples/accordion_in_merged_rows'; import type { AccordionWithCheckboxProps } from './examples/accordion_with_checkbox'; import AccordionWithCheckboxExample, { accordionWithCheckboxProps } from './examples/accordion_with_checkbox'; +import AccordionWithManyRowsExample, { accordionTableInTableDefaultProps } from './examples/accordion_with_many_rows'; import AccordionWithPaginationExample, { tableInTableDefaultProps } from './examples/accordion_with_pagination'; import type { TableInTableProps } from './examples/accordion_with_pagination'; import AccordionWithStickyRowsExample, { accordionStickyProps } from './examples/accordion_with_sticky_rows'; @@ -43,6 +44,13 @@ export const AccordionWithCheckbox: StoryObj = { }, }; +export const AccordionWithManyRows: StoryObj = { + render: AccordionWithManyRowsExample, + args: { + ...accordionTableInTableDefaultProps, + }, +}; + export const AccordionWithPagination: StoryObj = { render: AccordionWithPaginationExample, args: { diff --git a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx new file mode 100644 index 0000000000..cea46dca28 --- /dev/null +++ b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx @@ -0,0 +1,210 @@ +import type { DataTableProps } from '@semcore/ui/data-table'; +import { DataTable, ACCORDION } from '@semcore/ui/data-table'; +import React from 'react'; + +export type TableInTableProps = { + accordionMode: DataTableProps['accordionMode']; + onAccordionToggle?: DataTableProps< + typeof data, + any, + any + >['onAccordionToggle']; +}; + +const Demo = (props: TableInTableProps) => { + return ( + + ); +}; + +export const accordionTableInTableDefaultProps: TableInTableProps = { + accordionMode: 'independent', +}; + +Demo.defaultProps = accordionTableInTableDefaultProps; + +const acc = Array(300) + .fill(null) + .map((item, id) => ({ + keyword: 'www.ebay.com' + id, + kd: '11.2', + cpc: '$3.4', + vol: '65,457,920', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + })); + +const data = [ + { + keyword: 'ebay buy', + kd: '77.8', + cpc: '$1.25', + vol: '32,500,000', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + [ACCORDION]: acc, + }, + { + keyword: 'www.ebay.com', + kd: '11.2', + cpc: '$3.4', + vol: '65,457,920', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + [ACCORDION]: [ + { + keyword: 'www.ebay.com', + kd: '11.2', + cpc: '$3.4', + vol: '65,457,920', + }, + { + keyword: 'www.ebay.com', + kd: '10', + cpc: '$0.65', + vol: '47,354,640', + }, + { + keyword: 'ebay buy', + kd: '-', + cpc: '$0', + vol: 'n/a', + }, + ], + }, + { + keyword: 'www.ebay.com', + kd: '10', + cpc: '$0.65', + vol: '47,354,640', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + }, + { + keyword: 'ebay buy22221112221212', + kd: '-', + cpc: '$0', + vol: 'n/a', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + }, + { + keyword: 'ebay buy555444333xwww', + kd: '75.89', + cpc: '$0', + vol: '21,644,290', + + kd1: '1.2', + cpc1: '$4.4', + vol1: '457,920', + + kd2: '1', + cpc2: '$4.4', + vol2: '457', + + kd3: '6', + cpc3: '$4.4', + vol3: '20', + + kd4: '8', + cpc4: '$1', + vol4: '0', + }, +]; + +export default Demo; From 225e28455ad62b3a3c26501ee5e6bbce6eb8d102 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Tue, 21 Oct 2025 12:35:42 +0200 Subject: [PATCH 02/21] [data-table] linter fixes --- semcore/data-table/src/components/Body/Cell.types.ts | 2 +- semcore/data-table/src/components/Body/Row.tsx | 5 +++-- semcore/data-table/src/components/Body/Row.types.ts | 2 +- semcore/data-table/src/components/DataTable/DataTable.tsx | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/semcore/data-table/src/components/Body/Cell.types.ts b/semcore/data-table/src/components/Body/Cell.types.ts index df5c56f3b6..f3a342e28a 100644 --- a/semcore/data-table/src/components/Body/Cell.types.ts +++ b/semcore/data-table/src/components/Body/Cell.types.ts @@ -1,4 +1,4 @@ -import type { Intergalactic } from '@semcore/ui/core'; +import type { Intergalactic } from '@semcore/core'; import type * as React from 'react'; import type { CSSProperties, HTMLAttributes } from 'react'; diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index eda2872e28..d7a368285a 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -11,7 +11,7 @@ import { Cell } from './Cell'; import type { DataTableCellProps } from './Cell.types'; import { LimitOverlay } from './LimitOverlay'; import { MergedColumnsCell, MergedRowsCell } from './MergedCells'; -import type { DataTableRowProps, DataTableRowType, DTRow, RowPropsInner } from './Row.types'; +import type { DataTableRowProps, DataTableRowType, DTRow, DTRows, RowPropsInner } from './Row.types'; import style from './style.shadow.css'; import { ACCORDION, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, SELECT_ALL, UNIQ_ROW_KEY } from '../DataTable/DataTable'; import type { DataTableData, DTValue } from '../DataTable/DataTable.types'; @@ -20,7 +20,7 @@ type State = { expandedForAnimation: boolean; calculatedHeight: number; withAnimation: boolean; - accordionRows?: DTRow[]; + accordionRows?: DTRows; accordionComponent?: React.ReactNode; }; @@ -667,6 +667,7 @@ export class RowRoot extends Component< return ( = JSX.Intrins }; export type DataTableRowType = (( - props: Intergalactic.InternalTypings.ComponentProps & Partial, 'row'>>> + props: Intergalactic.InternalTypings.ComponentProps & Partial>> ) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps>; diff --git a/semcore/data-table/src/components/DataTable/DataTable.tsx b/semcore/data-table/src/components/DataTable/DataTable.tsx index 5cc62e2378..0707562437 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.tsx +++ b/semcore/data-table/src/components/DataTable/DataTable.tsx @@ -186,7 +186,7 @@ class DataTableRoot< const { totalRows, expandedRows } = this.asProps; const flatRows = this.getFlatRows(); - const expandedRowsCount = Array.from(expandedRows ?? []).reduce((acc, rowKey) => { + const expandedRowsCount = Array.from(expandedRows ?? []).reduce((acc, rowKey) => { const dtRow = flatRows.find((el) => el[UNIQ_ROW_KEY] === rowKey); if (dtRow) { const expandedRows = dtRow[ACCORDION]; From 4e650218a06cd6157cd7e0415a525ca3d95cea79 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Tue, 21 Oct 2025 16:17:08 +0200 Subject: [PATCH 03/21] [data-table] fixed accordions --- .../data-table/src/components/Body/Row.tsx | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index d7a368285a..e90e68fe64 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -199,30 +199,30 @@ export class RowRoot extends Component< } onExpandRow(row); - const accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : []; - - let i = 0; - - const changeAccordionRows = () => { - const chunk = i === 0 ? accordionAnimationRows : 100; - - this.setState((prevState) => { - return { - accordionRows: prevState.accordionRows?.concat(accordionRows.slice(i, i + chunk)), - }; - }, () => { - i = i + chunk; - if (i < accordionRows.length) { - setTimeout(() => { - changeAccordionRows(); - }, openDuration); - } else { - this.asProps.calculateAriaRowIndex(); - } - }); - }; + if (this.state.accordionRows !== undefined) { + const accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : []; + + let i = 0; + + const changeAccordionRows = () => { + const chunk = i === 0 ? accordionAnimationRows : 100; - changeAccordionRows(); + this.setState({ accordionRows: accordionRows.slice(0, i + chunk) }, () => { + i = i + chunk; + if (i < accordionRows.length) { + setTimeout(() => { + changeAccordionRows(); + }, openDuration); + } else { + this.asProps.calculateAriaRowIndex(); + } + }); + }; + + changeAccordionRows(); + } else { + this.forceUpdate(this.asProps.calculateAriaRowIndex); + } } }; From fa2aa4d9c9b884226394ed787454d70dacd47dc8 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Wed, 22 Oct 2025 15:14:47 +0200 Subject: [PATCH 04/21] [data-table] accordions perf v2 --- .../AccordionRows/AccordionRows.tsx | 217 ++++++++++++++++++ .../components/AccordionRows/style.shadow.css | 9 + .../data-table/src/components/Body/Body.tsx | 2 +- .../src/components/Body/Body.types.ts | 2 +- .../data-table/src/components/Body/Cell.tsx | 28 +-- .../src/components/Body/Cell.types.ts | 8 +- .../data-table/src/components/Body/Row.tsx | 174 +++----------- .../src/components/Body/Row.types.ts | 7 +- .../src/components/Body/style.shadow.css | 7 - .../src/components/DataTable/DataTable.tsx | 3 +- .../examples/accordion_with_many_rows.tsx | 3 - 11 files changed, 282 insertions(+), 178 deletions(-) create mode 100644 semcore/data-table/src/components/AccordionRows/AccordionRows.tsx create mode 100644 semcore/data-table/src/components/AccordionRows/style.shadow.css diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx new file mode 100644 index 0000000000..c7f5b94834 --- /dev/null +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -0,0 +1,217 @@ +import { Box } from '@semcore/base-components'; +import { sstyled } from '@semcore/core'; +import trottle from '@semcore/core/lib/utils/rafTrottle'; +import type { DataTableData, DataTableProps } from '@semcore/ui/data-table'; +import React from 'react'; + +import styles from './style.shadow.css'; +import type { CellRenderProps } from '../Body/Body.types'; +import { Row } from '../Body/Row'; +import type { DTRow, DTRows } from '../Body/Row.types'; +import type { DataRowItem, DTUse } from '../DataTable/DataTable.types'; +import type { DTColumn } from '../Head/Column.types'; + +type AccordionRowsProps = { + accordionId: string; + expanded: boolean; + expandedForAnimation: boolean; + + tableRef: React.RefObject; + + use: DTUse; + columns: DTColumn[]; + row: DTRow | DTRow[]; + rows: DTRows; + flatRows: DTRow[]; + rowIndex: number; // from 0 + gridRowIndex: number; // from 1 + 1 (or 2 if it has group) header + accordionDuration: number | [number, number]; + accordionAnimationRows: number; + sideIndents: 'wide' | undefined; + getFixedStyle: ( + cell: Pick, + ) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined]; + + renderCell: ((props: CellRenderProps) => React.ReactNode | Record) | undefined; + rawData: DataRowItem[]; + shadowVertical: '' | 'end' | 'start' | 'median' | undefined; + variant: DataTableProps['variant']; + limit: DataTableProps['limit']; +} & { + 'aria-level': number; +}; + +type State = { + maxHeight: number; +}; + +export class AccordionRows extends React.PureComponent, State> { + accordionRowsRef = React.createRef(); + + tableObserver: ResizeObserver; + tableWidth: number = 0; + + state: State = { + maxHeight: 0, + }; + + // static getDerivedStateFromProps(props: AccordionRowsProps, state: State) { + // + // + // } + + constructor(props: AccordionRowsProps) { + super(props); + + this.tableObserver = new ResizeObserver(this.handleTableResize); + } + + componentDidMount(): void { + setTimeout(() => { + this.calculateGridSettings(); + }, 500); + + if (this.props.tableRef.current) { + this.tableWidth = this.props.tableRef.current.getBoundingClientRect().width; + this.tableObserver.observe(this.props.tableRef.current); + } + } + + componentWillUnmount(): void { + this.tableObserver.disconnect(); + } + + componentDidUpdate(prevProps: Readonly>): void { + const { expanded, rows, expandedForAnimation, accordionDuration } = this.props; + + if (prevProps.expanded !== expanded && expanded) { + this.setState({ + maxHeight: 2000, + }); + } + if (prevProps.rows !== rows && this.accordionRowsRef.current) { + this.setState({ + maxHeight: this.accordionRowsRef.current.scrollHeight, + }); + } + if (prevProps.expandedForAnimation !== expandedForAnimation && expandedForAnimation && !expanded) { + this.setState({ maxHeight: 0 }); + } + } + + render(): React.ReactNode { + const SAccordionRows = Box; + + const { + accordionId, + rows, + expanded, + expandedForAnimation, + getFixedStyle, + columns, + rowIndex, + 'aria-level': ariaLevel, + gridRowIndex, + use, + shadowVertical, + accordionDuration, + accordionAnimationRows, + variant, + flatRows, + sideIndents, + renderCell, + rawData, + limit, + } = this.props; + + return sstyled(styles)( + + {(expanded || expandedForAnimation) && rows.map((subrow, i) => { + return ( + + ); + })} + , + ); + } + + private handleTableResize = trottle(() => { + this.calculateGridSettings(); + }); + + private calculateGridSettings() { + const { tableRef } = this.props; + const tableElement = tableRef.current; + const currentWidth = tableElement?.getBoundingClientRect().width; + + if (currentWidth === this.tableWidth) { + return; + } + + this.tableWidth = currentWidth ?? 0; + const tableStyles = tableElement?.style; + const header = tableElement?.querySelector('[data-ui-name="DataTable.Head"]'); + const accordionRows = this.accordionRowsRef.current; + + if (tableStyles && header && accordionRows) { + let gridTemplateAreas = ''; + + for (let i = 0; i < tableStyles.length; i++) { + const key = tableStyles[i]; + if (key.startsWith('--gridTemplateAreas')) { + gridTemplateAreas = tableStyles.getPropertyValue(key); + accordionRows.style.setProperty(key, gridTemplateAreas); + } + } + + const gridTemplateColumns: string[] = []; + gridTemplateAreas.split(' ').forEach((templateArea) => { + const headerCell = header.querySelector(`[role="columnheader"][name="${templateArea}"]`); + const width = headerCell?.getBoundingClientRect().width; + + if (width === undefined) { + gridTemplateColumns.push('auto'); + } else { + gridTemplateColumns.push(`${width}px`); + } + }); + + accordionRows.style.setProperty('grid-template-columns', gridTemplateColumns.join(' ')); + } + } +} diff --git a/semcore/data-table/src/components/AccordionRows/style.shadow.css b/semcore/data-table/src/components/AccordionRows/style.shadow.css new file mode 100644 index 0000000000..1a23c21f98 --- /dev/null +++ b/semcore/data-table/src/components/AccordionRows/style.shadow.css @@ -0,0 +1,9 @@ +SAccordionRows { + display: grid; + grid-column: 1 / -1; + grid-row: var(--gridRow); + overflow: clip; + transition-property: max-height; + transition-duration: var(--duration); + transition-timing-function: linear; +} diff --git a/semcore/data-table/src/components/Body/Body.tsx b/semcore/data-table/src/components/Body/Body.tsx index 5f61b4c602..32a04dabfc 100644 --- a/semcore/data-table/src/components/Body/Body.tsx +++ b/semcore/data-table/src/components/Body/Body.tsx @@ -138,7 +138,7 @@ class BodyRoot extends Component = DataTableB getFixedStyle: ( cell: Pick, ) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined]; - accordionDuration?: DataTableProps['accordionDuration']; + accordionDuration: number | [number, number]; onCellClick: DataTableCellProps['onClick']; rawData: DataRowItem[]; accordionMode?: DataTableProps['accordionMode']; diff --git a/semcore/data-table/src/components/Body/Cell.tsx b/semcore/data-table/src/components/Body/Cell.tsx index 236702619f..84574d93bc 100644 --- a/semcore/data-table/src/components/Body/Cell.tsx +++ b/semcore/data-table/src/components/Body/Cell.tsx @@ -1,4 +1,5 @@ -import { Root, sstyled } from '@semcore/core'; +import { Box, Flex } from '@semcore/base-components'; +import { Root, sstyled, createComponent, Component } from '@semcore/core'; import { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside'; import * as React from 'react'; @@ -9,7 +10,7 @@ import type { IFocusableCell, LockedCell } from '../../enhancers/focusableCell'; import { handleFocusCell, handleKeydownFocusCell } from '../../enhancers/focusableCell'; import type { DataTableData } from '../DataTable/DataTable.types'; -export class Cell extends React.PureComponent> implements IFocusableCell { +class CellRoot extends Component> implements IFocusableCell { lockedCell: LockedCell = [null, false]; static displayName = 'Cell'; @@ -17,7 +18,7 @@ export class Cell extends React.PureCom cellRef = React.createRef(); componentWillUnmount() { - const { virtualScroll, tableRef } = this.props; + const { virtualScroll, tableRef } = this.asProps; if (virtualScroll && this.cellRef.current && isFocusInside(this.cellRef.current)) { tableRef.current?.setAttribute('tabIndex', '0'); } @@ -32,13 +33,13 @@ export class Cell extends React.PureCom }; handleClickCell = (e: React.SyntheticEvent) => { - const { rowIndex, columnIndex, onClick, row } = this.props; + const { rowIndex, columnIndex, onClick, row } = this.asProps; onClick?.(e, { rowIndex, colIndex: columnIndex, row }); }; render() { - const SCellWrapper = 'div'; + const SCellWrapper = Box; const SCell = Root; const { children, @@ -46,15 +47,9 @@ export class Cell extends React.PureCom column, columnIndex, gridRowIndex, - isAccordionRow, - animationExpand, - style = {}, shadowVertical, - calculatedHeight, use, - duration, - delay, - } = this.props; + } = this.asProps; const cell = row[column.name]; const cellName = cell instanceof MergedColumnsCell ? cell.dataKey : column.name; @@ -75,21 +70,16 @@ export class Cell extends React.PureCom gridArea = `${fromRow} / ${fromCol} / ${fromRow + 1} / ${fromCol + 1}`; } - style.height = isAccordionRow ? (animationExpand ? `${calculatedHeight}px` : `0px`) : undefined; - return sstyled(styles)( extends React.PureCom ); } } + +export const Cell = createComponent(CellRoot); diff --git a/semcore/data-table/src/components/Body/Cell.types.ts b/semcore/data-table/src/components/Body/Cell.types.ts index f3a342e28a..5acd538abb 100644 --- a/semcore/data-table/src/components/Body/Cell.types.ts +++ b/semcore/data-table/src/components/Body/Cell.types.ts @@ -22,17 +22,14 @@ export type DataTableCellProps = Interg expanded?: boolean; withAccordion?: boolean; - isAccordionRow?: boolean; - animationExpand?: boolean; + // isAccordionRow?: boolean; + // animationExpand?: boolean; accordionRowIndex?: number; rows: DTRows; use: DTUse; style?: CSSProperties; - duration?: number; - delay?: number; - virtualScroll: boolean; tableRef: React.RefObject; accordionDuration?: number | [number, number]; @@ -40,7 +37,6 @@ export type DataTableCellProps = Interg flatRows: DTRow[]; shadowVertical?: BodyPropsInner; withoutBorder?: boolean; - calculatedHeight: number; } & { 'data-aria-level'?: number; }; diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index e90e68fe64..634a3a4239 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -13,19 +13,16 @@ import { LimitOverlay } from './LimitOverlay'; import { MergedColumnsCell, MergedRowsCell } from './MergedCells'; import type { DataTableRowProps, DataTableRowType, DTRow, DTRows, RowPropsInner } from './Row.types'; import style from './style.shadow.css'; +import { AccordionRows } from '../AccordionRows/AccordionRows'; import { ACCORDION, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, SELECT_ALL, UNIQ_ROW_KEY } from '../DataTable/DataTable'; import type { DataTableData, DTValue } from '../DataTable/DataTable.types'; type State = { expandedForAnimation: boolean; - calculatedHeight: number; - withAnimation: boolean; accordionRows?: DTRows; accordionComponent?: React.ReactNode; }; -const DEFAULT_ROW_DURATION = 50; - export class RowRoot extends Component, {}, State, [], RowPropsInner> { static displayName = 'Row'; static style = style; @@ -36,13 +33,12 @@ export class RowRoot extends Component< private cellName: string = ''; private closeAccordionTimeout = 0; + private openAccordionTimeout = 0; rowElementRef = React.createRef(); state: State = { expandedForAnimation: false, - calculatedHeight: 0, - withAnimation: true, accordionRows: undefined, accordionComponent: undefined, }; @@ -56,7 +52,7 @@ export class RowRoot extends Component< componentDidMount() { this.asProps.componentRef?.(this); - const { animationExpand, row, accordionRowIndex } = this.asProps; + const { row } = this.asProps; let accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : undefined; let accordionComponent: React.ReactNode = React.isValidElement(row[ACCORDION]) ? row[ACCORDION] : undefined; @@ -84,27 +80,9 @@ export class RowRoot extends Component< } this.setState({ - accordionRows: accordionRows ? [] : undefined, + accordionRows, accordionComponent, }); - - if (animationExpand && this.rowElementRef.current) { - const height = this.calculateRowHeight(this.rowElementRef.current); - - this.setState({ calculatedHeight: height }); - } - } - - componentDidUpdate(prevProps: DataTableRowProps) { - const { animationExpand, row } = this.asProps; - if (animationExpand && prevProps.row !== row && this.rowElementRef.current) { - const height = this.calculateRowHeight(this.rowElementRef.current); - - this.setState({ calculatedHeight: height, withAnimation: false }); - } - if (prevProps.animationExpand !== animationExpand && animationExpand === false) { - this.setState({ withAnimation: true }); - } } componentWillUnmount() { @@ -205,12 +183,16 @@ export class RowRoot extends Component< let i = 0; const changeAccordionRows = () => { + if (this.openAccordionTimeout) { + clearTimeout(this.openAccordionTimeout); + } + const chunk = i === 0 ? accordionAnimationRows : 100; this.setState({ accordionRows: accordionRows.slice(0, i + chunk) }, () => { i = i + chunk; if (i < accordionRows.length) { - setTimeout(() => { + this.openAccordionTimeout = window.setTimeout(() => { changeAccordionRows(); }, openDuration); } else { @@ -229,6 +211,10 @@ export class RowRoot extends Component< closeAccordion = (row: DTRow, closeDuration: number) => { const { onExpandRow, calculateAriaRowIndex, accordionAnimationRows } = this.asProps; + if (this.openAccordionTimeout) { + clearTimeout(this.openAccordionTimeout); + } + this.setState((prevState) => { return { expandedForAnimation: true, @@ -414,48 +400,15 @@ export class RowRoot extends Component< : undefined; } - calculateAnimationSettings() { - const { - accordionRowIndex = 0, - isAccordionRow, - animationExpand, - accordionDuration, - rows, - accordionAnimationRows, - } = this.asProps; - - if (!isAccordionRow || accordionRowIndex >= accordionAnimationRows) { - return {}; - } - - const rowsLength = rows.length; - const durationPerRow = (duration: number) => duration / rowsLength; - - const duration = Array.isArray(accordionDuration) - ? (animationExpand ? durationPerRow(accordionDuration[0]) : durationPerRow(accordionDuration[1])) - : accordionDuration !== undefined - ? durationPerRow(accordionDuration) - : rowsLength > 4 - ? durationPerRow(200) - : DEFAULT_ROW_DURATION; - - const delayIndex = animationExpand ? accordionRowIndex : rows.length - 1 - accordionRowIndex; - const delay = duration * delayIndex; - - return { duration, delay }; - } - render() { const SRow = Root; const SCollapseRow = Collapse; - const SAccordionRows = Box; const SCell = Cell; const SCheckboxCell = Cell; const { columns, row, rows, - styles, rowIndex, gridRowIndex, 'aria-level': ariaLevel = 1, @@ -465,7 +418,6 @@ export class RowRoot extends Component< getFixedStyle, mergedRow, isAccordionRow, - animationExpand, accordionRowIndex, accordionDuration, use, @@ -484,7 +436,7 @@ export class RowRoot extends Component< accordionAnimationRows, } = this.asProps; - const { expandedForAnimation, withAnimation, accordionRows, accordionComponent, calculatedHeight } = this.state; + const { expandedForAnimation, accordionRows, accordionComponent } = this.state; const expanded = expandedRows?.has(row[UNIQ_ROW_KEY]) && !expandedForAnimation; const accordionType = (accordionRows || accordionComponent) && !mergedRow ? 'row' : undefined; @@ -505,8 +457,6 @@ export class RowRoot extends Component< const rowsLimit = limit?.fromRow; const columnsLimit = limit?.fromColumn; - const { duration, delay } = this.calculateAnimationSettings(); - return sstyled(style)( <> extends Component< theme={selectedRows?.includes(rowUniqKey) ? 'info' : undefined} use:expanded={expanded && !mergedRow} onClick={this.handleClickRow(row)} - withAnimation={withAnimation} aria-hidden={this.isRowHidden} > {columns.map((column, i) => { @@ -550,20 +499,15 @@ export class RowRoot extends Component< column, expanded, withAccordion, - isAccordionRow, - animationExpand, accordionRowIndex, rows, 'aria-hidden': isCellHidden, 'data-aria-level': index === 0 ? ariaLevel : undefined, use, - duration, - delay, 'virtualScroll': Boolean(virtualScroll), tableRef, 'onClick': onCellClick, flatRows, - calculatedHeight, }; if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { @@ -662,39 +606,29 @@ export class RowRoot extends Component< )} {Array.isArray(accordionRows) && ( - - {(expanded || expandedForAnimation) && accordionRows.map((subrow, i) => { - return ( - - ); - })} - + )} , ); @@ -710,40 +644,6 @@ export class RowRoot extends Component< obj === null ); } - - private calculateRowHeight(rowElement: HTMLElement): number { - const accordionFull = rowElement.cloneNode(true); - - if (!(accordionFull instanceof HTMLElement)) { - return 0; - } - - const columnsWidth: number[] = []; - - const columns = Array.from(rowElement.children); - columns.forEach((column) => { - columnsWidth.push(column.getBoundingClientRect().width); - }); - - accordionFull.style.display = 'grid'; - accordionFull.style.position = 'absolute'; - accordionFull.style.visibility = 'hidden'; - accordionFull.style.gridTemplateColumns = columnsWidth.join('px ') + 'px'; - - Array.from(accordionFull.children).forEach((child) => { - if (child instanceof HTMLElement) { - child.style.height = '100%'; - } - }); - - document.body.appendChild(accordionFull); - - const height = accordionFull.getBoundingClientRect().height; - - document.body.removeChild(accordionFull); - - return height; - } } export const Row = createComponent(RowRoot) as DataTableRowType; diff --git a/semcore/data-table/src/components/Body/Row.types.ts b/semcore/data-table/src/components/Body/Row.types.ts index 72d14ec18b..9884c5cdf1 100644 --- a/semcore/data-table/src/components/Body/Row.types.ts +++ b/semcore/data-table/src/components/Body/Row.types.ts @@ -38,8 +38,7 @@ export type DataTableRowProps = { row: DTRow; mergedRow?: boolean; - isAccordionRow?: DataTableCellProps['isAccordionRow']; - animationExpand?: DataTableCellProps['animationExpand']; + isAccordionRow?: boolean; accordionRowIndex?: DataTableCellProps['accordionRowIndex']; isNonInteractive?: boolean; @@ -101,8 +100,8 @@ export type RowPropsInner = JSX.Intrins setRowHeight: (index: number, row: DTRow) => void; componentsMap: Map>; calculateAriaRowIndex: () => void; - variant?: DataTableProps['variant']; - limit?: DataTableProps['limit']; + variant: DataTableProps['variant']; + limit: DataTableProps['limit']; totalRows?: number; hasGroups: boolean; }; diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 47d0aa5660..1d49dfe27a 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -359,13 +359,6 @@ SRow[sideIndents='wide'], SCollapseRow[sideIndents='wide'] { } } -SRow[isAccordionRow][withAnimation] > SCellWrapper { - transition-property: height; - transition-delay: var(--delay); - transition-duration: var(--duration); - transition-timing-function: linear; - overflow: clip; -} SCellWrapper[fixed][shadowVertical] { &:after { diff --git a/semcore/data-table/src/components/DataTable/DataTable.tsx b/semcore/data-table/src/components/DataTable/DataTable.tsx index 0707562437..f651f9f15b 100644 --- a/semcore/data-table/src/components/DataTable/DataTable.tsx +++ b/semcore/data-table/src/components/DataTable/DataTable.tsx @@ -82,7 +82,8 @@ class DataTableRoot< h: 'fit-content', renderEmptyData: () => , variant: 'default', - accordionAnimationRows: 20, + accordionAnimationRows: 40, + accordionDuration: 200, }; private columns: DTColumn[] = []; diff --git a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx index cea46dca28..45ebb4995a 100644 --- a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx +++ b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx @@ -35,9 +35,6 @@ const Demo = (props: TableInTableProps) => { { name: 'cpc4', children: 'CPC' }, { name: 'vol4', children: 'Vol.' }, ]} - // accordionMode={props.accordionMode} - // onAccordionToggle={props.onAccordionToggle} - // accordionDuration={500} /> ); }; From ff511eb612d1263b5231c64a95d466f94996ad6a Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Wed, 22 Oct 2025 15:26:34 +0200 Subject: [PATCH 05/21] [data-table] fixed import path --- .../data-table/src/components/AccordionRows/AccordionRows.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index c7f5b94834..db2d51ff58 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -1,14 +1,13 @@ import { Box } from '@semcore/base-components'; import { sstyled } from '@semcore/core'; import trottle from '@semcore/core/lib/utils/rafTrottle'; -import type { DataTableData, DataTableProps } from '@semcore/ui/data-table'; import React from 'react'; import styles from './style.shadow.css'; import type { CellRenderProps } from '../Body/Body.types'; import { Row } from '../Body/Row'; import type { DTRow, DTRows } from '../Body/Row.types'; -import type { DataRowItem, DTUse } from '../DataTable/DataTable.types'; +import type { DataTableData, DataTableProps, DataRowItem, DTUse } from '../DataTable/DataTable.types'; import type { DTColumn } from '../Head/Column.types'; type AccordionRowsProps = { From aae241970eed392a317a0096ddc0bf5594d3574a Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Wed, 22 Oct 2025 18:46:43 +0200 Subject: [PATCH 06/21] [data-table] cleanup --- semcore/data-table/src/components/Body/Cell.types.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/semcore/data-table/src/components/Body/Cell.types.ts b/semcore/data-table/src/components/Body/Cell.types.ts index 5acd538abb..c6c49524b7 100644 --- a/semcore/data-table/src/components/Body/Cell.types.ts +++ b/semcore/data-table/src/components/Body/Cell.types.ts @@ -1,5 +1,4 @@ import type { Intergalactic } from '@semcore/core'; -import type * as React from 'react'; import type { CSSProperties, HTMLAttributes } from 'react'; import type { BodyPropsInner } from './Body.types'; @@ -22,8 +21,6 @@ export type DataTableCellProps = Interg expanded?: boolean; withAccordion?: boolean; - // isAccordionRow?: boolean; - // animationExpand?: boolean; accordionRowIndex?: number; rows: DTRows; use: DTUse; From 7b729e1cae07a0d423036e6024c43892edc5761c Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 12:38:20 +0200 Subject: [PATCH 07/21] [data-table] UIK-4427 --- .../AccordionRows/AccordionRows.tsx | 2 +- .../components/AccordionRows/style.shadow.css | 9 --- .../data-table/src/components/Body/Cell.tsx | 8 +- .../data-table/src/components/Body/Row.tsx | 79 ++++++++++--------- .../src/components/Body/style.shadow.css | 12 ++- 5 files changed, 56 insertions(+), 54 deletions(-) delete mode 100644 semcore/data-table/src/components/AccordionRows/style.shadow.css diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index 84256fcf54..01ee1722a0 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -3,10 +3,10 @@ import { sstyled } from '@semcore/core'; import trottle from '@semcore/core/lib/utils/rafTrottle'; import React from 'react'; -import styles from './style.shadow.css'; import type { CellRenderProps } from '../Body/Body.types'; import { Row } from '../Body/Row'; import type { DTRow, DTRows } from '../Body/Row.types'; +import styles from '../Body/style.shadow.css'; import type { DataTableData, DataTableProps, DataRowItem, DTUse } from '../DataTable/DataTable.types'; import type { DTColumn } from '../Head/Column.types'; diff --git a/semcore/data-table/src/components/AccordionRows/style.shadow.css b/semcore/data-table/src/components/AccordionRows/style.shadow.css deleted file mode 100644 index 1a23c21f98..0000000000 --- a/semcore/data-table/src/components/AccordionRows/style.shadow.css +++ /dev/null @@ -1,9 +0,0 @@ -SAccordionRows { - display: grid; - grid-column: 1 / -1; - grid-row: var(--gridRow); - overflow: clip; - transition-property: max-height; - transition-duration: var(--duration); - transition-timing-function: linear; -} diff --git a/semcore/data-table/src/components/Body/Cell.tsx b/semcore/data-table/src/components/Body/Cell.tsx index 84574d93bc..289acdf799 100644 --- a/semcore/data-table/src/components/Body/Cell.tsx +++ b/semcore/data-table/src/components/Body/Cell.tsx @@ -14,6 +14,7 @@ class CellRoot extends Component(); @@ -42,13 +43,13 @@ class CellRoot extends Component extends Component - {children} + , ); diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index 634a3a4239..c1104ce82f 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -403,8 +403,8 @@ export class RowRoot extends Component< render() { const SRow = Root; const SCollapseRow = Collapse; - const SCell = Cell; - const SCheckboxCell = Cell; + const SCell = Row.Cell; + const SCheckboxCell = Row.Cell; const { columns, row, @@ -434,6 +434,7 @@ export class RowRoot extends Component< virtualScroll, onCellClick, accordionAnimationRows, + styles, } = this.asProps; const { expandedForAnimation, accordionRows, accordionComponent } = this.state; @@ -457,7 +458,7 @@ export class RowRoot extends Component< const rowsLimit = limit?.fromRow; const columnsLimit = limit?.fromColumn; - return sstyled(style)( + return sstyled(styles)( <> extends Component< } } - const commonProps: DataTableCellProps = { - 'id': `${uid}_${rowUniqKey}_${index}`, - accordionId, - row, - rowIndex, - gridRowIndex, - 'columnIndex': index, - column, - expanded, - withAccordion, - accordionRowIndex, - rows, - 'aria-hidden': isCellHidden, - 'data-aria-level': index === 0 ? ariaLevel : undefined, - use, - 'virtualScroll': Boolean(virtualScroll), - tableRef, - 'onClick': onCellClick, - flatRows, - }; - if (selectedRows && i === 0 && row[IS_EMPTY_DATA_ROW] !== true) { const checked = selectedRows.includes(rowUniqKey); - // @ts-ignore - commonProps.column = { name: SELECT_ALL.toString() }; - commonProps.onClick = this.handleClickCheckbox(!checked); - commonProps.columnIndex = 0; - return ( extends Component< } } - commonProps.style = style; - return ( - ); })} @@ -646,4 +643,8 @@ export class RowRoot extends Component< } } -export const Row = createComponent(RowRoot) as DataTableRowType; +export const Row = createComponent(RowRoot, { + Cell, +}) as DataTableRowType & { + Cell: any; +}; diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 1d49dfe27a..f355a0c85d 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -1,7 +1,17 @@ -SBody, SRow, SRowGroup, SAccordionRows { +SBody, SRow, SRowGroup { display: contents; } +SAccordionRows { + display: grid; + grid-column: 1 / -1; + grid-row: var(--gridRow); + overflow: clip; + transition-property: max-height; + transition-duration: var(--duration); + transition-timing-function: linear; +} + SBody[compact] { SCell { padding: var(--intergalactic-spacing-3x, 12px) var(--intergalactic-spacing-2x, 8px); From 2e69ee979ed20de49b411a89bb0b568c214e62e2 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 12:51:03 +0200 Subject: [PATCH 08/21] [data-table] UIK-4426 --- .../data-table/src/components/Body/Row.tsx | 20 +++++++++---------- .../src/components/Body/style.shadow.css | 14 ++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index c1104ce82f..aa83103d5e 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -248,10 +248,13 @@ export class RowRoot extends Component< getCellProps(props: DataTableCellProps) { const { + use, renderCell, expandedRows, styles, getI18nText, + virtualScroll, + tableRef, onCellClick, rawData, shadowVertical, @@ -293,8 +296,12 @@ export class RowRoot extends Component< } const extraProps: Record = { - ...props, + use, + virtualScroll: Boolean(virtualScroll), + tableRef, children: props?.children ?? defaultRender(), + onClick: onCellClick, + flatRows: this.asProps.flatRows, shadowVertical, withoutBorder, }; @@ -409,6 +416,7 @@ export class RowRoot extends Component< columns, row, rows, + styles, rowIndex, gridRowIndex, 'aria-level': ariaLevel = 1, @@ -431,15 +439,12 @@ export class RowRoot extends Component< hasGroups, tableRef, scrollAreaRef, - virtualScroll, - onCellClick, accordionAnimationRows, - styles, } = this.asProps; const { expandedForAnimation, accordionRows, accordionComponent } = this.state; const expanded = expandedRows?.has(row[UNIQ_ROW_KEY]) && !expandedForAnimation; - const accordionType = (accordionRows || accordionComponent) && !mergedRow ? 'row' : undefined; + const accordionType = row[ACCORDION] && !mergedRow ? 'row' : undefined; let accordionDataGridArea = ''; @@ -548,11 +553,6 @@ export class RowRoot extends Component< rows={rows} aria-hidden={isCellHidden} data-aria-level={index === 0 ? ariaLevel : undefined} - use={use} - virtualScroll={Boolean(virtualScroll)} - tableRef={tableRef} - onClick={onCellClick} - flatRows={flatRows} /> ); })} diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index f355a0c85d..71a89c716c 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -3,13 +3,13 @@ SBody, SRow, SRowGroup { } SAccordionRows { - display: grid; - grid-column: 1 / -1; - grid-row: var(--gridRow); - overflow: clip; - transition-property: max-height; - transition-duration: var(--duration); - transition-timing-function: linear; + display: grid; + grid-column: 1 / -1; + grid-row: var(--gridRow); + overflow: clip; + transition-property: max-height; + transition-duration: var(--duration); + transition-timing-function: linear; } SBody[compact] { From cc1b77ec7e03cc04fbf92d0c7aea24e310c6ba47 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 13:04:09 +0200 Subject: [PATCH 09/21] [data-table] UIK-4424 --- .../AccordionRows/AccordionRows.tsx | 66 +++++++++---------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index 01ee1722a0..d878d5c7a8 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -62,13 +62,10 @@ export class AccordionRows extends Reac componentDidMount(): void { setTimeout(() => { - this.calculateGridSettings(); - }, 500); // need this for calculate widths after Header render. - - if (this.props.tableRef.current) { - this.tableWidth = this.props.tableRef.current.getBoundingClientRect().width; - this.tableObserver.observe(this.props.tableRef.current); - } + if (this.props.tableRef.current) { + this.tableObserver.observe(this.props.tableRef.current); + } + }, 500); } componentWillUnmount(): void { @@ -177,35 +174,34 @@ export class AccordionRows extends Reac return; } - this.tableWidth = currentWidth ?? 0; - const tableStyles = tableElement?.style; - const header = tableElement?.querySelector('[data-ui-name="DataTable.Head"]'); - const accordionRows = this.accordionRowsRef.current; - - if (tableStyles && header && accordionRows) { - let gridTemplateAreas = ''; - - for (let i = 0; i < tableStyles.length; i++) { - const key = tableStyles[i]; - if (key.startsWith('--gridTemplateAreas')) { - gridTemplateAreas = tableStyles.getPropertyValue(key); - accordionRows.style.setProperty(key, gridTemplateAreas); + requestAnimationFrame(() => { + this.tableWidth = currentWidth ?? 0; + const tableStyles = tableElement?.style; + const header = tableElement?.querySelector('[data-ui-name="DataTable.Head"]'); + const accordionRows = this.accordionRowsRef.current; + + if (tableStyles && header && accordionRows) { + let gridTemplateAreas = ''; + + for (let i = 0; i < tableStyles.length; i++) { + const key = tableStyles[i]; + if (key.startsWith('--gridTemplateAreas')) { + gridTemplateAreas = tableStyles.getPropertyValue(key); + accordionRows.style.setProperty(key, gridTemplateAreas); + } } + const gridTemplateColumns: string[] = []; + gridTemplateAreas.split(' ').forEach((templateArea) => { + const headerCell = header.querySelector(`[role="columnheader"][name="${templateArea}"]`); + const width = headerCell?.getBoundingClientRect().width; + if (width === undefined) { + gridTemplateColumns.push('auto'); + } else { + gridTemplateColumns.push(`${width}px`); + } + }); + accordionRows.style.setProperty('grid-template-columns', gridTemplateColumns.join(' ')); } - - const gridTemplateColumns: string[] = []; - gridTemplateAreas.split(' ').forEach((templateArea) => { - const headerCell = header.querySelector(`[role="columnheader"][name="${templateArea}"]`); - const width = headerCell?.getBoundingClientRect().width; - - if (width === undefined) { - gridTemplateColumns.push('auto'); - } else { - gridTemplateColumns.push(`${width}px`); - } - }); - - accordionRows.style.setProperty('grid-template-columns', gridTemplateColumns.join(' ')); - } + }); } } From 6af43e365deaa6b5658589d275b94ae979557747 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 13:12:40 +0200 Subject: [PATCH 10/21] [data-table] UIK-4428 --- semcore/data-table/src/components/Body/Cell.tsx | 2 ++ semcore/data-table/src/components/Body/Row.tsx | 1 + 2 files changed, 3 insertions(+) diff --git a/semcore/data-table/src/components/Body/Cell.tsx b/semcore/data-table/src/components/Body/Cell.tsx index 289acdf799..7d5962d367 100644 --- a/semcore/data-table/src/components/Body/Cell.tsx +++ b/semcore/data-table/src/components/Body/Cell.tsx @@ -45,6 +45,7 @@ class CellRoot extends Component extends Component extends Component< accordionRowIndex={accordionRowIndex} rows={rows} aria-hidden={isCellHidden} + style={style} data-aria-level={index === 0 ? ariaLevel : undefined} /> ); From 1239c2e84da155f9edbdd95010567c3ecc5a8e04 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 13:28:31 +0200 Subject: [PATCH 11/21] [dropdown-menu] UIK-4429 fixed Addon realization --- semcore/dropdown-menu/src/DropdownMenu.jsx | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/semcore/dropdown-menu/src/DropdownMenu.jsx b/semcore/dropdown-menu/src/DropdownMenu.jsx index 51d89769d7..c55c0b20f1 100644 --- a/semcore/dropdown-menu/src/DropdownMenu.jsx +++ b/semcore/dropdown-menu/src/DropdownMenu.jsx @@ -6,10 +6,9 @@ import { setFocus } from '@semcore/core/lib/utils/focus-lock/setFocus'; import { forkRef } from '@semcore/core/lib/utils/ref'; import { useUID } from '@semcore/core/lib/utils/uniqueID'; import Dropdown, { AbstractDropdown, selectedIndexContext, enhance } from '@semcore/dropdown'; -import { Flex, useBox } from '@semcore/flex-box'; +import { Flex, Box } from '@semcore/flex-box'; import ScrollAreaComponent, { hideScrollBarsFromScreenReadersContext } from '@semcore/scroll-area'; import { Text } from '@semcore/typography'; -import cn from 'classnames'; import React from 'react'; import style from './style/dropdown-menu.shadow.css'; @@ -390,14 +389,8 @@ function Item({ } function Addon(props) { - const [SDropdownMenuItemAddon, { className, ...other }] = useBox(props, props.forwardRef); - const styles = sstyled(props.styles); - return ( - - ); + const SDropdownMenuItemAddon = Root; + return sstyled(props.styles)(); } function Trigger() { From e3dfb3013e78e9a97851a142c63b9307ac3643ca Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 13:59:42 +0200 Subject: [PATCH 12/21] [data-table] UIK-4430 --- semcore/data-table/src/components/Body/Row.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index e7941c5b40..c089429ac0 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -511,6 +511,7 @@ export class RowRoot extends Component< expanded={expanded} isAccordionRow={isAccordionRow} aria-hidden={isCellHidden} + withAccordion={withAccordion} > Date: Thu, 23 Oct 2025 14:03:50 +0200 Subject: [PATCH 13/21] [data-table] UIK-4431 --- semcore/data-table/src/components/Body/Row.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index c089429ac0..142ffb52a2 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -85,6 +85,16 @@ export class RowRoot extends Component< }); } + componentDidUpdate(prevProps: DataTableRowProps) { + const { row } = this.asProps; + + if (Array.isArray(row[ACCORDION]) && prevProps.row[ACCORDION] !== row[ACCORDION]) { + this.setState({ + accordionRows: row[ACCORDION], + }); + } + } + componentWillUnmount() { this.asProps.componentRef?.(null); } From 926d593f22b0ab38009c860240e61a12fe1ef728 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Thu, 23 Oct 2025 14:47:53 +0200 Subject: [PATCH 14/21] [data-table] update some snapshots --- .../data-table-accordion.browser-test.tsx | 2 +- ...able-and-fixed-column-1-chromium-linux.png | Bin 26009 -> 21331 bytes ...table-and-fixed-column-1-firefox-linux.png | Bin 47027 -> 42398 bytes ...-table-and-fixed-column-1-webkit-linux.png | Bin 20374 -> 20420 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx index 9a43442201..6e9e1bad37 100644 --- a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx @@ -868,10 +868,10 @@ test.describe('Accordion in table', () => { await page.keyboard.press('Tab'); await page.keyboard.press('Enter'); await tableInTableRow.waitFor({ state: 'visible' }); + await expect(page).toHaveScreenshot(); await page.keyboard.press('ArrowRight'); await page.keyboard.press('ArrowRight'); await page.waitForTimeout(100); - await expect(page).toHaveScreenshot(); if (browserName === 'webkit') await expect(page).toHaveScreenshot({ maxDiffPixelRatio: 0.01 }); else await expect(page).toHaveScreenshot(); diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-chromium-linux.png index d5ea98ba72610e0dcd8bfadd705efd2de5f255cc..6e0189bb776169ce3c7d764c963c5df45116da95 100644 GIT binary patch literal 21331 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 literal 26009 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

h1-gTXqnJUE*b;OHztes|$SZXO@`MPP&|$w< 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 literal 47027 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 aVeRG4n*4T4^#yebud8WY$@|0X*?$0N-d`pF diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-webkit-linux.png b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-webkit-linux.png index 12d7ebf2a8ec95648bf429c04a3191e118032cfd..b21ceca0d671e3889324d9b2e198d331a552b2e1 100644 GIT binary patch delta 14495 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 G`Tqf%z0z<1 delta 14448 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

rs5B4pa4tBl5z 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 From 8513fbc546c9434c407bc123dec6b10d251c021f Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Thu, 23 Oct 2025 15:28:56 +0200 Subject: [PATCH 15/21] [data-table] update toggle test --- .../data-table-accordion.browser-test.tsx | 33 +++++-------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx index 6e9e1bad37..6b8540589e 100644 --- a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx @@ -344,8 +344,7 @@ test.describe('Accordion in table', () => { const htmlContent = await e2eStandToHtml(standPath, 'en', { accordionMode: 'independent', onAccordionToggle: `function(type, rowId, rowIndex) { - console.log("Accordion " + type + " for row #" + rowIndex); -}`, + console.log("Accordion " + type + " for row #" + rowIndex);}`, }); await page.setContent(htmlContent); @@ -412,10 +411,6 @@ test.describe('Accordion in table', () => { await expect(page.locator('[data-ui-name="ButtonLink"]').nth(1)).toBeFocused(); await page.keyboard.press('Enter'); await locators.rowTableInTable(page, 2, 9).waitFor({ state: 'hidden' }); - await page.waitForEvent('console', { - predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #1', - timeout: 200, - }); expect(messages.length).toBe(1); expect(messages).toEqual(['Accordion close for row #1']); messages = []; @@ -432,7 +427,7 @@ test.describe('Accordion in table', () => { }); test('Verify table in table mouse navigation when accordionMode=independent', async ({ page, browserName }) => { - if (browserName === 'webkit') return;// disabled for websbkit because works in debug mode but lags in docker + if (browserName === 'webkit') return;// disabled for webkit because works in debug mode but lags in docker let messages: string[] = []; page.on('console', (msg) => { if (msg.type() === 'log' && msg.text().startsWith('Accordion')) { @@ -470,10 +465,6 @@ test.describe('Accordion in table', () => { messages = []; await locators.toggle(page).first().click(); await locators.rowTableInTable(page, 2, 3).waitFor({ state: 'hidden' }); - await page.waitForEvent('console', { - predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #0', - timeout: 500, - }); expect(messages.length).toBe(1); expect(messages).toEqual(['Accordion close for row #0']); }); @@ -483,10 +474,6 @@ test.describe('Accordion in table', () => { const row = locators.row(page, 3); await row.getByRole('gridcell').first().click(); await locators.rowTableInTable(page, 2, 6).waitFor({ state: 'hidden' }); - await page.waitForEvent('console', { - predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #1', - timeout: 200, - }); expect(messages.length).toBe(1); expect(messages).toEqual(['Accordion close for row #1']); }); @@ -548,14 +535,15 @@ test.describe('Accordion in table', () => { await page.keyboard.press('ArrowUp'); await page.keyboard.press('ArrowUp'); await page.keyboard.press('ArrowUp'); + const waitForAccordionClose = page.waitForEvent('console', { + predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #0', + timeout: 1000, + }); await page.keyboard.press('Enter'); await page.waitForTimeout(100); await locators.rowTableInTable(page, 2, 6).waitFor({ state: 'visible' }); - await page.waitForEvent('console', { - predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #0', - timeout: 200, - }); - expect(messages.length).toBe(2); + await waitForAccordionClose; + expect(messages).toEqual(['Accordion open for row #1', 'Accordion close for row #0']); for (let i = 0; i < 6; i++) await page.keyboard.press('ArrowDown'); @@ -574,10 +562,7 @@ test.describe('Accordion in table', () => { for (let i = 0; i < 6; i++) await page.keyboard.press('ArrowUp'); await page.keyboard.press('Enter'); await locators.rowTableInTable(page, 2, 6).waitFor({ state: 'hidden' }); - await page.waitForEvent('console', { - predicate: (msg) => msg.type() === 'log' && msg.text() === 'Accordion close for row #1', - timeout: 200, - }); + expect(messages.length).toBe(1); expect(messages).toEqual(['Accordion close for row #1']); messages = []; From e1740b4ae47f71ed4af726efe91def758f647c88 Mon Sep 17 00:00:00 2001 From: Valeryia Zimnitskaya Date: Thu, 23 Oct 2025 15:55:49 +0200 Subject: [PATCH 16/21] [stories] add props --- .../advanced/examples/accordion_with_many_rows.tsx | 9 ++++++++- .../examples/accordion-tests/accordion-duration.tsx | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx index 45ebb4995a..783a0feeed 100644 --- a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx +++ b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx @@ -5,10 +5,12 @@ import React from 'react'; export type TableInTableProps = { accordionMode: DataTableProps['accordionMode']; onAccordionToggle?: DataTableProps< - typeof data, + typeof data, any, any >['onAccordionToggle']; + accordionDuration: DataTableProps['accordionDuration']; + accordionAnimationRows: DataTableProps['accordionAnimationRows']; }; const Demo = (props: TableInTableProps) => { @@ -17,6 +19,9 @@ const Demo = (props: TableInTableProps) => { data={data} aria-label='Parent' uniqueRowKey='keyword' + accordionDuration={props.accordionDuration} + accordionAnimationRows={props.accordionAnimationRows} + accordionMode={props.accordionMode} columns={[ { name: 'keyword', children: 'Keyword' }, { name: 'kd', children: 'KD %' }, @@ -41,6 +46,8 @@ const Demo = (props: TableInTableProps) => { export const accordionTableInTableDefaultProps: TableInTableProps = { accordionMode: 'independent', + accordionAnimationRows: undefined, + accordionDuration: undefined, }; Demo.defaultProps = accordionTableInTableDefaultProps; diff --git a/stories/components/data-table/tests/examples/accordion-tests/accordion-duration.tsx b/stories/components/data-table/tests/examples/accordion-tests/accordion-duration.tsx index f3615b2661..6da172f813 100644 --- a/stories/components/data-table/tests/examples/accordion-tests/accordion-duration.tsx +++ b/stories/components/data-table/tests/examples/accordion-tests/accordion-duration.tsx @@ -6,6 +6,8 @@ import React from 'react'; export type TableInTableProps = { accordionMode: DataTableProps['accordionMode']; + accordionDuration: DataTableProps['accordionDuration']; + accordionAnimationRows: DataTableProps['accordionAnimationRows']; }; const ChartExample1 = () => { @@ -21,7 +23,8 @@ const Demo = (props: TableInTableProps) => { aria-label='Parent' h='100%' data={data} - accordionDuration={400} + accordionDuration={props.accordionDuration} + accordionAnimationRows={props.accordionAnimationRows} accordionMode={props.accordionMode} columns={[ { name: 'keyword', children: 'Keyword', gtcWidth: '200px', fixed: 'left' }, @@ -69,6 +72,8 @@ const ChartExample = () => { }; export const tableInTableDefaultProps: TableInTableProps = { accordionMode: 'independent', + accordionAnimationRows: 1, + accordionDuration: 500, }; Demo.defaultProps = tableInTableDefaultProps; From 672fc402a5bc904aad5a30a941c55e2ac4fc7fa1 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Thu, 23 Oct 2025 16:08:52 +0200 Subject: [PATCH 17/21] [data-table] fixed tests --- .../data-table-accordion.browser-test.tsx | 1 + ...able-and-fixed-column-1-chromium-linux.png | Bin 21331 -> 21340 bytes ...table-and-fixed-column-1-firefox-linux.png | Bin 42398 -> 42385 bytes ...-table-and-fixed-column-1-webkit-linux.png | Bin 20420 -> 20424 bytes .../AccordionRows/AccordionRows.tsx | 2 +- 5 files changed, 2 insertions(+), 1 deletion(-) diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx index 6b8540589e..3278a51b22 100644 --- a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx +++ b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx @@ -849,6 +849,7 @@ test.describe('Accordion in table', () => { const htmlContent = await e2eStandToHtml(standPath, 'en'); await page.setContent(htmlContent); + await new Promise((resolve) => setTimeout(resolve, 1000)); // need this for AccordionRows grid calculations after rendering const tableInTableRow = page.locator('[aria-rowindex="5"][aria-level="2"]'); await page.keyboard.press('Tab'); await page.keyboard.press('Enter'); diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-chromium-linux.png b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-chromium-linux.png index 6e0189bb776169ce3c7d764c963c5df45116da95..88bcd3859baf283faf58386d96c2d56abee56c59 100644 GIT binary patch literal 21340 zcmeIacT`hb+bteM1wo36q9AY(6_BRVq$?_jNbew^Aiad%n*t)zEEFlB3P=q|2`zwB zL3%HtNw1+32#~uXcnpEV*>C(V5=x84#{r0JPU#R0g-xePuVGEVaV}m*ai-_ z!cTi?`lj+7W7ap<$!kO^!#<9+#7ywX$kb$oF*U=IlEXP9BctM3J{ZVSO%ur|DG(qQ z(rl*CA)O%PM?v=pdhJ{6kwv2vaoW9WWzDBgdV}*qAfpeBEa&iDfIwJC zk3Yk|R!YBwoW{R#Vx{!@^%d8NV>j_1j3(cOoW#E=qav=vzj{Tyn(TC#5L1p=yb6(j zDhQL!>M`aq4U)*{Hbn|&M7dl6jlM%1y$HUCertMi@$^Y{J(<9}>9O)1rNV@}9){S#XRoP<#pCVK87 zO60bl+HBAkJL9)|2DVp1bB%VjA4)8k_I=Ul``oZL#dSJPnAh%mjyDknwLA3QOF_5Q zuGR{5A-i+y`CCfPm(&V@HzphT(|Cm(*I1Pt-jxnm} zmhUV-6VrIoLup}Q;p}Tqqq(P%-?bIuJa)EA3gUQ8yNug^CX+}KG1j!a(T;O38R$jq z=j!L~?`LJ}R@`#j_ful_Q_E1b7^|vXx`EI_SlZ8Z-O4eGD7F=Q^5pUAW_Cimaf%G= zw&SoHqA@HhGgI2YDOAf7SL!03XDEZ+n8$X%hLRHIBvswQJuj!c!q1FwDKMQinYFgI z&NFIeAN;1kcW`5)6lWk}9_z;IpBzcL<`P*As$WBCcug;gn&@?=$naSV+}6X$ySlnE z8!^+;nw63i>erX=wFv1mh`6X1n4T}t+*_)V>dn^PT3yXlOU;Hu_u%CN@_FHon9u$U z9J^NgyT1MX0{aB}8dJ zNh&P5a-I{8oYZySC{RqB=}7Kmj&pA>ww(@R>&;ZpUH#@wWN`aVszgG7nP})# zs$!-SwR6G-$C2{ulwqbLxs7@=w|Q={HWZ4VASDfWXL(PdbZchA1vxCAAbvtiE81ak zVE-$ww^}l|CqoU|8jCb)-Ah#%e=Yt77bAvV)V@!w02(^-BYezyeJE9Xdc@zn_V6%j ziCtS;okMr6XEkf>h<1YOVD8 z^|HpDg7FUnrs_EE-FrFWiD*FF+tc7qsSvu=)X`{Kv;16~n0sZ!vt@s8TLPx~qry@5 zBo5=a;fTK-*$U(6LFiD4{q!cR9J(GUY*1qMPz`x6&T3;ojPCc+{}48C`;o<9;U&TK ztW)Qhr>3S(F}j)dirP#(YNzg6S+TaWQ^$4p5)gQ1X?F=$;#%1v*p$C4Yc6VDPz`6L zP&Bu&@S*hZAj{S+waoNN`JB>|u8}umt&^dR?V8O?=H+WFX5P<^wb~j+S`0b{(qT8x z4Q{yX?QGE21v+aHCn(>!K=sAe#)eHbU0GEr$-M0#HeIltZrQ7+qX}B_EZ^=*>wN#d zG%qhN1G$r4TIvcW_!e%{wW(aU3~82c(dmNSgq1p={lz@X6(=8u-B39zF6@Spzxcq9 zd=V#z@O}6*sAgEiwM5mfxuIcWBMa)bS}Y3_JaeX$Q@e!fOtEXtaspUh!zK3fah^Ka zY6#28#xQr&ip^&J5jtTz%<5zY&OcB?ye)zZW(;8*Nt2O6sHU-PlDxAzZ3xzBaYf;p_p zni0ZMzh-#zqMaa8HnnpeKR5d|p3nJ%!1@QFoV&|STtZ2goWtmr_v7TR)=96EJzk8C zhh+?*ZcxzNsqFHOXP;SjvA_3HHG`F<4NUFUIh7|OXTZ@f;=AZydK7}Naf)$&EzYTf zE7mVCF!0r@SC)*7DfGt;d=F#RY$oBZnEPr2wI?uS(ds2l_ zD8*sujubsc21yoA?M&;Y36jWaH_q3DMKCiQ2PgBwWd+i|Jn5xa`&S+aK8P*1|21j6 zXmlb{xB9gTY9HX!jN!qrUjkX_bndT&@)@5{SPy>a^}l8xfrISR@VD&q&y6qX9YhDC z?R+{D6Ac5QQxK{MFv!OFG(nmmxfW>tHCUr*1bqWLX{C_Ld^x+IURzD^NCJhx7=F*6aq!YAfEiq`T zd|B;BwvDY@Ue2k4f>4iXPfQjk&XUl#un@7W;~6A5-)LnTDsph6Ql1ixUf_rlija7* zIFLO5;o6VK`d32Vd+ZIn&1cDv_u}KdywzwY--Us)$@(%BDvV8yn6WOz({X%?BS|9o zX6*tCx2L_=1`5CW@2-T-L(E@1w^X=Me~T@7eAGG5(aOne`I#d>KVwa`-*#lAMuD!Y zOj7%3Qii7US|+t<}@0#U2ctyAdN&5_(_4~u=C?#$6xxK@&-XPEL@1vqr;W~7TKGD%yIDV|NYp>H!3_8%+b+3eL*cG~oa$Z9ZmG%}$8;v`-y830m z^bC{6uFo!xkB^Ve7(>yclamHUP%+c4?`NOVhrW?b#qMq02l-?>j@FlQNc>gU<4LXi zugPe3!^IP3hB-c)`#tPWIzW++X}r2kH;`D0a;%4~rB1B1w5854V#LB_`H$q$6@4i` zLHDUlt;xrAMo;Iv(rkB{W)oduF)+eoyW_I4Jax*pwziBuiU~~(4QIsjP5TuStT20( z_ZVx?6$}e~Y2%$O9c}QJrKQ;ZJfpbHSFs|cl9K3i;;1s`ADww6D-Uk^?^W#gl-PUu z`qtu5EIydk3^H*`Fyw7EjK!vdz*D1^SYpT+0Rn>S8KcUMNA;$r7sPHl&!K$eVK&q)rK`{Nx(b#n4e zs4qFHXx6W(DKlsU7vDJ#Mhpgni4##+S>;67vG^u=fBe`P+VBw!PgB!retyIt0@@1O z8soam3xsJ^+hvX-O_+UOYIMoNl0^+)-{lsXip# z)#dTd8Tq#@F#<|R7v5yW6)}DqkSe6-EB0fvGP6iXNE%HQKZ(D$_u8g121$cTiB))H ze)JiGpp)0fkGI)`g!uV;8>F_mI^dLv3Lonb(2;Vx*$%NKcg#&3#=l6GPRP*6NK5^b zhPwJGMjjgbF;X4p$*_}PX03N_8hP%t$9e8Y#>MrPIV&;xh>tl@<8GEp+*-F)vk+%S1TVWH(< z;o_W}X!oq$?CdOq=WZ?%=}mdXu5Gj*jZ{mO)s}0WqX}~9U1Aw$X6Cg-^;K6V*`~H6 z+gLAiUA=xSjn|Zm3vLAMGUj2HgKdJzpXi(iN-cKX!ri2Y0rrC04i1}LtV&OA-Dx~~ zIGt0o|FA)O)Sc53_QRA?kIyjF`dN4fo9(%pN17X;g`Qsn2XLX0}bt0?T^! zYSH@1-FLs^X__dx5PGE@ zmbxIX{GkLAOff$4c~B;+Quo{w z5pvLA;-zFf!S{dHi-V<)ugzZ^R-}0Rary8H|JEa_gC70wz)H_AByRV&F*tJIkpVk$ zmfw^@*#ZG(rd@xZU@8!5@XWPbQ?5$UoqS1V0Tiujz8 zV%fL6xJR^QyJmyicPY>uN>>TU$#L|hobU1E1*JSp49Yh6UZL<{`gI@|9KC|r+1a0n z9NQ0h_bz^U`6eyxU=;_b8KQ3KoBjyr*k9Qo@x5ZV{Kt6j#(X!@Y2|}#DqF_$KO<{n zJKd;CMvvR(_5grJ@0ng}XlT^d$3fdF`B_<=`@c>u-Eedj!gBRwdkzc(20}JYG{bgU zc5Dotj#8;ZZf|d!^=4OCjs5&tONtsA3NrHd@5gl(E@pFP3nDj@d`ZpCGkqyRHM4Ir zSg6GhwVzqu31uAvby+lGmy*^M)!n_JSydn>rtQ8b@v~^<+RvsoaTG7l7EOfSlh@-OIx6dR+h)^kB_&? zMG9smn$?12Hi$rD5T@;)r9Ki8QRwWB>&1y84O^p3I(~3L!^6X~&ua(i8W|Xs78Nav z@#-8qxI;1mB$elwW&2iaACPfzv9V>4Qtw~f*c8f@qyW%DCP7}7JWe@5+!uDHG`6s} zrG@kQ6t!>Fy~*qjV;&}n;NhYbt+;^#5n$G;A(#3@2^;#ArVBsHXb5I zcImb{@tMn1R2TcMF)=ZH*5YDdh_f7e)!f`9rjgf(Lb=Vfy}xw}OLTgsx6~+vl$y)M zS(RG6Pvr}xs6g4xJ;N7<<=mE4;WD&lJ*yYQ0f(SSe2dj>E+^ssD{sPXQ~PJ~j!-BZ za2=SP9o3a(VhRdrxmG9S{ppv4M5k%_u8QvO(z;{i$SDv71-E9QqbIC|Hy?!14?Ph% z(Fi$MN=m`>FZsB+Nl!1FMMC2!^+w7sdh0muVyuHCn0#{b@?1A{7#}=(Wc8#8e$snv z`F&D&xTV6rH-af&KJs8YF5s*$ja8Ov-vm~q548Y zLot{&4ox0vadj;%glWGX4o(#4%E7_mOPQU`xnvn;FPKGHHCXx@Fhu;Rnc3?B3!pSN zYJtIS?$aqzyqXR=p!wJ&9ld-h0Y3*NyR<*EG9H6M#mC2g`C|Osa0)$=e#cdd2qOk? zOjEzDWbox^0sVpW?zq59+?ok?EITab5)u-!mcy@n8BQ@ODs}+yD|b3xp5?>GkG_=c z?YFF%(KGeEs{7mD5XBR(V}B!HV;sRgv7$v+=8W!e}6di9*+RcIKf|oEW1_12P*!kDaFe{QR!AZ-iPz$FDv`hFfiDYHGSvb(`^@J;%+Rw}}>$N5~F+ z*DeiW8zHCV`)tnTuzjA6&UUsVIVL71OADc0{-Ld6B$|R@3LV&I|MLNAanMmU`)TKA zsp_6AE$V#|a(Y3xpH5Fl#tBJ6atwadfu2XN`&F*h9F)dOX&c46eyF=xB7Bv$6tktF zM|6_|U+9_f&=g1{0VYBxRz>EJwLys-(-wsZx=X-&>+9pTR@blY9h*F44emoY!_7|h zx@>vau1zrzkicW0EON$z+~a7)W*L6nhty`Q>V7;9N^vWp2QOb!G{P8 zPg@*G;zz*CQ3mEWlERAtN17Y~M*o0s{(a-yhocb;7@gOLx%fy&^#7TpF)k4N7m}t( z?_ug!*m1~P>D11Q?h~3>De-rcdgo=1fTKf}!zUA`rl-G>OG)+t~%C5qmr|FZ62gC2q^j1&Y@c z4DL*~8a{V^n>ggtq?IV1=@Ag@b8@z%#2%A-`*r}RDcu1PoEI!_T|5o4a1{6S9+-kS zKpOg=V_qCC=={uGm49&b*N8pxocF%IzG;$`xHD(ZQqj{J>g#J2O?Je24nHaHFH*SA z=;N883OIPqz3o&fBcF!f3w?%sIbFp}6zgW;D;gna=j7fPYGrG?)~x06CP-vyZq9{cY#=o*yWE4x z8inx(*bFA(ni7z=)~I6Ep{R6$eYdT@p~0z7DOJ{Uqr2B~$B~WGyt5c?FD*(a{x;kKo8@N&kZlViMaNybLHZ6fJVYIJIRIS z)Gbd`ERK$jCS?RvH$ZG$y5)-X_4Qr0-+T^6HOhv{i&-`%XMFk%jgF40swy?-?yb2+ zN4*gGOdVvDctXr&(KK;i5+NoB5eqmBrv0Rei^SKvQ9HTaSR(K;(s~>rT43ht+$BBs2yXPw7mxhOREC%vd06YG3>#7i(d;N5&16Ti4i=NNRRMyt1sG%Df zC>8NHI~()$wYBHzDr;+#L4L^1t@ouQJh{$2Y_9zO5(4Evy;S1~UAOK;8`K}f@a)S& z1Q)~sSA*nzfdOQPt&Oest5=DMiN2AM6`mPC7cA&TahR1PZlhK@0UPtFK$8qr&)bGg z#=ad1#uY#YWMbxreya-cp=4z>S-P>sd{Ul;s-dAl{LReFr=pLkF|bgzb7$S$Oi39{ zyOvF7rm2hB(iQGksB&mhxvTx}!H*7!Y>VuP5C&?G=(w%6+DJJr*FP668w9)4<7jWc z=QNpKM@Cz&xY(_bG@Sj+h~K{P^UnpqIxKbN>c6Prq}7_|)E2}uKT&d`u1I%mV!hf8 zsus=`baU)RKEdtVw*h41hYrWwvUOOK%JNS5c?SGb@dt3gaAkoal zMWP)PQ>s+r6O&T|eMKaUHov4D^~cn+*Cxl6u)}*;L0C&w)z9|v`YrSbU{nj!{9c*- z8D{?HkdOc|y#T1Ge|Z7^r%+Mys8Xo|KsJEoV)MDP3jZfRJg=6>>51cG8=;M&ccfE7DmKYMEjor=x8Yd=)oR%%Ob(9;tTWSyj-&)3@q z>|;cns4X7{2d~|7We)+tDK+>tfQrJyV}U3bR8s?(!aXcSSC$gLO|Rv6Bcl2>8S7wx zw#P%s`lls!tjx?t^F0<3@T=?StrYRGBA4!Z=?KmdS~^?oW>&YEYLtt_rwa$@d$Y?^ zXi7{OH@+Ex!ZI|$gr?nl$WA^1nLDl9G)q-UJ|1uYvE3P;4jc}5i(QYGxCz?t1nR&; zLd4LMvr;=J8i@|p-)qQI_TIDE8%ujrQ_W)JG(44Ed5~wn&a+D^e2na_hn*ly6KGOh zG(oBv-Jtg4-FN`_l6M3^!Fk7eknsO*cQ}F+BoC+)ys-4*?E#yFM+!&s_EF68?&U#A z^gkg~{YYJWB>m&YpcEv&$j${Rk=0|$Ygz!%AE}%Y1zuYda59BttGB29=8V9XfP&-E z%u+Qw28ZC&E)6Iyo%(s=%0 zCIF%7850om6$OHeoo6o--Q7OuXh$dU?8=j`_kt9$F0TRaER?*r0Uq43-e(n z-(P7|@fP=UAUoZUbPb`ra>EqbtZDz@!-uui)eBrYQ-krjlt29#3VSkDjK(AbR##Wg zp3TOmh$!B;sGpA^PJ9QQ&b)kLw5tn<*oN%tHyvj?LO@LP*j-^B-yDsPhnGLys-}p( za>Wtde~!cFCO4=jQ*&CY8%)tzN z)>TtMBb@3tJ$C{%9G6h1PMx}K>1bs&GdvDA`V6=bHNZGaO8RsHtzXTvrxUAn0UeXz|QUoszIqmwlU+>DN)gaAd#_Q zq|1W`OG~Kak3btyOmnL9ry_Z%>d?};2}Cn4&HRalVq3|Oy3K|Dq;(Hbs@?&6U60iU zBOt4xgO^t`E$95@MStfN76{vU5+myAEyGrq0n&fSXZ&YBl5B0xcAD))&=#6+=SoKe zw~8uANTkd`XG`9RkM$)>Pk(lHm6o$LxvX`pMR71?9MDXTF3n!Y=mvq<;)Ru7NzB% z<#MR>;j&?$YJp)xgm`GQFNOS^8C6GW78I|Eq6&m=EKNuOkI>N25PGE46I8??r=T&; zM!0?VQis`vxj7owpEV`+x^;14IE?kZs&1d~EKNZ{K@uPtHb0GlX(7ll*l*{uug8eE za!y6;RqVMu+utqj&QLoiK4Vu>D;*BIV}0Wq?wv&wBWy*D@GrJf_gOhuzJM16prSHBm8{i?O_7GBYuY? zmGu8r{KTi6qxI_%_ui4fd&tX20%PGqKUS+>_86o#xp%%m69$swyuBdIq3aF7;Sg3% z*F*5U0nnX!X=Lub)P(nz7OU_brcdDNI9mPx4C#-Z=yf5NVD)U)vK)A12^$!}AL z&L+fdX1V=!kk-S852IZug=Z!76mbOiJ#c&SV;7J*xDEahii>yF(OfM*e$4kE(LRpM z6|{W7R``9M|LhM3^-sqSfQ!C{CXwdatXc?z7(KVk8}Tu9&3bl1i^1bXB_*F+NQ7Ch z+@4#VWSi#NRVcc4?V9~!2^k>Qel#@iVdnuR0}MN`*R>Jez_+4E(u_=&SVYRY35k{a!t5x?MEX1PZgMD-SaCNq#SS`L@-x-|J* z;ugDj%VwcugEmlU8?n@ur&d7@du3MM^9&q2U$I*Pt@sAt#xzHk#`Acb;^LB){_*xe zhcGBEDZ%RyR)-PrF$Y9QQ1D4CPod4^TN9H@Y&eyZv4Yp0B-_AewW}K&Z;0-T&%9I6 z%n*V`>`A|926`NjqpvOmUN6d?Af1SBc zOB*fXsu#s?wrV&s45m}|*yQZQ=ls09XaU=FyhO8jDKfHJA~2HIcJ9MN1`p&IskaW7 z&qX0l_B&tZe?DBRz_@JyKg2$8RFKi~8PD_rE1+S;;)v~)&8_=>A>G+~1BF@99;nr! z2wit92;C-ooH{m=!8Mz+L!Dhp@uv^XbjjO{>Oif3jt+LP%?J$-U)dgjCYKKZu&?!~ zZRrbA{LL4Ub{FK*OuPE{o{o?Zm>cKC*BAONT8A%se_O_Ws|Kvb`}YdsZ#s=y3XI$H zm#K2=$CZ~X>2HKlR>5CF%@_O=35$w~>=xSgzrWWPf78}R02C{6VrJ&l%ms7Cno0t9 zxtKf7(=FPd?4RGXK-1{>LWNy;0DHS#&}&LlK}Jf88@<<9Y`a3R544G%o}Mg1&4=|1 z{7VJ-`BdUy?R`NF*=c4`CaQ8k86U{X%AU#=*|%97*icGseL^1hZ0?@?$wNLy5lflL z{3#k2?Rs0p)n|Q?dIty=3o$YDL-(&-N%D!*h~^`x?H|mxmVjyNFalpqK1yWm;pEP3eA}b)RaC%OoX{Ga?}ZXGUcP)eP>YJBo|gZ^ ze(i~uSJTo=@(f#tFhgp-YV=&3he(l!(8|(sIGuN1NwMRGs@)}Sm+uvKUd6>hYu{!E zL}VKGe6}u_>ptm6jsUYr#LU!sQ&UTe$YHU}9V-hQtw2QJHfq)=*ON(=rF%<1B9&%k zZ5=6w-b*EW7aO}Ymhf1%{L%$ck$sf4t1EWC7griDi`$20Y9kmyB%2G(Nkpfsr|AKP z98~daz(zSSbx_5B&9l9sl8xcwB!0^UTGlmD01jMp5{lC$QiaT_x4u zf$^*?dLl0>hAe%H=G$*8FiQoTBr8xo@_E3Ce=aSa`Re?mCzwtb=xL`G27qPheU>I4 zKj$VbpGnlWXU6^M&WegQZo9so!uB2>``_+Mme`XvHZ^_y4WD@C5{)Wcw{&DJfsKj9 zrLWL}5TLrC5F=WZ?5Al8OchL$`o5GWPRxNT(#hx zz-xf*$r|*HvwHnoGg1B(O8iZ?NX0w46zwnXUMEO zU1Jvs<|$BeCr8qKDH9#hOFccRb<=TB)FWY+b-;G5$fv2oHTfK#e#*=HXtZHk?T76C z@?N)|e9=+zAs}a;JvPWgsZ^229-s^j*UR^SrZ~7_>qB|vip|!HLN#u~-u2sqhYxiz<9ZGbEh)`n zIy-BRXGRHtL_JuD76x7;Ab&)#YxkFFj03AQ)jo-bkkxWu?m5Px5fQytK4ev3NSfD0}9{&c`y>4Gc)lzlrD)feD( zjn*#hy2d|@6HKVYK2SwWus|3L+j@F2jnjU|!MBHq4z%eV1|Q@Q2U>l*-eY>iNyw=8zpt804> z1%?E((fH>8MMT*Nh7ui2FT4@tU8Y4eL`{tv7(u4ljsUURXE)14467tbr+J}06QD#v zg8#uQ9z@#xNl0C<5UP~8aN$AY5-C7u$*8Z_I zl#}L&9%4g9$Hi3`udMD9zDAWgRxGo-Zq=P8p}Tdk{fTDj&&k!~wrH;D+b7`Dm#Gf9?d;fC48nZz}Mj03SD7#&QlI z%3q(R6LFuyR!atIm#ynF)-*>WBtjx@>Q4~?TZJ~l!`u1>u7}QLbFMc*$*Q@R1{~|K z7ooeg$dBP=s1UHF4xQ+@mkt;_SEnza)bph*EabZph6P-Sj0n|}fCDCswVkO=Db>ef z&qPuNO#^_y$_ll(U*Jw_zq(wj>EmRZsX$h|S+dZ5x^r`&zkjhmPcF@BT|SM6rn&N4 zbs=={DI!>|`-aLuKDm4vDk$}lloafyb>sW$3a2m13HK!|QR~&;&)oN+6e;!d@i}hz z;zil;ts=`IL8OZVH=sjohEf5R*dsdKpT~Ti$F4Hk-L*chLcaQk67h2*BYxW{Wg}+h z@#oyPx&4AJ=GoSVz>%s-#JR>RHjFiW*3Xk9$RGA?i;)6V8T97jAm6%~e1U1$ zrB3G5R3jc}zvcIL-#{}lM^4cqt++_;l!1YP&^jmqP74I3cG@c7qy!Yibr|vWL+4rO z40#UlK_cG858=fN1=qw4m!bBg+&V1M!NH+*n9XOVKW{J=c?&o_w!Hno?wl)3Nj{XR ztubcpi6&#LdLi{`s3BqH8;m}>gd=@@=N=M)L_OP=u=k#+-iIX> zS{i2CMXp}C{rFR4fyp`f806wWp~w16ds?Rv1-Sebh%7h9D)r=!T%d4>hyaCS z%UghfgppqO(Z;g8$Sp6$v?ouVoD~Ndrk*~;*1@5~ZPIk8L{yv@ilzY;2h@t~i_Yso znpnh*oou2lC91~{#}MbuEr6|%(Z|Zl>ZYXv%Vm&GZ;aL6W3_Q`0NxVoF@&@8b~dNm zg#qcn!~F|VggO5Y(b3)i6Lh3r72vI?jL2>sa@_)aG;kFIsR($dbyI^wj%Xao%dBl8 zB}C8x%>CYMSQMYhXXP78ogE7?hep%G5D|OQh zY=+_6kiW@sfb3GJdI*;KlLias`2#5^wwAh)s##IBBebIyK8C|xPEG;Yy z-1fKYf@*+a1b7=L!b~^P4fN}M0Z?{Uh4Z=fX$8@2+b^_vI4ZA0iO9iLAz!(uwla-# zS*r8%T5xy2N(nMrN6!%N{urMnp_u=* zRAwE87L_>(332YLE4wEG0P6$$5GClQZd_WJ1qZmt<{Bd}?;?Og0DixC@j?PUs9WKI zq!W`QW&~tw2t9Av1U026_4)JeV<7=xgBoDroMv0ufcU~f6+BbV{=mw7tqXllFAkqhH#?uY?TjoF%2Dk%x)~t1$3#)WU?bdgohV0bAK) z4|h)JJUGZ@&7`zma2+Y)({me(j?sSPm(1rhAi{@xZJGmc#5`WqA+m5aYARzMV7D#M zfjin}m>+Ho;#vSq1=sB(K8An810BGo|K@&~qxAm~Bf}BL$8TpRezWLN_2l4^@G8Ua z#^G{<@7=hQe~T6X%iw*(G+Cy)kV8+RX(rfo%`;tTwD~mj!=K%tPK;C-)&E$Gy z)9Jq$TaPFj{|3$dwOjSY_rSkIoBuY0_DeW9q!0hu2CLL~1kG@cSp!u1QBnmBQnz9h zX=T9gT~@3_qlFg7KqP+b5u+ng8UYjy9r;608~cN)4ZxCQo6ELq9RlQD)Q3Z>)B!1T zgf;;(`2P#mR>d_3?j57Fe^C}Et~gnqo6G!m z$^OsG8hEQ4g?dUnHZc(z2IKGn3Tu#J+MD40hs0;-_M{P(_vD16^HPEUpMM7=+)kaF zR+Z609>G+2tk;{VQSEdE!o_nC6PvzXh04mc0y$&vS&N_e8zKrt5n*MyvVX@B=*wZ6 z%aI858)A|8qJ^Miv)o1$bbdx1rL=wthD@(<$P2G9^%`c!&o`jdoC^|ettIuwhh%W>loX5z+Ay~ z<=9b!6(h89?&bTXXnrChd*@C6j!y3MT@Gz(MV8Cn-X)eJ^efBlOducQHdF68pAmGr z`^YMOWj_mX?-)0I1XY*1!)XVGNARQZc@ZD;KjI8ZLUTE9G%H^qj2h zV}K*;aKKT7KkK!_uy(D4a3Mi4OQ*nmq3EWO5p(NY_iGB*3{cqz(+!}5-|jC~ehcl& zUzR!t2)0D9$HINS08QEVBt3cm#V6Ro}$gEPWVb^LdEtbmLI#xi6nT5>m7!j)KG~%by0$zH z-3;-Aq*d9zMGK*?*I531uGmpJtxp-udZb?qI&k5a`o3iqt6p8ktB zN;c0QYduvQ5k$|w^EDvaDLpboSnx&P7x9F?R5|owzF_a+3#AT=9UW}PAb${PPLbcd`>`MB$6n^gZ@yD91SRTs2?(LU3x;P9$k%g~cgcT! zx$rMv8k{_AFZrwe69}R63;ah-|J>^SCceW$1g9t7x#NFd7X1F7KXGtM!&Er7c6CdY z7yTGgsFK#D&hoidk5Ps+C@2VMlqR$12_WwX|GbJvo%z6%6Y!AWG^Da{nV9EDzyJK* z|Hetdb^g`wKQHC)UHd;B4fE7R*OHOF{n}gl^&?h$pFhfpCa_LBFDLlH%MDi(eLWX| zxV))Fx82s(W_1_sp)0!D8PF2vHq`A-k%1faruZSbL+`ST5(x3w7KwA;?Dz5Sy)LEr zh%_uL41sb3oB7eZ?UEVU(Qf*F4i^BE>o#Srj@>uFMDI3glcV^kLuWmVC-6vH&Cx)@~ z>J^rI_bG;>uQo&)!5p_lwnFG^w^hdB{hm0q+(j{9?OG`sm+Oa)pka0$E6pCf3xE8Y z28MpZ$A$_m1{ZB&-@aY6rC&`3(q+U`x98dx7T}+Z{YDfo8PNi6@2b=Q0;(&juBL_U z#u;gReK8yB>cCYo?21N)bGo|%d60|KX?7+l_|b>YiHUk`)`Zi$E;`arDTUr#!p}+* zQ;67FQ=Spb{o8r{I$cp0REmtr_UO1=%if9r^={6-q!P5OAUF4x)Ca$m*0Rw=Y33&} zJTGQ0fx$vo;J!(D`_VbCdz~QFk^1lgsPTJ5G0Qz#(uIQC&4^)9^BRqfdU6+=7A2_< zO_4(IY}XKjAK_3`k#!>(Vxe=52z>l$<&pLleXmSxiS>BhHR z@tf<1<{IHfEm0zRn0FT2O7)l5s`-c2m2ZS~@VGB-h;{ceAf3Twf?cS^Lcls;zw$F# z$ZCj(84ETjztjGB%n9r?N`e>J3|J_kOV$eQ=X+b7Fz;7aI%Ng6$7Z)$Vcgi<`st>< zjZUc#%K2$U;2{ktmo+jlL*&Hv%z?sH7hJrX6rxIJCy%}=H8*FNC>QUz3X@@9r$*Np38;-?g{5S5Z-c>xh6a>VoKo zLIV;vSi&B!d9I>gha9 z>!YGNCCM|se7UpvX@|qnoz%Aq?AnjoyV7@S0UwtfWJpFMboTFC^m5u46i9to7s%O? z=0dJcjyTM9nT&evbCu=9$E2Mw&y;Sh(dH_ zUNl*ET?)tj#FCQgyoyLH%2OEmBfAu}5mNEw!vq+v^Q5(T zE#;%>E4}Pbi@todnQwT$+Js+k{XA*sdoxYcE1p*u^bT1q+Vit(tU73GFRDVnq@`(; zI%t2m3hs8rPEBzf9>VMPFJg>(i_FEKSuuNd>K9(<$ zfrr1OWn^fV?;>xFUoTtP`BA!5GB1Q?A6y;emSxy)tti_{nB|rev~J_~Yy<0fs9dpE zOIgkF&TP#%gR6N9AmN9T>P1I3O^vm6JhmxBTy`z$gLx+zdb6}}vqo{@4E!u=OR9*y z4jzl%a_wzS_P22N4XdzFH z!qp@dNe24~usrJn>2O%;3s!)JhnI`-K*7&#t>Fw?rwx7}aY}1bxM|x~ zxaQtUQEn2&yrXfh`oa*_YoAc|4kn&3pti%dRYc5gCT&uvB&p?MxzkDq+%j5OLqlMu z=p~44S?V_c*4jxRLW9Nm_`}49ii+iqA9d@qw$EB)v7b!@vF-J83L6V#1v+x|>y4(wuv1zAg9tN(>BbxpZgOd0AloFW9P{%B z5k1Cxhk>5gey-r-b(zSU){1HBJK%`{X-e5LA3o>iu6G7VqQ9=S0Qao0{tmpv5#5s* zQM-ANfHg5w4MSVIreF=rcv?DlrmXL<@(Q)SoPA08-}4@Z`k`EO|LJIoN#$B5e0v@Ig;#@pvn;1^uM69`njVkMBf z6=}X+)E=RYs!?ion`mdOmN-vRE9&k7P3NvGG zjSnCNhb_^?_=aD>i0|0N?@Zj4;Bg$+yS^qhf#fi&DV@SyP$q%-pZmqv+RZDWso zh17@7Ciu6&jZ?TTj&b-kZGs>v8t%I*QQu|Gjdv+3555MupoVGl_} z4d20HDL)=yxPjCW8O%5794J4YkxX5M(Eo+cP{IVOsmeE!O&Dc5#Thv+NdJYTfK|li zyD0uzw+ce;a(O~k*0PU3(+Yc>ES~TSdgZFKJIsESl!g;Syec3jHi z_`08w_!;;sPFV^5`uu^{HHh!wAFe_93jf5cKaK-r2DwXo3_PytKL`A0l>Rd{{<9wb o6E*%5D*uxo{+mg$3U_SL?)Deu&Am5Z)zfA;Es0V2<$9RL6T literal 21331 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 diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-firefox-linux.png b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-firefox-linux.png index 0abfd380294c34b3c8afbb884c320fb7b7544593..6e8f19d551e4e8b1889cf18998289d97d4f8eeb6 100644 GIT binary patch literal 42385 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 literal 42398 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 diff --git a/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-webkit-linux.png b/semcore/data-table/__tests__/data-table-accordion.browser-test.tsx-snapshots/Accordion-in-table-Verify-accordion-with-table-in-table-and-fixed-column-1-webkit-linux.png index b21ceca0d671e3889324d9b2e198d331a552b2e1..d72dcfdc5c46c074f3b72094ae302c9dd832555c 100644 GIT binary patch literal 20424 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 Ivd`cA59lNw?f?J) literal 20420 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 diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index d878d5c7a8..d67a635b1f 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -65,7 +65,7 @@ export class AccordionRows extends Reac if (this.props.tableRef.current) { this.tableObserver.observe(this.props.tableRef.current); } - }, 500); + }, 500); // need this for wait until all columns width will be calculated } componentWillUnmount(): void { From d1b005f4af488cdb098c8b3423cc7970e43ca914 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 24 Oct 2025 10:46:58 +0200 Subject: [PATCH 18/21] [data-table] UIK-4435 --- semcore/data-table/src/components/Body/Row.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/semcore/data-table/src/components/Body/Row.tsx b/semcore/data-table/src/components/Body/Row.tsx index 142ffb52a2..722ecd6251 100644 --- a/semcore/data-table/src/components/Body/Row.tsx +++ b/semcore/data-table/src/components/Body/Row.tsx @@ -187,6 +187,8 @@ export class RowRoot extends Component< } onExpandRow(row); + this.forceUpdate(this.asProps.calculateAriaRowIndex); + if (this.state.accordionRows !== undefined) { const accordionRows = Array.isArray(row[ACCORDION]) ? row[ACCORDION] : []; @@ -212,8 +214,6 @@ export class RowRoot extends Component< }; changeAccordionRows(); - } else { - this.forceUpdate(this.asProps.calculateAriaRowIndex); } } }; From cda307c5d90a56f2419886107e67ffa61117c6b9 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 24 Oct 2025 11:14:04 +0200 Subject: [PATCH 19/21] [data-table] UIK-4434 fixed example - for correct expand-collapse in toggle mode --- .../data-table/advanced/examples/accordion_with_many_rows.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx index 783a0feeed..8594b21ad3 100644 --- a/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx +++ b/stories/components/data-table/advanced/examples/accordion_with_many_rows.tsx @@ -144,7 +144,7 @@ const data = [ ], }, { - keyword: 'www.ebay.com', + keyword: 'www.ebay.com11', kd: '10', cpc: '$0.65', vol: '47,354,640', From ef34eacf37d8ecc20223134b08efae8646666915 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 24 Oct 2025 11:34:43 +0200 Subject: [PATCH 20/21] [data-table] UIK-4439 --- .../data-table/src/components/AccordionRows/AccordionRows.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index d67a635b1f..2a2ab71dc0 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -197,7 +197,7 @@ export class AccordionRows extends Reac if (width === undefined) { gridTemplateColumns.push('auto'); } else { - gridTemplateColumns.push(`${width}px`); + gridTemplateColumns.push(`min-max(0, ${width}px)`); } }); accordionRows.style.setProperty('grid-template-columns', gridTemplateColumns.join(' ')); From 98874bfc8a3e933bd3c792d7d365d9cbf29aac52 Mon Sep 17 00:00:00 2001 From: "ilia.brauer" Date: Fri, 24 Oct 2025 13:34:04 +0200 Subject: [PATCH 21/21] [data-table] fixed accordion rows tempale columns --- .../AccordionRows/AccordionRows.tsx | 65 ------------------- .../src/components/Body/style.shadow.css | 1 + 2 files changed, 1 insertion(+), 65 deletions(-) diff --git a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx index 2a2ab71dc0..f07948192c 100644 --- a/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx +++ b/semcore/data-table/src/components/AccordionRows/AccordionRows.tsx @@ -47,31 +47,10 @@ type State = { export class AccordionRows extends React.PureComponent, State> { accordionRowsRef = React.createRef(); - tableObserver: ResizeObserver; - tableWidth: number = 0; - state: State = { maxHeight: 0, }; - constructor(props: AccordionRowsProps) { - super(props); - - this.tableObserver = new ResizeObserver(this.handleTableResize); - } - - componentDidMount(): void { - setTimeout(() => { - if (this.props.tableRef.current) { - this.tableObserver.observe(this.props.tableRef.current); - } - }, 500); // need this for wait until all columns width will be calculated - } - - componentWillUnmount(): void { - this.tableObserver.disconnect(); - } - componentDidUpdate(prevProps: Readonly>): void { const { expanded, rows, expandedForAnimation } = this.props; @@ -160,48 +139,4 @@ export class AccordionRows extends Reac , ); } - - private handleTableResize = trottle(() => { - this.calculateGridSettings(); - }); - - private calculateGridSettings() { - const { tableRef } = this.props; - const tableElement = tableRef.current; - const currentWidth = tableElement?.getBoundingClientRect().width; - - if (currentWidth === this.tableWidth) { - return; - } - - requestAnimationFrame(() => { - this.tableWidth = currentWidth ?? 0; - const tableStyles = tableElement?.style; - const header = tableElement?.querySelector('[data-ui-name="DataTable.Head"]'); - const accordionRows = this.accordionRowsRef.current; - - if (tableStyles && header && accordionRows) { - let gridTemplateAreas = ''; - - for (let i = 0; i < tableStyles.length; i++) { - const key = tableStyles[i]; - if (key.startsWith('--gridTemplateAreas')) { - gridTemplateAreas = tableStyles.getPropertyValue(key); - accordionRows.style.setProperty(key, gridTemplateAreas); - } - } - const gridTemplateColumns: string[] = []; - gridTemplateAreas.split(' ').forEach((templateArea) => { - const headerCell = header.querySelector(`[role="columnheader"][name="${templateArea}"]`); - const width = headerCell?.getBoundingClientRect().width; - if (width === undefined) { - gridTemplateColumns.push('auto'); - } else { - gridTemplateColumns.push(`min-max(0, ${width}px)`); - } - }); - accordionRows.style.setProperty('grid-template-columns', gridTemplateColumns.join(' ')); - } - }); - } } diff --git a/semcore/data-table/src/components/Body/style.shadow.css b/semcore/data-table/src/components/Body/style.shadow.css index 71a89c716c..7583173075 100644 --- a/semcore/data-table/src/components/Body/style.shadow.css +++ b/semcore/data-table/src/components/Body/style.shadow.css @@ -10,6 +10,7 @@ SAccordionRows { transition-property: max-height; transition-duration: var(--duration); transition-timing-function: linear; + grid-template-columns: subgrid; } SBody[compact] {