@semcore/data-table 3.7.16 → 3.7.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/cjs/Body.js +19 -35
- package/lib/cjs/Body.js.map +1 -1
- package/lib/cjs/DataTable.js +56 -72
- package/lib/cjs/DataTable.js.map +1 -1
- package/lib/cjs/Head.js +14 -22
- package/lib/cjs/Head.js.map +1 -1
- package/lib/cjs/index.js +1 -5
- package/lib/es6/Body.js +10 -24
- package/lib/es6/Body.js.map +1 -1
- package/lib/es6/DataTable.js +45 -59
- package/lib/es6/DataTable.js.map +1 -1
- package/lib/es6/Head.js +9 -18
- package/lib/es6/Head.js.map +1 -1
- package/package.json +1 -1
package/lib/cjs/DataTable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","names":["REVERSED_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","props","React","createRef","event","column","find","fire","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","syncScroll","scrollBodyRef","scrollHeadRef","setVar","style","setProperty","varWidth","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","forEach","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","flex","vBorders","lastColumnChildren","isGroup","childrenToColumns","some","c","flattenColumns","map","join","toArray","filter","columnChildren","ref","getBoundingClientRect","forwardRef","push","use","$onSortClick","callAllEventHandlers","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","uniqueKey","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","rows","dataToRows","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","flat","key","cells","cssVar","flatRowData","setVarStyle","SDataTable","Box","styles","sstyled","Component","ComponentDefinition","createComponent","Head","Body"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, { Component, PropGetterFn, Root, sstyled } from '@semcore/core';\nimport { Box, IBoxProps, IFlexProps } 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';\n\nimport style from './style/data-table.shadow.css';\n\nconst REVERSED_SORT_DIRECTION: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/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};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n};\n\n/* utils type */\ntype CProps<Props, Ctx = {}, UCProps = {}> = Props & {\n children?: ((props: Props & Ctx, handlers: UCProps) => React.ReactNode) | React.ReactNode;\n};\ntype ReturnEl = React.ReactElement | null;\ntype ChildRenderFn<Props> = Props & {\n children?: (props: Props, column: DataTableData, index: number) => { [key: string]: unknown };\n};\n/* utils type */\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort = [string, 'desc' | 'asc'];\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\nexport interface IDataTableProps extends IBoxProps {\n /** Theme for table\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData[];\n /** Active sort object */\n sort?: DataTableSort;\n /** Handler call when will request change sort */\n onSortChange?: (sort: DataTableSort, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all set of data\n * @default id\n */\n uniqueKey?: string;\n}\n\nexport interface IDataTableHeadProps extends IBoxProps {\n /** Sticky header table\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableColumnProps extends IFlexProps {\n /** Unique name column */\n name?: string;\n /** Enable sort for column also if you pass string you can set default sort */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fixed column on the left/right */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column. */\n flex?: Property.Flex | 'inherit';\n /** Add vertical borders */\n vBorders?: boolean;\n /** Add vertical border to the right side */\n borderRight?: boolean;\n /** Add vertical border to the left side */\n borderLeft?: boolean;\n /** Make cells less */\n compact?: boolean;\n}\n\nexport interface IDataTableBodyProps extends IBoxProps {\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 /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableRowProps extends IBoxProps {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Displays row as active/hover */\n active?: boolean;\n}\n\nexport interface IDataTableCellProps extends IFlexProps {\n /** Unique name column or columns separated by / */\n name: string;\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\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 ? REVERSED_SORT_DIRECTION[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 : DEFAULT_SORT_DIRECTION),\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 } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use } = 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 };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey } = 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 };\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 .map((subRow) => Object.keys(subRow))\n .flat()\n .map(key => key.split('/'))\n .flat()\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 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\ninterface IDataTableCtx {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as (<T>(props: CProps<IDataTableProps & T, IDataTableCtx>) => ReturnEl) & {\n Head: <T>(props: IDataTableHeadProps & T) => ReturnEl;\n Body: <T>(props: IDataTableBodyProps & T) => ReturnEl;\n Column: <T>(props: IDataTableColumnProps & T) => ReturnEl;\n Cell: <T>(props: ChildRenderFn<IDataTableCellProps & T>) => ReturnEl;\n Row: <T>(props: ChildRenderFn<IDataTableRowProps & T>) => ReturnEl;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","names":["REVERSED_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","props","React","createRef","event","column","find","fire","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","syncScroll","scrollBodyRef","scrollHeadRef","setVar","style","setProperty","varWidth","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","forEach","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","flex","vBorders","lastColumnChildren","isGroup","childrenToColumns","some","c","flattenColumns","map","join","toArray","filter","columnChildren","ref","getBoundingClientRect","forwardRef","push","use","$onSortClick","callAllEventHandlers","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","uniqueKey","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","rows","dataToRows","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","flat","key","cells","cssVar","flatRowData","setVarStyle","SDataTable","Box","styles","sstyled","Component","ComponentDefinition","createComponent","Head","Body"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, { Component, PropGetterFn, Root, sstyled } from '@semcore/core';\nimport { Box, IBoxProps, IFlexProps } 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';\n\nimport style from './style/data-table.shadow.css';\n\nconst REVERSED_SORT_DIRECTION: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/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};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n};\n\n/* utils type */\ntype CProps<Props, Ctx = {}, UCProps = {}> = Props & {\n children?: ((props: Props & Ctx, handlers: UCProps) => React.ReactNode) | React.ReactNode;\n};\ntype ReturnEl = React.ReactElement | null;\ntype ChildRenderFn<Props> = Props & {\n children?: (props: Props, column: DataTableData, index: number) => { [key: string]: unknown };\n};\n/* utils type */\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort = [string, 'desc' | 'asc'];\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\nexport interface IDataTableProps extends IBoxProps {\n /** Theme for table\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData[];\n /** Active sort object */\n sort?: DataTableSort;\n /** Handler call when will request change sort */\n onSortChange?: (sort: DataTableSort, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all set of data\n * @default id\n */\n uniqueKey?: string;\n}\n\nexport interface IDataTableHeadProps extends IBoxProps {\n /** Sticky header table\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableColumnProps extends IFlexProps {\n /** Unique name column */\n name?: string;\n /** Enable sort for column also if you pass string you can set default sort */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fixed column on the left/right */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column. */\n flex?: Property.Flex | 'inherit';\n /** Add vertical borders */\n vBorders?: boolean;\n /** Add vertical border to the right side */\n borderRight?: boolean;\n /** Add vertical border to the left side */\n borderLeft?: boolean;\n /** Make cells less */\n compact?: boolean;\n}\n\nexport interface IDataTableBodyProps extends IBoxProps {\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 /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableRowProps extends IBoxProps {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Displays row as active/hover */\n active?: boolean;\n}\n\nexport interface IDataTableCellProps extends IFlexProps {\n /** Unique name column or columns separated by / */\n name: string;\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\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 ? REVERSED_SORT_DIRECTION[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 : DEFAULT_SORT_DIRECTION),\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 } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use } = 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 };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey } = 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 };\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 .map((subRow) => Object.keys(subRow))\n .flat()\n .map(key => key.split('/'))\n .flat()\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 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\ninterface IDataTableCtx {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as (<T>(props: CProps<IDataTableProps & T, IDataTableCtx>) => ReturnEl) & {\n Head: <T>(props: IDataTableHeadProps & T) => ReturnEl;\n Body: <T>(props: IDataTableBodyProps & T) => ReturnEl;\n Column: <T>(props: IDataTableColumnProps & T) => ReturnEl;\n Cell: <T>(props: ChildRenderFn<IDataTableCellProps & T>) => ReturnEl;\n Row: <T>(props: ChildRenderFn<IDataTableRowProps & T>) => ReturnEl;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"mappings":"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"}
|
package/lib/cjs/Head.js
CHANGED
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
13
|
|
|
12
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -17,9 +19,7 @@ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
17
19
|
|
|
18
20
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
21
|
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
22
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
23
23
|
|
|
24
24
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
25
|
|
|
@@ -45,29 +45,21 @@ var _ref4 = require("@semcore/utils/lib/ref");
|
|
|
45
45
|
|
|
46
46
|
require("resize-observer-polyfill");
|
|
47
47
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
49
|
-
|
|
50
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
51
|
-
|
|
52
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
53
|
-
|
|
54
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
55
|
-
|
|
56
48
|
/*__reshadow-styles__:"./style/scroll-area.shadow.css"*/
|
|
57
49
|
var scrollStyles = (
|
|
58
50
|
/*__reshadow_css_start__*/
|
|
59
51
|
_core.sstyled.insert(
|
|
60
52
|
/*__inner_css_start__*/
|
|
61
|
-
".
|
|
53
|
+
".___SShadowHorizontal_177hg_gg_:before{left:var(--left_177hg)!important}.___SShadowHorizontal_177hg_gg_:after{right:var(--right_177hg)!important}.___SContainer_177hg_gg_.__disabledScroll_177hg_gg_{overflow:visible}"
|
|
62
54
|
/*__inner_css_end__*/
|
|
63
|
-
, "
|
|
55
|
+
, "177hg_gg_")
|
|
64
56
|
/*__reshadow_css_end__*/
|
|
65
57
|
, {
|
|
66
|
-
"__SShadowHorizontal": "
|
|
67
|
-
"--left": "--
|
|
68
|
-
"--right": "--
|
|
69
|
-
"__SContainer": "
|
|
70
|
-
"_disabledScroll": "
|
|
58
|
+
"__SShadowHorizontal": "___SShadowHorizontal_177hg_gg_",
|
|
59
|
+
"--left": "--left_177hg",
|
|
60
|
+
"--right": "--right_177hg",
|
|
61
|
+
"__SContainer": "___SContainer_177hg_gg_",
|
|
62
|
+
"_disabledScroll": "__disabledScroll_177hg_gg_"
|
|
71
63
|
});
|
|
72
64
|
var SORTING_ICON = {
|
|
73
65
|
desc: _m["default"],
|
|
@@ -81,7 +73,7 @@ var ariaSort = {
|
|
|
81
73
|
var Head = /*#__PURE__*/function (_Component) {
|
|
82
74
|
(0, _inherits2["default"])(Head, _Component);
|
|
83
75
|
|
|
84
|
-
var _super =
|
|
76
|
+
var _super = (0, _createSuper2["default"])(Head);
|
|
85
77
|
|
|
86
78
|
function Head() {
|
|
87
79
|
var _this;
|
|
@@ -149,7 +141,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
149
141
|
name = _getFixedStyle2[0],
|
|
150
142
|
value = _getFixedStyle2[1];
|
|
151
143
|
|
|
152
|
-
var style =
|
|
144
|
+
var style = (0, _objectSpread2["default"])({
|
|
153
145
|
flexBasis: column.props.flex === undefined && "".concat(width * cSize, "%")
|
|
154
146
|
}, column.props.style);
|
|
155
147
|
|
|
@@ -161,7 +153,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
161
153
|
style['flexBasis'] = "var(".concat(column.varWidth, ")");
|
|
162
154
|
}
|
|
163
155
|
|
|
164
|
-
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SColumn, _ref2.cn("SColumn",
|
|
156
|
+
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SColumn, _ref2.cn("SColumn", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
|
165
157
|
"role": isGroup ? undefined : 'columnheader',
|
|
166
158
|
"key": column.name,
|
|
167
159
|
"use": use,
|
|
@@ -229,7 +221,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
229
221
|
}), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"].Container, {
|
|
230
222
|
ref: $scrollRef,
|
|
231
223
|
disabledScroll: disabledScroll
|
|
232
|
-
}, /*#__PURE__*/_react["default"].createElement(SHead, _ref3.cn("SHead",
|
|
224
|
+
}, /*#__PURE__*/_react["default"].createElement(SHead, _ref3.cn("SHead", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
|
|
233
225
|
"role": "row"
|
|
234
226
|
}, _ref))), this.renderColumns(columnsChildren, 100 / this.columns.length)))), Children.origin);
|
|
235
227
|
}
|
package/lib/cjs/Head.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Head.js","names":["SORTING_ICON","desc","SortDesc","asc","SortAsc","ariaSort","Head","name","event","asProps","$onSortClick","code","props","ref","setRef","forwardRef","columns","width","map","column","renderColumn","styles","use","hidden","SColumn","Flex","SHead","Box","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","active","undefined","isGroup","length","cSize","flattenColumns","getFixedStyle","value","style","flexBasis","flex","setVar","varWidth","sstyled","fixed","resizable","justifyContent","includes","borderLeft","borderRight","refColumn","callAllEventHandlers","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","children","renderColumns","SHeadWrapper","Children","columnsChildren","onResize","$scrollRef","sticky","disabledScroll","getScrollOffsetValue","offsetLeftSum","offsetRightSum","logger","warn","displayName","scrollStyles","origin","Component"],"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 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\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 disabledScroll?: boolean;\n ['data-ui-name']: string;\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.code === 'Enter') {\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 } = this.asProps;\n const SColumn = Flex;\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 key={column.name}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n sortIconFloat={column.props.justifyContent?.includes('end')}\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}\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;\n const { Children, styles, columnsChildren, onResize, $scrollRef, sticky, disabledScroll } =\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} role=\"rowgroup\">\n <ScrollArea\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SHead render={Box} role=\"row\">\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\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":["SORTING_ICON","desc","SortDesc","asc","SortAsc","ariaSort","Head","name","event","asProps","$onSortClick","code","props","ref","setRef","forwardRef","columns","width","map","column","renderColumn","styles","use","hidden","SColumn","Flex","SHead","Box","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","active","undefined","isGroup","length","cSize","flattenColumns","getFixedStyle","value","style","flexBasis","flex","setVar","varWidth","sstyled","fixed","resizable","justifyContent","includes","borderLeft","borderRight","refColumn","callAllEventHandlers","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","children","renderColumns","SHeadWrapper","Children","columnsChildren","onResize","$scrollRef","sticky","disabledScroll","getScrollOffsetValue","offsetLeftSum","offsetRightSum","logger","warn","displayName","scrollStyles","origin","Component"],"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 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\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 disabledScroll?: boolean;\n ['data-ui-name']: string;\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.code === 'Enter') {\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 } = this.asProps;\n const SColumn = Flex;\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 key={column.name}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n sortIconFloat={column.props.justifyContent?.includes('end')}\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}\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;\n const { Children, styles, columnsChildren, onResize, $scrollRef, sticky, disabledScroll } =\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} role=\"rowgroup\">\n <ScrollArea\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SHead render={Box} role=\"row\">\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"mappings":"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"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -26,8 +26,4 @@ Object.keys(_DataTable).forEach(function (key) {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
|
-
|
|
30
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
-
|
|
32
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
29
|
//# sourceMappingURL=index.js.map
|
package/lib/es6/Body.js
CHANGED
|
@@ -1,32 +1,18 @@
|
|
|
1
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
|
|
2
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
5
|
import _typeof from "@babel/runtime/helpers/typeof";
|
|
4
6
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
5
7
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
6
8
|
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
7
9
|
import _inherits from "@babel/runtime/helpers/inherits";
|
|
8
|
-
import
|
|
9
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
10
|
+
import _createSuper from "@babel/runtime/helpers/createSuper";
|
|
10
11
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
11
12
|
import { sstyled as _sstyled } from "@semcore/core";
|
|
12
13
|
import { assignProps as _assignProps } from "@semcore/core";
|
|
13
14
|
var _excluded = ["childrenPropsGetter"],
|
|
14
15
|
_excluded2 = ["childrenPropsGetter"];
|
|
15
|
-
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
21
|
-
|
|
22
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
-
|
|
24
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
-
|
|
26
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
27
|
-
|
|
28
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
29
|
-
|
|
30
16
|
import React from 'react';
|
|
31
17
|
import { Component, sstyled, Root } from '@semcore/core';
|
|
32
18
|
import { Box, Flex } from '@semcore/flex-box';
|
|
@@ -40,16 +26,16 @@ var scrollStyles = (
|
|
|
40
26
|
/*__reshadow_css_start__*/
|
|
41
27
|
_sstyled.insert(
|
|
42
28
|
/*__inner_css_start__*/
|
|
43
|
-
".
|
|
29
|
+
".___SShadowHorizontal_177hg_gg_:before{left:var(--left_177hg)!important}.___SShadowHorizontal_177hg_gg_:after{right:var(--right_177hg)!important}.___SContainer_177hg_gg_.__disabledScroll_177hg_gg_{overflow:visible}"
|
|
44
30
|
/*__inner_css_end__*/
|
|
45
|
-
, "
|
|
31
|
+
, "177hg_gg_")
|
|
46
32
|
/*__reshadow_css_end__*/
|
|
47
33
|
, {
|
|
48
|
-
"__SShadowHorizontal": "
|
|
49
|
-
"--left": "--
|
|
50
|
-
"--right": "--
|
|
51
|
-
"__SContainer": "
|
|
52
|
-
"_disabledScroll": "
|
|
34
|
+
"__SShadowHorizontal": "___SShadowHorizontal_177hg_gg_",
|
|
35
|
+
"--left": "--left_177hg",
|
|
36
|
+
"--right": "--right_177hg",
|
|
37
|
+
"__SContainer": "___SContainer_177hg_gg_",
|
|
38
|
+
"_disabledScroll": "__disabledScroll_177hg_gg_"
|
|
53
39
|
});
|
|
54
40
|
import trottle from '@semcore/utils/lib/rafTrottle';
|
|
55
41
|
var testEnv = process.env.NODE_ENV === 'test';
|
package/lib/es6/Body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Body.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","callAllEventHandlers","ResizeObserver","trottle","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","rowHeight","undefined","scrollAreaHeight","scrollOffset","createRef","virtualScroll","asProps","rowHeightFromProps","state","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","styles","columns","use","Array","isArray","SGroupCell","renderRows","nameParts","split","firstName","lastName","length","firstColumn","find","c","lastColumn","column","value","vars","cssVar","props","children","justifyContent","alignItems","borderLeft","borderRight","style","width","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","fixed","theme","dataIndex","topOffset","nested","SRow","rowPropsLayers","uniqueKey","flatRowData","key","String","needToMeasureHeight","renderCells","active","positioned","top","ref","rowPropsLayer","propsRow","rows","renderRow","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","disconnect","SBody","SBodyWrapper","SScrollAreaBar","Bar","SHeightHold","Children","$scrollRef","onResize","onScroll","disabledScroll","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin"],"sources":["../../src/Body.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex, IBoxProps } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport { RowData, Column, NestedCells, PropsLayer, Cell } from './types';\nimport assignProps, { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport trottle from '@semcore/utils/lib/rafTrottle';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nconst getCellsByColumn = (cells: NestedCells): RowData => {\n const flattenCells = cells.flat(20) as Cell[];\n return Object.fromEntries(flattenCells.map((cell) => [cell.name, cell.data]));\n};\n\ntype AsProps = {\n rows: NestedCells[];\n columns: Column[];\n $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;\n onResize: ResizeObserverCallback;\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\n};\n\ntype State = {\n rowHeight: number | undefined;\n scrollAreaHeight: undefined | number;\n scrollOffset: number;\n};\n\nclass Body extends Component<AsProps, State> {\n state: State = {\n rowHeight: undefined,\n scrollAreaHeight: undefined,\n scrollOffset: 0,\n };\n\n firstRowRef = React.createRef<HTMLElement>();\n firstRowResizeObserver: ResizeObserver | null = null;\n\n getRowHeight = () => {\n const { virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n return rowHeightFromProps || this.state.rowHeight;\n };\n\n renderCells(cells: NestedCells, rowData: RowData, index: number) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return cells.map((cell) => {\n if (Array.isArray(cell)) {\n const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (name) => `var(${name})`,\n );\n type CellProps = IBoxProps & {\n name: string;\n children: React.ReactNode;\n style: React.CSSProperties;\n };\n\n let props: CellProps = {\n name: cell.name,\n children: <>{cell.data}</>,\n justifyContent: column?.props?.justifyContent,\n alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\n style: {\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n };\n if (name !== undefined && value !== undefined) {\n props.style[name] = value;\n }\n\n for (const cellPropLayer of cell.cellPropsLayers || []) {\n const { childrenPropsGetter = (p) => p, ...other } = cellPropLayer;\n const propsCell = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsCell, rowData, index), propsCell);\n }\n\n return sstyled(styles)(\n <SCell\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\n ) as React.ReactElement;\n }\n }, [] as React.ReactElement[]);\n }\n\n renderRow(\n cells: NestedCells,\n { dataIndex, topOffset, nested }: { dataIndex: number; topOffset?: number; nested: boolean },\n ) {\n const SRow = Box;\n const { styles, rowPropsLayers, uniqueKey, virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n\n const rowData = cells.flatRowData || getCellsByColumn(cells);\n const key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : `row_${dataIndex}`;\n const needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;\n\n let props = {\n children: this.renderCells(cells, rowData, dataIndex),\n theme: undefined,\n active: undefined,\n positioned: topOffset !== undefined,\n top: topOffset,\n ref: needToMeasureHeight ? this.firstRowRef : undefined,\n key,\n 'aria-rowindex': dataIndex + 1,\n };\n\n for (const rowPropsLayer of rowPropsLayers) {\n const { childrenPropsGetter = (p) => p, ...other } = rowPropsLayer;\n const propsRow = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);\n }\n\n return sstyled(styles)(<SRow role=\"row\" {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, dataIndex) => this.renderRow(cells, { dataIndex, nested: false }));\n }\n\n renderVirtualizedRows(rows: NestedCells[]) {\n if (rows.length === 0) return [];\n\n const { virtualScroll } = this.asProps;\n const { scrollOffset, scrollAreaHeight } = this.state;\n const rowHeight = this.getRowHeight();\n\n const tollerance = (typeof virtualScroll === 'object' ? virtualScroll?.tollerance : 2) ?? 2;\n const startIndex = Math.max(Math.floor(scrollOffset / rowHeight!) - tollerance, 0);\n const lastIndex = Math.min(\n Math.ceil((scrollOffset + scrollAreaHeight!) / rowHeight!) + tollerance,\n rows.length,\n );\n\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n const needToMeasureFirstRowHeight = !rowHeightFromProps;\n\n const firstRow = { cells: rows[0], dataIndex: 0, topOffset: 0 };\n const visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];\n const processedVisibleRows = visibleRows.map((cells, index) => ({\n cells,\n dataIndex: startIndex + index,\n topOffset: rowHeight! * (startIndex + index),\n }));\n if (needToMeasureFirstRowHeight && startIndex !== 0) {\n processedVisibleRows.unshift(firstRow);\n }\n\n return processedVisibleRows.map(({ cells, dataIndex, topOffset }) =>\n this.renderRow(cells, { dataIndex, topOffset, nested: false }),\n );\n }\n\n handleFirstRowResize = trottle((entries: ResizeObserverEntry[]) => {\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.rowHeight === height) return oldState;\n return { rowHeight: height };\n });\n });\n\n handleScrollAreaResize = trottle((entries: ResizeObserverEntry[]) => {\n const { virtualScroll } = this.asProps;\n if (!virtualScroll) return;\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.scrollAreaHeight === height) return oldState;\n return { scrollAreaHeight: height };\n });\n });\n\n handleScrollAreaScroll = (event: React.SyntheticEvent<HTMLElement>) => {\n const { scrollTop } = event.target as HTMLElement;\n const { virtualScroll } = this.asProps;\n if (virtualScroll) {\n this.setState((oldState: State) => {\n if (oldState.scrollOffset === scrollTop) return oldState;\n return { scrollOffset: scrollTop };\n });\n }\n };\n\n setupRowSizeObserver = () => {\n if (!this.firstRowRef.current) return;\n if (!this.asProps.virtualScroll) return;\n this.firstRowResizeObserver = new ResizeObserver(this.handleFirstRowResize);\n this.firstRowResizeObserver.observe(this.firstRowRef.current);\n };\n\n componentWillUnmount() {\n this.firstRowResizeObserver?.disconnect();\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const SHeightHold = Box;\n const {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = this.asProps;\n\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n\n const rowHeight = this.getRowHeight();\n const holdHeight =\n rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;\n\n if (virtualScroll && columnsInitialized && !rowHeight) {\n new Promise(() => this.setupRowSizeObserver());\n }\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={callAllEventHandlers(onResize, this.handleScrollAreaResize)}\n onScroll={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\n {columnsInitialized && !virtualScroll ? this.renderRows(rows) : null}\n {columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null}\n </SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Body.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","callAllEventHandlers","ResizeObserver","trottle","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","rowHeight","undefined","scrollAreaHeight","scrollOffset","createRef","virtualScroll","asProps","rowHeightFromProps","state","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","styles","columns","use","Array","isArray","SGroupCell","renderRows","nameParts","split","firstName","lastName","length","firstColumn","find","c","lastColumn","column","value","vars","cssVar","props","children","justifyContent","alignItems","borderLeft","borderRight","style","width","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","fixed","theme","dataIndex","topOffset","nested","SRow","rowPropsLayers","uniqueKey","flatRowData","key","String","needToMeasureHeight","renderCells","active","positioned","top","ref","rowPropsLayer","propsRow","rows","renderRow","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","disconnect","SBody","SBodyWrapper","SScrollAreaBar","Bar","SHeightHold","Children","$scrollRef","onResize","onScroll","disabledScroll","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin"],"sources":["../../src/Body.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex, IBoxProps } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport { RowData, Column, NestedCells, PropsLayer, Cell } from './types';\nimport assignProps, { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport trottle from '@semcore/utils/lib/rafTrottle';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nconst getCellsByColumn = (cells: NestedCells): RowData => {\n const flattenCells = cells.flat(20) as Cell[];\n return Object.fromEntries(flattenCells.map((cell) => [cell.name, cell.data]));\n};\n\ntype AsProps = {\n rows: NestedCells[];\n columns: Column[];\n $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;\n onResize: ResizeObserverCallback;\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\n};\n\ntype State = {\n rowHeight: number | undefined;\n scrollAreaHeight: undefined | number;\n scrollOffset: number;\n};\n\nclass Body extends Component<AsProps, State> {\n state: State = {\n rowHeight: undefined,\n scrollAreaHeight: undefined,\n scrollOffset: 0,\n };\n\n firstRowRef = React.createRef<HTMLElement>();\n firstRowResizeObserver: ResizeObserver | null = null;\n\n getRowHeight = () => {\n const { virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n return rowHeightFromProps || this.state.rowHeight;\n };\n\n renderCells(cells: NestedCells, rowData: RowData, index: number) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return cells.map((cell) => {\n if (Array.isArray(cell)) {\n const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (name) => `var(${name})`,\n );\n type CellProps = IBoxProps & {\n name: string;\n children: React.ReactNode;\n style: React.CSSProperties;\n };\n\n let props: CellProps = {\n name: cell.name,\n children: <>{cell.data}</>,\n justifyContent: column?.props?.justifyContent,\n alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\n style: {\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n };\n if (name !== undefined && value !== undefined) {\n props.style[name] = value;\n }\n\n for (const cellPropLayer of cell.cellPropsLayers || []) {\n const { childrenPropsGetter = (p) => p, ...other } = cellPropLayer;\n const propsCell = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsCell, rowData, index), propsCell);\n }\n\n return sstyled(styles)(\n <SCell\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\n ) as React.ReactElement;\n }\n }, [] as React.ReactElement[]);\n }\n\n renderRow(\n cells: NestedCells,\n { dataIndex, topOffset, nested }: { dataIndex: number; topOffset?: number; nested: boolean },\n ) {\n const SRow = Box;\n const { styles, rowPropsLayers, uniqueKey, virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n\n const rowData = cells.flatRowData || getCellsByColumn(cells);\n const key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : `row_${dataIndex}`;\n const needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;\n\n let props = {\n children: this.renderCells(cells, rowData, dataIndex),\n theme: undefined,\n active: undefined,\n positioned: topOffset !== undefined,\n top: topOffset,\n ref: needToMeasureHeight ? this.firstRowRef : undefined,\n key,\n 'aria-rowindex': dataIndex + 1,\n };\n\n for (const rowPropsLayer of rowPropsLayers) {\n const { childrenPropsGetter = (p) => p, ...other } = rowPropsLayer;\n const propsRow = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);\n }\n\n return sstyled(styles)(<SRow role=\"row\" {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, dataIndex) => this.renderRow(cells, { dataIndex, nested: false }));\n }\n\n renderVirtualizedRows(rows: NestedCells[]) {\n if (rows.length === 0) return [];\n\n const { virtualScroll } = this.asProps;\n const { scrollOffset, scrollAreaHeight } = this.state;\n const rowHeight = this.getRowHeight();\n\n const tollerance = (typeof virtualScroll === 'object' ? virtualScroll?.tollerance : 2) ?? 2;\n const startIndex = Math.max(Math.floor(scrollOffset / rowHeight!) - tollerance, 0);\n const lastIndex = Math.min(\n Math.ceil((scrollOffset + scrollAreaHeight!) / rowHeight!) + tollerance,\n rows.length,\n );\n\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n const needToMeasureFirstRowHeight = !rowHeightFromProps;\n\n const firstRow = { cells: rows[0], dataIndex: 0, topOffset: 0 };\n const visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];\n const processedVisibleRows = visibleRows.map((cells, index) => ({\n cells,\n dataIndex: startIndex + index,\n topOffset: rowHeight! * (startIndex + index),\n }));\n if (needToMeasureFirstRowHeight && startIndex !== 0) {\n processedVisibleRows.unshift(firstRow);\n }\n\n return processedVisibleRows.map(({ cells, dataIndex, topOffset }) =>\n this.renderRow(cells, { dataIndex, topOffset, nested: false }),\n );\n }\n\n handleFirstRowResize = trottle((entries: ResizeObserverEntry[]) => {\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.rowHeight === height) return oldState;\n return { rowHeight: height };\n });\n });\n\n handleScrollAreaResize = trottle((entries: ResizeObserverEntry[]) => {\n const { virtualScroll } = this.asProps;\n if (!virtualScroll) return;\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.scrollAreaHeight === height) return oldState;\n return { scrollAreaHeight: height };\n });\n });\n\n handleScrollAreaScroll = (event: React.SyntheticEvent<HTMLElement>) => {\n const { scrollTop } = event.target as HTMLElement;\n const { virtualScroll } = this.asProps;\n if (virtualScroll) {\n this.setState((oldState: State) => {\n if (oldState.scrollOffset === scrollTop) return oldState;\n return { scrollOffset: scrollTop };\n });\n }\n };\n\n setupRowSizeObserver = () => {\n if (!this.firstRowRef.current) return;\n if (!this.asProps.virtualScroll) return;\n this.firstRowResizeObserver = new ResizeObserver(this.handleFirstRowResize);\n this.firstRowResizeObserver.observe(this.firstRowRef.current);\n };\n\n componentWillUnmount() {\n this.firstRowResizeObserver?.disconnect();\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const SHeightHold = Box;\n const {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = this.asProps;\n\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n\n const rowHeight = this.getRowHeight();\n const holdHeight =\n rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;\n\n if (virtualScroll && columnsInitialized && !rowHeight) {\n new Promise(() => this.setupRowSizeObserver());\n }\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={callAllEventHandlers(onResize, this.handleScrollAreaResize)}\n onScroll={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\n {columnsInitialized && !virtualScroll ? this.renderRows(rows) : null}\n {columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null}\n </SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"mappings":"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"}
|