ag-grid
Version:
Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components
67 lines (55 loc) • 2.76 kB
text/typescript
import {Autowired, Bean, Context, PostConstruct} from "../context/context";
import {ICellEditorComp, ICellEditorParams} from "./cellEditors/iCellEditor";
import {PopupEditorWrapper} from "./cellEditors/popupEditorWrapper";
import {GridOptionsWrapper} from "../gridOptionsWrapper";
import {ColDef} from "../entities/colDef";
import {ComponentResolver} from "../components/framework/componentResolver";
import {_, Promise} from "../utils";
('cellEditorFactory')
export class CellEditorFactory {
('context') private context: Context;
('componentResolver') private componentResolver: ComponentResolver;
('gridOptionsWrapper') private gridOptionsWrapper: GridOptionsWrapper;
private init(): void {
}
public addCellEditor(key: string, cellEditor: {new(): ICellEditorComp}): void {
console.warn(`ag-grid: since v13.3.1 this method is not supported anymore. If you want to register your own editor check the docs: https://www.ag-grid.com/javascript-grid-cell-editor/`);
}
// private registerEditorsFromGridOptions(): void {
// let userProvidedCellEditors = this.gridOptionsWrapper.getCellEditors();
// _.iterateObject(userProvidedCellEditors, (key: string, cellEditor: {new(): ICellEditor})=> {
// this.addCellEditor(key, cellEditor);
// });
// }
public createCellEditor(column: ColDef, params: ICellEditorParams): Promise<ICellEditorComp> {
let cellEditorPromise: Promise<ICellEditorComp> = this.componentResolver.createAgGridComponent (
column,
params,
'cellEditor',
{
api: params.api,
columnApi: params.columnApi,
node: params.node,
data: params.node.data,
rowIndex: params.rowIndex,
column: params.column,
colDef: params.column.getColDef()
},
'agCellEditor'
);
return cellEditorPromise.map(cellEditor => {
let isPopup = cellEditor.isPopup && cellEditor.isPopup();
if (!isPopup) { return cellEditor; }
if (this.gridOptionsWrapper.isFullRowEdit()) {
console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +
'- either turn off fullRowEdit, or stop using popup editors.');
}
// if a popup, then we wrap in a popup editor and return the popup
let popupEditorWrapper = new PopupEditorWrapper(cellEditor);
this.context.wireBean(popupEditorWrapper);
popupEditorWrapper.init(params);
return popupEditorWrapper;
});
}
}