mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-11 13:59:11 +08:00
c3e51506cc
* feat: add Space.Compact * feat: update input style * feat: add CompactItem for context memoize * feat: add demo * feat: update button style * feat: update input style * feat: 提取 getCompactClassNames 公用方法 * feat: update button style * feat: update picker * feat: add block prop for Space.Compact * feat: use Space.Compact for Input#addonBefore/After * feat: update addon * refactor: compact * feat: update * feat: update * feat: migrate styles to compact for new Input/Input.Search * feat: organize input demo * feat: add more button compact demo * feat: resolve select border collapse * feat: fix input addon select style * feat: add input addon demo in Space * feat: add useCompactItemContext hook * feat: update compact-item style * feat: rollback input#addon implements * feat: rollback input#addon and input.search style * feat: select border collapse * feat: add Space.Compact demo * feat: Space.Compact vertical for Button * refactor: useCompactItemContext * feat: update Button vertical demo * feat: rtl for compact mixin * feat: rtl for compact button * feat: input rtl * feat: add docs for Space.Compact * test: add some tests for Space.Compact * test: add tests * feat: select style * feat: handle select focus style * feat: add useCompactItemContext for Picker and Cascader * style: add compact-item style for cascader * feat: support nested Space.Compact * style: Input.Search in Space.Compact * chore: clean * feat: add useCompactItemContext for TreeSelect * fix: lint issues * fix: style lint * docs: update demos for Space.Compact * docs: update demo * fix: add deps-lint-skip for space * fix: add deps-lint-skip for space * fix: handle edge case for useCompactItemContext * test: add search test case * chore: + bundlesize * style: merge button compact style into one file * style: improve style for nested compact * fix: stylelint * docs: update Space.Compact docs * test: update demo snapshot * test: update input debug test snapshot * docs: update doccs for Space.Compact * test: improve test cases for Compact * docs: clean demos for Compact * refactor: improve Space.Compact * fix: add useCompactItemContext for Input.Search * style: improve compact border-radius implementation * refactor: use context to make nested compact works * fix: input-number focused style * refactor: remove useless style * refactor: improve style for vertical compact * test: update snapshot * test: update snapshot for input * refactor: improve compact-item-border-radius * fix: search group in RTL * style: improve style for button compact * style: use after * fix: stylelint * chore: update snapshot * style: improve button compact * refactor: improve btn-icon-only style in compact
257 lines
7.1 KiB
Markdown
257 lines
7.1 KiB
Markdown
---
|
|
order: 8
|
|
version: 4.24.0
|
|
title:
|
|
zh-CN: 紧凑布局组合
|
|
en-US: Compact Mode for form component
|
|
---
|
|
|
|
## zh-CN
|
|
|
|
使用 Space.Compact 让表单组件之间紧凑连接且合并边框。
|
|
|
|
## en-US
|
|
|
|
Compact Mode for form component.
|
|
|
|
```tsx
|
|
import { CopyOutlined } from '@ant-design/icons';
|
|
import {
|
|
AutoComplete,
|
|
Button,
|
|
Cascader,
|
|
DatePicker,
|
|
Input,
|
|
InputNumber,
|
|
Select,
|
|
Space,
|
|
TimePicker,
|
|
Tooltip,
|
|
TreeSelect,
|
|
} from 'antd';
|
|
import React from 'react';
|
|
|
|
const { Option } = Select;
|
|
const { TreeNode } = TreeSelect;
|
|
|
|
const App: React.FC = () => (
|
|
<div className="site-space-compact-wrapper">
|
|
<Space.Compact block>
|
|
<Input style={{ width: '20%' }} defaultValue="0571" />
|
|
<Input style={{ width: '30%' }} defaultValue="26888888" />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block size="small">
|
|
<Input style={{ width: 'calc(100% - 200px)' }} defaultValue="https://ant.design" />
|
|
<Button type="primary">Submit</Button>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Input style={{ width: 'calc(100% - 200px)' }} defaultValue="https://ant.design" />
|
|
<Button type="primary">Submit</Button>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Input
|
|
style={{ width: 'calc(100% - 200px)' }}
|
|
defaultValue="git@github.com:ant-design/ant-design.git"
|
|
/>
|
|
<Tooltip title="copy git url">
|
|
<Button icon={<CopyOutlined />} />
|
|
</Tooltip>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select defaultValue="Zhejiang">
|
|
<Option value="Zhejiang">Zhejiang</Option>
|
|
<Option value="Jiangsu">Jiangsu</Option>
|
|
</Select>
|
|
<Input style={{ width: '50%' }} defaultValue="Xihu District, Hangzhou" />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select mode="multiple" defaultValue="Zhejianggggg" style={{ width: '50%' }}>
|
|
<Option value="Zhejianggggg">Zhejianggggg</Option>
|
|
<Option value="Jiangsu">Jiangsu</Option>
|
|
</Select>
|
|
<Input style={{ width: '50%' }} defaultValue="Xihu District, Hangzhou" />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Input.Search style={{ width: '30%' }} defaultValue="0571" />
|
|
<Input.Search allowClear style={{ width: '50%' }} defaultValue="26888888" />
|
|
<Input.Search style={{ width: '20%' }} defaultValue="+1" />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select defaultValue="Option1">
|
|
<Option value="Option1">Option1</Option>
|
|
<Option value="Option2">Option2</Option>
|
|
</Select>
|
|
<Input style={{ width: '50%' }} defaultValue="input content" />
|
|
<InputNumber defaultValue={12} />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Input style={{ width: '50%' }} defaultValue="input content" />
|
|
<DatePicker style={{ width: '50%' }} />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<DatePicker.RangePicker style={{ width: '70%' }} />
|
|
<Input style={{ width: '30%' }} defaultValue="input content" />
|
|
<Button type="primary">查询</Button>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Input style={{ width: '30%' }} defaultValue="input content" />
|
|
<DatePicker.RangePicker style={{ width: '70%' }} />
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select defaultValue="Option1-1">
|
|
<Option value="Option1-1">Option1-1</Option>
|
|
<Option value="Option1-2">Option1-2</Option>
|
|
</Select>
|
|
<Select defaultValue="Option2-2">
|
|
<Option value="Option2-1">Option2-1</Option>
|
|
<Option value="Option2-2">Option2-2</Option>
|
|
</Select>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select defaultValue="1">
|
|
<Option value="1">Between</Option>
|
|
<Option value="2">Except</Option>
|
|
</Select>
|
|
<Input style={{ width: 100, textAlign: 'center' }} placeholder="Minimum" />
|
|
<Input
|
|
className="site-input-split"
|
|
style={{
|
|
width: 30,
|
|
borderLeft: 0,
|
|
borderRight: 0,
|
|
pointerEvents: 'none',
|
|
}}
|
|
placeholder="~"
|
|
disabled
|
|
/>
|
|
<Input
|
|
className="site-input-right"
|
|
style={{
|
|
width: 100,
|
|
textAlign: 'center',
|
|
}}
|
|
placeholder="Maximum"
|
|
/>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<Select defaultValue="Sign Up" style={{ width: '30%' }}>
|
|
<Option value="Sign Up">Sign Up</Option>
|
|
<Option value="Sign In">Sign In</Option>
|
|
</Select>
|
|
<AutoComplete
|
|
style={{ width: '70%' }}
|
|
placeholder="Email"
|
|
options={[{ value: 'text 1' }, { value: 'text 2' }]}
|
|
/>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<TimePicker style={{ width: '70%' }} />
|
|
<Cascader
|
|
style={{ width: '70%' }}
|
|
options={[
|
|
{
|
|
value: 'zhejiang',
|
|
label: 'Zhejiang',
|
|
children: [
|
|
{
|
|
value: 'hangzhou',
|
|
label: 'Hangzhou',
|
|
children: [
|
|
{
|
|
value: 'xihu',
|
|
label: 'West Lake',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
value: 'jiangsu',
|
|
label: 'Jiangsu',
|
|
children: [
|
|
{
|
|
value: 'nanjing',
|
|
label: 'Nanjing',
|
|
children: [
|
|
{
|
|
value: 'zhonghuamen',
|
|
label: 'Zhong Hua Men',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
]}
|
|
placeholder="Select Address"
|
|
/>
|
|
</Space.Compact>
|
|
<br />
|
|
<Space.Compact block>
|
|
<TimePicker.RangePicker />
|
|
<TreeSelect
|
|
showSearch
|
|
style={{ width: '60%' }}
|
|
value="leaf1"
|
|
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
|
placeholder="Please select"
|
|
allowClear
|
|
treeDefaultExpandAll
|
|
onChange={() => {}}
|
|
>
|
|
<TreeNode value="parent 1" title="parent 1">
|
|
<TreeNode value="parent 1-0" title="parent 1-0">
|
|
<TreeNode value="leaf1" title="leaf1" />
|
|
<TreeNode value="leaf2" title="leaf2" />
|
|
</TreeNode>
|
|
<TreeNode value="parent 1-1" title="parent 1-1">
|
|
<TreeNode value="leaf3" title={<b style={{ color: '#08c' }}>leaf3</b>} />
|
|
</TreeNode>
|
|
</TreeNode>
|
|
</TreeSelect>
|
|
<Button type="primary">Submit</Button>
|
|
</Space.Compact>
|
|
<br />
|
|
</div>
|
|
);
|
|
|
|
export default App;
|
|
```
|
|
|
|
```css
|
|
.site-space-compact-wrapper .site-input-split {
|
|
background-color: #fff;
|
|
}
|
|
|
|
.site-space-compact-wrapper .site-input-right:not(.ant-input-rtl) {
|
|
border-left-width: 0;
|
|
}
|
|
|
|
.site-space-compact-wrapper .site-input-right:not(.ant-input-rtl):hover,
|
|
.site-space-compact-wrapper .site-input-right:not(.ant-input-rtl):focus {
|
|
border-left-width: 1px;
|
|
}
|
|
|
|
.site-space-compact-wrapper .site-input-right.ant-input-rtl {
|
|
border-right-width: 0;
|
|
}
|
|
|
|
.site-space-compact-wrapper .site-input-right.ant-input-rtl:hover,
|
|
.site-space-compact-wrapper .site-input-right.ant-input-rtl:focus {
|
|
border-right-width: 1px;
|
|
}
|
|
```
|