{header}
-
{renderBody(dataSource)}
+
{renderBody(dataSource, context)}
);
};
diff --git a/src/computeColumnsValue.js b/src/computeColumnsValue.js
index 7d24d5e..bffb49d 100644
--- a/src/computeColumnsValue.js
+++ b/src/computeColumnsValue.js
@@ -1,16 +1,16 @@
import get from 'lodash/get';
import formatView from './formatView';
-const computeColumnsValue = ({ columns, emptyIsPlaceholder, valueIsEmpty, dataSource }) => {
- return columns
- .map(item => {
- const itemValue = typeof item.getValueOf === 'function' ? item.getValueOf(dataSource, { column: item }) : get(dataSource, item.name);
+const computeColumnsValue = ({ columns, emptyIsPlaceholder, valueIsEmpty, removeEmpty = true, dataSource, context }) => {
+ return (output => (removeEmpty ? output.filter(item => !!item) : output))(
+ columns.map(item => {
+ const itemValue = typeof item.getValueOf === 'function' ? item.getValueOf(dataSource, { column: item, context }) : get(dataSource, item.name);
const displayValue = (value => {
if (typeof item.format === 'function') {
- return item.format(value, { dataSource, column: item });
+ return item.format(value, { dataSource, column: item, context });
}
if (typeof item.format === 'string') {
- const formatValue = formatView(value, item.format, { dataSource, column: item });
+ const formatValue = formatView(value, item.format, { dataSource, column: item, context });
if (formatValue) {
return formatValue;
}
@@ -25,7 +25,8 @@ const computeColumnsValue = ({ columns, emptyIsPlaceholder, valueIsEmpty, dataSo
(typeof item.display === 'function' &&
item.display(itemValue, {
dataSource,
- column: item
+ column: item,
+ context
}) === false)
) {
return null;
@@ -37,29 +38,31 @@ const computeColumnsValue = ({ columns, emptyIsPlaceholder, valueIsEmpty, dataSo
return Object.assign({}, item, { isEmpty: itemIsEmpty, value: displayValue });
})
- .filter(item => !!item);
+ );
};
-export const computeDisplay = ({ column, dataSource, placeholder }) => {
+export const computeDisplay = ({ column, dataSource, placeholder, context }) => {
return column.isEmpty
? typeof column.renderPlaceholder === 'function'
? column.renderPlaceholder({
column: column,
dataSource,
- placeholder
+ placeholder,
+ context
})
: column.placeholder || placeholder
: typeof column.render === 'function'
? column.render(column.value, {
column,
- dataSource
+ dataSource,
+ context
})
: column.value;
};
-export const computeColumnsDisplay = ({ columns, emptyIsPlaceholder, valueIsEmpty, dataSource, placeholder }) => {
- return computeColumnsValue({ columns, emptyIsPlaceholder, valueIsEmpty, dataSource }).map(column => {
- return computeDisplay({ column, placeholder, dataSource });
+export const computeColumnsDisplay = ({ columns, emptyIsPlaceholder, valueIsEmpty, removeEmpty, dataSource, placeholder, context }) => {
+ return computeColumnsValue({ columns, emptyIsPlaceholder, valueIsEmpty, removeEmpty, dataSource, context }).map(column => {
+ return computeDisplay({ column, placeholder, dataSource, context });
});
};