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; }