@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
58 lines • 2.12 kB
TypeScript
import { Injector, TemplateRef, Type } from '@angular/core';
import { ExtensionFactory } from '../common/extension-hooks';
/**
* An action bar item is a action in scope of a
* current route of the application.
*/
export type ActionBarItem = ActionBarItemWithTemplate | ActionBarItemWithComponent;
interface ActionBarItemBase {
/**
* Ordering of the actions (high number first)
*/
priority?: number;
/**
* The placement of the item. `more` is a dropdown
* on the right side.
*/
placement: 'left' | 'right' | 'more';
/**
* The injector to use. If not set, the default root injector will be used.
*/
injector?: Injector;
/**
* Identifying this action bar item belongs to a certain group and should only be shown once.
*/
groupId?: string;
/**
* If action bar items has the same groupId, only one is displayed.
* Action bar item with the same groupId that has highest inGroupPriority is displayed.
*/
inGroupPriority?: number;
}
export interface ActionBarItemWithTemplate extends ActionBarItemBase {
/**
* Angular template used for Content Projection.
* @deprecated This is used for backwards compatibility with angularjs and allows
* to content project DOM nodes and template refs. Use component instead.
*/
template: any;
component?: never;
}
export interface ActionBarItemWithComponent extends ActionBarItemBase {
/**
* A component that should be rendered as the ActionBarItem.
* Note: As a ActionBarItem is rendered in a <li> it is good practice
* to remove the wrapper node to not run into CSS issues. You
* can do so by defining the selector as a li: `li[customExtension]`
* (see: https://stackoverflow.com/a/56887630/923270 or
* https://stackoverflow.com/a/38716164/923270)
*/
component: Type<any> | TemplateRef<any>;
template?: never;
}
/**
* Factory to implement if used in a hook for Multi Provider extension.
*/
export type ActionBarFactory = ExtensionFactory<ActionBarItem>;
export {};
//# sourceMappingURL=action-bar.model.d.ts.map