@semcore/data-table 4.42.0 → 4.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Head.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","SortDesc","SortAsc","callAllEventHandlers","flattenColumns","getFixedStyle","getScrollOffsetValue","logger","setRef","cssToIntDefault","SORT_ICON_WIDTH","SORTING_ICON","desc","asc","ariaSort","displayContents","display","Head","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","Map","name","event","asProps","$onSortClick","key","preventDefault","active","ref","sortWrapperRefs","set","column","props","forwardRef","getAttribute","calculateMinWidth","node","defaultWidths","has","wMin","wMax","w","computedStyle","window","getComputedStyle","minWidth","getPropertyValue","computedWidth","_this$defaultWidths$g","_this$defaultWidths$g2","clonedColumn","document","createElement","childNodes","forEach","get","append","cloneNode","style","setProperty","styles","getPropertyPriority","body","appendChild","Math","ceil","getBoundingClientRect","width","removeChild","defaultNodeWidth","freeSpace","_this$defaultWidths$g3","defaultNodeMinWidth","_createClass","value","renderColumns","columns","_this2","map","renderColumn","_ref2","_column$columns","_this$asProps","use","hidden","uid","SColumn","SHead","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","undefined","isGroup","cSize","_getFixedStyle","_getFixedStyle2","_slicedToArray","_objectSpread","flexBasis","flex","setVar","varWidth","cn","fixed","resizable","borderLeft","borderRight","makeColumnRefHandler","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","Fragment","children","makeSortRefHandler","render","_ref","_ref3","SHeadWrapper","_this$asProps2","Children","columnsChildren","onResize","$scrollRef","sticky","withScrollBar","animationsDisabled","_getScrollOffsetValue","_getScrollOffsetValue2","offsetLeftSum","offsetRightSum","warn","displayName","Container","role","tabIndex","zIndex","_assignProps","Boolean","Bar","orientation","origin"],"sources":["../../src/Head.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';\nimport type { Column } from './types';\nimport logger from '@semcore/utils/lib/logger';\nimport { setRef } from '@semcore/utils/lib/ref';\nimport cssToIntDefault from '@semcore/utils/lib/cssToIntDefault';\n\nexport const SORT_ICON_WIDTH = 20;\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\nconst displayContents = { display: 'contents' };\n\ntype AsProps = {\n $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;\n $scrollRef: (instance: unknown) => void;\n use: 'primary' | 'secondary';\n columnsChildren: Column[];\n onResize: ResizeObserverCallback;\n sticky: boolean;\n ['data-ui-name']: string;\n uid?: string;\n withScrollBar?: boolean;\n animationsDisabled?: boolean;\n};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\n\n sortWrapperRefs = new Map<Node, boolean>();\n defaultWidths = new Map<Node, { minWidth: number; computedWidth: number }>();\n\n bindHandlerSortClick = (name: string) => (event: React.MouseEvent) => {\n this.asProps.$onSortClick(name, event);\n };\n\n bindHandlerKeyDown = (name: string) => (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.asProps.$onSortClick(name, event);\n }\n };\n\n makeSortRefHandler = (active: boolean) => (ref: HTMLElement | null) => {\n if (ref) {\n this.sortWrapperRefs.set(ref, active);\n }\n };\n\n makeColumnRefHandler = (column: Column) => (ref: HTMLElement | null) => {\n setRef(column.props.ref, ref);\n if (column.props.forwardRef) {\n setRef(column.props.forwardRef, ref);\n }\n\n if (ref && ref.getAttribute('scope') === 'col') {\n this.calculateMinWidth(ref, column);\n }\n };\n\n calculateMinWidth = (node: HTMLElement, column: Column) => {\n if (\n !this.defaultWidths.has(node) &&\n (column.props.wMin || column.props.wMax || column.props.w)\n ) {\n const computedStyle = window.getComputedStyle(node);\n\n this.defaultWidths.set(node, {\n minWidth: cssToIntDefault(computedStyle.getPropertyValue('min-width')),\n computedWidth: cssToIntDefault(computedStyle.getPropertyValue('width')),\n });\n }\n\n if (column.active) {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (!this.sortWrapperRefs.get(node)) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.defaultWidths.get(node)?.computedWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n node.style.setProperty('min-width', defaultNodeWidth + SORT_ICON_WIDTH + 'px');\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n node.style.setProperty('min-width', computedWidth + SORT_ICON_WIDTH + 'px');\n }\n }\n } else if (this.defaultWidths.has(node)) {\n const defaultNodeMinWidth = this.defaultWidths.get(node)?.minWidth;\n\n node.style.setProperty('min-width', defaultNodeMinWidth + 'px');\n }\n };\n\n renderColumns(columns: Column[], width: number) {\n return columns.map((column) => this.renderColumn(column, width));\n }\n\n renderColumn(column: Column, width: number) {\n const { styles, use, hidden, uid } = this.asProps;\n const SColumn = Flex as any;\n const SHead = Box;\n const SSortWrapper = 'div';\n const SSortIcon = SORTING_ICON[column.sortDirection];\n const ariaSortValue =\n column.sortable && column.active ? ariaSort[column.sortDirection] : undefined;\n const isGroup = column.columns?.length > 0;\n const cSize = isGroup ? flattenColumns(column.columns).length : 1;\n const [name, value] = getFixedStyle(column, this.columns);\n\n const style = {\n flexBasis: column.props.flex === undefined && `${width * cSize}%`,\n ...column.props.style,\n };\n\n if (name !== undefined && value !== undefined) {\n style[name] = value;\n }\n\n if (!column.setVar) {\n style['flexBasis'] = `var(${column.varWidth})`;\n }\n\n return sstyled(styles)(\n <SColumn\n role={isGroup ? undefined : 'columnheader'}\n scope={isGroup ? 'colgroup' : 'col'}\n key={column.name}\n id={`igc-table-${uid}-${column.name}`}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n borderLeft={isGroup ? false : column.borderLeft}\n borderRight={isGroup ? false : column.borderRight}\n active={isGroup ? false : column.active}\n group={isGroup}\n tabIndex={column.sortable ? 0 : undefined}\n __excludeProps={['hidden']}\n {...column.props}\n ref={this.makeColumnRefHandler(column)}\n onClick={callAllEventHandlers(\n column.props.onClick,\n column.sortable ? this.bindHandlerSortClick(column.name) : undefined,\n )}\n onKeyDown={callAllEventHandlers(\n column.props.onKeyDown,\n column.sortable ? this.bindHandlerKeyDown(column.name) : undefined,\n )}\n style={style}\n hidden={hidden}\n aria-sort={ariaSortValue}\n >\n {isGroup ? (\n <>\n <SColumn\n role='columnheader'\n groupHead\n use={use}\n active={column.active}\n borderLeft={column.borderLeft}\n borderRight={column.borderRight}\n >\n <div>{column.props.children}</div>\n </SColumn>\n <SHead>{this.renderColumns(column.columns, 100 / cSize)}</SHead>\n </>\n ) : (\n <>\n {column.props.children}\n {column.sortable ? (\n <SSortWrapper ref={this.makeSortRefHandler(column.active)}>\n <SSortIcon />\n </SSortWrapper>\n ) : null}\n </>\n )}\n </SColumn>,\n );\n }\n\n render() {\n const SHead = Root;\n const SHeadWrapper = Box as any;\n const {\n Children,\n styles,\n columnsChildren,\n onResize,\n $scrollRef,\n sticky,\n withScrollBar,\n animationsDisabled,\n } = this.asProps;\n\n this.columns = flattenColumns(columnsChildren);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(this.columns);\n\n logger.warn(\n sticky,\n \"'sticky' property is deprecated, use '<Sticky/>' wrapper\",\n this.asProps['data-ui-name'] || Head.displayName,\n );\n\n return sstyled(styles)(\n <SHeadWrapper sticky={sticky} animationsDisabled={animationsDisabled}>\n <ScrollArea\n leftOffset={offsetLeftSum}\n rightOffset={offsetRightSum}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} role='rowgroup' tabIndex={-1} zIndex={2}>\n <SHead render={Box} role='row' aria-rowindex='1' __excludeProps={['hidden']}>\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n {Boolean(withScrollBar) && (\n <div style={displayContents} role='rowgroup'>\n <div style={displayContents} role='row'>\n <div style={displayContents} role='cell'>\n <ScrollArea.Bar orientation='horizontal' />\n </div>\n </div>\n </div>\n )}\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Head.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","SortDesc","SortAsc","callAllEventHandlers","flattenColumns","getFixedStyle","getScrollOffsetValue","logger","setRef","SORT_ICON_WIDTH","SORTING_ICON","desc","asc","ariaSort","displayContents","display","cssToIntDefault","value","defaultValue","arguments","length","undefined","result","parseFloat","Number","isNaN","Math","round","Head","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","Map","name","event","asProps","$onSortClick","key","preventDefault","active","ref","sortWrapperRefs","set","column","props","forwardRef","getAttribute","defaultWidths","has","computedStyle","window","getComputedStyle","minWidth","getPropertyValue","computedWidth","maxWidth","useForRecalculation","Boolean","sortSizeRecalculation","diff","exceptNode","lastMaxWidth","node","recalculatedNodes","forEach","push","setNodeMinWidth","_this$defaultWidths$g","_this$defaultWidths$g2","defaultNodeWidth","get","defaultNodeMinWidth","style","setProperty","diffPart","_this$defaultWidths$g3","_this$defaultWidths$g4","defaultNodeMaxWidth","removeProperty","_this$defaultWidths$g5","_this$defaultWidths$g6","clonedColumn","document","createElement","childNodes","append","cloneNode","styles","getPropertyPriority","body","appendChild","ceil","getBoundingClientRect","width","removeChild","changeMaxNodeWidth","freeSpace","_createClass","componentDidUpdate","_this2","activeColumn","columns","_column$props","changeSortSize","current","backToColumnDefaults","calculateActiveColumnMinWidth","renderColumns","_this3","map","renderColumn","_ref2","_column$columns","_this$asProps","use","hidden","uid","SColumn","SHead","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","isGroup","cSize","_getFixedStyle","_getFixedStyle2","_slicedToArray","warn","wMax","displayName","_objectSpread","flexBasis","flex","setVar","varWidth","cn","fixed","resizable","borderLeft","borderRight","makeColumnRefHandler","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","Fragment","children","makeSortRefHandler","render","_ref","_ref3","SHeadWrapper","_this$asProps2","Children","columnsChildren","onResize","$scrollRef","sticky","withScrollBar","animationsDisabled","_getScrollOffsetValue","_getScrollOffsetValue2","offsetLeftSum","offsetRightSum","Container","role","tabIndex","zIndex","_assignProps","Bar","orientation","origin"],"sources":["../../src/Head.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';\nimport type { Column } from './types';\nimport logger from '@semcore/utils/lib/logger';\nimport { setRef } from '@semcore/utils/lib/ref';\n\nexport const SORT_ICON_WIDTH = 20;\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\nconst displayContents = { display: 'contents' };\n\nfunction cssToIntDefault(value: string, defaultValue = 0) {\n let result = parseFloat(value);\n if (Number.isNaN(result)) {\n result = defaultValue;\n }\n\n return Math.round(result);\n}\n\ntype AsProps = {\n $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;\n $scrollRef: (instance: unknown) => void;\n use: 'primary' | 'secondary';\n columnsChildren: Column[];\n onResize: ResizeObserverCallback;\n sticky: boolean;\n ['data-ui-name']: string;\n uid?: string;\n withScrollBar?: boolean;\n animationsDisabled?: boolean;\n};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\n\n sortWrapperRefs = new Map<Node, boolean>();\n defaultWidths = new Map<\n HTMLElement,\n {\n minWidth: number;\n maxWidth: number | null;\n computedWidth: number;\n useForRecalculation: boolean;\n }\n >();\n\n bindHandlerSortClick = (name: string) => (event: React.MouseEvent) => {\n this.asProps.$onSortClick(name, event);\n };\n\n bindHandlerKeyDown = (name: string) => (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.asProps.$onSortClick(name, event);\n }\n };\n\n makeSortRefHandler = (active: boolean) => (ref: HTMLElement | null) => {\n if (ref) {\n this.sortWrapperRefs.set(ref, active);\n }\n };\n\n makeColumnRefHandler = (column: Column) => (ref: HTMLElement | null) => {\n setRef(column.props.ref, ref);\n if (column.props.forwardRef) {\n setRef(column.props.forwardRef, ref);\n }\n\n if (ref && ref.getAttribute('scope') === 'col') {\n if (!this.defaultWidths.has(ref)) {\n const computedStyle = window.getComputedStyle(ref);\n\n this.defaultWidths.set(ref, {\n minWidth: cssToIntDefault(computedStyle.getPropertyValue('min-width')),\n computedWidth: cssToIntDefault(computedStyle.getPropertyValue('width')),\n maxWidth: cssToIntDefault(computedStyle.getPropertyValue('max-width')) || null,\n useForRecalculation: Boolean(column.props.sortSizeRecalculation),\n });\n }\n }\n };\n\n componentDidUpdate() {\n let activeColumn: HTMLElement | null = null;\n\n this.columns.forEach((column) => {\n const { changeSortSize, ref } = column.props;\n\n if (column.active && changeSortSize && ref.current) {\n activeColumn = ref.current;\n }\n\n if (ref.current) {\n this.backToColumnDefaults(ref.current);\n }\n });\n\n if (activeColumn) {\n this.calculateActiveColumnMinWidth(activeColumn);\n }\n }\n\n changeMaxNodeWidth = (diff: number, exceptNode: HTMLElement) => {\n let lastMaxWidth = 0;\n let node: HTMLElement | null = null;\n const recalculatedNodes: HTMLElement[] = [];\n\n this.defaultWidths.forEach((value, key) => {\n if (value.computedWidth > lastMaxWidth && key !== exceptNode) {\n node = key;\n lastMaxWidth = value.computedWidth;\n }\n if (value.useForRecalculation) {\n recalculatedNodes.push(key);\n }\n });\n\n const setNodeMinWidth = (node: HTMLElement, diff: number) => {\n const defaultNodeWidth = this.defaultWidths.get(node)?.computedWidth;\n const defaultNodeMinWidth = this.defaultWidths.get(node)?.minWidth;\n\n if (defaultNodeWidth) {\n const maxWidth = defaultNodeWidth - diff;\n node.style.setProperty('max-width', `${maxWidth}px`);\n\n if (defaultNodeMinWidth) {\n node.style.setProperty('min-width', `min(${maxWidth}px, ${defaultNodeMinWidth}px)`);\n }\n }\n };\n\n if (recalculatedNodes.length > 0) {\n const diffPart = diff / recalculatedNodes.length;\n\n recalculatedNodes.forEach((node) => {\n setNodeMinWidth(node, diffPart);\n });\n } else if (node !== null) {\n setNodeMinWidth(node, diff);\n }\n };\n\n backToColumnDefaults = (node: HTMLElement) => {\n const defaultNodeMinWidth = this.defaultWidths.get(node)?.minWidth;\n const defaultNodeMaxWidth = this.defaultWidths.get(node)?.maxWidth;\n\n node.style.setProperty('min-width', defaultNodeMinWidth + 'px');\n\n if (defaultNodeMaxWidth) {\n node.style.setProperty('max-width', defaultNodeMaxWidth + 'px');\n } else {\n node.style.removeProperty('max-width');\n }\n };\n\n calculateActiveColumnMinWidth = (node: HTMLElement) => {\n const clonedColumn = document.createElement('div');\n const computedStyle = window.getComputedStyle(node);\n\n node.childNodes.forEach((node) => {\n if (!this.sortWrapperRefs.get(node)) {\n clonedColumn.append(node.cloneNode(true));\n }\n });\n\n clonedColumn.style.setProperty('visibility', 'hidden', 'important');\n\n const styles = [\n 'display',\n 'flex',\n 'margin',\n 'padding',\n 'background',\n 'font-style',\n 'font-width',\n 'font-size',\n 'font-weight',\n ];\n\n styles.forEach((key) => {\n clonedColumn.style.setProperty(\n key,\n computedStyle.getPropertyValue(key),\n computedStyle.getPropertyPriority(key),\n );\n });\n\n clonedColumn.style.setProperty('width', 'fit-content', 'important');\n\n document.body.appendChild(clonedColumn);\n\n const computedWidth = Math.ceil(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.defaultWidths.get(node)?.computedWidth ?? 0;\n\n if (computedWidth >= defaultNodeWidth) {\n node.style.setProperty('min-width', defaultNodeWidth + SORT_ICON_WIDTH + 'px');\n this.changeMaxNodeWidth(SORT_ICON_WIDTH, node);\n } else {\n const freeSpace = defaultNodeWidth - computedWidth;\n\n if (freeSpace < SORT_ICON_WIDTH) {\n node.style.setProperty('min-width', computedWidth + SORT_ICON_WIDTH + 'px');\n this.changeMaxNodeWidth(freeSpace, node);\n }\n }\n };\n\n renderColumns(columns: Column[], width: number) {\n return columns.map((column) => this.renderColumn(column, width));\n }\n\n renderColumn(column: Column, width: number) {\n const { styles, use, hidden, uid } = this.asProps;\n const SColumn = Flex as any;\n const SHead = Box;\n const SSortWrapper = 'div';\n const SSortIcon = SORTING_ICON[column.sortDirection];\n const ariaSortValue =\n column.sortable && column.active ? ariaSort[column.sortDirection] : undefined;\n const isGroup = column.columns?.length > 0;\n const cSize = isGroup ? flattenColumns(column.columns).length : 1;\n const [name, value] = getFixedStyle(column, this.columns);\n\n logger.warn(\n column.props.wMax && column.props.sortSizeRecalculation,\n \"You can't use 'sortSizeRecalculation' property with 'wMax' property\",\n `${this.asProps['data-ui-name'] || Head.displayName}_column_${column.name}`,\n );\n\n const style = {\n flexBasis: column.props.flex === undefined && `${width * cSize}%`,\n ...column.props.style,\n };\n\n if (name !== undefined && value !== undefined) {\n style[name] = value;\n }\n\n if (!column.setVar) {\n style['flexBasis'] = `var(${column.varWidth})`;\n }\n\n return sstyled(styles)(\n <SColumn\n role={isGroup ? undefined : 'columnheader'}\n scope={isGroup ? 'colgroup' : 'col'}\n key={column.name}\n id={`igc-table-${uid}-${column.name}`}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n borderLeft={isGroup ? false : column.borderLeft}\n borderRight={isGroup ? false : column.borderRight}\n active={isGroup ? false : column.active}\n group={isGroup}\n tabIndex={column.sortable ? 0 : undefined}\n __excludeProps={['hidden']}\n {...column.props}\n ref={this.makeColumnRefHandler(column)}\n onClick={callAllEventHandlers(\n column.props.onClick,\n column.sortable ? this.bindHandlerSortClick(column.name) : undefined,\n )}\n onKeyDown={callAllEventHandlers(\n column.props.onKeyDown,\n column.sortable ? this.bindHandlerKeyDown(column.name) : undefined,\n )}\n style={style}\n hidden={hidden}\n aria-sort={ariaSortValue}\n >\n {isGroup ? (\n <>\n <SColumn\n role='columnheader'\n groupHead\n use={use}\n active={column.active}\n borderLeft={column.borderLeft}\n borderRight={column.borderRight}\n >\n <div>{column.props.children}</div>\n </SColumn>\n <SHead>{this.renderColumns(column.columns, 100 / cSize)}</SHead>\n </>\n ) : (\n <>\n {column.props.children}\n {column.sortable ? (\n <SSortWrapper ref={this.makeSortRefHandler(column.active)}>\n <SSortIcon />\n </SSortWrapper>\n ) : null}\n </>\n )}\n </SColumn>,\n );\n }\n\n render() {\n const SHead = Root;\n const SHeadWrapper = Box as any;\n const {\n Children,\n styles,\n columnsChildren,\n onResize,\n $scrollRef,\n sticky,\n withScrollBar,\n animationsDisabled,\n } = this.asProps;\n\n this.columns = flattenColumns(columnsChildren);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(this.columns);\n\n logger.warn(\n sticky,\n \"'sticky' property is deprecated, use '<Sticky/>' wrapper\",\n this.asProps['data-ui-name'] || Head.displayName,\n );\n\n return sstyled(styles)(\n <SHeadWrapper sticky={sticky} animationsDisabled={animationsDisabled}>\n <ScrollArea\n leftOffset={offsetLeftSum}\n rightOffset={offsetRightSum}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} role='rowgroup' tabIndex={-1} zIndex={2}>\n <SHead render={Box} role='row' aria-rowindex='1' __excludeProps={['hidden']}>\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n {Boolean(withScrollBar) && (\n <div style={displayContents} role='rowgroup'>\n <div style={displayContents} role='row'>\n <div style={displayContents} role='cell'>\n <ScrollArea.Bar orientation='horizontal' />\n </div>\n </div>\n </div>\n )}\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"mappings":"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"}
@@ -105,7 +105,7 @@ SColumn[sortable] {
105
105
  }
106
106
  &[justifyContent='right'][active] SSortWrapper {
107
107
  position: relative;
108
- flex-basis: calc(var(--intergalactic-spacing-1x, 4px) + 16px);
108
+ flex-basis: inherit;
109
109
  right: 0;
110
110
  }
111
111
 
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["ROW_GROUP"],"sources":["../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { ROW_GROUP } from './DataTable';\nimport { Property } from 'csstype';\nimport { FlexProps } from '@semcore/flex-box';\n\nexport type PseudoChildPropsGetter = (\n props: { [propName: string]: unknown },\n rowData: { [columnName: string]: unknown },\n index: number,\n) => { [propName: string]: unknown };\nexport type PropsLayer = {\n childrenPropsGetter?: PseudoChildPropsGetter;\n [propName: string]: unknown;\n};\n\nexport type SortDirection = 'asc' | 'desc';\nexport type Column<\n Props extends { [propName: string]: unknown } = { [propName: string]: unknown },\n> = {\n name: string;\n active: boolean;\n width: number;\n fixed?: 'left' | 'right';\n resizable?: boolean;\n sortable?: boolean | SortDirection;\n sortDirection: SortDirection;\n varWidth: string;\n setVar: boolean;\n data?: unknown;\n vBorders?: boolean;\n borderLeft?: boolean;\n borderRight?: boolean;\n props: {\n name: string;\n ref: React.RefObject<HTMLElement>;\n } & FlexProps &\n Partial<{\n flex: Property.Flex;\n onClick: (event: React.MouseEvent) => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n forwardRef: React.Ref<HTMLElement>;\n style: React.CSSProperties;\n fixed: 'left' | 'right';\n resizable: boolean;\n sortable: boolean | SortDirection;\n sortDirection: SortDirection;\n vBorders: boolean;\n borderLeft: Property.BorderLeft;\n borderRight: Property.BorderLeft;\n }> &\n Props;\n columns: Column[];\n parentColumns: Column[];\n};\nexport type Cell = Pick<Column, 'name' | 'fixed' | 'data'> & {\n cssVar: string | string[];\n cellPropsLayers: PropsLayer[];\n};\nexport type RowData<\n Data extends { [columnName: string]: unknown } = { [columnName: string]: unknown },\n> = Data &\n Partial<{\n name: string;\n [ROW_GROUP]: RowData[];\n }>;\nexport type NestedCells = (Cell | NestedCells)[] & { flatRowData?: RowData };\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,aAAa"}
1
+ {"version":3,"file":"types.js","names":["ROW_GROUP"],"sources":["../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { ROW_GROUP } from './DataTable';\nimport { Property } from 'csstype';\nimport { FlexProps } from '@semcore/flex-box';\n\nexport type PseudoChildPropsGetter = (\n props: { [propName: string]: unknown },\n rowData: { [columnName: string]: unknown },\n index: number,\n) => { [propName: string]: unknown };\nexport type PropsLayer = {\n childrenPropsGetter?: PseudoChildPropsGetter;\n [propName: string]: unknown;\n};\n\nexport type SortDirection = 'asc' | 'desc';\nexport type Column<\n Props extends { [propName: string]: unknown } = { [propName: string]: unknown },\n> = {\n name: string;\n active: boolean;\n width: number;\n fixed?: 'left' | 'right';\n resizable?: boolean;\n sortable?: boolean | SortDirection;\n sortDirection: SortDirection;\n varWidth: string;\n setVar: boolean;\n data?: unknown;\n vBorders?: boolean;\n borderLeft?: boolean;\n borderRight?: boolean;\n props: {\n name: string;\n ref: React.RefObject<HTMLElement>;\n } & FlexProps &\n Partial<{\n flex: Property.Flex;\n onClick: (event: React.MouseEvent) => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n forwardRef: React.Ref<HTMLElement>;\n style: React.CSSProperties;\n fixed: 'left' | 'right';\n resizable: boolean;\n sortable: boolean | SortDirection;\n sortDirection: SortDirection;\n vBorders: boolean;\n borderLeft: Property.BorderLeft;\n borderRight: Property.BorderLeft;\n changeSortSize?: boolean;\n sortSizeRecalculation?: boolean;\n }> &\n Props;\n columns: Column[];\n parentColumns: Column[];\n};\nexport type Cell = Pick<Column, 'name' | 'fixed' | 'data'> & {\n cssVar: string | string[];\n cellPropsLayers: PropsLayer[];\n};\nexport type RowData<\n Data extends { [columnName: string]: unknown } = { [columnName: string]: unknown },\n> = Data &\n Partial<{\n name: string;\n [ROW_GROUP]: RowData[];\n }>;\nexport type NestedCells = (Cell | NestedCells)[] & { flatRowData?: RowData };\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,aAAa"}
@@ -84,6 +84,16 @@ export type DataTableColumnProps = FlexProps & {
84
84
  borderRight?: boolean;
85
85
  /** Add vertical border to the left side of the cell */
86
86
  borderLeft?: boolean;
87
+ /**
88
+ * Enable changing column width with sort icon
89
+ * @default false
90
+ */
91
+ changeSortSize?: boolean;
92
+ /**
93
+ * Enable column to use as a column for recalculation width
94
+ * @default false (By default used first column with maximum width)
95
+ */
96
+ sortSizeRecalculation?: boolean;
87
97
  };
88
98
  /** @deprecated */
89
99
  export interface IDataTableBodyProps extends DataTableBodyProps, UnknownProperties {
@@ -18,15 +18,20 @@ declare class Head extends Component<AsProps> {
18
18
  columns: Column[];
19
19
  static displayName: string;
20
20
  sortWrapperRefs: Map<Node, boolean>;
21
- defaultWidths: Map<Node, {
21
+ defaultWidths: Map<HTMLElement, {
22
22
  minWidth: number;
23
+ maxWidth: number | null;
23
24
  computedWidth: number;
25
+ useForRecalculation: boolean;
24
26
  }>;
25
27
  bindHandlerSortClick: (name: string) => (event: React.MouseEvent) => void;
26
28
  bindHandlerKeyDown: (name: string) => (event: React.KeyboardEvent) => void;
27
29
  makeSortRefHandler: (active: boolean) => (ref: HTMLElement | null) => void;
28
30
  makeColumnRefHandler: (column: Column) => (ref: HTMLElement | null) => void;
29
- calculateMinWidth: (node: HTMLElement, column: Column) => void;
31
+ componentDidUpdate(): void;
32
+ changeMaxNodeWidth: (diff: number, exceptNode: HTMLElement) => void;
33
+ backToColumnDefaults: (node: HTMLElement) => void;
34
+ calculateActiveColumnMinWidth: (node: HTMLElement) => void;
30
35
  renderColumns(columns: Column[], width: number): React.ReactNode[];
31
36
  renderColumn(column: Column, width: number): React.ReactNode;
32
37
  render(): React.ReactNode;
@@ -48,6 +48,8 @@ export type Column<Props extends {
48
48
  vBorders: boolean;
49
49
  borderLeft: Property.BorderLeft;
50
50
  borderRight: Property.BorderLeft;
51
+ changeSortSize?: boolean;
52
+ sortSizeRecalculation?: boolean;
51
53
  }> & Props;
52
54
  columns: Column[];
53
55
  parentColumns: Column[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/data-table",
3
3
  "description": "Semrush DataTable Component",
4
- "version": "4.42.0",
4
+ "version": "4.43.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -9,10 +9,10 @@
9
9
  "author": "UI-kit team <ui-kit-team@semrush.com>",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@semcore/flex-box": "5.31.2",
13
- "@semcore/icon": "4.44.0",
14
- "@semcore/scroll-area": "5.35.0",
15
- "@semcore/utils": "4.32.2"
12
+ "@semcore/flex-box": "5.32.0",
13
+ "@semcore/icon": "4.44.1",
14
+ "@semcore/scroll-area": "5.36.0",
15
+ "@semcore/utils": "4.35.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/react": "18.0.21",