diff --git a/src/js/NodeModel.js b/src/js/NodeModel.js
index 82797d56..aae6788e 100644
--- a/src/js/NodeModel.js
+++ b/src/js/NodeModel.js
@@ -51,6 +51,9 @@ class NodeModel {
disabled: this.getDisabledState(node, parent, disabled, noCascade),
treeDepth: depth,
index,
+ extraKeys: Object.entries(node)
+ .filter(([key]) => !CheckModel.flatKeys.includes(key))
+ .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
};
this.flattenNodes(node.children, node, depth + 1);
});
diff --git a/src/js/constants.js b/src/js/constants.js
index b06e313f..5061240b 100644
--- a/src/js/constants.js
+++ b/src/js/constants.js
@@ -2,6 +2,20 @@ const CheckModel = {
ALL: 'all',
PARENT: 'parent',
LEAF: 'leaf',
+ flatKeys: [
+ 'label',
+ 'value',
+ 'children',
+ 'parent',
+ 'isChild',
+ 'isParent',
+ 'isLeaf',
+ 'showCheckbox',
+ 'disabled',
+ 'treeDepth',
+ 'index',
+ 'extraKeys',
+ ],
};
export default { CheckModel };
diff --git a/test/CheckboxTree.js b/test/CheckboxTree.js
index 4c7f3c26..1b24f6e2 100644
--- a/test/CheckboxTree.js
+++ b/test/CheckboxTree.js
@@ -859,8 +859,9 @@ describe('', () => {
{
value: 'jupiter',
label: 'Jupiter',
+ test1: '123',
children: [
- { value: 'io', label: 'Io' },
+ { value: 'io', label: 'Io', test2: '456' },
{ value: 'europa', label: 'Europa' },
],
},
@@ -884,6 +885,9 @@ describe('', () => {
treeDepth: 1,
index: 0,
parentValue: 'jupiter',
+ extraKeys: {
+ test2: '456',
+ },
};
const expectedParentMetadata = {
value: 'jupiter',
@@ -893,6 +897,9 @@ describe('', () => {
treeDepth: 0,
index: 0,
parentValue: undefined,
+ extraKeys: {
+ test1: '123',
+ },
};
// onCheck