import {Autowired, Component, Context, GridOptionsWrapper, PostConstruct, RefSelector} from "ag-grid-iux-community/main"; import {PrimaryColsListPanel} from "./primaryColsListPanel"; import {PrimaryColsHeaderPanel} from "./primaryColsHeaderPanel"; import {ToolPanelColumnCompParams} from "../../columnToolPanel"; export interface BaseColumnItem { getDisplayName(): string; onSelectAllChanged(value: boolean): void; isSelected(): boolean; isSelectable(): boolean; isExpandable(): boolean; setExpanded(value: boolean): void; } export class PrimaryColsPanel extends Component { private static TEMPLATE = `
`; @Autowired('context') private context: Context; @Autowired('gridOptionsWrapper') private gridOptionsWrapper: GridOptionsWrapper; @RefSelector('eColumnSelectHeader') private columnSelectHeaderComp: PrimaryColsHeaderPanel; @RefSelector('eToolPanelColumnsContainerComp') private columnContainerComp: PrimaryColsListPanel; private allowDragging: boolean; private params: ToolPanelColumnCompParams; // we allow dragging in the toolPanel, but not when this component appears in the column menu constructor(allowDragging: boolean, params: ToolPanelColumnCompParams) { super(PrimaryColsPanel.TEMPLATE); this.allowDragging = allowDragging; this.params = params; } @PostConstruct public init(): void { this.instantiate(this.context); let hideFilter = this.params.suppressColumnFilter; let hideSelect = this.params.suppressColumnSelectAll; let hideExpand = this.params.suppressColumnExpandAll; if (hideExpand && hideFilter && hideSelect) { this.columnSelectHeaderComp.setVisible(false); } } private onFilterChanged(event: any) { this.columnContainerComp.setFilterText(event.filterText); } private onSelectAll() { this.columnContainerComp.doSetSelectedAll(true); } private onUnselectAll() { this.columnContainerComp.doSetSelectedAll(false); } private onExpandAll() { this.columnContainerComp.doSetExpandedAll(true); } private onCollapseAll() { this.columnContainerComp.doSetExpandedAll(false); } private onGroupExpanded(event: any) { this.columnSelectHeaderComp.setExpandState(event.state); } }