Skip to content

Commit f691b3f

Browse files
committed
feat: Commit base implementation of Neo.grid.Row and refactored GridBody (#8970)
1 parent 0b2ec28 commit f691b3f

2 files changed

Lines changed: 24 additions & 7 deletions

File tree

src/grid/Body.mjs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,11 @@ class GridBody extends Container {
448448
if (!value) {
449449
this._columnPositions = value = Neo.create({
450450
module : Collection,
451-
keyProperty: 'dataField'
451+
keyProperty: 'dataField',
452+
listeners : {
453+
mutate: this.onColumnPositionsMutate,
454+
scope : this
455+
}
452456
})
453457
}
454458

@@ -536,8 +540,9 @@ class GridBody extends Container {
536540

537541
/**
538542
* @param {Boolean} silent=false
543+
* @param {Boolean} force=false
539544
*/
540-
createViewData(silent=false) {
545+
createViewData(silent=false, force=false) {
541546
let me = this,
542547
{mountedRows, store} = me,
543548
endIndex, i, item, itemIndex, poolSize, range;
@@ -575,6 +580,8 @@ class GridBody extends Container {
575580
record : store.getAt(i),
576581
rowIndex: i
577582
})
583+
} else if (force) {
584+
item.createVdom()
578585
}
579586
}
580587

@@ -802,6 +809,13 @@ class GridBody extends Container {
802809
this.fireCellEvent(data, 'cellDoubleClick')
803810
}
804811

812+
/**
813+
* @param {Object} data
814+
*/
815+
onColumnPositionsMutate(data) {
816+
this.createViewData(false, true)
817+
}
818+
805819
/**
806820
*
807821
*/

src/grid/Row.mjs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ class Row extends Component {
7575
column.rendererScope = column;
7676
}
7777

78-
me.bindCallback(column.renderer, 'renderer', column.rendererScope || me, column);
79-
80-
rendererOutput = column.renderer.call(column.rendererScope || me, {
78+
rendererOutput = column.renderer.call(column.rendererScope || column, {
8179
column,
8280
columnIndex,
8381
component: me.components?.[column.dataField],
@@ -217,7 +215,7 @@ class Row extends Component {
217215
vdom['aria-selected'] = true;
218216
// Note: fire('select') should ideally be handled by the SelectionModel observing the store/records,
219217
// or we keep it here but suppress events during rendering if needed.
220-
// gridContainer.fire('select', {record})
218+
// gridContainer.fire('select', {record})
221219
}
222220

223221
vdom.cls = rowCls;
@@ -238,6 +236,10 @@ class Row extends Component {
238236

239237
columnPosition = gridBody.columnPositions.get(column.dataField);
240238

239+
if (!columnPosition) {
240+
continue
241+
}
242+
241243
cellConfig.style = {
242244
...cellConfig.style,
243245
left : columnPosition.x + 'px',
@@ -260,7 +262,8 @@ class Row extends Component {
260262
vdom.cn.push(cellConfig)
261263
}
262264

263-
me.vdom = vdom;
265+
me._vdom = vdom;
266+
me.update()
264267
}
265268

266269
/**

0 commit comments

Comments
 (0)