Skip to content

Commit 2efda23

Browse files
authored
Add support for row-header formatting (#149)
* add row-header conditional formatting support * move cell renderer update call for row headers to _updateGridRenderers
1 parent 6e44344 commit 2efda23

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

src/feathergrid.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ export class FeatherGrid extends Widget {
220220
verticalAlignment: 'center',
221221
});
222222

223+
this._rowHeaderRenderer = new TextRenderer({
224+
textColor: Theme.getFontColor(1),
225+
backgroundColor: Theme.getBackgroundColor(2),
226+
horizontalAlignment: 'center',
227+
verticalAlignment: 'center'
228+
});
229+
223230
const layout = (this.layout = new PanelLayout());
224231
layout.addWidget(this.grid);
225232
}
@@ -495,14 +502,6 @@ export class FeatherGrid extends Widget {
495502
});
496503
}
497504

498-
const rowHeaderRenderer = new TextRenderer({
499-
textColor: Theme.getFontColor(1),
500-
backgroundColor: Theme.getBackgroundColor(2),
501-
horizontalAlignment: 'center',
502-
verticalAlignment: 'center',
503-
});
504-
this.grid.cellRenderers.update({ 'row-header': rowHeaderRenderer });
505-
506505
const scrollShadow = {
507506
size: 4,
508507
color1: Theme.getBorderColor(1, 1.0),
@@ -751,15 +750,19 @@ export class FeatherGrid extends Widget {
751750
*
752751
* @param config - CellConfig for the cell to be rendered.
753752
*/
754-
private _rendererResolver(config: CellRenderer.CellConfig): CellRenderer {
755-
const columnName: string = config.metadata['name'];
756-
return this._renderers.hasOwnProperty(columnName)
757-
? this._renderers[columnName]
758-
: this._defaultRenderer;
759-
}
753+
private _rendererResolver(config: CellRenderer.CellConfig): CellRenderer {
754+
const columnName: string = config.metadata['name'];
755+
const cellRegion: string = config['region'];
756+
return this._renderers.hasOwnProperty(columnName)
757+
? this._renderers[columnName]
758+
: cellRegion === 'row-header'
759+
? this._rowHeaderRenderer
760+
: this._defaultRenderer;
761+
}
760762

761763
private _updateGridRenderers() {
762764
this.grid.cellRenderers.update({ body: this._rendererResolver.bind(this) });
765+
this.grid.cellRenderers.update({ 'row-header': this._rendererResolver.bind(this) });
763766
}
764767

765768
private _updateColumnWidths() {
@@ -938,6 +941,7 @@ export class FeatherGrid extends Widget {
938941
private _editable: boolean;
939942
private _renderers: Dict<CellRenderer> = {};
940943
private _defaultRenderer: CellRenderer;
944+
private _rowHeaderRenderer: CellRenderer;
941945
private _defaultRendererSet = false;
942946
private _cellClicked = new Signal<this, FeatherGrid.ICellClickedEvent>(this);
943947
private _columnsResized = new Signal<this, void>(this);

0 commit comments

Comments
 (0)