intergalactic 15.81.0-prerelease.4 → 15.82.0-prerelease.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +39 -33
  2. package/color-picker/lib/cjs/ColorPicker.js +23 -23
  3. package/color-picker/lib/cjs/PaletteManager.js +23 -23
  4. package/color-picker/lib/cjs/components/InputColor.js +23 -23
  5. package/color-picker/lib/es6/ColorPicker.js +23 -23
  6. package/color-picker/lib/es6/PaletteManager.js +23 -23
  7. package/color-picker/lib/es6/components/InputColor.js +23 -23
  8. package/components.json +19 -19
  9. package/d3-chart/lib/cjs/Area.js +11 -11
  10. package/d3-chart/lib/cjs/Axis.js +14 -14
  11. package/d3-chart/lib/cjs/Bar.js +10 -10
  12. package/d3-chart/lib/cjs/Bubble.js +12 -12
  13. package/d3-chart/lib/cjs/Donut.js +9 -9
  14. package/d3-chart/lib/cjs/Dots.js +8 -8
  15. package/d3-chart/lib/cjs/HorizontalBar.js +10 -10
  16. package/d3-chart/lib/cjs/Hover.js +3 -3
  17. package/d3-chart/lib/cjs/Line.js +9 -9
  18. package/d3-chart/lib/cjs/Plot.js +3 -3
  19. package/d3-chart/lib/cjs/Radar.js +19 -19
  20. package/d3-chart/lib/cjs/RadialTree.js +11 -11
  21. package/d3-chart/lib/cjs/ReferenceLine.js +9 -9
  22. package/d3-chart/lib/cjs/ScatterPlot.js +9 -9
  23. package/d3-chart/lib/cjs/Tooltip.js +9 -9
  24. package/d3-chart/lib/cjs/Venn.js +9 -9
  25. package/d3-chart/lib/cjs/a11y/PlotA11yModule.js +2 -2
  26. package/d3-chart/lib/cjs/a11y/PlotA11yView.js +2 -2
  27. package/d3-chart/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  28. package/d3-chart/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  29. package/d3-chart/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  30. package/d3-chart/lib/es6/Area.js +11 -11
  31. package/d3-chart/lib/es6/Axis.js +14 -14
  32. package/d3-chart/lib/es6/Bar.js +10 -10
  33. package/d3-chart/lib/es6/Bubble.js +12 -12
  34. package/d3-chart/lib/es6/Donut.js +9 -9
  35. package/d3-chart/lib/es6/Dots.js +8 -8
  36. package/d3-chart/lib/es6/HorizontalBar.js +10 -10
  37. package/d3-chart/lib/es6/Hover.js +3 -3
  38. package/d3-chart/lib/es6/Line.js +9 -9
  39. package/d3-chart/lib/es6/Plot.js +3 -3
  40. package/d3-chart/lib/es6/Radar.js +19 -19
  41. package/d3-chart/lib/es6/RadialTree.js +11 -11
  42. package/d3-chart/lib/es6/ReferenceLine.js +9 -9
  43. package/d3-chart/lib/es6/ScatterPlot.js +9 -9
  44. package/d3-chart/lib/es6/Tooltip.js +9 -9
  45. package/d3-chart/lib/es6/Venn.js +9 -9
  46. package/d3-chart/lib/es6/a11y/PlotA11yModule.js +2 -2
  47. package/d3-chart/lib/es6/a11y/PlotA11yView.js +2 -2
  48. package/d3-chart/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  49. package/d3-chart/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  50. package/d3-chart/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  51. package/data-table/Body.d.ts +1 -0
  52. package/data-table/DataTable.d.ts +4 -0
  53. package/data-table/Head.d.ts +7 -1
  54. package/data-table/lib/cjs/Body.js +13 -6
  55. package/data-table/lib/cjs/Body.js.map +1 -1
  56. package/data-table/lib/cjs/DataTable.js +70 -53
  57. package/data-table/lib/cjs/DataTable.js.map +1 -1
  58. package/data-table/lib/cjs/Head.js +63 -9
  59. package/data-table/lib/cjs/Head.js.map +1 -1
  60. package/data-table/lib/cjs/style/data-table.shadow.css +19 -6
  61. package/data-table/lib/cjs/types.js.map +1 -1
  62. package/data-table/lib/es6/Body.js +13 -6
  63. package/data-table/lib/es6/Body.js.map +1 -1
  64. package/data-table/lib/es6/DataTable.js +70 -53
  65. package/data-table/lib/es6/DataTable.js.map +1 -1
  66. package/data-table/lib/es6/Head.js +61 -8
  67. package/data-table/lib/es6/Head.js.map +1 -1
  68. package/data-table/lib/es6/style/data-table.shadow.css +19 -6
  69. package/data-table/lib/es6/types.js.map +1 -1
  70. package/data-table/lib/types/Body.d.ts +1 -0
  71. package/data-table/lib/types/DataTable.d.ts +4 -0
  72. package/data-table/lib/types/Head.d.ts +7 -1
  73. package/data-table/lib/types/types.d.ts +2 -4
  74. package/data-table/types.d.ts +2 -4
  75. package/date-picker/index.d.ts +6 -5
  76. package/date-picker/lib/cjs/MonthDateRangeComparator.js +6 -1
  77. package/date-picker/lib/cjs/MonthDateRangeComparator.js.map +1 -1
  78. package/date-picker/lib/cjs/components/Calendar.js +21 -21
  79. package/date-picker/lib/cjs/components/DateRangeComparatorAbstract.js +29 -29
  80. package/date-picker/lib/cjs/components/InputTrigger.js +48 -39
  81. package/date-picker/lib/cjs/components/InputTrigger.js.map +1 -1
  82. package/date-picker/lib/cjs/components/PickerAbstract.js +29 -29
  83. package/date-picker/lib/cjs/components/RangePickerAbstract.js +29 -29
  84. package/date-picker/lib/cjs/index.d.js.map +1 -1
  85. package/date-picker/lib/es6/MonthDateRangeComparator.js +6 -1
  86. package/date-picker/lib/es6/MonthDateRangeComparator.js.map +1 -1
  87. package/date-picker/lib/es6/components/Calendar.js +21 -21
  88. package/date-picker/lib/es6/components/DateRangeComparatorAbstract.js +29 -29
  89. package/date-picker/lib/es6/components/InputTrigger.js +48 -39
  90. package/date-picker/lib/es6/components/InputTrigger.js.map +1 -1
  91. package/date-picker/lib/es6/components/PickerAbstract.js +29 -29
  92. package/date-picker/lib/es6/components/RangePickerAbstract.js +29 -29
  93. package/date-picker/lib/es6/index.d.js.map +1 -1
  94. package/date-picker/lib/types/index.d.ts +6 -5
  95. package/dropdown/lib/cjs/Dropdown.js +2 -2
  96. package/dropdown/lib/es6/Dropdown.js +2 -2
  97. package/dropdown-menu/lib/cjs/DropdownMenu.js +16 -16
  98. package/dropdown-menu/lib/cjs/styleScrollArea.js +6 -6
  99. package/dropdown-menu/lib/es6/DropdownMenu.js +16 -16
  100. package/dropdown-menu/lib/es6/styleScrollArea.js +6 -6
  101. package/feature-popover/lib/cjs/FeaturePopover.js +10 -10
  102. package/feature-popover/lib/es6/FeaturePopover.js +10 -10
  103. package/inline-input/lib/cjs/InlineInput.js +18 -18
  104. package/inline-input/lib/es6/InlineInput.js +18 -18
  105. package/input/index.d.ts +1 -1
  106. package/input/lib/cjs/Input.js +29 -20
  107. package/input/lib/cjs/Input.js.map +1 -1
  108. package/input/lib/cjs/index.d.js.map +1 -1
  109. package/input/lib/es6/Input.js +29 -20
  110. package/input/lib/es6/Input.js.map +1 -1
  111. package/input/lib/es6/index.d.js.map +1 -1
  112. package/input/lib/types/index.d.ts +1 -1
  113. package/input-mask/lib/cjs/InputMask.js +6 -6
  114. package/input-mask/lib/es6/InputMask.js +6 -6
  115. package/input-number/lib/cjs/InputNumber.js +18 -9
  116. package/input-number/lib/cjs/InputNumber.js.map +1 -1
  117. package/input-number/lib/es6/InputNumber.js +18 -9
  118. package/input-number/lib/es6/InputNumber.js.map +1 -1
  119. package/input-tags/lib/cjs/InputTags.js +12 -12
  120. package/input-tags/lib/es6/InputTags.js +12 -12
  121. package/package.json +4 -4
  122. package/pagination/lib/cjs/Pagination.js +10 -10
  123. package/pagination/lib/es6/Pagination.js +10 -10
  124. package/popper/lib/cjs/Popper.js +21 -11
  125. package/popper/lib/cjs/Popper.js.map +1 -1
  126. package/popper/lib/es6/Popper.js +21 -11
  127. package/popper/lib/es6/Popper.js.map +1 -1
  128. package/select/lib/cjs/InputSearch.js +6 -6
  129. package/select/lib/cjs/Select.js +8 -8
  130. package/select/lib/es6/InputSearch.js +6 -6
  131. package/select/lib/es6/Select.js +8 -8
  132. package/tab-line/lib/cjs/TabLine.js +13 -14
  133. package/tab-line/lib/cjs/TabLine.js.map +1 -1
  134. package/tab-line/lib/es6/TabLine.js +13 -14
  135. package/tab-line/lib/es6/TabLine.js.map +1 -1
  136. package/tab-panel/lib/cjs/TabPanel.js +8 -9
  137. package/tab-panel/lib/cjs/TabPanel.js.map +1 -1
  138. package/tab-panel/lib/es6/TabPanel.js +8 -9
  139. package/tab-panel/lib/es6/TabPanel.js.map +1 -1
  140. package/time-picker/lib/cjs/TimePicker.js +12 -12
  141. package/time-picker/lib/es6/TimePicker.js +12 -12
  142. package/tooltip/lib/cjs/Tooltip.js +9 -9
  143. package/tooltip/lib/es6/Tooltip.js +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":["React","createComponent","Component","Root","sstyled","Box","syncScroll","callAllEventHandlers","fire","flattenColumns","Head","Body","uniqueIDEnhancement","style","_sstyled","insert","reversedSortDirection","desc","asc","defaultSortDirection","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","concat","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","createRef","event","column","find","active","sortDirection","forceUpdate","_this$tableRef","_this$tableRef$curren","tableRef","current","scrollIntoView","block","inline","behavior","scrollBodyRef","scrollHeadRef","_createClass","key","value","setVarStyle","_iterator","_createForOfIteratorHelper","_step","s","n","done","setVar","_this$tableRef$curren2","setProperty","varWidth","width","err","e","f","childrenToColumns","children","_this2","options","arguments","undefined","fixed","sort","asProps","columnsChildren","Children","forEach","child","_column$props","isValidElement","type","DefinitionTable","Column","_ref3","_ref3$fixed","resizable","sortable","flex","vBorders","_objectWithoutProperties","_excluded","lastColumnChildren","isGroup","some","c","map","_ref4","join","toArray","filter","columnChildren","_this$props$ref$curre","ref","getBoundingClientRect","_objectSpread","forwardRef","parentColumns","unshift","push","getHeadProps","_this$asProps","use","uid","$onSortClick","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","getBodyProps","_this$asProps2","data","uniqueKey","cellPropsLayers","rowPropsLayers","_ref5","other","_excluded2","Cell","split","childrenPropsGetter","Row","rows","dataToRows","_this3","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","_iterator2","_step2","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","flatMap","subRow","keys","cells","_groupByName$column$n","cssVar","flatRowData","componentDidMount","componentDidUpdate","render","_ref","_ref2","SDataTable","_this$asProps3","styles","createElement","cn","_assignProps","ComponentDefinition","wrapDataTable","wrapper","wrapDataTableRow","wrapDataTableCell"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, {\n Component,\n PropGetterFn,\n Root,\n sstyled,\n UnknownProperties,\n Intergalactic,\n} from '@semcore/core';\nimport { Box, BoxProps, FlexProps } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport type {\n Column,\n NestedCells,\n PropsLayer,\n PseudoChildPropsGetter,\n RowData,\n SortDirection,\n} from './types';\nimport Head from './Head';\nimport Body from './Body';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/data-table.shadow.css';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst defaultSortDirection: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;\\W]/g;\n\nconst createCssVarForWidth = (name: string) => {\n return `--${name.replace(cssVarReg, '_')}_width`;\n};\n\ntype AsProps = {\n use: 'primary' | 'secondary';\n sort: SortDirection[];\n data: RowData[];\n uniqueKey: string;\n uid?: string;\n};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n uid: string;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n uid: string;\n};\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort<Columns extends string | number | symbol = string> = [\n sortBy: Columns,\n sortDirection: 'desc' | 'asc',\n];\nexport type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';\nexport type DataTableUse = 'primary' | 'secondary';\nexport type DataTableRow = DataTableCell[];\nexport type DataTableCell = {\n /** Name of column */\n name: string;\n /** Data of column */\n data: React.ReactNode;\n [key: string]: unknown;\n};\n\n/** @deprecated */\nexport interface IDataTableProps<\n DataTableData extends { [key: string]: any }[] = UnknownProperties[],\n> extends DataTableProps<DataTableData> {}\nexport type DataTableProps<DataTableData extends { [key: string]: any }[] = UnknownProperties[]> =\n BoxProps & {\n /** Table theme according to visual hierarchy on the page\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData;\n /** Active sort object */\n sort?: DataTableSort<keyof DataTableData[0]>;\n /** Handler call when request will change sort */\n onSortChange?: (sort: DataTableSort<keyof DataTableData[0]>, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all dataset\n * @default id\n */\n uniqueKey?: keyof DataTableData[0];\n /** Make cells compact by changing left and right paddings to smaller ones*/\n compact?: boolean;\n };\n\n/** @deprecated */\nexport interface IDataTableHeadProps extends DataTableHeadProps, UnknownProperties {}\nexport type DataTableHeadProps = BoxProps & {\n /** Sticky table header\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll (as action) */\n disabledScroll?: boolean;\n\n /** Enable scroll bar element in header */\n withScrollBar?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableColumnProps extends DataTableColumnProps, UnknownProperties {}\nexport type DataTableColumnProps = FlexProps & {\n /** Unique column name */\n name?: string;\n /** Enable sorting for column. And if you are passing a string, you can also set the default sorting */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fix column on the left o right side of the table */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column */\n flex?: Property.Flex | 'inherit';\n /** Add vertical border to the column */\n vBorders?: boolean;\n /** Add vertical border to the right side of the cell */\n borderRight?: boolean;\n /** Add vertical border to the left side of the cell */\n borderLeft?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableBodyProps extends DataTableBodyProps, UnknownProperties {}\nexport type DataTableBodyProps = BoxProps & {\n /** Rows table */\n rows?: DataTableRow[];\n /** When enabled, only visually acessable rows are rendered.\n * `tollerance` property controls how many rows outside of viewport are render.\n * `rowHeight` fixes the rows height if it has known. If not provided, first row node height is measured.\n * @default { tollerance: 2 }\n */\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n /** Allows to redefine rows renderning for a very deep and even fragile customization like building custom virtual scrolling */\n renderRows?: (props: {\n rows: DataTableRow[];\n columns: Column[];\n renderRow: (row: DataTableRow, details: { dataIndex: number }) => React.ReactNode;\n }) => React.ReactNode;\n /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableRowProps extends DataTableRowProps, UnknownProperties {}\nexport type DataTableRowProps = BoxProps & {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Sets row state to active*/\n active?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableCellProps extends DataTableCellProps, UnknownProperties {}\nexport type DataTableCellProps<Name extends string = string> = FlexProps & {\n /** Unique name for column or columns separated by / */\n name: Name;\n /** Theme for cell */\n theme?: DataTableTheme;\n};\n\nfunction setBorderGroupColumns(columns: Column[], side?: string) {\n const firstColumn = columns[0];\n const lastColumn = columns[columns.length - 1];\n if (firstColumn && (!side || side === 'left')) {\n firstColumn.borderLeft = true;\n if (firstColumn.columns) {\n setBorderGroupColumns(firstColumn.columns, 'left');\n }\n }\n if (lastColumn && (!side || side === 'right')) {\n lastColumn.borderRight = true;\n if (lastColumn.columns) {\n setBorderGroupColumns(lastColumn.columns, 'right');\n }\n }\n}\n\nclass RootDefinitionTable extends Component<AsProps> {\n static displayName = 'DefinitionTable';\n\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n use: 'primary',\n uniqueKey: 'id',\n sort: [],\n data: [],\n } as AsProps;\n\n columns: Column[] = [];\n\n tableRef = React.createRef<HTMLElement>();\n scrollBodyRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n scrollHeadRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n\n constructor(props: AsProps) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name: string, event: React.MouseEvent) => {\n const column = this.columns.find((column) => column.name === name)!;\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? reversedSortDirection[column.sortDirection] : column.sortDirection,\n ],\n event,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns: Column[]) {\n for (const column of columns) {\n if (column.setVar) {\n this.tableRef.current?.style.setProperty(column.varWidth, `${column.width}px`);\n }\n }\n }\n\n childrenToColumns(\n children: React.ReactNode,\n options: { fixed?: 'left' | 'right' } = { fixed: undefined },\n ) {\n const { sort } = this.asProps;\n const columnsChildren: Column[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let {\n children,\n name,\n fixed = options.fixed,\n resizable,\n sortable,\n flex,\n vBorders,\n active,\n ...props\n } = child.props as Column['props'];\n const lastColumnChildren = columnsChildren[columnsChildren.length - 1];\n const isGroup = !name;\n let columns: Column[] | undefined;\n\n if (isGroup) {\n columns = this.childrenToColumns(children, { fixed });\n active = typeof active === 'boolean' ? active : columns.some((c) => c.active);\n\n if (vBorders) {\n setBorderGroupColumns(columns);\n }\n\n name = flattenColumns(columns)\n .map(({ name }) => name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((column) => column.name === name);\n const columnChildren = {\n get width() {\n // @ts-ignore\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n varWidth: createCssVarForWidth(name),\n setVar: flex !== 'inherit',\n fixed,\n resizable,\n active: typeof active === 'boolean' ? active : sort[0] === name,\n sortable,\n borderLeft: lastColumnChildren?.borderRight === true ? false : vBorders,\n borderRight: vBorders,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable === 'string' ? sortable : defaultSortDirection),\n props: {\n name,\n flex: flex === 'inherit' ? undefined : flex,\n ...props,\n // @ts-ignore\n forwardRef: child.ref,\n children,\n ref: column?.props?.ref || React.createRef(),\n },\n parentColumns: [],\n } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n columns.forEach((column) => column.parentColumns.unshift(columnChildren));\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use, uid } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n uid,\n };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey, uid } = this.asProps;\n const cellPropsLayers: { [columnName: string]: PropsLayer[] } = {};\n const rowPropsLayers: PropsLayer[] = [];\n\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props as {\n name?: string;\n children?: PseudoChildPropsGetter;\n } & { [propName: string]: unknown };\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n cellPropsLayers[name] = cellPropsLayers[name] || [];\n cellPropsLayers[name].push({\n ...other,\n childrenPropsGetter: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n rowPropsLayers.push({\n ...other,\n childrenPropsGetter: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n uniqueKey,\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n uid,\n };\n }\n\n dataToRows(data: RowData[], cellPropsLayers: { [columnName: string]: PropsLayer[] }) {\n const parseData = (data: RowData[], exclude: { [columnName: string]: true }) =>\n data.map((row) => {\n const groupByName: {\n [columnName: string]: {\n groupedColumns: string[];\n groupData: { [columnName: string]: unknown };\n };\n } = {};\n const columnsWithoutRowGroup: { [columnname: string]: true } = {};\n for (const rowKey in row) {\n const columnNames = rowKey.split('/');\n if (columnNames.length >= 2) {\n for (const column of columnNames) {\n groupByName[column] = {\n groupedColumns: columnNames,\n groupData: row[rowKey] as { [columnName: string]: unknown },\n };\n columnsWithoutRowGroup[column] = true;\n }\n } else {\n columnsWithoutRowGroup[rowKey] = true;\n }\n }\n\n const rowsGroup = row[ROW_GROUP] || [];\n const rowsGroupedNames = Object.fromEntries(\n rowsGroup\n .flatMap((subRow) => Object.keys(subRow))\n .flatMap((key) => key.split('/'))\n .map((key) => [key, true]),\n );\n\n let isGroup = false;\n\n const cells: NestedCells = this.columns\n .map((column) => {\n if (groupByName[column.name]) {\n const { groupedColumns, groupData } = groupByName[column.name];\n if (groupedColumns[0] === column.name) {\n return {\n name: groupedColumns.join('/'),\n cssVar: groupedColumns.map(createCssVarForWidth),\n fixed: column.fixed,\n data: groupData,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n } else if (column.name in row) {\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: row[column.name],\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n } else if (!isGroup && rowsGroupedNames[column.name]) {\n // TODO: make it work not only with first group\n isGroup = true;\n return parseData(rowsGroup, {\n ...exclude,\n ...columnsWithoutRowGroup,\n });\n } else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {\n // add empty cell if it is not present in data\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: null,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n })\n .filter((column) => column)\n .map((column) => column!);\n\n cells.flatRowData = row;\n return cells;\n });\n\n return parseData(data, {});\n }\n\n componentDidMount() {\n this.setVarStyle(this.columns);\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles, data } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable\n render={Box}\n __excludeProps={['data']}\n ref={this.tableRef}\n role='table'\n aria-rowcount={(data ?? []).length}\n >\n <Children />\n </SDataTable>,\n );\n }\n}\n\ntype DataTableCtx = {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n};\n\nfunction ComponentDefinition() {\n return null;\n}\n\ntype IntergalacticDataTableComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[],\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n DataTableProps<Data> & PropsExtending,\n DataTableCtx,\n never\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableProps>;\n\ntype IntergalacticDataTableRowComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[],\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<\n Tag,\n DataTableRowProps & {\n /**\n * That property is ONLY used for the component strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.\n */\n data?: Data;\n } & PropsExtending,\n DataTableCtx & { data: Data },\n [row: Data[0], index: number]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps>;\n\ntype IntergalacticDataTableCellComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[] = [],\n Name extends string = string,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<\n Tag,\n DataTableCellProps<Name> & {\n /**\n * That property is ONLY used for the componenct strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.\n */\n data?: Data;\n } & PropsExtending,\n DataTableCtx & { data: Data },\n [row: Data[0], index: number]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableCellProps>;\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as IntergalacticDataTableComponent & {\n Head: Intergalactic.Component<'div', DataTableHeadProps>;\n Body: Intergalactic.Component<'div', DataTableBodyProps>;\n Column: Intergalactic.Component<'div', DataTableColumnProps>;\n Row: IntergalacticDataTableRowComponent;\n Cell: IntergalacticDataTableCellComponent;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n\nexport const wrapDataTable = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableComponent<PropsExtending> => wrapper as any;\n\nexport const wrapDataTableRow = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableRowComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableRowComponent<PropsExtending> => wrapper as any;\n\nexport const wrapDataTableCell = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableCellComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableCellComponent<PropsExtending> => wrapper as any;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,eAAe,IACpBC,SAAS,EAETC,IAAI,EACJC,OAAO,QAGF,eAAe;AACtB,SAASC,GAAG,QAA6B,mBAAmB;AAC5D,OAAOC,UAAU,MAAM,+BAA+B;AACtD,SAASC,oBAAoB,QAAQ,gCAAgC;AACrE,OAAOC,IAAI,MAAM,yBAAyB;AAC1C,SAASC,cAAc,QAAQ,SAAS;AASxC,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,mBAAmB,MAAM,6BAA6B;AAAC;AAAA,IAAAC,KAAA,+BAAAC,QAAA,CAAAC,MAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AAI9D,IAAMC,qBAAsE,GAAG;EAC7EC,IAAI,EAAE,KAAK;EACXC,GAAG,EAAE;AACP,CAAC;AACD,IAAMC,oBAAmC,GAAG,MAAM;AAElD,IAAMC,SAAS,GAAGC,MAAM,CAAC,WAAW,CAAC;AAErC,IAAMC,SAAS,GAAG,SAAS;AAE3B,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,IAAY,EAAK;EAC7C,YAAAC,MAAA,CAAYD,IAAI,CAACE,OAAO,CAACJ,SAAS,EAAE,GAAG,CAAC;AAC1C,CAAC;AA8ID,SAASK,qBAAqBA,CAACC,OAAiB,EAAEC,IAAa,EAAE;EAC/D,IAAMC,WAAW,GAAGF,OAAO,CAAC,CAAC,CAAC;EAC9B,IAAMG,UAAU,GAAGH,OAAO,CAACA,OAAO,CAACI,MAAM,GAAG,CAAC,CAAC;EAC9C,IAAIF,WAAW,KAAK,CAACD,IAAI,IAAIA,IAAI,KAAK,MAAM,CAAC,EAAE;IAC7CC,WAAW,CAACG,UAAU,GAAG,IAAI;IAC7B,IAAIH,WAAW,CAACF,OAAO,EAAE;MACvBD,qBAAqB,CAACG,WAAW,CAACF,OAAO,EAAE,MAAM,CAAC;IACpD;EACF;EACA,IAAIG,UAAU,KAAK,CAACF,IAAI,IAAIA,IAAI,KAAK,OAAO,CAAC,EAAE;IAC7CE,UAAU,CAACG,WAAW,GAAG,IAAI;IAC7B,IAAIH,UAAU,CAACH,OAAO,EAAE;MACtBD,qBAAqB,CAACI,UAAU,CAACH,OAAO,EAAE,OAAO,CAAC;IACpD;EACF;AACF;AAAC,IAEKO,mBAAmB,0BAAAC,UAAA;EAAAC,SAAA,CAAAF,mBAAA,EAAAC,UAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,mBAAA;EAmBvB,SAAAA,oBAAYK,KAAc,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAP,mBAAA;IAC1BM,KAAA,GAAAH,MAAA,CAAAK,IAAA,OAAMH,KAAK;IAAEI,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,cAPK,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,4BAEXzC,KAAK,CAAC8C,SAAS,EAAe;IAAAF,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,oBACyB,IAAI;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,oBACJ,IAAI;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,uBAWnD,UAACjB,IAAY,EAAEuB,KAAuB,EAAK;MAC5D,IAAMC,MAAM,GAAGP,KAAA,CAAKb,OAAO,CAACqB,IAAI,CAAC,UAACD,MAAM;QAAA,OAAKA,MAAM,CAACxB,IAAI,KAAKA,IAAI;MAAA,EAAE;MACnE,OAAOhB,IAAI,CAAAqC,sBAAA,CAAAJ,KAAA,GAET,cAAc,EACd,CACEO,MAAM,CAACxB,IAAI,EACXwB,MAAM,CAACE,MAAM,GAAGlC,qBAAqB,CAACgC,MAAM,CAACG,aAAa,CAAC,GAAGH,MAAM,CAACG,aAAa,CACnF,EACDJ,KAAK,CACN;IACH,CAAC;IAAAH,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,oBAEe,YAAM;MACpBA,KAAA,CAAKW,WAAW,EAAE;IACpB,CAAC;IAAAR,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,iBAEY,YAAM;MAAA,IAAAY,cAAA,EAAAC,qBAAA;MACjB,CAAAD,cAAA,GAAAZ,KAAA,CAAKc,QAAQ,cAAAF,cAAA,wBAAAC,qBAAA,GAAbD,cAAA,CAAeG,OAAO,cAAAF,qBAAA,uBAAtBA,qBAAA,CAAwBG,cAAc,CAAC;QACrCC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE,SAAS;QACjBC,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC;IA7BC,IAAMd,SAAS,GAAGxC,UAAU,EAAE;IAC9B;IACAmC,KAAA,CAAKoB,aAAa,GAAGf,SAAS,CAAC,MAAM,CAAC;IACtCL,KAAA,CAAKqB,aAAa,GAAGhB,SAAS,CAAC,MAAM,CAAC;IAAC,OAAAL,KAAA;EACzC;EAACsB,YAAA,CAAA5B,mBAAA;IAAA6B,GAAA;IAAAC,KAAA,EA2BD,SAAAC,YAAYtC,OAAiB,EAAE;MAAA,IAAAuC,SAAA,GAAAC,0BAAA,CACRxC,OAAO;QAAAyC,KAAA;MAAA;QAA5B,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAA8B;UAAA,IAAnBxB,MAAM,GAAAqB,KAAA,CAAAJ,KAAA;UACf,IAAIjB,MAAM,CAACyB,MAAM,EAAE;YAAA,IAAAC,sBAAA;YACjB,CAAAA,sBAAA,OAAI,CAACnB,QAAQ,CAACC,OAAO,cAAAkB,sBAAA,uBAArBA,sBAAA,CAAuB7D,KAAK,CAAC8D,WAAW,CAAC3B,MAAM,CAAC4B,QAAQ,KAAAnD,MAAA,CAAKuB,MAAM,CAAC6B,KAAK,QAAK;UAChF;QACF;MAAC,SAAAC,GAAA;QAAAX,SAAA,CAAAY,CAAA,CAAAD,GAAA;MAAA;QAAAX,SAAA,CAAAa,CAAA;MAAA;IACH;EAAC;IAAAhB,GAAA;IAAAC,KAAA,EAED,SAAAgB,kBACEC,QAAyB,EAEzB;MAAA,IAAAC,MAAA;MAAA,IADAC,OAAqC,GAAAC,SAAA,CAAArD,MAAA,QAAAqD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG;QAAEE,KAAK,EAAED;MAAU,CAAC;MAE5D,IAAQE,IAAI,GAAK,IAAI,CAACC,OAAO,CAArBD,IAAI;MACZ,IAAME,eAAyB,GAAG,EAAE;MACpC1F,KAAK,CAAC2F,QAAQ,CAACC,OAAO,CAACV,QAAQ,EAAE,UAACW,KAAK,EAAK;QAAA,IAAAC,aAAA;QAC1C,IAAI,eAAC9F,KAAK,CAAC+F,cAAc,CAACF,KAAK,CAAC,EAAE;QAClC,IAAIA,KAAK,CAACG,IAAI,KAAKC,eAAe,CAACC,MAAM,EAAE;QAE3C,IAAAC,KAAA,GAUIN,KAAK,CAACrD,KAAK;UATb0C,QAAQ,GAAAiB,KAAA,CAARjB,QAAQ;UACR1D,IAAI,GAAA2E,KAAA,CAAJ3E,IAAI;UAAA4E,WAAA,GAAAD,KAAA,CACJZ,KAAK;UAALA,KAAK,GAAAa,WAAA,cAAGhB,OAAO,CAACG,KAAK,GAAAa,WAAA;UACrBC,SAAS,GAAAF,KAAA,CAATE,SAAS;UACTC,QAAQ,GAAAH,KAAA,CAARG,QAAQ;UACRC,IAAI,GAAAJ,KAAA,CAAJI,IAAI;UACJC,QAAQ,GAAAL,KAAA,CAARK,QAAQ;UACRtD,MAAM,GAAAiD,KAAA,CAANjD,MAAM;UACHV,KAAK,GAAAiE,wBAAA,CAAAN,KAAA,EAAAO,SAAA;QAEV,IAAMC,kBAAkB,GAAGjB,eAAe,CAACA,eAAe,CAAC1D,MAAM,GAAG,CAAC,CAAC;QACtE,IAAM4E,OAAO,GAAG,CAACpF,IAAI;QACrB,IAAII,OAA6B;QAEjC,IAAIgF,OAAO,EAAE;UACXhF,OAAO,GAAGuD,MAAI,CAACF,iBAAiB,CAACC,QAAQ,EAAE;YAAEK,KAAK,EAALA;UAAM,CAAC,CAAC;UACrDrC,MAAM,GAAG,OAAOA,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGtB,OAAO,CAACiF,IAAI,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC,CAAC5D,MAAM;UAAA,EAAC;UAE7E,IAAIsD,QAAQ,EAAE;YACZ7E,qBAAqB,CAACC,OAAO,CAAC;UAChC;UAEAJ,IAAI,GAAGf,cAAc,CAACmB,OAAO,CAAC,CAC3BmF,GAAG,CAAC,UAAAC,KAAA;YAAA,IAAGxF,IAAI,GAAAwF,KAAA,CAAJxF,IAAI;YAAA,OAAOA,IAAI;UAAA,EAAC,CACvByF,IAAI,CAAC,GAAG,CAAC;UACZ,IAAI,CAACrF,OAAO,CAACI,MAAM,EAAE;UACrBkD,QAAQ,GAAGlF,KAAK,CAAC2F,QAAQ,CAACuB,OAAO,CAAChC,QAAQ,CAAC,CAACiC,MAAM,CAChD,UAACtB,KAAK;YAAA,OAAK,EAAE,cAAA7F,KAAK,CAAC+F,cAAc,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,IAAI,KAAKC,eAAe,CAACC,MAAM,CAAC;UAAA,EACnF;QACH;QAEA,IAAMlD,MAAM,GAAGmC,MAAI,CAACvD,OAAO,CAACqB,IAAI,CAAC,UAACD,MAAM;UAAA,OAAKA,MAAM,CAACxB,IAAI,KAAKA,IAAI;QAAA,EAAC;QAClE,IAAM4F,cAAc,GAAG;UACrB,IAAIvC,KAAKA,CAAA,EAAG;YAAA,IAAAwC,qBAAA;YACV;YACA,OAAO,EAAAA,qBAAA,OAAI,CAAC7E,KAAK,CAAC8E,GAAG,CAAC9D,OAAO,cAAA6D,qBAAA,uBAAtBA,qBAAA,CAAwBE,qBAAqB,EAAE,CAAC1C,KAAK,KAAI,CAAC;UACnE,CAAC;UACDrD,IAAI,EAAJA,IAAI;UACJoD,QAAQ,EAAErD,oBAAoB,CAACC,IAAI,CAAC;UACpCiD,MAAM,EAAE8B,IAAI,KAAK,SAAS;UAC1BhB,KAAK,EAALA,KAAK;UACLc,SAAS,EAATA,SAAS;UACTnD,MAAM,EAAE,OAAOA,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGsC,IAAI,CAAC,CAAC,CAAC,KAAKhE,IAAI;UAC/D8E,QAAQ,EAARA,QAAQ;UACRrE,UAAU,EAAE,CAAA0E,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEzE,WAAW,MAAK,IAAI,GAAG,KAAK,GAAGsE,QAAQ;UACvEtE,WAAW,EAAEsE,QAAQ;UACrBrD,aAAa,EACXqC,IAAI,CAAC,CAAC,CAAC,KAAKhE,IAAI,GACZgE,IAAI,CAAC,CAAC,CAAC,GACP,CAAAxC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEG,aAAa,MACpB,OAAOmD,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGnF,oBAAoB,CAAC;UACtEqB,KAAK,EAAAgF,aAAA,CAAAA,aAAA;YACHhG,IAAI,EAAJA,IAAI;YACJ+E,IAAI,EAAEA,IAAI,KAAK,SAAS,GAAGjB,SAAS,GAAGiB;UAAI,GACxC/D,KAAK;YACR;YACAiF,UAAU,EAAE5B,KAAK,CAACyB,GAAG;YACrBpC,QAAQ,EAARA,QAAQ;YACRoC,GAAG,EAAE,CAAAtE,MAAM,aAANA,MAAM,wBAAA8C,aAAA,GAAN9C,MAAM,CAAER,KAAK,cAAAsD,aAAA,uBAAbA,aAAA,CAAewB,GAAG,kBAAItH,KAAK,CAAC8C,SAAS;UAAE,EAC7C;UACD4E,aAAa,EAAE;QACjB,CAAsB;QAEtB,IAAI9F,OAAO,EAAE;UACXwF,cAAc,CAACxF,OAAO,GAAGA,OAAO;UAChCA,OAAO,CAACgE,OAAO,CAAC,UAAC5C,MAAM;YAAA,OAAKA,MAAM,CAAC0E,aAAa,CAACC,OAAO,CAACP,cAAc,CAAC;UAAA,EAAC;QAC3E;QACA1B,eAAe,CAACkC,IAAI,CAACR,cAAc,CAAC;MACtC,CAAC,CAAC;MACF,OAAO1B,eAAe;IACxB;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAA4D,aAAarF,KAAkB,EAAE;MAC/B,IAAAsF,aAAA,GAAqB,IAAI,CAACrC,OAAO;QAAzBsC,GAAG,GAAAD,aAAA,CAAHC,GAAG;QAAEC,GAAG,GAAAF,aAAA,CAAHE,GAAG;MAChB,IAAMtC,eAAe,GAAG,IAAI,CAACT,iBAAiB,CAACzC,KAAK,CAAC0C,QAAQ,CAAC;MAE9D,IAAI,CAACtD,OAAO,GAAGnB,cAAc,CAACiF,eAAe,CAAC;MAC9C,OAAO;QACLuC,YAAY,EAAE1H,oBAAoB,CAAC,IAAI,CAAC2H,gBAAgB,EAAE,IAAI,CAACC,UAAU,CAAC;QAC1EzC,eAAe,EAAfA,eAAe;QACfqC,GAAG,EAAHA,GAAG;QACHK,QAAQ,EAAE,IAAI,CAACC,aAAa;QAC5BC,UAAU,EAAE,IAAI,CAACxE,aAAa;QAC9BkE,GAAG,EAAHA;MACF,CAAC;IACH;EAAC;IAAAhE,GAAA;IAAAC,KAAA,EAED,SAAAsE,aAAa/F,KAAkB,EAAE;MAC/B,IAAAgG,cAAA,GAAsC,IAAI,CAAC/C,OAAO;QAA1CgD,IAAI,GAAAD,cAAA,CAAJC,IAAI;QAAEV,GAAG,GAAAS,cAAA,CAAHT,GAAG;QAAEW,SAAS,GAAAF,cAAA,CAATE,SAAS;QAAEV,GAAG,GAAAQ,cAAA,CAAHR,GAAG;MACjC,IAAMW,eAAuD,GAAG,CAAC,CAAC;MAClE,IAAMC,cAA4B,GAAG,EAAE;MAEvC5I,KAAK,CAAC2F,QAAQ,CAACC,OAAO,CAACpD,KAAK,CAAC0C,QAAQ,EAAE,UAACW,KAAK,EAAK;QAChD,kBAAI7F,KAAK,CAAC+F,cAAc,CAACF,KAAK,CAAC,EAAE;UAC/B,IAAAgD,KAAA,GAAqChD,KAAK,CAACrD,KAAK;YAAxChB,IAAI,GAAAqH,KAAA,CAAJrH,IAAI;YAAE0D,QAAQ,GAAA2D,KAAA,CAAR3D,QAAQ;YAAK4D,KAAK,GAAArC,wBAAA,CAAAoC,KAAA,EAAAE,UAAA;UAIhC,IAAIlD,KAAK,CAACG,IAAI,KAAKC,eAAe,CAAC+C,IAAI,IAAIxH,IAAI,EAAE;YAC/CA,IAAI,CAACyH,KAAK,CAAC,GAAG,CAAC,CAACrD,OAAO,CAAC,UAACpE,IAAI,EAAK;cAChCmH,eAAe,CAACnH,IAAI,CAAC,GAAGmH,eAAe,CAACnH,IAAI,CAAC,IAAI,EAAE;cACnDmH,eAAe,CAACnH,IAAI,CAAC,CAACoG,IAAI,CAAAJ,aAAA,CAAAA,aAAA,KACrBsB,KAAK;gBACRI,mBAAmB,EAAEhE;cAAQ,GAC7B;YACJ,CAAC,CAAC;UACJ;UACA,IAAIW,KAAK,CAACG,IAAI,KAAKC,eAAe,CAACkD,GAAG,EAAE;YACtCP,cAAc,CAAChB,IAAI,CAAAJ,aAAA,CAAAA,aAAA,KACdsB,KAAK;cACRI,mBAAmB,EAAEhE;YAAQ,GAC7B;UACJ;QACF;MACF,CAAC,CAAC;MAEF,OAAO;QACLtD,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBwH,IAAI,EAAE,IAAI,CAACC,UAAU,CAACZ,IAAI,EAAEE,eAAe,CAAC;QAC5CD,SAAS,EAATA,SAAS;QACTX,GAAG,EAAHA,GAAG;QACHa,cAAc,EAAdA,cAAc;QACdN,UAAU,EAAE,IAAI,CAACzE,aAAa;QAC9BmE,GAAG,EAAHA;MACF,CAAC;IACH;EAAC;IAAAhE,GAAA;IAAAC,KAAA,EAED,SAAAoF,WAAWZ,IAAe,EAAEE,eAAuD,EAAE;MAAA,IAAAW,MAAA;MACnF,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAId,IAAe,EAAEe,OAAuC;QAAA,OACzEf,IAAI,CAAC1B,GAAG,CAAC,UAAC0C,GAAG,EAAK;UAChB,IAAMC,WAKL,GAAG,CAAC,CAAC;UACN,IAAMC,sBAAsD,GAAG,CAAC,CAAC;UACjE,KAAK,IAAMC,MAAM,IAAIH,GAAG,EAAE;YACxB,IAAMI,WAAW,GAAGD,MAAM,CAACX,KAAK,CAAC,GAAG,CAAC;YACrC,IAAIY,WAAW,CAAC7H,MAAM,IAAI,CAAC,EAAE;cAAA,IAAA8H,UAAA,GAAA1F,0BAAA,CACNyF,WAAW;gBAAAE,MAAA;cAAA;gBAAhC,KAAAD,UAAA,CAAAxF,CAAA,MAAAyF,MAAA,GAAAD,UAAA,CAAAvF,CAAA,IAAAC,IAAA,GAAkC;kBAAA,IAAvBxB,MAAM,GAAA+G,MAAA,CAAA9F,KAAA;kBACfyF,WAAW,CAAC1G,MAAM,CAAC,GAAG;oBACpBgH,cAAc,EAAEH,WAAW;oBAC3BI,SAAS,EAAER,GAAG,CAACG,MAAM;kBACvB,CAAC;kBACDD,sBAAsB,CAAC3G,MAAM,CAAC,GAAG,IAAI;gBACvC;cAAC,SAAA8B,GAAA;gBAAAgF,UAAA,CAAA/E,CAAA,CAAAD,GAAA;cAAA;gBAAAgF,UAAA,CAAA9E,CAAA;cAAA;YACH,CAAC,MAAM;cACL2E,sBAAsB,CAACC,MAAM,CAAC,GAAG,IAAI;YACvC;UACF;UAEA,IAAMM,SAAS,GAAGT,GAAG,CAACrI,SAAS,CAAC,IAAI,EAAE;UACtC,IAAM+I,gBAAgB,GAAGC,MAAM,CAACC,WAAW,CACzCH,SAAS,CACNI,OAAO,CAAC,UAACC,MAAM;YAAA,OAAKH,MAAM,CAACI,IAAI,CAACD,MAAM,CAAC;UAAA,EAAC,CACxCD,OAAO,CAAC,UAACtG,GAAG;YAAA,OAAKA,GAAG,CAACiF,KAAK,CAAC,GAAG,CAAC;UAAA,EAAC,CAChClC,GAAG,CAAC,UAAC/C,GAAG;YAAA,OAAK,CAACA,GAAG,EAAE,IAAI,CAAC;UAAA,EAAC,CAC7B;UAED,IAAI4C,OAAO,GAAG,KAAK;UAEnB,IAAM6D,KAAkB,GAAGnB,MAAI,CAAC1H,OAAO,CACpCmF,GAAG,CAAC,UAAC/D,MAAM,EAAK;YACf,IAAI0G,WAAW,CAAC1G,MAAM,CAACxB,IAAI,CAAC,EAAE;cAC5B,IAAAkJ,qBAAA,GAAsChB,WAAW,CAAC1G,MAAM,CAACxB,IAAI,CAAC;gBAAtDwI,cAAc,GAAAU,qBAAA,CAAdV,cAAc;gBAAEC,SAAS,GAAAS,qBAAA,CAATT,SAAS;cACjC,IAAID,cAAc,CAAC,CAAC,CAAC,KAAKhH,MAAM,CAACxB,IAAI,EAAE;gBACrC,OAAO;kBACLA,IAAI,EAAEwI,cAAc,CAAC/C,IAAI,CAAC,GAAG,CAAC;kBAC9B0D,MAAM,EAAEX,cAAc,CAACjD,GAAG,CAACxF,oBAAoB,CAAC;kBAChDgE,KAAK,EAAEvC,MAAM,CAACuC,KAAK;kBACnBkD,IAAI,EAAEwB,SAAS;kBACftB,eAAe,EAAEA,eAAe,CAAC3F,MAAM,CAACxB,IAAI,CAAC,IAAI;gBACnD,CAAC;cACH;YACF,CAAC,MAAM,IAAIwB,MAAM,CAACxB,IAAI,IAAIiI,GAAG,EAAE;cAC7B,OAAO;gBACLjI,IAAI,EAAEwB,MAAM,CAACxB,IAAI;gBACjBmJ,MAAM,EAAE3H,MAAM,CAAC4B,QAAQ;gBACvBW,KAAK,EAAEvC,MAAM,CAACuC,KAAK;gBACnBkD,IAAI,EAAEgB,GAAG,CAACzG,MAAM,CAACxB,IAAI,CAAC;gBACtBmH,eAAe,EAAEA,eAAe,CAAC3F,MAAM,CAACxB,IAAI,CAAC,IAAI;cACnD,CAAC;YACH,CAAC,MAAM,IAAI,CAACoF,OAAO,IAAIuD,gBAAgB,CAACnH,MAAM,CAACxB,IAAI,CAAC,EAAE;cACpD;cACAoF,OAAO,GAAG,IAAI;cACd,OAAO2C,SAAS,CAACW,SAAS,EAAA1C,aAAA,CAAAA,aAAA,KACrBgC,OAAO,GACPG,sBAAsB,EACzB;YACJ,CAAC,MAAM,IAAI,CAACH,OAAO,CAACxG,MAAM,CAACxB,IAAI,CAAC,IAAI,CAAC2I,gBAAgB,CAACnH,MAAM,CAACxB,IAAI,CAAC,EAAE;cAClE;cACA,OAAO;gBACLA,IAAI,EAAEwB,MAAM,CAACxB,IAAI;gBACjBmJ,MAAM,EAAE3H,MAAM,CAAC4B,QAAQ;gBACvBW,KAAK,EAAEvC,MAAM,CAACuC,KAAK;gBACnBkD,IAAI,EAAE,IAAI;gBACVE,eAAe,EAAEA,eAAe,CAAC3F,MAAM,CAACxB,IAAI,CAAC,IAAI;cACnD,CAAC;YACH;UACF,CAAC,CAAC,CACD2F,MAAM,CAAC,UAACnE,MAAM;YAAA,OAAKA,MAAM;UAAA,EAAC,CAC1B+D,GAAG,CAAC,UAAC/D,MAAM;YAAA,OAAKA,MAAM;UAAA,CAAC,CAAC;UAE3ByH,KAAK,CAACG,WAAW,GAAGnB,GAAG;UACvB,OAAOgB,KAAK;QACd,CAAC,CAAC;MAAA;MAEJ,OAAOlB,SAAS,CAACd,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5B;EAAC;IAAAzE,GAAA;IAAAC,KAAA,EAED,SAAA4G,kBAAA,EAAoB;MAClB,IAAI,CAAC3G,WAAW,CAAC,IAAI,CAACtC,OAAO,CAAC;IAChC;EAAC;IAAAoC,GAAA;IAAAC,KAAA,EAED,SAAA6G,mBAAA,EAAqB;MACnB,IAAI,CAAC5G,WAAW,CAAC,IAAI,CAACtC,OAAO,CAAC;IAChC;EAAC;IAAAoC,GAAA;IAAAC,KAAA,EAED,SAAA8G,OAAA,EAAS;MAAA,IAAAC,IAAA,QAAAvF,OAAA;QAAAwF,KAAA;MACP,IAAMC,UAAU,GAKJ7K,GAAG;MAJf,IAAA8K,cAAA,GAAmC,IAAI,CAAC1F,OAAO;QAAvCE,QAAQ,GAAAwF,cAAA,CAARxF,QAAQ;QAAEyF,MAAM,GAAAD,cAAA,CAANC,MAAM;QAAE3C,IAAI,GAAA0C,cAAA,CAAJ1C,IAAI;MAE9B,OAAAwC,KAAA,GAAO7K,OAAO,CAACgL,MAAM,CAAC,eACpBpL,KAAA,CAAAqL,aAAA,CAACH,UAAU,EAAAD,KAAA,CAAAK,EAAA,eAAA9D,aAAA,KAAA+D,YAAA;QAAA,kBAEO,CAAC,MAAM,CAAC;QAAA,OACnB,IAAI,CAAChI,QAAQ;QAAA,QACb,OAAO;QAAA,iBACG,CAACkF,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,EAAE,EAAEzG;MAAM,GAAAgJ,IAAA,kBAElChL,KAAA,CAAAqL,aAAA,CAAC1F,QAAQ,EAAAsF,KAAA,CAAAK,EAAA,iBAAG,CACD;IAEjB;EAAC;EAAA,OAAAnJ,mBAAA;AAAA,EAlT+BjC,SAAS;AAAA0C,eAAA,CAArCT,mBAAmB,iBACF,iBAAiB;AAAAS,eAAA,CADlCT,mBAAmB,WAGRtB,KAAK;AAAA+B,eAAA,CAHhBT,mBAAmB,aAIN,CAACvB,mBAAmB,EAAE,CAAC;AAAAgC,eAAA,CAJpCT,mBAAmB,kBAMD;EACpB4F,GAAG,EAAE,SAAS;EACdW,SAAS,EAAE,IAAI;EACflD,IAAI,EAAE,EAAE;EACRiD,IAAI,EAAE;AACR,CAAC;AA+SH,SAAS+C,mBAAmBA,CAAA,EAAG;EAC7B,OAAO,IAAI;AACb;AAqDA,IAAMvF,eAAe,GAAGhG,eAAe,CACrCkC,mBAAmB,EACnB;EACEzB,IAAI,EAAJA,IAAI;EACJC,IAAI,EAAJA,IAAI;EACJuF,MAAM,EAAEsF,mBAAmB;EAC3BxC,IAAI,EAAEwC,mBAAmB;EACzBrC,GAAG,EAAEqC;AACP,CAAC,EACD,CAAC,CAAC,CAOH;AAED,SAASpK,SAAS;AAClB,eAAe6E,eAAe;AAE9B,OAAO,IAAMwF,aAAa,GAAG,SAAhBA,aAAaA,CACxBC,OAKoB;EAAA,OACgCA,OAAO;AAAA,CAAO;AAEpE,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAC3BD,OAKoB;EAAA,OACmCA,OAAO;AAAA,CAAO;AAEvE,OAAO,IAAME,iBAAiB,GAAG,SAApBA,iBAAiBA,CAC5BF,OAKoB;EAAA,OACoCA,OAAO;AAAA,CAAO"}
1
+ {"version":3,"file":"DataTable.js","names":["React","createComponent","Component","Root","sstyled","Box","syncScroll","callAllEventHandlers","fire","flattenColumns","Head","Body","uniqueIDEnhancement","style","_sstyled","insert","reversedSortDirection","desc","asc","defaultSortDirection","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","concat","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","createRef","event","column","find","active","sortDirection","forceUpdate","_this$tableRef","_this$tableRef$curren","tableRef","current","scrollIntoView","block","inline","behavior","scrollBodyRef","scrollHeadRef","_createClass","key","value","setVarStyle","_this2","animations","flatMap","_column$props$ref$cur","_column$props$ref$cur2","ref","getAnimations","filter","a","undefined","animationPromise","Promise","resolve","all","map","animation","finished","then","_iterator","_createForOfIteratorHelper","_step","s","n","done","setVar","_this2$tableRef$curre","setProperty","varWidth","width","err","e","f","childrenToColumns","children","_this3","options","arguments","fixed","sort","asProps","columnsChildren","Children","forEach","child","_column$props","isValidElement","type","DefinitionTable","Column","_ref3","_ref3$fixed","resizable","sortable","flex","vBorders","_objectWithoutProperties","_excluded","lastColumnChildren","isGroup","some","c","_ref4","join","toArray","columnChildren","_this$props$ref$curre","getBoundingClientRect","_objectSpread","forwardRef","parentColumns","unshift","push","getHeadProps","_this$asProps","use","uid","$onSortClick","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","getBodyProps","_this$asProps2","data","uniqueKey","cellPropsLayers","rowPropsLayers","_ref5","other","_excluded2","Cell","split","childrenPropsGetter","Row","rows","dataToRows","_this4","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","_iterator2","_step2","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","cells","_groupByName$column$n","cssVar","flatRowData","componentDidMount","componentDidUpdate","render","_ref","_ref2","SDataTable","_this$asProps3","styles","createElement","cn","_assignProps","ComponentDefinition","wrapDataTable","wrapper","wrapDataTableRow","wrapDataTableCell"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, {\n Component,\n PropGetterFn,\n Root,\n sstyled,\n UnknownProperties,\n Intergalactic,\n} from '@semcore/core';\nimport { Box, BoxProps, FlexProps } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport type {\n Column,\n NestedCells,\n PropsLayer,\n PseudoChildPropsGetter,\n RowData,\n SortDirection,\n} from './types';\nimport Head from './Head';\nimport Body from './Body';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/data-table.shadow.css';\n\nconst reversedSortDirection: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst defaultSortDirection: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;\\W]/g;\n\nconst createCssVarForWidth = (name: string) => {\n return `--${name.replace(cssVarReg, '_')}_width`;\n};\n\ntype AsProps = {\n use: 'primary' | 'secondary';\n sort: SortDirection[];\n data: RowData[];\n uniqueKey: string;\n uid?: string;\n};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n uid: string;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n uid: string;\n};\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort<Columns extends string | number | symbol = string> = [\n sortBy: Columns,\n sortDirection: 'desc' | 'asc',\n];\nexport type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';\nexport type DataTableUse = 'primary' | 'secondary';\nexport type DataTableRow = DataTableCell[];\nexport type DataTableCell = {\n /** Name of column */\n name: string;\n /** Data of column */\n data: React.ReactNode;\n [key: string]: unknown;\n};\n\n/** @deprecated */\nexport interface IDataTableProps<\n DataTableData extends { [key: string]: any }[] = UnknownProperties[],\n> extends DataTableProps<DataTableData> {}\nexport type DataTableProps<DataTableData extends { [key: string]: any }[] = UnknownProperties[]> =\n BoxProps & {\n /** Table theme according to visual hierarchy on the page\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData;\n /** Active sort object */\n sort?: DataTableSort<keyof DataTableData[0]>;\n /** Handler call when request will change sort */\n onSortChange?: (sort: DataTableSort<keyof DataTableData[0]>, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all dataset\n * @default id\n */\n uniqueKey?: keyof DataTableData[0];\n /** Make cells compact by changing left and right paddings to smaller ones*/\n compact?: boolean;\n };\n\n/** @deprecated */\nexport interface IDataTableHeadProps extends DataTableHeadProps, UnknownProperties {}\nexport type DataTableHeadProps = BoxProps & {\n /** Sticky table header\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll (as action) */\n disabledScroll?: boolean;\n\n /** Enable scroll bar element in header */\n withScrollBar?: boolean;\n\n /** Disables column width change animation **/\n animationsDisabled?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableColumnProps extends DataTableColumnProps, UnknownProperties {}\nexport type DataTableColumnProps = FlexProps & {\n /** Unique column name */\n name?: string;\n /** Enable sorting for column. And if you are passing a string, you can also set the default sorting */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fix column on the left o right side of the table */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column */\n flex?: Property.Flex | 'inherit';\n /** Add vertical border to the column */\n vBorders?: boolean;\n /** Add vertical border to the right side of the cell */\n borderRight?: boolean;\n /** Add vertical border to the left side of the cell */\n borderLeft?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableBodyProps extends DataTableBodyProps, UnknownProperties {}\nexport type DataTableBodyProps = BoxProps & {\n /** Rows table */\n rows?: DataTableRow[];\n /** When enabled, only visually acessable rows are rendered.\n * `tollerance` property controls how many rows outside of viewport are render.\n * `rowHeight` fixes the rows height if it has known. If not provided, first row node height is measured.\n * @default { tollerance: 2 }\n */\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n /** Allows to redefine rows renderning for a very deep and even fragile customization like building custom virtual scrolling */\n renderRows?: (props: {\n rows: DataTableRow[];\n columns: Column[];\n renderRow: (row: DataTableRow, details: { dataIndex: number }) => React.ReactNode;\n }) => React.ReactNode;\n /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n\n /** Disables column width change animation **/\n animationsDisabled?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableRowProps extends DataTableRowProps, UnknownProperties {}\nexport type DataTableRowProps = BoxProps & {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Sets row state to active*/\n active?: boolean;\n};\n\n/** @deprecated */\nexport interface IDataTableCellProps extends DataTableCellProps, UnknownProperties {}\nexport type DataTableCellProps<Name extends string = string> = FlexProps & {\n /** Unique name for column or columns separated by / */\n name: Name;\n /** Theme for cell */\n theme?: DataTableTheme;\n};\n\nfunction setBorderGroupColumns(columns: Column[], side?: string) {\n const firstColumn = columns[0];\n const lastColumn = columns[columns.length - 1];\n if (firstColumn && (!side || side === 'left')) {\n firstColumn.borderLeft = true;\n if (firstColumn.columns) {\n setBorderGroupColumns(firstColumn.columns, 'left');\n }\n }\n if (lastColumn && (!side || side === 'right')) {\n lastColumn.borderRight = true;\n if (lastColumn.columns) {\n setBorderGroupColumns(lastColumn.columns, 'right');\n }\n }\n}\n\nclass RootDefinitionTable extends Component<AsProps> {\n static displayName = 'DefinitionTable';\n\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n use: 'primary',\n uniqueKey: 'id',\n sort: [],\n data: [],\n } as AsProps;\n\n columns: Column[] = [];\n\n tableRef = React.createRef<HTMLElement>();\n scrollBodyRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n scrollHeadRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n\n constructor(props: AsProps) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name: string, event: React.MouseEvent) => {\n const column = this.columns.find((column) => column.name === name)!;\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? reversedSortDirection[column.sortDirection] : column.sortDirection,\n ],\n event,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns: Column[]) {\n const animations = columns\n .flatMap((column) => column.props.ref.current?.getAnimations?.())\n .filter((a) => a !== undefined) as Animation[];\n\n let animationPromise: Promise<Animation[] | void> = Promise.resolve();\n\n if (animations.length > 0) {\n animationPromise = Promise.all(\n animations.map((animation) => {\n return animation.finished;\n }),\n );\n }\n\n animationPromise.then(() => {\n for (const column of columns) {\n if (column.setVar) {\n this.tableRef.current?.style.setProperty(column.varWidth, `${column.width}px`);\n }\n }\n });\n }\n\n childrenToColumns(\n children: React.ReactNode,\n options: { fixed?: 'left' | 'right' } = { fixed: undefined },\n ) {\n const { sort } = this.asProps;\n const columnsChildren: Column[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let {\n children,\n name,\n fixed = options.fixed,\n resizable,\n sortable,\n flex,\n vBorders,\n active,\n ...props\n } = child.props as Column['props'];\n const lastColumnChildren = columnsChildren[columnsChildren.length - 1];\n const isGroup = !name;\n let columns: Column[] | undefined;\n\n if (isGroup) {\n columns = this.childrenToColumns(children, { fixed });\n active = typeof active === 'boolean' ? active : columns.some((c) => c.active);\n\n if (vBorders) {\n setBorderGroupColumns(columns);\n }\n\n name = flattenColumns(columns)\n .map(({ name }) => name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((column) => column.name === name);\n const columnChildren = {\n get width() {\n // @ts-ignore\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n varWidth: createCssVarForWidth(name),\n setVar: flex !== 'inherit',\n fixed,\n resizable,\n active: typeof active === 'boolean' ? active : sort[0] === name,\n sortable,\n borderLeft: lastColumnChildren?.borderRight === true ? false : vBorders,\n borderRight: vBorders,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable === 'string' ? sortable : defaultSortDirection),\n props: {\n name,\n flex: flex === 'inherit' ? undefined : flex,\n ...props,\n // @ts-ignore\n forwardRef: child.ref,\n children,\n ref: column?.props?.ref || React.createRef(),\n },\n parentColumns: [],\n } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n columns.forEach((column) => column.parentColumns.unshift(columnChildren));\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use, uid } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n uid,\n };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey, uid } = this.asProps;\n const cellPropsLayers: { [columnName: string]: PropsLayer[] } = {};\n const rowPropsLayers: PropsLayer[] = [];\n\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props as {\n name?: string;\n children?: PseudoChildPropsGetter;\n } & { [propName: string]: unknown };\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n cellPropsLayers[name] = cellPropsLayers[name] || [];\n cellPropsLayers[name].push({\n ...other,\n childrenPropsGetter: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n rowPropsLayers.push({\n ...other,\n childrenPropsGetter: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n uniqueKey,\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n uid,\n };\n }\n\n dataToRows(data: RowData[], cellPropsLayers: { [columnName: string]: PropsLayer[] }) {\n const parseData = (data: RowData[], exclude: { [columnName: string]: true }) =>\n data.map((row) => {\n const groupByName: {\n [columnName: string]: {\n groupedColumns: string[];\n groupData: { [columnName: string]: unknown };\n };\n } = {};\n const columnsWithoutRowGroup: { [columnname: string]: true } = {};\n for (const rowKey in row) {\n const columnNames = rowKey.split('/');\n if (columnNames.length >= 2) {\n for (const column of columnNames) {\n groupByName[column] = {\n groupedColumns: columnNames,\n groupData: row[rowKey] as { [columnName: string]: unknown },\n };\n columnsWithoutRowGroup[column] = true;\n }\n } else {\n columnsWithoutRowGroup[rowKey] = true;\n }\n }\n\n const rowsGroup = row[ROW_GROUP] || [];\n const rowsGroupedNames = Object.fromEntries(\n rowsGroup\n .flatMap((subRow) => Object.keys(subRow))\n .flatMap((key) => key.split('/'))\n .map((key) => [key, true]),\n );\n\n let isGroup = false;\n\n const cells: NestedCells = this.columns\n .map((column) => {\n if (groupByName[column.name]) {\n const { groupedColumns, groupData } = groupByName[column.name];\n if (groupedColumns[0] === column.name) {\n return {\n name: groupedColumns.join('/'),\n cssVar: groupedColumns.map(createCssVarForWidth),\n fixed: column.fixed,\n data: groupData,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n } else if (column.name in row) {\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: row[column.name],\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n } else if (!isGroup && rowsGroupedNames[column.name]) {\n // TODO: make it work not only with first group\n isGroup = true;\n return parseData(rowsGroup, {\n ...exclude,\n ...columnsWithoutRowGroup,\n });\n } else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {\n // add empty cell if it is not present in data\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: null,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n })\n .filter((column) => column)\n .map((column) => column!);\n\n cells.flatRowData = row;\n return cells;\n });\n\n return parseData(data, {});\n }\n\n componentDidMount() {\n this.setVarStyle(this.columns);\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles, data } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable\n render={Box}\n __excludeProps={['data']}\n ref={this.tableRef}\n role='table'\n aria-rowcount={(data ?? []).length}\n >\n <Children />\n </SDataTable>,\n );\n }\n}\n\ntype DataTableCtx = {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n};\n\nfunction ComponentDefinition() {\n return null;\n}\n\ntype IntergalacticDataTableComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[],\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n DataTableProps<Data> & PropsExtending,\n DataTableCtx,\n never\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableProps>;\n\ntype IntergalacticDataTableRowComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[],\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<\n Tag,\n DataTableRowProps & {\n /**\n * That property is ONLY used for the component strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.\n */\n data?: Data;\n } & PropsExtending,\n DataTableCtx & { data: Data },\n [row: Data[0], index: number]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps>;\n\ntype IntergalacticDataTableCellComponent<PropsExtending extends {} = {}> = (<\n Data extends DataTableData[] = [],\n Name extends string = string,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<\n Tag,\n DataTableCellProps<Name> & {\n /**\n * That property is ONLY used for the componenct strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.\n */\n data?: Data;\n } & PropsExtending,\n DataTableCtx & { data: Data },\n [row: Data[0], index: number]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableCellProps>;\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as IntergalacticDataTableComponent & {\n Head: Intergalactic.Component<'div', DataTableHeadProps>;\n Body: Intergalactic.Component<'div', DataTableBodyProps>;\n Column: Intergalactic.Component<'div', DataTableColumnProps>;\n Row: IntergalacticDataTableRowComponent;\n Cell: IntergalacticDataTableCellComponent;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n\nexport const wrapDataTable = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableComponent<PropsExtending> => wrapper as any;\n\nexport const wrapDataTableRow = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableRowComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableRowComponent<PropsExtending> => wrapper as any;\n\nexport const wrapDataTableCell = <PropsExtending extends {}>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableCellComponent>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): IntergalacticDataTableCellComponent<PropsExtending> => wrapper as any;\n"],"mappings":"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"}
@@ -17,6 +17,8 @@ import { callAllEventHandlers } from 'intergalactic/utils/lib/assignProps';
17
17
  import { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';
18
18
  import logger from 'intergalactic/utils/lib/logger';
19
19
  import { setRef } from 'intergalactic/utils/lib/ref';
20
+ import cssToIntDefault from 'intergalactic/utils/lib/cssToIntDefault';
21
+ export var SORT_ICON_WIDTH = 20;
20
22
  var SORTING_ICON = {
21
23
  desc: SortDesc,
22
24
  asc: SortAsc
@@ -39,6 +41,8 @@ var Head = /*#__PURE__*/function (_Component) {
39
41
  }
40
42
  _this = _super.call.apply(_super, [this].concat(args));
41
43
  _defineProperty(_assertThisInitialized(_this), "columns", []);
44
+ _defineProperty(_assertThisInitialized(_this), "sortWrapperRefs", new Map());
45
+ _defineProperty(_assertThisInitialized(_this), "defaultMinWidths", new Map());
42
46
  _defineProperty(_assertThisInitialized(_this), "bindHandlerSortClick", function (name) {
43
47
  return function (event) {
44
48
  _this.asProps.$onSortClick(name, event);
@@ -52,14 +56,60 @@ var Head = /*#__PURE__*/function (_Component) {
52
56
  }
53
57
  };
54
58
  });
55
- _defineProperty(_assertThisInitialized(_this), "refColumn", function (props) {
59
+ _defineProperty(_assertThisInitialized(_this), "makeSortRefHandler", function (active) {
56
60
  return function (ref) {
57
- setRef(props.ref, ref);
58
- if (props.forwardRef) {
59
- setRef(props.forwardRef, ref);
61
+ if (ref) {
62
+ _this.sortWrapperRefs.set(ref, active);
60
63
  }
61
64
  };
62
65
  });
66
+ _defineProperty(_assertThisInitialized(_this), "makeColumnRefHandler", function (column) {
67
+ return function (ref) {
68
+ setRef(column.props.ref, ref);
69
+ if (column.props.forwardRef) {
70
+ setRef(column.props.forwardRef, ref);
71
+ }
72
+ if (ref && ref.getAttribute('scope') === 'col') {
73
+ _this.calculateMinWidth(ref, column);
74
+ }
75
+ };
76
+ });
77
+ _defineProperty(_assertThisInitialized(_this), "calculateMinWidth", function (node, column) {
78
+ if (!_this.defaultMinWidths.has(node) && (column.props.wMin || column.props.wMax || column.props.w)) {
79
+ var computedStyle = window.getComputedStyle(node);
80
+ _this.defaultMinWidths.set(node, cssToIntDefault(computedStyle.getPropertyValue('width')));
81
+ }
82
+ if (column.active) {
83
+ var _this$defaultMinWidth;
84
+ var clonedColumn = document.createElement('div');
85
+ var _computedStyle = window.getComputedStyle(node);
86
+ node.childNodes.forEach(function (node) {
87
+ if (!_this.sortWrapperRefs.get(node)) {
88
+ clonedColumn.append(node.cloneNode(true));
89
+ }
90
+ });
91
+ clonedColumn.style.setProperty('visibility', 'hidden', 'important');
92
+ var styles = ['display', 'flex', 'margin', 'padding', 'background', 'font-style', 'font-width', 'font-size', 'font-weight'];
93
+ styles.forEach(function (key) {
94
+ clonedColumn.style.setProperty(key, _computedStyle.getPropertyValue(key), _computedStyle.getPropertyPriority(key));
95
+ });
96
+ clonedColumn.style.setProperty('width', 'fit-content', 'important');
97
+ document.body.appendChild(clonedColumn);
98
+ var computedWidth = Math.floor(clonedColumn.getBoundingClientRect().width);
99
+ document.body.removeChild(clonedColumn);
100
+ var defaultNodeWidth = (_this$defaultMinWidth = _this.defaultMinWidths.get(node)) !== null && _this$defaultMinWidth !== void 0 ? _this$defaultMinWidth : 0;
101
+ if (computedWidth >= defaultNodeWidth) {
102
+ node.style.setProperty('min-width', defaultNodeWidth + SORT_ICON_WIDTH + 'px');
103
+ } else {
104
+ var freeSpace = defaultNodeWidth - computedWidth;
105
+ if (freeSpace < SORT_ICON_WIDTH) {
106
+ node.style.setProperty('min-width', computedWidth + SORT_ICON_WIDTH + 'px');
107
+ }
108
+ }
109
+ } else if (_this.defaultMinWidths.has(node)) {
110
+ node.style.setProperty('min-width', _this.defaultMinWidths.get(node) + 'px');
111
+ }
112
+ });
63
113
  return _this;
64
114
  }
65
115
  _createClass(Head, [{
@@ -115,7 +165,7 @@ var Head = /*#__PURE__*/function (_Component) {
115
165
  "tabIndex": column.sortable ? 0 : undefined,
116
166
  "__excludeProps": ['hidden']
117
167
  }, column.props), {}, {
118
- "ref": this.refColumn(column.props),
168
+ "ref": this.makeColumnRefHandler(column),
119
169
  "onClick": callAllEventHandlers(column.props.onClick, column.sortable ? this.bindHandlerSortClick(column.name) : undefined),
120
170
  "onKeyDown": callAllEventHandlers(column.props.onKeyDown, column.sortable ? this.bindHandlerKeyDown(column.name) : undefined),
121
171
  "style": style,
@@ -128,7 +178,9 @@ var Head = /*#__PURE__*/function (_Component) {
128
178
  "active": column.active,
129
179
  "borderLeft": column.borderLeft,
130
180
  "borderRight": column.borderRight
131
- }), /*#__PURE__*/React.createElement("div", _ref2.cn("div", {}), column.props.children)), /*#__PURE__*/React.createElement(SHead, _ref2.cn("SHead", {}), this.renderColumns(column.columns, 100 / cSize))) : /*#__PURE__*/React.createElement(React.Fragment, null, column.props.children, column.sortable ? /*#__PURE__*/React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {}), /*#__PURE__*/React.createElement(SSortIcon, _ref2.cn("SSortIcon", {
181
+ }), /*#__PURE__*/React.createElement("div", _ref2.cn("div", {}), column.props.children)), /*#__PURE__*/React.createElement(SHead, _ref2.cn("SHead", {}), this.renderColumns(column.columns, 100 / cSize))) : /*#__PURE__*/React.createElement(React.Fragment, null, column.props.children, column.sortable ? /*#__PURE__*/React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {
182
+ "ref": this.makeSortRefHandler(column.active)
183
+ }), /*#__PURE__*/React.createElement(SSortIcon, _ref2.cn("SSortIcon", {
132
184
  "active": column.active
133
185
  }))) : null));
134
186
  }
@@ -147,7 +199,7 @@ var Head = /*#__PURE__*/function (_Component) {
147
199
  $scrollRef = _this$asProps2.$scrollRef,
148
200
  sticky = _this$asProps2.sticky,
149
201
  withScrollBar = _this$asProps2.withScrollBar,
150
- hidden = _this$asProps2.hidden;
202
+ animationsDisabled = _this$asProps2.animationsDisabled;
151
203
  this.columns = flattenColumns(columnsChildren);
152
204
  var _getScrollOffsetValue = getScrollOffsetValue(this.columns),
153
205
  _getScrollOffsetValue2 = _slicedToArray(_getScrollOffsetValue, 2),
@@ -155,7 +207,8 @@ var Head = /*#__PURE__*/function (_Component) {
155
207
  offsetRightSum = _getScrollOffsetValue2[1];
156
208
  logger.warn(sticky, "'sticky' property is deprecated, use '<Sticky/>' wrapper", this.asProps['data-ui-name'] || Head.displayName);
157
209
  return _ref3 = sstyled(styles), /*#__PURE__*/React.createElement(SHeadWrapper, _ref3.cn("SHeadWrapper", {
158
- "sticky": sticky
210
+ "sticky": sticky,
211
+ "animationsDisabled": animationsDisabled
159
212
  }), /*#__PURE__*/React.createElement(ScrollArea, _ref3.cn("ScrollArea", {
160
213
  "leftOffset": offsetLeftSum,
161
214
  "rightOffset": offsetRightSum,
@@ -1 +1 @@
1
- {"version":3,"file":"Head.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","SortDesc","SortAsc","callAllEventHandlers","flattenColumns","getFixedStyle","getScrollOffsetValue","logger","setRef","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","name","event","asProps","$onSortClick","key","preventDefault","props","ref","forwardRef","_createClass","value","renderColumns","columns","width","_this2","map","column","renderColumn","_ref2","_column$columns","_this$asProps","styles","use","hidden","uid","SColumn","SHead","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","active","undefined","isGroup","cSize","_getFixedStyle","_getFixedStyle2","_slicedToArray","style","_objectSpread","flexBasis","flex","setVar","varWidth","createElement","cn","fixed","resizable","borderLeft","borderRight","refColumn","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","Fragment","children","render","_ref","_ref3","SHeadWrapper","_this$asProps2","Children","columnsChildren","onResize","$scrollRef","sticky","withScrollBar","_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';\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};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\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 refColumn = (props: Column['props']) => (ref: HTMLElement) => {\n setRef(props.ref, ref);\n if (props.forwardRef) {\n setRef(props.forwardRef, ref);\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.refColumn(column.props)}\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>\n <SSortIcon active={column.active} />\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 hidden,\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}>\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","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","defaultMinWidths","has","wMin","wMax","w","computedStyle","window","getComputedStyle","getPropertyValue","_this$defaultMinWidth","clonedColumn","document","createElement","childNodes","forEach","get","append","cloneNode","style","setProperty","styles","getPropertyPriority","body","appendChild","computedWidth","Math","floor","getBoundingClientRect","width","removeChild","defaultNodeWidth","freeSpace","_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 defaultMinWidths = new Map<Node, 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.defaultMinWidths.has(node) &&\n (column.props.wMin || column.props.wMax || column.props.w)\n ) {\n const computedStyle = window.getComputedStyle(node);\n\n this.defaultMinWidths.set(node, cssToIntDefault(computedStyle.getPropertyValue('width')));\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.floor(clonedColumn.getBoundingClientRect().width);\n\n document.body.removeChild(clonedColumn);\n\n const defaultNodeWidth = this.defaultMinWidths.get(node) ?? 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.defaultMinWidths.has(node)) {\n node.style.setProperty('min-width', this.defaultMinWidths.get(node) + '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 active={column.active} />\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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"}
@@ -13,6 +13,12 @@ SHeadWrapper {
13
13
  position: relative;
14
14
  }
15
15
 
16
+ SHeadWrapper[animationsDisabled] {
17
+ SColumn {
18
+ transition: none;
19
+ }
20
+ }
21
+
16
22
  SHeadWrapper[sticky] {
17
23
  position: sticky;
18
24
  top: 0;
@@ -41,6 +47,8 @@ SColumn {
41
47
  outline: none;
42
48
  box-shadow: inset var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
43
49
  }
50
+
51
+ transition: width calc(var(--intergalactic-duration-extra-fast, 100) * 1ms) ease-in-out, min-width calc(var(--intergalactic-duration-extra-fast, 100) * 1ms) ease-in-out, max-width calc(var(--intergalactic-duration-extra-fast, 100) * 1ms) ease-in-out;
44
52
  }
45
53
 
46
54
  SColumn[hidden] {
@@ -90,11 +98,11 @@ SColumn[sortable] {
90
98
  background-color: var(--intergalactic-table-th-primary-cell-hover, #e0e1e9);
91
99
  }
92
100
 
93
- &[justifyContent='right'] SSortWrapper {
94
- position: absolute;
95
- right: calc(var(--intergalactic-spacing-1x, 4px) + 16px);
101
+ &[justifyContent='right'][active] SSortWrapper {
102
+ position: relative;
96
103
  }
97
- &[justifyContent='right']:hover SSortWrapper, &[justifyContent='right']:focus SSortWrapper, &[justifyContent='right'][active] SSortWrapper {
104
+ &[justifyContent='right'][active='false']:hover SSortWrapper, &[justifyContent='right'][active='false']:focus SSortWrapper {
105
+ position: absolute;
98
106
  right: var(--intergalactic-spacing-3x, 12px);
99
107
  }
100
108
 
@@ -161,12 +169,12 @@ SCell[borderRight] {
161
169
  }
162
170
 
163
171
  SSortWrapper {
164
- flex-shrink: 99999;
172
+ flex-shrink: 1;
165
173
  position: relative;
166
174
  flex-basis: 0;
167
175
  min-height: 16px;
168
176
  opacity: 0;
169
- transition: all calc(var(--intergalactic-duration-medium, 300) * 1ms) ease;
177
+ transition: all calc(var(--intergalactic-duration-extra-fast, 100) * 1ms) ease-in-out;
170
178
  }
171
179
 
172
180
  SSortWrapper:before {
@@ -322,6 +330,10 @@ SRow[positioned] {
322
330
  position: absolute;
323
331
  }
324
332
 
333
+ SBody[animationsDisabled] SCell {
334
+ transition: none;
335
+ }
336
+
325
337
  SCell {
326
338
  display: flex;
327
339
  flex: 1;
@@ -334,6 +346,7 @@ SCell {
334
346
  overflow: hidden;
335
347
  white-space: nowrap;
336
348
  font-variant-numeric: tabular-nums;
349
+ transition: width calc(var(--intergalactic-duration-extra-fast, 100) * 1ms) ease-in-out;
337
350
  }
338
351
 
339
352
  SCell[use='primary'] {
@@ -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';\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 } & Partial<{\n flex: Property.Flex;\n justifyContent: Property.JustifyContent;\n alignItems: Property.AlignItems;\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 children: React.ReactNode[];\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 }> &\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"}
@@ -25,6 +25,7 @@ type AsProps = {
25
25
  }) => React.ReactNode;
26
26
  disabledScroll?: boolean;
27
27
  uid?: string;
28
+ animationsDisabled?: boolean;
28
29
  };
29
30
  type State = {
30
31
  rowHeight: number | undefined;
@@ -60,6 +60,8 @@ export type DataTableHeadProps = BoxProps & {
60
60
  disabledScroll?: boolean;
61
61
  /** Enable scroll bar element in header */
62
62
  withScrollBar?: boolean;
63
+ /** Disables column width change animation **/
64
+ animationsDisabled?: boolean;
63
65
  };
64
66
  /** @deprecated */
65
67
  export interface IDataTableColumnProps extends DataTableColumnProps, UnknownProperties {
@@ -112,6 +114,8 @@ export type DataTableBodyProps = BoxProps & {
112
114
  onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
113
115
  /** Disabled scroll */
114
116
  disabledScroll?: boolean;
117
+ /** Disables column width change animation **/
118
+ animationsDisabled?: boolean;
115
119
  };
116
120
  /** @deprecated */
117
121
  export interface IDataTableRowProps extends DataTableRowProps, UnknownProperties {
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Component } from 'intergalactic/core';
3
3
  import type { Column } from './types';
4
+ export declare const SORT_ICON_WIDTH = 20;
4
5
  type AsProps = {
5
6
  $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;
6
7
  $scrollRef: (instance: unknown) => void;
@@ -11,13 +12,18 @@ type AsProps = {
11
12
  ['data-ui-name']: string;
12
13
  uid?: string;
13
14
  withScrollBar?: boolean;
15
+ animationsDisabled?: boolean;
14
16
  };
15
17
  declare class Head extends Component<AsProps> {
16
18
  columns: Column[];
17
19
  static displayName: string;
20
+ sortWrapperRefs: Map<Node, boolean>;
21
+ defaultMinWidths: Map<Node, number>;
18
22
  bindHandlerSortClick: (name: string) => (event: React.MouseEvent) => void;
19
23
  bindHandlerKeyDown: (name: string) => (event: React.KeyboardEvent) => void;
20
- refColumn: (props: Column['props']) => (ref: HTMLElement) => void;
24
+ makeSortRefHandler: (active: boolean) => (ref: HTMLElement | null) => void;
25
+ makeColumnRefHandler: (column: Column) => (ref: HTMLElement | null) => void;
26
+ calculateMinWidth: (node: HTMLElement, column: Column) => void;
21
27
  renderColumns(columns: Column[], width: number): React.ReactNode[];
22
28
  renderColumn(column: Column, width: number): React.ReactNode;
23
29
  render(): React.ReactNode;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ROW_GROUP } from './DataTable';
3
3
  import { Property } from 'csstype';
4
+ import { FlexProps } from 'intergalactic/flex-box';
4
5
  export type PseudoChildPropsGetter = (props: {
5
6
  [propName: string]: unknown;
6
7
  }, rowData: {
@@ -34,16 +35,13 @@ export type Column<Props extends {
34
35
  props: {
35
36
  name: string;
36
37
  ref: React.RefObject<HTMLElement>;
37
- } & Partial<{
38
+ } & FlexProps & Partial<{
38
39
  flex: Property.Flex;
39
- justifyContent: Property.JustifyContent;
40
- alignItems: Property.AlignItems;
41
40
  onClick: (event: React.MouseEvent) => void;
42
41
  onKeyDown: (event: React.KeyboardEvent) => void;
43
42
  forwardRef: React.Ref<HTMLElement>;
44
43
  style: React.CSSProperties;
45
44
  fixed: 'left' | 'right';
46
- children: React.ReactNode[];
47
45
  resizable: boolean;
48
46
  sortable: boolean | SortDirection;
49
47
  sortDirection: SortDirection;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ROW_GROUP } from './DataTable';
3
3
  import { Property } from 'csstype';
4
+ import { FlexProps } from 'intergalactic/flex-box';
4
5
  export type PseudoChildPropsGetter = (props: {
5
6
  [propName: string]: unknown;
6
7
  }, rowData: {
@@ -34,16 +35,13 @@ export type Column<Props extends {
34
35
  props: {
35
36
  name: string;
36
37
  ref: React.RefObject<HTMLElement>;
37
- } & Partial<{
38
+ } & FlexProps & Partial<{
38
39
  flex: Property.Flex;
39
- justifyContent: Property.JustifyContent;
40
- alignItems: Property.AlignItems;
41
40
  onClick: (event: React.MouseEvent) => void;
42
41
  onKeyDown: (event: React.KeyboardEvent) => void;
43
42
  forwardRef: React.Ref<HTMLElement>;
44
43
  style: React.CSSProperties;
45
44
  fixed: 'left' | 'right';
46
- children: React.ReactNode[];
47
45
  resizable: boolean;
48
46
  sortable: boolean | SortDirection;
49
47
  sortDirection: SortDirection;
@@ -293,11 +293,12 @@ export type BaseInputTriggerProps = InputProps &
293
293
  locale?: string;
294
294
  onDisplayedPeriodChange?: (date: Date) => void;
295
295
  };
296
- export type InputTriggerProps = BaseInputTriggerProps &
297
- TooltipProps & {
298
- value?: Date;
299
- onChange?: (date: Date, event: ChangeEvent) => void;
300
- };
296
+ export type InputTriggerProps = BaseInputTriggerProps & {
297
+ value?: Date;
298
+ onChange?: (date: Date, event: ChangeEvent) => void;
299
+ /** Flag to show or hide error state (and tooltip with error message) on Input */
300
+ showError?: boolean;
301
+ };
301
302
 
302
303
  export type RangeInputTriggerProps = BaseInputTriggerProps & {
303
304
  value?: Date[];