@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
923 lines (902 loc) • 33.2 kB
TypeScript
import * as _c8y_client from '@c8y/client';
import { IManagedObject, QueriesUtil, InventoryService, UserService, IResult, Paging, IIdentified } from '@c8y/client';
import * as i1 from '@c8y/ngx-components';
import { NavigatorNode, GroupService, ModalService, AlertService, BreadcrumbService, AppStateService, OptionsService, NavigatorNodeData, GroupFragment, ClickOptions } from '@c8y/ngx-components';
import { Observable, BehaviorSubject, Subject } from 'rxjs';
import { Router, ActivatedRouteSnapshot } from '@angular/router';
import { ApiService } from '@c8y/ngx-components/api';
import * as i0 from '@angular/core';
import { InjectionToken, OnInit, EventEmitter, ChangeDetectorRef, SimpleChanges, ElementRef, ModuleWithProviders } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import * as i2 from 'ngx-bootstrap/collapse';
import * as i3 from 'ngx-bootstrap/dropdown';
import * as i4 from '@angular/forms';
import { AbstractControl, ValidationErrors } from '@angular/forms';
import * as _c8y_ngx_components_assets_navigator from '@c8y/ngx-components/assets-navigator';
declare enum AssetsNavigatorAction {
FETCH = 0,
NEXT = 1,
REFRESH = 2,
LOADING_DONE = 3
}
declare const ASSET_NAVIGATOR_CONFIG: InjectionToken<AssetNavigatorConfig>;
/**
* Configuration object of the AssetsNavigatorModule.
*/
interface AssetNavigatorConfig {
/**
* Allows to enable smart groups in the module.
* Default value: false.
*/
smartGroups?: boolean;
/**
* Expands the root navigator node when the navigator is initialized.
* Default value: false
*/
openOnStart?: boolean;
/**
* Allows to change the position of the root group in the navigator.
* The higher the value, the higher the position in navigation.
* Default value: 2000.
*/
rootNodePriority?: number;
/**
* Allows to drag and drop items in the asset navigator.
* Default value: true.
*/
disableDragAndDrop?: boolean;
/**
* Allows to override properies of the root group or hide it.
* Setup examples:
* - `rootNavigatorNode: true` - shows the default navigator node (default),
* - `rootNavigatorNode: false` - hides the navigator node,
* - `rootNavigatorNode: { label: 'New name', ... }` - overrides default navigator node,
* - `rootNavigatorNode: new NavigatorNode({ label: 'New name', ... })` - overrides default navigator node,
*/
rootNavigatorNode?: boolean | Partial<NavigatorNode | AssetNode>;
}
declare class DeviceGroupService {
private migratedDeviceGroupService;
constructor(migratedDeviceGroupService: GroupService);
icon(mo: IManagedObject, open?: boolean): Promise<string>;
isGroup(mo: IManagedObject): boolean;
isDynamicGroup(mo: IManagedObject): boolean;
isDataBroker(mo: IManagedObject): boolean;
isDataBrokerActive(mo: IManagedObject): boolean;
isAsset(mo: IManagedObject): boolean;
isAnyGroup(mo: IManagedObject): boolean;
isDevice(mo: IManagedObject): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<DeviceGroupService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DeviceGroupService>;
}
interface AssetNodeMo {
id: string;
type: string;
}
declare class AssetNodeService {
rootNode: AssetNode;
firstUrl: boolean;
draggedData: AssetNode;
queriesUtil: QueriesUtil;
protected PAGE_SIZE: number;
private refreshTrigger$;
private rootGroupsFetched;
rootGroups$: Observable<any>;
inventory: InventoryService;
apiService: ApiService;
modal: ModalService;
alert: AlertService;
translateService: TranslateService;
protected breadcrumbService: BreadcrumbService;
protected user: UserService;
protected appState: AppStateService;
protected optionsService: OptionsService;
moduleConfig: AssetNavigatorConfig;
protected deviceGroupService: DeviceGroupService;
protected router: Router;
constructor();
/**
* Expands the navigator nodes on first navigation.
* @param snapshot The current navigation snapshot.
*/
expandNodesOnStart(snapshot: ActivatedRouteSnapshot): Promise<void>;
/**
* Expands all the given ids recursively. Stops if it does not find any.
* @param node The node where the expanding should be started
* @param ids The ids that should be expanded.
*/
expandAll(node: AssetNode, ids: string[]): void;
label(mo: IManagedObject): string;
icon(mo: IManagedObject, open?: boolean): Promise<string>;
isGroup(mo: IManagedObject): boolean;
isDynamicGroup(mo: IManagedObject): boolean;
isDataBroker(mo: IManagedObject): boolean;
isDataBrokerActive(mo: IManagedObject): boolean;
isAsset(mo: IManagedObject): boolean;
isAnyGroup(mo: IManagedObject): boolean;
isDevice(mo: IManagedObject): boolean;
createRootNode(config?: NavigatorNodeData): AssetNode;
createDynamicGroupNode(config: any): DynamicGroupNode;
createAssetNode(config: Partial<AssetNode>): AssetNode;
createChildNode(managedObject: any, config: Partial<AssetNode>): AssetNode | DynamicGroupNode;
getRootNodes(customFilter?: any): Promise<any>;
refresh(): void;
fetchRootGroups(customFilter?: any): Promise<any>;
getAllInventories(customFilter?: any): Promise<any>;
getGroupItems(moId: string, extraFilter?: object, withChildren?: boolean, filterQuery?: string): Promise<_c8y_client.IResultList<IManagedObject>>;
getUnassignedDevices(withChildren?: boolean, filterQuery?: string): Promise<_c8y_client.IResultList<IManagedObject>>;
getDynamicGroupItems(groupQuery: string, filterObj?: any): Promise<_c8y_client.IResultList<IManagedObject>>;
getDeviceChildren(moId: string, extraFilter?: object, filterQuery?: string, withChildren?: boolean): Promise<_c8y_client.IResultList<IManagedObject>>;
getUnassignedDevicesQueryStr(filterQuery: any): string;
groupQueryFilter(moId: string, filterQuery?: string): string;
navRootQueryFilter(): {
__filter: {
type: GroupFragment;
__has?: undefined;
};
__orderby: any[];
} | {
__filter: {
__has: GroupFragment;
type?: undefined;
};
__orderby: any[];
};
rootQueryFilter(): {
__filter: {
type: GroupFragment;
__has?: undefined;
};
__orderby: any[];
} | {
__filter: {
__has: GroupFragment;
type?: undefined;
};
__orderby: any[];
};
onUpdate({ mo, root }: {
mo: any;
root: any;
}): Observable<{
data: IManagedObject;
method: string;
url: string;
}>;
isNewManagedObjectRoot(response?: Partial<IResult<IManagedObject>>): boolean;
/**
* Check if it is possible to drop a node after dragging.
* @param dropOnRoot Is the drop performed on the root node
*/
canDropNode(dropOnRoot: boolean): boolean;
/**
* There could be multiple breadcrumbs for devices,
* so we set a preferred one on click on a device.
* @param parents The parent nodes of the device to select the prefered one.
*/
preferBreadcrumb(parents: NavigatorNode[]): void;
protected createFilter(extraParams?: any): any;
private buildCombinedQuery;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetNodeService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<AssetNodeService>;
}
declare class LoadMoreNode extends NavigatorNode {
static NAME: string;
label: "Load more";
icon: string;
droppable: boolean;
constructor();
toString(): string;
isGroup(): boolean;
}
declare class AssetNode extends NavigatorNode {
protected service: AssetNodeService;
protected config: NavigatorNodeData;
static NAME: string;
root: boolean;
mo: any;
hideDevices: boolean;
filterQuery$: BehaviorSubject<string>;
showChildDevices: boolean;
/**
* Asset node children (subentries).
*/
children: AssetNode[];
get hasChildren(): boolean;
get isDevice(): boolean;
get isDeviceOrProbablyChildDevice(): boolean;
get isNeitherDeviceOrGroup(): boolean;
events: Subject<AssetsNavigatorAction>;
nodesFetched: Subject<void>;
protected paging: Paging<AssetNodeMo>;
protected loadMoreNode: LoadMoreNode;
private onUpdateSubscription;
constructor(service: AssetNodeService, config?: NavigatorNodeData);
getPath(): string;
refresh(mo?: any, method?: string): void;
setLabel(): void;
click(options?: ClickOptions): void;
sort(): void;
addManagedObject(mo: any): void;
isChildAddition(childAdditions: any, mo: any): any;
destroy(): void;
get canDrop(): boolean;
dragStart($event: any): void;
dragEnd($event: any): void;
drop($event: any): Promise<void>;
hookEvents(): void;
toString(): string;
/**
* Checks if the current node has child devices.
*/
hasChildDevices(): boolean;
protected fetch(): Promise<any>;
protected updateIcon(open: any): Promise<void>;
protected countChildren(): number;
protected handleEvent(evt: AssetsNavigatorAction): Promise<void>;
protected addNodes(res: any): void;
protected toggleLoadMore(show: boolean): void;
private moveNode;
private showDropConfirm;
private verifyNodeAccess;
private addMovedNode;
private isAsset;
private removeMovedNode;
}
declare class DynamicGroupNode extends AssetNode {
protected service: AssetNodeService;
constructor(service: AssetNodeService, config?: {});
get hasChildren(): boolean;
get query(): any;
protected fetch(): any;
}
interface AssetStatus {
sendStatus: {
icon: string;
class: string;
status: string;
label: string;
tooltip: string;
};
pushStatus: {
icon: string;
class: string;
status: string;
label: string;
tooltip: string;
};
maintenanceStatus: boolean;
}
interface MaintenanceStatus {
sendStatus: boolean;
pushStatus: boolean;
maintenanceStatus: {
icon: string;
class: string;
tooltip: string;
};
}
interface AssetSelectionChangeEvent {
items: IIdentified | IIdentified[];
change: {
item: IManagedObject;
isSelected: boolean;
};
}
interface GroupNodeConfig {
root?: boolean;
mo?: IManagedObject;
groupsOnly?: boolean;
groupsSelectable?: boolean;
showChildDevices?: boolean;
}
declare const CONFIG_OPTIONS_DEFAULT: AssetSelectorOptions;
interface AssetSelectorOptions {
/**
* Already selected devices.
*/
selectedDevices?: IIdentified | IIdentified[];
/**
* Defines a label to be shown to the user.
*/
label?: string;
/**
* Can the user select multiple assets.
*/
multi?: boolean;
/**
* displays a filter input on every column when using the miller view.
*/
showFilter?: boolean;
/**
* displays a column header on every column when using the miller view.
*/
columnHeaders?: boolean;
/**
* Displays only the select column.
*/
singleColumn?: boolean;
/**
* Set to true to mark it as required on a form.
*/
required?: boolean;
/**
* In simple model-mode the result will only contain the IDs and name of the selected
* assets. In full mode, everything is contained.
*/
modelMode?: 'simple' | 'full';
/**
* Set this to true, if the selector should only show groups.
*/
groupsOnly?: any;
/**
* Set this true, if groups should be selectable.
*/
groupsSelectable?: any;
/**
* Enable to display global search in the asset-selector (only possible whithout device context).
*/
search?: boolean;
/**
* Displays all unassigned devices in a custom root group.
*/
showUnassignedDevices?: boolean;
/**
* Set the view of the asset selector with tree view as default.
*/
view?: 'tree' | 'miller';
/**
* Used only for miller-view, displays the column level for the current node.
* E.g if the index is one, this will be second column.
*/
index?: number;
/**
* Used only for single column, the array contains all selected columns.
*/
selectedColumns?: IIdentified[] | IIdentified;
/**
* Devices with children can be selected to show their child devices.
*/
showChildDevices?: boolean;
/**
* Allows to show chips at the top with the currently selected asset for multi select.
* For single select it shows the currently selected asset.
*/
showSelected?: boolean;
/**
* Prevents automatic asset selection on component initialization.
*/
preventInitialSelect?: boolean;
}
declare class GroupNodeService extends AssetNodeService {
protected PAGE_SIZE: number;
createGroupNode(config: GroupNodeConfig): GroupNode;
createChildNode(config: GroupNodeConfig): GroupNode;
static ɵfac: i0.ɵɵFactoryDeclaration<GroupNodeService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<GroupNodeService>;
}
declare class GroupNode extends AssetNode {
protected service: GroupNodeService;
static NAME: string;
/**
* Set this true, if only groups should be shown.
*/
groupsOnly: boolean;
/**
* Set this true, if it groups are also selectable.
*/
groupsSelectable: boolean;
/**
* Devices with children can be selected to show their child devices.
*/
showChildDevices: boolean;
/**
* Group node children (subentries).
*/
children: GroupNode[];
/**
* Creates a new node which shows only groups.
*
* @param service The service to use.
* @param config The default configuration of the node.
* @param groupsOnly Set this true, if only groups should be shown.
* @param selectable Set this true, if it is selectable.
*/
constructor(service: GroupNodeService, config?: GroupNodeConfig);
/**
* Adds the MO as a child node.
* @param mo ManagedObject
*/
addManagedObject(mo: any): void;
/**
* Counts the number of children for the current node (with the exception of the UnassignedDevicesNode).
*/
countChildren(): number;
/**
* Removes all child nodes except the UnassignedDevicesNode.
*/
empty(): void;
fetch(): Promise<any>;
toString(): string;
isGroup(): boolean;
}
declare class AssetSelectorService extends AssetNodeService {
/**
* Function which will check if the node is selectable.
*/
private isNodeSelectableFn;
/**
* Sets the function that will decide if the node is selectable.
* @param fn A boolean or a function that will decide if the node is selectable.
*/
setIsNodeSelectable(fn: boolean | ((node: GroupNode) => boolean)): void;
/**
* Checks if the node is selectable.
* @param node The node to check.
*/
isNodeSelectable(node: GroupNode): boolean;
/**
* Simplifies the object model based on the selected mode.
* @param obj The selected asset.
* @param mode The mode which will decide what type of model will be returned.
*/
normalizeValue(obj: Partial<IManagedObject>, modelMode: 'simple' | 'full'): Partial<IManagedObject> | IIdentified;
simplifyModel(model: Partial<IManagedObject> | IIdentified[], mode: 'simple' | 'full'): Partial<IManagedObject> | IIdentified;
/**
* Returns the index of the currently selected item.
* @param selected All selected items
* @param selectedMo The new selected item-
* @returns An index, or -1 if not found.
*/
getIndexOfSelected(selected: Array<Partial<IIdentified>> | Partial<IIdentified>, selectedMo: IIdentified): any;
private normalizeModelValue;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetSelectorService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<AssetSelectorService>;
}
declare class AssetSelectorNodeComponent implements OnInit {
private translateService;
private cd;
assetSelectorService: AssetSelectorService;
/**
* The current node.
*/
node: GroupNode;
/**
* Root node. Node found at the top of the hierarchy.
*/
rootNode: GroupNode;
/**
* All preselected items.
*/
preselected: IIdentified | IIdentified[];
/**
* Should the path be shown.
*/
showPath: boolean;
/**
* Can the user select multiple assets.
*/
multi: boolean;
/**
* The current path to the node.
*/
view: 'tree' | 'miller';
/**
* Used only for miller-view, displays the column level for the current node.
* E.g if the index is one, this will be second column.
*/
index: any;
/**
* Sets the active node.
*/
active: GroupNode;
/**
* A function that should verify the need to add a column when a node is clicked.
*/
handleNextMillerViewColumn: (node: GroupNode, index: number) => boolean;
disabled: boolean;
/**
* Event, which indicates whether the loading of the node has completed.
*/
isLoadingState: EventEmitter<boolean>;
/**
* Event that emits when a node is selected.
*/
onSelect: EventEmitter<IManagedObject>;
/**
* Event that emits when a node is deselected.
*/
onDeselect: EventEmitter<{
deselectMode: 'single' | 'all';
mo: IManagedObject;
}>;
breadcrumb: string;
/**
* @ignore
*/
level: number;
/**
* @ignore
*/
unsubscribe$: Subject<void>;
isNodeSelectable: boolean;
/** sets the `btn-pending` class in the load more button */
isLoading: boolean;
/**
* @ignore
*/
get expandTitle(): "Expand" | "Collapse";
/**
* @ignore only di
*/
constructor(translateService: TranslateService, cd: ChangeDetectorRef, assetSelectorService: AssetSelectorService);
/**
* @ignore
*/
ngOnInit(): Promise<void>;
/**
* Opens a node.
*/
click(): void;
setupBreadcrumbsAndLevel(node: GroupNode): void;
/**
* Selects the node and emits a change on the parent component.
* @param node The node to select.
*/
selected(node: GroupNode): void;
/**
* Handles clicks on a item in Miller View.
* @param node The node that was clicked.
*/
millerViewClick(node: GroupNode): void;
/**
* @ignore
*/
ngOnDestroy(): void;
isSelected(): boolean;
isActive(): boolean;
private updateSelection;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetSelectorNodeComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<AssetSelectorNodeComponent, "c8y-asset-selector-node", never, { "node": { "alias": "node"; "required": false; }; "rootNode": { "alias": "rootNode"; "required": false; }; "preselected": { "alias": "preselected"; "required": false; }; "showPath": { "alias": "showPath"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "view": { "alias": "view"; "required": false; }; "index": { "alias": "index"; "required": false; }; "active": { "alias": "active"; "required": false; }; "handleNextMillerViewColumn": { "alias": "handleNextMillerViewColumn"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "isLoadingState": "isLoadingState"; "onSelect": "onSelect"; "onDeselect": "onDeselect"; }, never, never, true, never>;
}
declare class AssetSelectorBase {
protected groupNodeService: GroupNodeService;
protected inventory: InventoryService;
protected assetSelectorService: AssetSelectorService;
/**
* Config object containing all options for the asset selector.
*/
config: AssetSelectorOptions;
/**
* An array of predefined nodes.
*/
selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;
/**
* The loading state of the current node.
*/
isLoading: boolean;
/**
* Emit the selected asset or assets.
*/
onSelected: EventEmitter<AssetSelectionChangeEvent>;
/**
* Emits if the currently selected asset is cleared.
*/
onClearSelected: EventEmitter<void>;
private onChange;
private onTouched;
constructor(groupNodeService: GroupNodeService, inventory: InventoryService, assetSelectorService: AssetSelectorService);
/**
* @ignore
*/
validate(control: AbstractControl): ValidationErrors;
/**
* @ignore
*/
writeValue(obj: any): void;
/**
* @ignore
*/
registerOnChange(fn: any): void;
/**
* @ignore
*/
registerOnTouched(fn: any): void;
/**
* @ignore
*/
doBlur(): void;
/**
* Deselects all expect the given one.
* @param selectedMo The selected asset (optional, if empty -> just deselect all).
*/
deselectAll(selectedMo?: IManagedObject): void;
/**
* Adds an managed object to the selected array and emits the change.
* @param selectedMo The selected asset.
*/
select(selectedMo: IManagedObject): void;
/**
* Removes a managed object from the selected array and emits the change.
* @param selectedMo The selected asset.
*/
deselect(selectedMo: IManagedObject): void;
/**
* Returns the index of the currently selected item.
* @param selected All selected items
* @param selectedMo The new selected item-
* @returns An index, or -1 if not found.
*/
getIndexOfSelected(selected: Array<Partial<IIdentified>> | Partial<IIdentified>, selectedMo: IIdentified): any;
emitChange(selected: IIdentified | IIdentified[], item: IManagedObject, isSelected: boolean): void;
createDefaultRootNode(): _c8y_ngx_components_assets_navigator.GroupNode;
createManagedObjectRootNode(asset: IIdentified): Promise<_c8y_ngx_components_assets_navigator.GroupNode>;
}
/**
* Displays a hierarchical tree selector for assets.
*/
declare class AssetSelectorComponent extends AssetSelectorBase implements OnInit {
protected groupNodeService: GroupNodeService;
protected inventory: InventoryService;
protected assetSelectorService: AssetSelectorService;
protected cd: ChangeDetectorRef;
/**
* Config object containing all options for the asset selector.
*/
config: AssetSelectorOptions;
/**
* Defines the node, which should be displayed as active.
*/
active: GroupNode;
/**
* Used only for miller-view, displays the column level for the current node.
* E.g if the index is one, this will be second column.
*/
index: number;
/**
* The asset to use as root.
*/
asset: IIdentified;
/**
* The selected device.
*/
selectedDevice: IManagedObject;
/**
* An array of predefined nodes.
*/
selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;
/**
* The node to use as root. You can either set this, or the asset to start from.
*/
rootNode: GroupNode;
/**
* All currently selected assets.
*/
selectedItems: IIdentified[] | IIdentified;
container: '' | 'body';
isNodeSelectable: boolean | ((node: IIdentified) => boolean);
disabled: boolean;
/**
* Emits if one item was selected (all currently selected nodes).
*/
onSelected: EventEmitter<AssetSelectionChangeEvent>;
/**
* Emits if the currently selected asset is cleared.
*/
onClearSelected: EventEmitter<void>;
/**
* Used only for miller view. Emit the selected node and use it as a 'rootNode' for the new column.
*/
onRowSelected: EventEmitter<any>;
/**
* Emits the current loading state of the node.
*/
onLoad: EventEmitter<any>;
/**
* The current filter applied.
*/
filterText: string;
/**
* Displays the global search at all times if the miller view is used
* on root group level.
*/
root: boolean;
/**
* @ignore
*/
unsubscribe$: Subject<void>;
/**
* Returns the current header hight in pixel.
*/
getHeaderHeight$: BehaviorSubject<number>;
readonly ASSET_CONST: "Asset {{ assetId }}";
private header;
/**
* @ignore only DI
*/
constructor(groupNodeService: GroupNodeService, inventory: InventoryService, assetSelectorService: AssetSelectorService, cd: ChangeDetectorRef);
/**
* Checks when a node was selected, if a new column needs to be added.
* @param node The node that was clicked.
* @param index The current index of this node.
* @returns True if the click was handled and a new column was added.
*/
handleNextMillerViewColumn(node: GroupNode, index: number): boolean;
/**
* @ignore
*/
ngOnInit(): Promise<void>;
ngOnChanges(changes: SimpleChanges): Promise<void>;
/**
* @ignore
*/
ngAfterViewInit(): void;
/**
* Changes the current root to one level back.
*/
back(): void;
/**
* Clears the current filter.
*/
clearFilters(): void;
/**
* Clears the currently selected device.
*/
clearSelectedDevices(): void;
isGroupSelected(): boolean;
/**
* @param nameFilter The name filter to apply.
* @param moId The managed object ID to filter by.
* @param showUnassignedDevices If true, it will show unassigned devices.
* @return The filter query to apply.
* @description
* This method builds a filter query based on the provided name filter and managed object ID.
*/
groupNameFilter(nameFilter: string, moId: any, showUnassignedDevices?: boolean): string;
/**
* Applies a filter.
* @param filter The filter to apply.
*/
applyFilter(filter: string): Promise<void>;
/**
* Check if the UnassignedDevice node is the rootNode.
*/
isUnassignedDevicesNode(): boolean;
/**
* Called when the user resets the search result.
*/
onSearchResultReset(selectedItem: any): void;
/**
* Called if the user clicks on a search result.
*/
onSearchResultClick(mo: IManagedObject): Promise<void>;
onLoading(isLoading: boolean): void;
onSelect(mo: IManagedObject): void;
onDeselect(config: {
deselectMode: 'single' | 'all';
mo: IManagedObject;
}): void;
private updateHeaderHeight;
private isElementOrParentHidden;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetSelectorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<AssetSelectorComponent, "c8y-asset-selector", never, { "config": { "alias": "config"; "required": false; }; "active": { "alias": "active"; "required": false; }; "index": { "alias": "index"; "required": false; }; "asset": { "alias": "asset"; "required": false; }; "selectedDevice": { "alias": "selectedDevice"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "rootNode": { "alias": "rootNode"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "container": { "alias": "container"; "required": false; }; "isNodeSelectable": { "alias": "isNodeSelectable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onSelected": "onSelected"; "onClearSelected": "onClearSelected"; "onRowSelected": "onRowSelected"; "onLoad": "onLoad"; }, never, never, true, never>;
}
declare class MillerViewComponent extends AssetSelectorBase implements OnInit {
protected groupNodeService: GroupNodeService;
protected inventory: InventoryService;
protected assetSelectorService: AssetSelectorService;
protected cd: ChangeDetectorRef;
/**
* Config object containing all options for the asset selector.
*/
config: AssetSelectorOptions;
/**
* The asset to use as root.
*/
asset: IIdentified;
/**
* The selected devices.
*/
selectedDevice: IManagedObject;
/**
* The node to use as root. You can either set this, or the asset to start from.
*/
rootNode: GroupNode;
/**
* Emits if the selection changes
*/
onSelected: EventEmitter<AssetSelectionChangeEvent>;
/**
* Emits if the currently selected asset is cleared.
*/
onClearSelected: EventEmitter<void>;
/**
* @ignore
*/
millerViewWrapper: ElementRef;
/**
* The column array will contain all currently selected nodes
* which will form the miller view columns (only one per level).
*/
columns: any[];
/**
* The current filter applied. Used for the empty state text in the view.
*/
filterText: string;
/**
* Index of the column used to check where to show the loading state.
*/
columnIndex: number;
container: '' | 'body';
configOptionsDefault: AssetSelectorOptions;
/**
* Cached padding top value to avoid recalculating on every change detection cycle.
*/
private _cachedPaddingTop;
constructor(groupNodeService: GroupNodeService, inventory: InventoryService, assetSelectorService: AssetSelectorService, cd: ChangeDetectorRef);
/**
* @ignore
*/
ngOnInit(): Promise<void>;
/**
* @ignore
*/
ngOnChanges(changes: SimpleChanges): Promise<void>;
/**
* Returns the cached padding top value for the miller view header.
* The value is calculated once during initialization and when config changes.
*
* @returns A unit value (as string) that is multiplied by --c8y-unit-base CSS custom property
*/
getPaddingTop(): string;
/**
* Create a new column with the selected node as root.
*/
addNewColumn(node: any): void;
/**
* Change the loading state of the asset selector.
*/
onLoad(event: any): void;
/**
* Add the selected node to the selected array.
*/
onSelectionChange(event: AssetSelectionChangeEvent): void;
/**
* Calculates and caches the padding top value based on configuration options.
*
* The method determines the appropriate header height by considering:
* - Whether selected items are shown (showSelected)
* - Whether search functionality is enabled (search)
* - Whether single column mode is active (singleColumn)
* - Whether a label is present (label length > 0)
*/
private _calculatePaddingTop;
static ɵfac: i0.ɵɵFactoryDeclaration<MillerViewComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<MillerViewComponent, "c8y-asset-selector-miller", never, { "config": { "alias": "config"; "required": false; }; "asset": { "alias": "asset"; "required": false; }; "selectedDevice": { "alias": "selectedDevice"; "required": false; }; "rootNode": { "alias": "rootNode"; "required": false; }; "container": { "alias": "container"; "required": false; }; }, { "onSelected": "onSelected"; "onClearSelected": "onClearSelected"; }, never, never, true, never>;
}
declare class AssetSelectorModule {
static ɵfac: i0.ɵɵFactoryDeclaration<AssetSelectorModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<AssetSelectorModule, never, [typeof i1.CoreModule, typeof i1.CommonModule, typeof i2.CollapseModule, typeof i3.BsDropdownModule, typeof i1.CoreSearchModule, typeof i4.FormsModule, typeof AssetSelectorNodeComponent, typeof AssetSelectorComponent, typeof MillerViewComponent], [typeof AssetSelectorNodeComponent, typeof AssetSelectorComponent, typeof MillerViewComponent]>;
static ɵinj: i0.ɵɵInjectorDeclaration<AssetSelectorModule>;
}
/**
* @deprecated The AssetsNavigatorModule is now loaded as a plugin from the dtm-plugins remote.
* A future version will remove this module from this library.
*/
declare class AssetsNavigatorModule {
static config(config?: AssetNavigatorConfig): ModuleWithProviders<AssetsNavigatorModule>;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetsNavigatorModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<AssetsNavigatorModule, never, [typeof i1.ModalModule, typeof AssetSelectorModule, typeof i1.DeviceStatusModule], never>;
static ɵinj: i0.ɵɵInjectorDeclaration<AssetsNavigatorModule>;
}
declare class AssetNodeFactory {
private service;
moduleConfig: AssetNavigatorConfig;
constructor(service: AssetNodeService, moduleConfig: AssetNavigatorConfig);
get(): AssetNode;
static ɵfac: i0.ɵɵFactoryDeclaration<AssetNodeFactory, [null, { optional: true; }]>;
static ɵprov: i0.ɵɵInjectableDeclaration<AssetNodeFactory>;
}
export { ASSET_NAVIGATOR_CONFIG, AssetNode, AssetNodeFactory, AssetNodeService, AssetSelectorComponent, AssetSelectorModule, AssetSelectorNodeComponent, AssetsNavigatorAction, AssetsNavigatorModule, CONFIG_OPTIONS_DEFAULT, DeviceGroupService, DynamicGroupNode, GroupNode, GroupNodeService, LoadMoreNode, MillerViewComponent };
export type { AssetNavigatorConfig, AssetNodeMo, AssetSelectionChangeEvent, AssetSelectorOptions, AssetStatus, GroupNodeConfig, MaintenanceStatus };
//# sourceMappingURL=index.d.ts.map