import { ComponentSchema, BuilderHTMLElement, FarrisDesignBaseComponent } from '@farris/designer-element';
import { ElementPropertyConfig } from '@farris/ide-property-panel';
import { RowNode, TreeNode } from '@farris/ui-treetable';
import FdContainerBaseComponent from '../../common/containerBase/containerBase';
import { FormPropertyChangeObject } from '../../../../entity/property-change-entity';
export default class FdTabComponent extends FdContainerBaseComponent {
private isInFixedContextRules;
readonly tabPageLinkKey: string;
readonly tabPageBodyKey: string;
/** 标识当前viewChange的key值 */
readonly viewChangeKey: string;
/** 标签页项实例 */
private tabPages;
/** 标签页项内部的组件实例 */
private tabPageComponents;
/** 当前选中标签页id */
selectedTabPageId: string;
private toolbarSettings;
private headerExtendSettings;
private activeTypeItem;
private formParent;
private multiViewContainerEl;
private toolBarComponent;
private dragulaBuilder;
constructor(component: ComponentSchema, options: any);
/**
* 从工具箱拖拽生成的不是Tab,而是Container-Section-Tab三层结构
*/
static getMetadataInControlBox(targetComponentInstance: FarrisDesignBaseComponent): any;
appendTabPage(): void;
getDefaultSchema(): any;
getTemplateName(): string;
init(): void;
destroy(): void;
private initTabPageInstances;
render(): any;
attach(element: any): any;
/**
* 横向滚动滚动条时计算工具栏位置
* @param element 监听滚动的元素
*/
private setPositionOfBtnGroupWhenHScroll;
/**
* 判断标签页是否在可视化区域内
* @param navEle 单个标签页nav div
* @param navTabsEle 整个标签页nav div的父级
*/
private isNavElementInViewport;
/**
* 计算工具栏位置
* @param tabNavEle 工具栏父级
*/
private setPositionOfBtnGroupInHeader;
/**
* 监听tab-body的滚动事件
*/
private registerTabBodyScrollEvent;
/**
* 切换标签页
* @param index 标签页索引
*/
private setTabPage;
/**
* 设置横向滚动条位置
*/
private setHorizontalScrollbarPosition;
/**
* 根据当前Tab 确定按钮和扩展区域
*/
private getToolbarAndExtendSettingsBySelected;
/**
* 组装属性面板配置数据
*/
getPropertyConfig(): ElementPropertyConfig[];
/**
* 组装右键菜单
* @param rowNode 组件在控件树上对应的行数据
*/
resolveContextMenuConfig(rowNode: RowNode, parentRowNode: RowNode): any;
private getViewChangeStr;
/**
* 查找multiViewContainerEl
*/
private findMultiViewContainerEl;
/**
* 判断拖拽接收控件的范围
* @param sourceElement 源控件
* @param targetElement 目标控件
*/
canAccepts(sourceElement: BuilderHTMLElement, targetElement: BuilderHTMLElement): boolean;
/**
* 由外部触发组件内部的点击事件:在控件树上点击某一TabPage时,触发tab的切换事件
* @param treeNode 控件树节点
*/
triggerComponentInsideClick(treeNode: TreeNode): void;
/**
* 属性变更后事件:默认监听样式类属性变更,并触发模板重绘
* @param changeObject 变更集
* @param propertyIDs 需要额外监听的属性ID列表
*/
onPropertyChanged(changeObject: FormPropertyChangeObject): void;
/**
* 判断在可视化区域中是否隐藏容器间距和线条
*/
hideNestedPaddingInDesginerView(): boolean;
checkCanMoveComponent(): boolean;
checkCanDeleteComponent(): boolean;
onRemoveComponent(): {
parentComponentInstance: any;
};
private checkIsTabSelected;
private deleteFixedTabInContextRules;
/**
* 初始化拖拽:支持标签页交换顺序
*/
initDragula(): void;
/**
* 拖拽放开事件
* @param element 被拖拽的元素
* @param target 目标区域
*/
private onDrop;
/**
* 拖拽结束事件
*/
private dragEnd;
/**
* 因为TabPage不在设计器收集的组件列表中,不能在DomService中统一添加。所以这里单独将标签页项的DOM结构存储到domService中
*/
updateDomDgMap(): void;
private removeToolbarExpressions;
}