UNPKG

react-application-core

Version:

A react-based application core for the business applications.

74 lines (73 loc) 2.53 kB
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<{}>, {}>> { }