import * as React from 'react' import * as typings from './basic.type' import {observer, inject} from 'mobx-react' import * as classNames from 'classnames' import {autoBindMethod} from '../../../../../../../common/auto-bind/src' import {Button, ButtonGroup} from '../../../../../../button/src' import {Checkbox} from '../../../../../../checkbox/src' import Input from '../../../../../../input/src' import RemoveButton from './remote-button/remote-button.component' import SetGroupButton from './set-group-button/set-group-button.component' import TextEditor from './edit-components/text/text.component' import SelectEditor from './edit-components/select/select.component' import SwitchEditor from './edit-components/switch/switch.component' import ArrayEditor from './edit-components/array/array.component' import MarginPaddingEditor from './edit-components/margin-padding/margin-padding.component' import './basic.scss' @inject('viewport', 'application') @observer export default class EditBoxBasic extends React.Component { static defaultProps: typings.PropsDefine = new typings.Props() public state: typings.StateDefine = new typings.State() // 当前编辑组件的信息 private componentInfo: FitGaea.ViewportComponentInfo /** * 重置为默认属性 */ @autoBindMethod resetOptions() { this.props.viewport.resetComponent(this.props.viewport.currentEditComponentMapUniqueKey) } /** * 修改组件标题 */ @autoBindMethod handleChangeName(event: any) { this.componentInfo.props.gaeaName = event.target.value } /** * 给标题输入框右侧增加删除按钮 */ @autoBindMethod titleInputRightRender() { // 根组件没有移除功能 if (this.componentInfo.parentMapUniqueKey === null) { return null } return ( ) } /** * 修改一个字段是否生效 */ handleToggleOptionEnable(editOption: FitGaea.ComponentPropsGaeaEdit, checked: boolean) { editOption.isNull = !checked if (!checked) { // 暂存非空的值 editOption.notNullValue = this.componentInfo.props[editOption.field] this.props.viewport.updateComponentOptionsValue(editOption, null) } else { this.props.viewport.updateComponentOptionsValue(editOption, editOption.notNullValue) } } render() { if (!this.props.viewport.currentEditComponentMapUniqueKey) { return null } // 绑定组件信息 this.componentInfo = this.props.viewport.components.get(this.props.viewport.currentEditComponentMapUniqueKey) const Editors = this.componentInfo.props.gaeaEdit && this.componentInfo.props.gaeaEdit.map((editOption, index)=> { const key = `${this.props.viewport.currentEditComponentMapUniqueKey}-${editOption.field}` let EditElement: React.ReactElement = null switch (editOption.editor) { case 'text': EditElement = ( ) break case 'selector': EditElement = ( ) break case 'switch': EditElement = ( ) break case 'array': EditElement = ( ) break case 'marginPadding': EditElement = ( ) break } const editLineLabelClasses = classNames({ 'edit-line-label': true, 'disabled': editOption.isNull }) return (
{editOption.canNull && } {editOption.label}
{EditElement}
) }) // 重置按钮,非根节点才有 let ResetButton: React.ReactElement = null if (this.componentInfo.parentMapUniqueKey !== null) { ResetButton = ( ) } // 成组按钮,有 childs 的 layout 元素且非根节点才有 let GroupButton: React.ReactElement = null if (this.componentInfo.props.gaeaUniqueKey === 'gaea-layout' && this.componentInfo.parentMapUniqueKey !== null) { GroupButton = ( ) } return (
{Editors}
{ResetButton} {GroupButton}
) } }