diff --git a/src/methods.js b/src/methods.js
index 98d3aae..d700038 100644
--- a/src/methods.js
+++ b/src/methods.js
@@ -55,7 +55,7 @@ export default Base =>
columnsWithExpander = [expanderColumn, ...columnsWithExpander]
}
- const makeDecoratedColumn = column => {
+ const makeDecoratedColumn = (column, parentColumn) => {
let dcol
if (column.expander) {
dcol = {
@@ -70,6 +70,16 @@ export default Base =>
}
}
+ // Ensure minWidth is not greater than maxWidth if set
+ if (dcol.maxWidth < dcol.minWidth) {
+ dcol.minWidth = dcol.maxWidth
+ }
+
+ if (parentColumn) {
+ dcol.parentColumn = parentColumn
+ }
+
+ // First check for string accessor
if (typeof dcol.accessor === 'string') {
dcol.id = dcol.id || dcol.accessor
const accessorString = dcol.accessor
@@ -77,6 +87,7 @@ export default Base =>
return dcol
}
+ // Fall back to functional accessor (but require an ID)
if (dcol.accessor && !dcol.id) {
console.warn(dcol)
throw new Error(
@@ -84,30 +95,26 @@ export default Base =>
)
}
+ // Fall back to an undefined accessor
if (!dcol.accessor) {
dcol.accessor = d => undefined
}
- // Ensure minWidth is not greater than maxWidth if set
- if (dcol.maxWidth < dcol.minWidth) {
- dcol.minWidth = dcol.maxWidth
- }
-
return dcol
}
// Decorate the columns
- const decorateAndAddToAll = col => {
- const decoratedColumn = makeDecoratedColumn(col)
+ const decorateAndAddToAll = (column, parentColumn) => {
+ const decoratedColumn = makeDecoratedColumn(column, parentColumn)
allDecoratedColumns.push(decoratedColumn)
return decoratedColumn
}
- let allDecoratedColumns = []
+ const allDecoratedColumns = []
const decoratedColumns = columnsWithExpander.map((column, i) => {
if (column.columns) {
return {
...column,
- columns: column.columns.map(decorateAndAddToAll),
+ columns: column.columns.map(d => decorateAndAddToAll(d, column)),
}
} else {
return decorateAndAddToAll(column)
@@ -156,8 +163,17 @@ export default Base =>
}
})
+ let PivotParentColumn = pivotColumns.reduce(
+ (prev, current) =>
+ prev && prev === current.parentColumn && current.parentColumn,
+ pivotColumns[0].parentColumn
+ )
+
+ let PivotGroupHeader = hasHeaderGroups && PivotParentColumn.Header
+ PivotGroupHeader = PivotGroupHeader || (() => Pivoted)
+
let pivotColumnGroup = {
- header: () => Group,
+ Header: PivotGroupHeader,
columns: pivotColumns.map(col => ({
...this.props.pivotDefaults,
...col,