import * as ng from "@angular/core";
import { CoreComponent } from "cmf.core/src/core";
import { BasePropertyEditorOptions } from "cmf.core/src/domain/extensions/caches/entityType";
import { EditorType, PropertyEditorType, PropertyEditorCollectionType } from "../propertyEditor/propertyEditor";
import { PropertyContainer } from "../propertyContainer/propertyContainer";
import { FontSize, TextAlignment } from "cmf.core.controls/src/components/label/label";
export { EditorType, PropertyEditorType, PropertyEditorCollectionType };
export { FontSize, TextAlignment };
export interface PropertyToRender {
name: string;
property: PropertiesEditorProperty;
}
/**
* Export type for PropertyChange event
*/
export declare type PropertyChangeArgs = [string, PropertiesEditorProperty];
/**
* Properties Editor Component
*
* Create a form for multiple editable fields easily.
*
* ### Example
*
* ```
*
*
*
* ```
*/
export declare class PropertiesEditor extends CoreComponent implements ng.DoCheck {
private _elementRef;
private _keyValueDiffers;
private _keyValueDiffer;
private _keyInstanceDiffer;
private _propertiesToRenderMap;
_propertiesToRenderValueMap: Map;
_propertiesToRender: PropertyToRender[];
/**
* Gets or sets the instance with the properties to edit.
*/
instance: any;
/**
* Gets or sets the properties to edit.
*/
properties: {
[key: string]: PropertiesEditorProperty;
};
/**
* If true, the nested property editors will have support tokens enabled.
* Defaults to false.
*/
supportTokens: boolean;
/**
* Property Change event emitter.
*/
propertyChange: ng.EventEmitter;
/**
* Property Container access.
*/
propertyContainer: PropertyContainer;
/**
* Properties Editor Constructor
*/
constructor(_elementRef: ng.ElementRef, _keyValueDiffers: ng.KeyValueDiffers);
/**
* On Value Change Event Handling
*/
onValueChange(value: any, propertyName: string, propertyMeta: PropertiesEditorProperty): void;
ngDoCheck(): void;
private updatePropertiesToRenderMap;
}
export interface PropertiesEditorProperty extends BasePropertyEditorOptions {
/**
* Bypass the automatic editor type resolution by specifying the editor type to use.
*/
nestedEditorType?: EditorType;
/**
* Label fontSize property.
*/
fontSize?: FontSize;
/**
* Value fontSize property.
*/
valueFontSize?: FontSize;
/**
* Text alignment property
*/
alignment?: TextAlignment;
/**
* Align to top-left.
* By default it is undefined.
*/
topLeftAligned?: boolean;
/**
* Is to auto resize
*/
autoResize?: boolean;
}
export declare class PropertiesEditorModule {
}