@noaestudio/forms
Version:
Dynamic forms extension for Covalent
80 lines (79 loc) • 3.16 kB
TypeScript
import { ChangeDetectorRef } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { AbstractControlValueAccessor } from '../abstract-control-value-accesor';
import { Observable } from 'rxjs';
import { SelectionModel } from '@angular/cdk/collections';
import { FlatTreeControl } from '@angular/cdk/tree';
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
import { TranslateService } from '@ngx-translate/core';
import { MatDialog } from '@angular/material';
/**
* Node for to-do item
*/
export declare class ItemNode {
id: number;
name: string;
children: ItemNode[];
parent: number;
checked: boolean;
}
/** Flat to-do item node with expandable and level information */
export declare class ItemFlatNode {
id: number;
name: string;
parent: number;
level: number;
expandable: boolean;
checked: boolean;
children: ItemFlatNode[];
}
export declare const INPUT_INPUT_CONTROL_VALUE_ACCESSOR: any;
export declare class TreeSelectorComponent extends AbstractControlValueAccessor implements ControlValueAccessor {
private translator;
dialog: MatDialog;
private changeDetector;
control: FormControl;
/** Map from flat node to nested node. This helps us finding the nested node to be modified */
flatNodeMap: Map<ItemFlatNode, ItemNode>;
/** Map from nested node to flattened node. This helps us to keep the same object for selection */
nestedNodeMap: Map<ItemNode, ItemFlatNode>;
/** A selected parent node to be inserted */
selectedParent: ItemFlatNode | null;
treeControl: FlatTreeControl<ItemFlatNode>;
treeFlattener: MatTreeFlattener<ItemNode, ItemFlatNode>;
dataSource: MatTreeFlatDataSource<ItemNode, ItemFlatNode>;
/** The selection for checklist */
checklistSelection: SelectionModel<ItemFlatNode>;
selectMultiple: boolean;
/** Component Attributes */
label: string;
required: boolean;
searchable: boolean;
flattenedItems: any[];
treeItems: any;
masterNode: number;
outputItems: number[];
outputPreview: any[];
constructor(translator: TranslateService, dialog: MatDialog, changeDetector: ChangeDetectorRef);
ngOnInit(): void;
private flattenItems(items);
selectItems: any;
private loadSearchData();
generateTree(input: any, parent: any): ItemFlatNode[];
refrescaPadre(node: any, status: any): void;
checkNode(event: any, node: ItemFlatNode): void;
changeAllDescendants(node: any, status: any): void;
getSelectedItems(node: any): void;
getOutputNodes(node: any): void;
loadData(): void;
getLevel: (node: ItemFlatNode) => number;
isExpandable: (node: ItemFlatNode) => boolean;
getChildren: (node: ItemFlatNode) => Observable<ItemFlatNode[]>;
hasChild: (_: number, _nodeData: ItemFlatNode) => boolean;
hasNoContent: (_: number, _nodeData: ItemFlatNode) => boolean;
/**
* Transformer to convert nested node to flat node. Record the nodes in maps for later use.
*/
transformer: (node: ItemFlatNode, level: number) => ItemFlatNode;
toggleTree(): void;
}