import React, { Fragment } from 'react'; import { Card, Form, Input, Select } from 'antd'; import { withPropsAPI } from 'gg-editor'; import { FormComponentProps } from 'antd/lib/form'; const upperFirst = (str: string) => { return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); }; const { Item } = Form; const { Option } = Select; const inlineFormItemLayout = { labelCol: { sm: { span: 8 }, }, wrapperCol: { sm: { span: 16 }, }, }; interface DetailFormProps extends FormComponentProps { type: string; propsAPI?: any; } class DetailForm extends React.Component { get item() { const { propsAPI } = this.props; return propsAPI.getSelected()[0]; } handleSubmit = (e: React.FormEvent) => { if (e && e.preventDefault) { e.preventDefault(); } const { form, propsAPI } = this.props; const { getSelected, executeCommand, update } = propsAPI; setTimeout(() => { form.validateFieldsAndScroll((err, values) => { if (err) { return; } const item = getSelected()[0]; if (!item) { return; } executeCommand(() => { update(item, { ...values, }); }); }); }, 0); }; renderEdgeShapeSelect = () => { return ( ); }; renderNodeDetail = () => { const { form } = this.props; const { label } = this.item.getModel(); return ( {form.getFieldDecorator('label', { initialValue: label, })()} ); }; renderEdgeDetail = () => { const { form } = this.props; const { label = '', shape = 'flow-smooth' } = this.item.getModel(); return ( {form.getFieldDecorator('label', { initialValue: label, })()} {form.getFieldDecorator('shape', { initialValue: shape, })(this.renderEdgeShapeSelect())} ); }; renderGroupDetail = () => { const { form } = this.props; const { label = '新建分组' } = this.item.getModel(); return ( {form.getFieldDecorator('label', { initialValue: label, })()} ); }; render() { const { type } = this.props; if (!this.item) { return null; } return (
{type === 'node' && this.renderNodeDetail()} {type === 'edge' && this.renderEdgeDetail()} {type === 'group' && this.renderGroupDetail()}
); } } export default Form.create()(withPropsAPI(DetailForm as any));