react-application-core
Version:
A react-based application core for the business applications.
74 lines (73 loc) • 2.53 kB
TypeScript
import * as React from 'react';
import { IClassNameWrapper, IFactorWrapper, IFullWrapper, IItemsWrapper, IKeyValue, ILayoutWrapper, IStyleWrapper } from '../definitions.interface';
/**
* @enum
* @stable [23.01.2020]
*/
export declare enum LayoutTypesEnum {
HORIZONTAL = 0,
VERTICAL = 1
}
/**
* @enum
* @stable [23.01.2020]
*/
export declare enum LayoutFactorsEnum {
FACTOR_0_25 = 0,
FACTOR_0_30 = 1,
FACTOR_0_5 = 2,
FACTOR_0_70 = 3,
FACTOR_0_75 = 4,
FACTOR_0_85 = 5,
FACTOR_1 = 6,
FACTOR_2 = 7,
FACTOR_4 = 8,
FACTOR_8 = 9
}
/**
* @stable [23.01.2020]
*/
export declare type UniversalLayoutBuilderChildrenT<TNode> = IUniversalLayoutBuilderConfigEntity<TNode> | TNode;
/**
* @stable [06.04.2020]
*/
export declare type LayoutBuilderChildrenNodeT = JSX.Element;
/**
* @stable [23.01.2020]
*/
export declare type LayoutBuilderChildrenT = UniversalLayoutBuilderChildrenT<LayoutBuilderChildrenNodeT>;
/**
* @config-entity
* @stable [23.01.2020]
*/
export interface IUniversalLayoutBuilderConfigEntity<TNode> extends IItemsWrapper<Array<UniversalLayoutBuilderChildrenT<TNode>>>, IClassNameWrapper, IFactorWrapper<LayoutFactorsEnum>, IFullWrapper, ILayoutWrapper<LayoutTypesEnum>, IStyleWrapper<IKeyValue> {
}
/**
* @config-entity
* @stable [23.01.2020]
*/
export interface ILayoutBuilderConfigEntity extends IUniversalLayoutBuilderConfigEntity<LayoutBuilderChildrenT> {
}
/**
* @props
* @stable [23.01.2020]
*/
export interface IUniversalLayoutProps extends React.Attributes {
}
/**
* @service
* @stable [23.01.2020]
*/
export interface IUniversalLayoutViewBuilder<TNode, TProps extends IUniversalLayoutProps = IUniversalLayoutProps> {
buildColumnView(props: TProps, children: Array<UniversalLayoutBuilderChildrenT<TNode>>, layoutConfig: IUniversalLayoutBuilderConfigEntity<TNode>): TNode;
buildRowView(props: TProps, children: Array<UniversalLayoutBuilderChildrenT<TNode>>, layoutConfig: IUniversalLayoutBuilderConfigEntity<TNode>): TNode;
cloneItem(item: TNode, props: TProps): TNode;
getClonedItemProps(item: TNode, layoutConfig: IUniversalLayoutBuilderConfigEntity<TNode>, props: TProps): TProps;
isClonedItem(item: UniversalLayoutBuilderChildrenT<TNode>): boolean;
}
/**
* @service
* @stable [23.01.2020]
*/
export interface ILayoutViewBuilder extends IUniversalLayoutViewBuilder<LayoutBuilderChildrenNodeT, React.DetailedHTMLProps<React.HTMLAttributes<{}>, {}>> {
}