import {
Component,
CellRendererService,
ValueFormatterService,
Autowired,
PostConstruct,
GridOptionsWrapper,
_,
Column,
AgEvent,
Promise,
ICellRendererComp
} from "ag-grid-iux-community";
export interface SelectedEvent extends AgEvent {
}
export class SetFilterListItem extends Component {
public static EVENT_SELECTED = 'selected';
@Autowired('gridOptionsWrapper') private gridOptionsWrapper: GridOptionsWrapper;
@Autowired('cellRendererService') private cellRendererService: CellRendererService;
@Autowired('valueFormatterService') private valueFormatterService: ValueFormatterService;
private static TEMPLATE =
``;
private eCheckbox: HTMLElement;
private eClickableArea: HTMLElement;
private selected: boolean = true;
private value: any;
private column: Column;
private eCheckedIcon: HTMLElement;
private eUncheckedIcon: HTMLElement;
constructor(value: any, column: Column) {
super(SetFilterListItem.TEMPLATE);
this.value = value;
this.column = column;
}
@PostConstruct
private init(): void {
this.eCheckedIcon = _.createIconNoSpan('checkboxChecked', this.gridOptionsWrapper, this.column);
this.eUncheckedIcon = _.createIconNoSpan('checkboxUnchecked', this.gridOptionsWrapper, this.column);
this.eCheckbox = this.queryForHtmlElement(".ag-filter-checkbox");
this.eClickableArea = this.getGui();
this.updateCheckboxIcon();
this.render();
let listener = (mouseEvent: MouseEvent) => {
_.addAgGridEventPath(mouseEvent);
this.selected = !this.selected;
this.updateCheckboxIcon();
let event: SelectedEvent = {
type: SetFilterListItem.EVENT_SELECTED
};
return this.dispatchEvent(event);
};
this.addDestroyableEventListener(this.eClickableArea, 'click', listener);
}
public isSelected(): boolean {
return this.selected;
}
public setSelected(selected: boolean): void {
this.selected = selected;
this.updateCheckboxIcon();
}
private updateCheckboxIcon() {
if (this.eCheckbox.children) {
for (let i=0; i = this.cellRendererService.useFilterCellRenderer(colDef, valueElement, valueObj);
if (!componentPromise) return;
componentPromise.then(component => {
if (component && component.destroy) {
this.addDestroyFunc(component.destroy.bind(component));
}
});
}
}