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
? group
: [
{
width: R.sum(R.map(R.prop('width'), group)),
elements: group,
name: doubleHeader(group[0])
} }
]
const index = R.indexOf(toSHeader[0], elements) ),
const width = R.compose(R.sum, R.map(R.path(['width'])))(toSHeader) R.reduce(R.concat, [])
const innerElements = R.insert(
index,
{ width, elements: toSHeader, name: toSHeader[0].doubleHeader },
noSHeader
) )
return [innerElements, TDoubleLevelHead] return R.all(R.pipe(doubleHeader, R.isNil), elements)
? [elements, THead]
: [group(elements), TDoubleLevelHead]
} }
const Header = () => { const Header = () => {