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

190 lines
5.1 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
2019-04-19 20:59:45 +08:00
Use a form in Drawer with a submit button.
2018-06-03 22:00:27 +08:00
```jsx
use ant design icons 4.0 (#18217) * feat: use @ant-design/icons@4.0 * feat: use createFromIconfontCN to make site works * feat: update doc for Icon * feat: use icon in component Alert * feat: use icon in component Avatar * feat: use icon in component Breadcrumb * feat: use icon in component Button * feat: use icon in component Cascader * feat: use icon in component Collapse * feat: use icon in component Datepicker * feat: use icon in component Dropdown * feat: use icon in component Form * feat: use icon in component Input * feat: use icon in component InputNumber * feat: use icon in component Layout * feat: use icon in component Mention * feat: use icon in component Message * feat: use icon in component Modal * feat: use icon in component Notification * feat: use icon in component PageHeader * feat: use icon in component Pagination * feat: use icon in component Popconfirm * feat: use icon in component Progress * feat: use icon in component Rate * feat: use icon in component Result * feat: use icon in component Select * feat: use icon in component Step * feat: use icon in component Switch * feat: use icon in component Table * feat: use icon in component Tab * feat: use icon in component Tag * feat: handle rest component which using Icon * fix: remove unused vars * feat: use latest alpha ant design icons * fix: failed test in uploadlist.test.js * test: update snapshot for icons * doc: add Icon for site * doc: use @ant-design/icons in site * chore: use latest icons * fix: tslint issue * fix: test cases * fix: types for react * fix: lint rules for import orders * fix: use @ant-design/icons@4.0.0-alpha.5 to avoid insert css in server render * fix: eslint error in demo/**.md * inject antd icons * update snapshot * fix site * doc: update docs * fix: code snippets icon in site * feat: use latest @ant-design/icons * fix: icon props in message
2019-08-13 14:07:17 +08:00
import { Drawer, Form, Button, Col, Row, Input, Select, DatePicker } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
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() {
return (
<div>
<Button type="primary" onClick={this.showDrawer}>
<PlusOutlined /> 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}
bodyStyle={{ paddingBottom: 80 }}
footer={
<div
style={{
textAlign: 'right',
}}
>
2020-01-17 23:32:56 +08:00
<Button
onClick={this.onClose}
style={{ marginRight: 8 }}
>
Cancel
</Button>
<Button onClick={this.onClose} type="primary">
Submit
</Button>
</div>
}
2018-06-03 22:00:27 +08:00
>
<Form layout="vertical" hideRequiredMark>
<Row gutter={16}>
<Col span={12}>
<Form.Item
name="name"
label="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}>
<Form.Item
name="url"
label="Url"
rules={[{ required: true, message: 'Please enter url' }]}
>
<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}>
<Form.Item
name="owner"
label="Owner"
rules={[{ required: true, message: 'Please select an owner' }]}
>
<Select placeholder="Please select an owner">
<Option value="xiao">Xiaoxiao Fu</Option>
<Option value="mao">Maomao Zhou</Option>
</Select>
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="type"
label="Type"
rules={[{ required: true, message: 'Please choose the type' }]}
>
<Select placeholder="Please choose the type">
<Option value="private">Private</Option>
<Option value="public">Public</Option>
</Select>
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
<Form.Item
name="approver"
label="Approver"
rules={[{ required: true, message: 'Please choose the approver' }]}
>
<Select placeholder="Please choose the approver">
<Option value="jack">Jack Ma</Option>
<Option value="tom">Tom Liu</Option>
</Select>
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="dateTime"
label="DateTime"
rules={[{ required: true, message: 'Please choose the dateTime' }]}
>
<DatePicker.RangePicker
style={{ width: '100%' }}
getPopupContainer={trigger => trigger.parentNode}
/>
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={24}>
<Form.Item
name="description"
label="Description"
rules={[
{
required: true,
message: 'please enter url description',
},
]}
>
<Input.TextArea rows={4} placeholder="please enter url description" />
2018-06-03 22:00:27 +08:00
</Form.Item>
</Col>
</Row>
</Form>
</Drawer>
</div>
);
}
}
ReactDOM.render(<DrawerForm />, mountNode);
2018-06-03 22:00:27 +08:00
```
2019-12-25 18:06:50 +08:00
```css
.site-form-in-drawer-wrapper {
position: absolute;
right: 0px;
bottom: 0px;
width: 100%;
padding: 10px 16px;
border-top: 1px solid #e9e9e9;
background: #fff;
text-align: right;
}
```
<style>
[data-theme="dark"] .site-form-in-drawer-wrapper {
border-top: 1px solid #303030;
background: #1f1f1f;
}
</style>