import React, { Component } from 'react'; import { Tab, Breadcrumb, Icon } from '@alifd/next'; import { SettingsMain, SettingField, isSettingField } from './main'; import './style.less'; import Title from './title'; import SettingsTab, { registerSetter, createSetterContent, getSetter, createSettingFieldView } from './settings-pane'; import Node from '../../designer/src/designer/document/node/node'; import ArraySetter from './builtin-setters/array-setter'; export default class SettingsMainView extends Component { private main: SettingsMain; constructor(props: any) { super(props); this.main = new SettingsMain(props.editor); this.main.onNodesChange(() => { this.forceUpdate(); }); } shouldComponentUpdate() { return false; } componentWillUnmount() { this.main.purge(); } renderBreadcrumb() { if (this.main.isMulti) { return (
{this.main.componentType!.icon || } {this.main.componentType!.title} x {this.main.nodes.length}
); } let node: Node | null = this.main.nodes[0]!; const items = []; let l = 4; while (l-- > 0 && node) { const props = l === 3 ? {} : { onMouseOver: hoverNode.bind(null, node, true), onMouseOut: hoverNode.bind(null, node, false), onClick: selectNode.bind(null, node), }; items.unshift({node.title}); node = node.parent; } return (
{this.main.componentType!.icon || } {items}
); } render() { if (this.main.isNone) { // 未选中节点,提示选中 或者 显示根节点设置 return (

请在左侧画布选中节点

); } if (!this.main.isSame) { // todo: future support 获取设置项交集编辑 return (

请选中同一类型节点编辑

); } const { items } = this.main; if (items.length > 5 || items.some(item => !isSettingField(item) || !item.isGroup)) { return (
{this.renderBreadcrumb()}
); } return (
{(items as SettingField[]).map(field => ( } key={field.name}> ))}
); } } function hoverNode(node: Node, flag: boolean) { node.hover(flag); } function selectNode(node: Node) { node.select(); } registerSetter('ArraySetter', ArraySetter); export { registerSetter, createSetterContent, getSetter, createSettingFieldView };