ant-design/components/drawer/demo/form-in-drawer.md

176 lines
5.2 KiB
Markdown
Raw Normal View History

2018-06-03 22:00:27 +08:00
---
2018-06-28 16:17:22 +08:00
order: 3
2018-06-03 22:00:27 +08:00
title:
zh-CN: 抽屉表单
en-US: Submit form in drawer
2018-06-03 22:00:27 +08:00
---
## zh-CN
在抽屉中使用表单。
2018-06-03 22:00:27 +08:00
## en-US
Use form in drawer with submit button.
2018-06-03 22:00:27 +08:00
```jsx
2018-11-28 15:00:03 +08:00
import {
Drawer, Form, Button, Col, Row, Input, Select, DatePicker, Icon,
2018-11-28 15:00:03 +08:00
} from 'antd';
2018-06-03 22:00:27 +08:00
const { Option } = Select;
2018-07-02 12:27:06 +08:00
class DrawerForm extends React.Component {
2018-06-03 22:00:27 +08:00
state = { visible: false };
2018-07-04 08:29:42 +08:00
2018-06-03 22:00:27 +08:00
showDrawer = () => {
this.setState({
2018-06-28 16:17:22 +08:00
visible: true,
2018-06-03 22:00:27 +08:00
});
};
2018-07-04 08:29:42 +08:00
2018-06-03 22:00:27 +08:00
onClose = () => {
this.setState({
visible: false,
});
2018-06-03 22:00:27 +08:00
};
2018-07-04 08:29:42 +08:00
2018-06-03 22:00:27 +08:00
render() {
const { getFieldDecorator } = this.props.form;
return (
<div>
<Button type="primary" onClick={this.showDrawer}>
2018-12-10 21:42:38 +08:00
<Icon type="plus" /> New account
2018-06-03 22:00:27 +08:00
</Button>
<Drawer
title="Create a new account"
2018-06-03 22:00:27 +08:00
width={720}
onClose={this.onClose}
visible={this.state.visible}
style={{
overflow: 'auto',
height: 'calc(100% - 108px)',
paddingBottom: '108px',
}}
2018-06-03 22:00:27 +08:00
>
<Form layout="vertical" hideRequiredMark>
<Row gutter={16}>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="Name">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('name', {
rules: [{ required: true, message: 'Please enter user name' }],
})(<Input placeholder="Please enter user name" />)}
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="Url">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('url', {
rules: [{ required: true, message: 'Please enter url' }],
2018-06-03 22:00:27 +08:00
})(
<Input
style={{ width: '100%' }}
addonBefore="http://"
addonAfter=".com"
placeholder="Please enter url"
2018-06-03 22:00:27 +08:00
/>
)}
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="Owner">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('owner', {
2018-06-06 22:55:29 +08:00
rules: [{ required: true, message: 'Please select an owner' }],
2018-06-03 22:00:27 +08:00
})(
2018-06-06 22:55:29 +08:00
<Select placeholder="Please select an owner">
<Option value="xiao">Xiaoxiao Fu</Option>
<Option value="mao">Maomao Zhou</Option>
2018-06-03 22:00:27 +08:00
</Select>
)}
</Form.Item>
</Col>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="Type">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('type', {
2018-06-06 22:55:29 +08:00
rules: [{ required: true, message: 'Please choose the type' }],
2018-06-03 22:00:27 +08:00
})(
2018-06-06 22:55:29 +08:00
<Select placeholder="Please choose the type">
<Option value="private">Private</Option>
<Option value="public">Public</Option>
2018-06-03 22:00:27 +08:00
</Select>
)}
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="Approver">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('approver', {
2018-06-06 22:55:29 +08:00
rules: [{ required: true, message: 'Please choose the approver' }],
2018-06-03 22:00:27 +08:00
})(
2018-06-06 22:55:29 +08:00
<Select placeholder="Please choose the approver">
<Option value="jack">Jack Ma</Option>
<Option value="tom">Tom Liu</Option>
2018-06-03 22:00:27 +08:00
</Select>
)}
</Form.Item>
</Col>
<Col span={12}>
2018-06-06 22:55:29 +08:00
<Form.Item label="DateTime">
2018-06-03 22:00:27 +08:00
{getFieldDecorator('dateTime', {
2018-06-06 22:55:29 +08:00
rules: [{ required: true, message: 'Please choose the dateTime' }],
2018-06-03 22:00:27 +08:00
})(
<DatePicker.RangePicker
style={{ width: '100%' }}
getPopupContainer={trigger => trigger.parentNode}
/>
)}
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={24}>
2018-06-22 15:46:21 +08:00
<Form.Item label="Description">
2018-06-06 22:55:29 +08:00
{getFieldDecorator('description', {
2018-06-19 17:42:25 +08:00
rules: [
{
required: true,
message: 'please enter url description',
},
],
2018-06-06 22:55:29 +08:00
})(<Input.TextArea rows={4} placeholder="please enter url description" />)}
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
</Row>
</Form>
2018-06-19 17:42:25 +08:00
<div
style={{
position: 'absolute',
left: 0,
2018-06-19 17:42:25 +08:00
bottom: 0,
width: '100%',
borderTop: '1px solid #e9e9e9',
2018-06-19 17:42:25 +08:00
padding: '10px 16px',
background: '#fff',
textAlign: 'right',
2018-06-19 17:42:25 +08:00
}}
>
<Button onClick={this.onClose} style={{ marginRight: 8 }}>
2018-06-30 12:32:55 +08:00
Cancel
2018-06-19 17:42:25 +08:00
</Button>
<Button onClick={this.onClose} type="primary">
Submit
</Button>
2018-06-19 17:42:25 +08:00
</div>
2018-06-03 22:00:27 +08:00
</Drawer>
</div>
);
}
}
2018-07-02 12:27:06 +08:00
const App = Form.create()(DrawerForm);
2018-06-03 22:00:27 +08:00
2018-07-02 12:27:06 +08:00
ReactDOM.render(<App />, mountNode);
2018-06-03 22:00:27 +08:00
```