- |
+ |
@@ -586,39 +588,43 @@
var rowData = this.get(['data',row.dataset.key]);
var cells = Polymer.dom(row).querySelectorAll('.bound-cell');
+ var dataColumn;
cells.forEach((cell) => {
- if(!cell.dataColumn){
+ if(!(dataColumn = cell.dataColumn)){
console.log(cell);
}
var isEmpty = cell.hasAttribute('data-empty');
var isWrongRow = cell.getAttribute('data-row-key') !== row.dataset.key;
- var isWrongColumn = cell.dataColumn !== cell.dataBoundColumn;
+ var isWrongColumn = dataColumn !== cell.dataBoundColumn;
if(isEmpty || isWrongRow || isWrongColumn){
cell.removeAttribute('data-empty');
- var prop = cell.dataColumn.property;
- var data = rowData[prop];
+ var prop = dataColumn.property;
+ var data = dataColumn.accessor ? dataColumn.accessor(rowData, prop) : rowData[prop];
cell.setAttribute('data-row-key', row.dataset.key);
- cell.dataBoundColumn = cell.dataColumn;
+ cell.dataBoundColumn = dataColumn;
- if(cell.dataColumn.cellStyle.length > 0){
- cell.setAttribute('style', cell.dataColumn.cellStyle);
+ // we add the column key as an attribute for easier css rules (e.g. ::content [my-prop] {background : red;})
+ cell.setAttribute(prop, '');
+
+ if(dataColumn.cellStyle.length > 0){
+ cell.setAttribute('style', dataColumn.cellStyle);
}else{
cell.setAttribute('style', '');
}
- if(cell.style['text-align'] == '' && cell.dataColumn.align){
- cell.style['text-align'] = cell.dataColumn.align;
+ if(cell.style['text-align'] == '' && dataColumn.align){
+ cell.style['text-align'] = dataColumn.align;
}
- //if(cell.style['min-width'] == '' && cell.dataColumn.width){
- // cell.style['min-width'] = cell.dataColumn.width;
+ //if(cell.style['min-width'] == '' && dataColumn.width){
+ // cell.style['min-width'] = dataColumn.width;
//}
- if(cell.dataColumn.template && !cell.dataColumn.dialog){
- var instance = cell.dataColumn._createCellInstance(
+ if(dataColumn.template && !dataColumn.dialog){
+ var instance = dataColumn._createCellInstance(
rowData,
row.dataset.key
);
@@ -629,7 +635,7 @@
}else{
if(cell.instance)
delete cell.instance;
- cell.querySelector('span').innerHTML = cell.dataColumn._formatValue(data)
+ cell.querySelector('span').innerHTML = dataColumn._formatValue(data)
//cell.textContent = data;
}
}
@@ -667,8 +673,9 @@
for(var i=0; i {
if(th.dataColumn){
var column = th.dataColumn;
+
+ th.setAttribute(column.property, '');
+
if(th.scrollWidth > th.offsetWidth){
column.set('tooltip', column.header);
}else{
|