import { CoreComponent, EventArgs } from "cmf.core/src/core"; import * as ColumnViewStructure from "./columnViewStructure"; import * as ng from "@angular/core"; import { ColumnViewRow } from "./columnViewRow"; export interface ColumnViewColumnSelectedArgs extends EventArgs { /** * Selected row */ selectedRow?: ColumnViewStructure.ColumnViewRowModel; /** * Selected column index */ columnIndex?: number; /** * Holds a true value when this selection is not a navigation but only a change of multiSelection value */ isMultiSelection?: boolean; /** * Used to determine if the column will receive focus on creation */ focus?: boolean; /** * Used to determine if the row select (on column view) will emit the selection event */ triggerNotification?: boolean; /** * Just so the ColumnView can collect a promise that may tell if there are * new nodes to show or not. */ lazyLoadChildrenPromise?: Promise; /** * This function needs to be explicitly called in order to perform the removal. */ remove(): void; } export interface ColumnViewColumnActionArgs extends EventArgs { selectedRow?: ColumnViewStructure.ColumnViewRowModel; selectedColumn?: ColumnViewStructure.ColumnViewColumnModel; } export interface ColumnViewColumnRemoveArgs extends ColumnViewColumnActionArgs { columnIndex?: number; /** * This function needs to be explicitly called in order to perform the removal. */ remove(jumpToPrevious?: boolean): void; } /** * @whatItDoes * ColumnViewColumn Component * * @howToUse * Private component used in ColumnView * * ### Inputs * `ColumnViewStructure.ColumnViewColumnModel` : **model** - Column view column model ; * `boolean` : **showHeader** - Used to control if the column header will not appear even if the column doesn't have a title ; * `boolean` : **isOrderable** - Used to control if drag and drop actions will be enabled ; * `boolean` : **multiSelection** - Controls wether the user can select multiple rows using a checkbox . * * ### Outputs * `ColumnViewColumnSelectedArgs` : **selected** - Triggered when an column is selected ; * `ColumnViewColumnActionArgs` : **action** - Triggered when an action (inside of column) is selected ; * `ColumnViewColumnRemoveArgs` : **remove** - Triggered when the action remove (inside of column) is clicked ; * `ColumnViewStructure.ColumnViewItem[]` : **order** - Triggered when the action sort (inside of column) is clicked . * `any`: **onReceiveDropInRow** - When something was dropped on a row * * ### Example * To use the component, assume this HTML Template as an example: * * ```HTML * * * * ``` */ export declare class ColumnViewColumn extends CoreComponent implements ng.DoCheck { private _elementRef; private _ngZone; headerValue: string; headerValueTooltip: string; headerValueRightAlign: string; headerValueRightAlignTooltip: string; cssClass: string; childrenType: string; model: ColumnViewStructure.ColumnViewColumnModel; rows: ColumnViewStructure.ColumnViewRowModel[]; selectedRowIndex: number; /** * Controls wether the user can select multiple rows using a checkbox */ multiSelection: boolean; /** * Event emitters */ selected: ng.EventEmitter; action: ng.EventEmitter; remove: ng.EventEmitter; order: ng.EventEmitter; onReceiveDropInRow: ng.EventEmitter; /** * Used to control if drag and drop actions will be enabled */ isOrderable: boolean; /** * Used to control if the column header will not appear even if the column doesn't have a title */ showHeader: boolean; /** * The column view rows children of this column */ childrenRows: ng.QueryList; private bodyRef; /** * Debounce to the move of the column view rows */ private debouncedMoveCursor; /** * index saved to know from which row the drag comes from */ private oldIndex; /** * Key of data to add on dataTransfer when dragging starts */ private readonly DRAG_DATA_KEY; /** * Boolean to control wether the handle of the model change is happening */ private _handlingModelChange; /** * ColumnView generic methods accessor */ private _columnViewUtil; constructor(_elementRef: ng.ElementRef, _ngZone: ng.NgZone); /** * Function of the debounce of the move of the column view rows */ private debouncedMove; private changeLine; /** * Get new ColumnViewRowModels * @param newModel */ private getColumnViewRows; /** * Handle Model Property change. * @param changeMeta */ private handleModelChange; private moveCursorWithDirection; ngDoCheck(): void; /** * Explicity refresh model */ refreshModel(): Promise; onClick(event: Event, row: ColumnViewStructure.ColumnViewRowModel, index: number, focus?: boolean, triggerNotification?: boolean): void; onAction(row: ColumnViewStructure.ColumnViewRowModel): void; /** * Event triggered when a row multi selection changes */ onMultiSelection(row: ColumnViewStructure.ColumnViewRowModel): void; onRemove(row: ColumnViewStructure.ColumnViewRowModel, index: number): void; /** * When the row was a leaf and now becomes a node with children */ onLeafMutate(row: ColumnViewStructure.ColumnViewRowModel, index: number): void; onKeyDown(event: KeyboardEvent): void; focus(): void; /** * Move the the next row. */ next(): boolean; /** * Move to the previous row. */ previous(): boolean; down(): boolean; last(): void; /** * Deselect row */ deselect(): boolean; /** * event when drag start */ onDragstart(event: DragEvent, index: number): void; /** * event when drop element */ onDrop(event: DragEvent, index: number): void; /** * event on drag over */ onDragOver(event: DragEvent): void; /** * event on drag enter */ onDragEnter(event: DragEvent): void; /** * TrackBy function for ngFor of ColumnViewStructure.ColumnViewRowModel array. * This improves performance by avoiding redraw of all array items everytime there is a change, which in this * case is frequently due to ngDoCheck. * @param index Row index * @param item ColumnViewStructure.ColumnViewRowModel */ trackByFn(index: number, item: ColumnViewStructure.ColumnViewRowModel): string; }