ag-grid-row-unselectable-angular
Version:
A fork version of ag-grid-angular with row selection disable function added
133 lines (113 loc) • 6.53 kB
text/typescript
import {NgZone, ViewContainerRef, Injectable} from "@angular/core";
import {
ICellRendererComp,
ICellEditorComp,
BaseFrameworkFactory,
IFrameworkFactory,
ICellRendererFunc,
IFilterComp,
ColDef,
GridOptions
} from "ag-grid-row-unselectable/main";
import {BaseComponentFactory} from "./baseComponentFactory";
export class Ng2FrameworkFactory implements IFrameworkFactory {
private _viewContainerRef: ViewContainerRef;
private _baseFrameworkFactory: IFrameworkFactory = new BaseFrameworkFactory(); // todo - inject this
constructor(private _componentFactory: BaseComponentFactory, private _ngZone: NgZone) {
}
public colDefFloatingCellRenderer(colDef: ColDef): {new(): ICellRendererComp} | ICellRendererFunc | string {
if(colDef.floatingCellRendererFramework && colDef.floatingCellRendererFramework.component) {
console.warn("colDef.floatingCellRendererFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
colDef.floatingCellRendererFramework = colDef.floatingCellRendererFramework.component;
}
if (colDef.floatingCellRendererFramework) {
return this._componentFactory.createRendererFromComponent(colDef.floatingCellRendererFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.colDefFloatingCellRenderer(colDef);
}
}
public colDefCellRenderer(colDef: ColDef): {new(): ICellRendererComp} | ICellRendererFunc | string {
if(colDef.cellRendererFramework && colDef.cellRendererFramework.component) {
console.warn("colDef.cellRendererFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
colDef.cellRendererFramework = colDef.cellRendererFramework.component;
}
if (colDef.cellRendererFramework) {
return this._componentFactory.createRendererFromComponent(colDef.cellRendererFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.colDefCellRenderer(colDef);
}
}
public colDefCellEditor(colDef: ColDef): {new(): ICellEditorComp} | string {
if(colDef.cellEditorFramework && colDef.cellEditorFramework.component) {
console.warn("colDef.cellEditorFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
colDef.cellEditorFramework = colDef.cellEditorFramework.component;
}
if (colDef.cellEditorFramework) {
return this._componentFactory.createEditorFromComponent(colDef.cellEditorFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.colDefCellEditor(colDef);
}
}
public gridOptionsFullWidthCellRenderer(gridOptions: GridOptions): {new(): ICellRendererComp} | ICellRendererFunc | string {
if(gridOptions.fullWidthCellRendererFramework && gridOptions.fullWidthCellRendererFramework.component) {
console.warn("gridOptions.fullWidthCellRendererFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
gridOptions.fullWidthCellRendererFramework = gridOptions.fullWidthCellRendererFramework.component;
}
if (gridOptions.fullWidthCellRendererFramework) {
return this._componentFactory.createRendererFromComponent(gridOptions.fullWidthCellRendererFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.gridOptionsFullWidthCellRenderer(gridOptions);
}
}
public gridOptionsGroupRowRenderer(gridOptions: GridOptions): {new(): ICellRendererComp} | ICellRendererFunc | string {
if(gridOptions.groupRowRendererFramework && gridOptions.groupRowRendererFramework.component) {
console.warn("gridOptions.groupRowRendererFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
gridOptions.groupRowRendererFramework = gridOptions.groupRowRendererFramework.component;
}
if (gridOptions.groupRowRendererFramework) {
return this._componentFactory.createRendererFromComponent(gridOptions.groupRowRendererFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.gridOptionsGroupRowRenderer(gridOptions);
}
}
public gridOptionsGroupRowInnerRenderer(gridOptions: GridOptions): {new(): ICellRendererComp} | ICellRendererFunc | string {
if(gridOptions.groupRowInnerRendererFramework && gridOptions.groupRowInnerRendererFramework.component) {
console.warn("gridOptions.groupRowRendererFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
gridOptions.groupRowInnerRendererFramework = gridOptions.groupRowInnerRendererFramework.component;
}
if (gridOptions.groupRowInnerRendererFramework) {
return this._componentFactory.createRendererFromComponent(gridOptions.groupRowInnerRendererFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.gridOptionsGroupRowInnerRenderer(gridOptions);
}
}
public colDefFilter(colDef: ColDef): {new (): IFilterComp;} | string {
if(colDef.filterFramework && colDef.filterFramework.component) {
console.warn("colDef.filterFramework.component is deprecated - please refer to https://ag-grid.com/best-angular-2-data-grid/");
colDef.filterFramework = colDef.filterFramework.component;
}
if (colDef.filterFramework) {
return this._componentFactory.createFilterFromComponent(colDef.filterFramework,
this._viewContainerRef)
} else {
return this._baseFrameworkFactory.colDefFilter(colDef);
}
}
public setViewContainerRef(viewContainerRef: ViewContainerRef): void {
this._viewContainerRef = viewContainerRef;
}
public setTimeout(action: any, timeout?: any): void {
this._ngZone.runOutsideAngular(() => {
setTimeout(() => {
action();
}, timeout);
});
}
}