UNPKG

@noaestudio/forms

Version:

Dynamic forms extension for Covalent

80 lines (79 loc) 3.16 kB
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; }