UNPKG

cjd-parkball

Version:

> 中后台业务组件库,中后台就像公园,进入需要买门票(登录),所以以 Parkball(公园球) 命名,公园内必定捕获!作为一个组件库,提供使用方法文档,方便开发者的调用

134 lines (113 loc) 3.11 kB
--- category: 2 title: 高级搜索 title_en: Advanced search --- zh-CN 三列栅格式的表单排列方式,常用于数据表格的高级搜索。 有部分定制的样式代码,由于输入标签长度不确定,需要根据具体情况自行调整。 en-US Three columns layout is often used for advanced searching of data table. Because the width of label is not fixed, you may need to adjust it by customizing its style. ````jsx import { Form, Row, Col, Input, Button, Icon } from 'parkball'; const FormItem = Form.Item; class AdvancedSearchForm extends React.Component { state = { expand: false, }; handleSearch = (e) => { e.preventDefault(); this.props.form.validateFields((err, values) => { console.log('Received values of form: ', values); }); } handleReset = () => { this.props.form.resetFields(); } toggle = () => { const { expand } = this.state; this.setState({ expand: !expand }); } // To generate mock Form.Item getFields() { const count = this.state.expand ? 10 : 6; const { getFieldDecorator } = this.props.form; const children = []; for (let i = 0; i < 10; i++) { children.push( <Col span={8} key={i} style={{ display: i < count ? 'block' : 'none' }}> <FormItem label={`Field ${i}`}> {getFieldDecorator(`field-${i}`, { rules: [{ required: true, message: 'Input something!', }], })( <Input placeholder="placeholder" /> )} </FormItem> </Col> ); } return children; } render() { return ( <Form className="ant-advanced-search-form" onSubmit={this.handleSearch} > <Row gutter={24}>{this.getFields()}</Row> <Row> <Col span={24} style={{ textAlign: 'right' }}> <Button type="primary" htmlType="submit">Search</Button> <Button style={{ marginLeft: 8 }} onClick={this.handleReset}> Clear </Button> <a style={{ marginLeft: 8, fontSize: 12 }} onClick={this.toggle}> Collapse <Icon type={this.state.expand ? 'up' : 'down'} /> </a> </Col> </Row> </Form> ); } } const WrappedAdvancedSearchForm = Form.create()(AdvancedSearchForm); ReactDOM.render( <div> <WrappedAdvancedSearchForm /> <div className="search-result-list">Search Result List</div> </div>, mountNode ); ```` ````css .ant-advanced-search-form { padding: 24px; background: #fbfbfb; border: 2px solid #d9d9d9; border-radius: 6px; } .ant-advanced-search-form .ant-form-item { display: flex; } .ant-advanced-search-form .ant-form-item-control-wrapper { flex: 1; } ```` <style> #components-form-demo-advanced-search .ant-form { max-width: none; } #components-form-demo-advanced-search .search-result-list { margin-top: 16px; border: 2px dashed #e9e9e9; border-radius: 6px; background-color: #fafafa; min-height: 200px; text-align: center; padding-top: 80px; } </style>