feat: add support for multiple double-headers to EditableTable
This commit is contained in:
parent
c5e7818836
commit
5b55ce89d8
1 changed files with 19 additions and 14 deletions
|
|
@ -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 = () => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue