import { ViewContainerRef, ViewRef } from '@angular/core'; import { Subject, Observable } from 'rxjs'; import { AbstractControl, ControlDataModel, ControlSpecification, ControlLayoutModel, ControlViewModel, LoadComponentModel, DynamicControlContainer } from '../types'; import { LayoutHostDirective } from '../components/layout-host.directive'; import { ControlValidatorService } from '../services/control-validator.service'; /** * 控件转换 * */ export interface ControlTranslate { /** * 是否禁用控件操作 * */ disableOperateControl: boolean; /** * 控件加载model事件 * */ loadComponentModel$: Observable; /** * 控件解析完成 */ controlResolved: Subject>; /** * 控件移除事件 */ controlRemoved$: Observable>; /** * 发送控件加载model * */ sendLoadComponentModel(data: LoadComponentModel): void; /** * 发送控件移除事件 * */ sendControlRemoved(control: AbstractControl): void; /** * 使用LoadComponentModel加载组件 * */ loadComponentsByModel(loadModel: LoadComponentModel): AbstractControl | AbstractControl[]; /** * @description 根据控件DataModels生成控件, 当dataModels为空时,返回空数组 * * @param dataModels 要生成的控件DataModels * @param viewContainerRef 依赖的视图容器 * @param [isDesign] 是否是设计时 * @returns 已添加的控件集合 * @memberof ControlTranslateService */ loadComponents(dataModels: Array, controlLayoutHost: DynamicControlContainer, isDesign?: boolean): Array>; /** * 根据控件布局Model生成控件,如果layoutModel为空,则返回null * * @param layoutModel 控件布局model * @param viewContainerRef 依赖的视图容器 * @param [isDesign] 是否是设计时 * @returns 已添加的控件集合 * @memberof ControlTranslateService */ loadComponent(layoutModel: ControlLayoutModel, dynamicControlContainer: DynamicControlContainer, isDesign?: boolean): AbstractControl; } /** * 转换控件说明到布局model * */ export declare function translateControlSpecitification2LayoutModel(data: ControlSpecification): ControlLayoutModel; /** * 转换控件到控件DataModel * */ export declare function translateControl2ControlDataModel(control: AbstractControl): ControlDataModel; /** * 从视图上移除控件 * * @param viewContainerRef 依赖的视图容器 * @param [index] 控件在视图的中的index * @memberof ControlTranslateService */ export declare function removeComponent(viewContainerRef: ViewContainerRef, index?: number): void; export declare function removeControl(index: number, layoutHost: LayoutHostDirective, children: AbstractControl[]): void; export declare function moveUpViewRef(hostView: ViewRef, layoutHost: LayoutHostDirective, children: AbstractControl[]): void; export declare function moveDownViewRef(hostView: ViewRef, layoutHost: LayoutHostDirective, children: AbstractControl[]): void; /** * 设置控件的验证器 * */ export declare function setControlValidator(control: AbstractControl, controlValidatorService: ControlValidatorService): void; /** * 绑定控件控件级联属性 */ export declare function bindUnionCheck(control: AbstractControl, controls: AbstractControl[]): void; /** * 根据控件名称查找控件 */ export declare function findControlByName(controlName: string, controls: AbstractControl[]): AbstractControl; /** * 控件遍历管道,会递归遍历控件的所有子控件,并执行管道中的函数 * @param controls 要遍历的控件 * @param funcs 处理函数数组 */ export declare function controlsTraversalPipe(controls: AbstractControl[], ...funcs: ((control: AbstractControl) => void)[]): void; /** * 控件遍历管道,会递归遍历控件的所有子控件,并执行管道中的函数,返回函数返回值不为null或者undefined的值时停止执行 * @param controls 要遍历的控件 * @param funcs 处理函数数组 */ export declare function controlsTraversalPipeReturn(controls: AbstractControl[], func: (control: AbstractControl) => T): T; /** * 清空数据源中的控件标识 */ export declare function clearControlIdentityCode(dataModel: ControlDataModel): void;