feat: add support for multiple double-headers to EditableTable

This commit is contained in:
siiky 2022-10-10 16:05:14 +01:00 committed by Rafael
parent c5e7818836
commit 5b55ce89d8

View file

@ -22,22 +22,27 @@ const styles = {
const useStyles = makeStyles(styles) const useStyles = makeStyles(styles)
const groupSecondHeader = elements => { const groupSecondHeader = elements => {
const [toSHeader, noSHeader] = R.partition(R.has('doubleHeader'))(elements) const doubleHeader = R.prop('doubleHeader')
const sameDoubleHeader = (a, b) => doubleHeader(a) === doubleHeader(b)
if (!toSHeader.length) { const group = R.pipe(
return [elements, THead] R.groupWith(sameDoubleHeader),
} R.map(group =>
R.isNil(doubleHeader(group[0])) // No doubleHeader
const index = R.indexOf(toSHeader[0], elements) ? group
const width = R.compose(R.sum, R.map(R.path(['width'])))(toSHeader) : [
{
const innerElements = R.insert( width: R.sum(R.map(R.prop('width'), group)),
index, elements: group,
{ width, elements: toSHeader, name: toSHeader[0].doubleHeader }, name: doubleHeader(group[0])
noSHeader }
]
),
R.reduce(R.concat, [])
) )
return [innerElements, TDoubleLevelHead] return R.all(R.pipe(doubleHeader, R.isNil), elements)
? [elements, THead]
: [group(elements), TDoubleLevelHead]
} }
const Header = () => { const Header = () => {