diff --git a/demo/paper-datatable/playground.html b/demo/paper-datatable/playground.html
index 4e59fd1..939809b 100644
--- a/demo/paper-datatable/playground.html
+++ b/demo/paper-datatable/playground.html
@@ -57,6 +57,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -81,6 +91,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -109,9 +131,9 @@
return this.get(path);
};
app.data = [
- {title: 'Ice cream', yummy: true, calories: 2000, complexObj: {a: 'b', b: 'd'}, arr: [2,3,4], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447315235838)},
- {title: 'Dessert', yummy: true, calories: 3000, complexObj: {a: 'bb', b: 'dd'}, arr: [5,6], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447155235838)},
- {title: 'Cake', yummy: false, calories: 4000, complexObj: {a: 'cc', b: 'gg'}, arr: [7,8], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447355135838)}
+ {title: 'Ice cream', yummy: true, calories: 2000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'b', b: 'd'}, arr: [2,3,4], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447315235838)},
+ {title: 'Dessert', yummy: true, calories: 3000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'bb', b: 'dd'}, arr: [5,6], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447155235838)},
+ {title: 'Cake', yummy: false, calories: 4000, veryComplexObj: {a: {x: ['b', 'c']}}, complexObj: {a: 'cc', b: 'gg'}, arr: [7,8], complexArr: [{title:'b'}, {title:'c'}], created: new Date(1447355135838)}
];
app.log = function(ev){
console.info('event', ev.type, 'on', ev.target, 'with detail', ev.detail);
diff --git a/paper-datatable-column.html b/paper-datatable-column.html
index 656c694..3e8cef8 100644
--- a/paper-datatable-column.html
+++ b/paper-datatable-column.html
@@ -286,10 +286,14 @@
},
_createCellInstance: function(model, notificationKey){
- if(typeof model[this.property] == 'undefined' && typeof this.default !== 'undefined'){
+ var modelDefined = model[this.property];
+ if (!modelDefined && this.property) {
+ this.property.split('.').forEach(key => modelDefined = modelDefined ? modelDefined[key] : model[key]);
+ }
+ if(modelDefined == 'undefined' && typeof this.default !== 'undefined'){
var instance = this.stamp({item: model, column:this, value: this.default, _dataKey: notificationKey});
}else{
- var instance = this.stamp({item: model, column:this, value: model[this.property], _dataKey: notificationKey});
+ var instance = this.stamp({item: model, column:this, value: modelDefined, _dataKey: notificationKey});
}
return instance;
},
diff --git a/paper-datatable.html b/paper-datatable.html
index d1c8907..1ebf212 100644
--- a/paper-datatable.html
+++ b/paper-datatable.html
@@ -601,6 +601,9 @@
cell.removeAttribute('data-empty');
var prop = cell.dataColumn.property;
var data = rowData[prop];
+ if (!data && prop) {
+ prop.split('.').forEach(key => data = data ? data[key] : rowData[key]);
+ }
cell.setAttribute('data-row-key', row.dataset.key);
cell.dataBoundColumn = cell.dataColumn;