mirror of
https://github.com/ant-design/ant-design.git
synced 2024-11-27 20:49:53 +08:00
feat: Space support classNames and styles (#42743)
* feat: add styles and classNames properties * Update components/space/index.en-US.md Co-authored-by: kiner-tang(文辉) <1127031143@qq.com> * docs: fix prettier issue --------- Co-authored-by: kiner-tang(文辉) <1127031143@qq.com>
This commit is contained in:
parent
7deff2164a
commit
20e09e6c31
@ -9,6 +9,7 @@ export interface ItemProps {
|
|||||||
marginDirection: 'marginLeft' | 'marginRight';
|
marginDirection: 'marginLeft' | 'marginRight';
|
||||||
split?: React.ReactNode;
|
split?: React.ReactNode;
|
||||||
wrap?: boolean;
|
wrap?: boolean;
|
||||||
|
style?: React.CSSProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Item({
|
export default function Item({
|
||||||
@ -19,6 +20,7 @@ export default function Item({
|
|||||||
children,
|
children,
|
||||||
split,
|
split,
|
||||||
wrap,
|
wrap,
|
||||||
|
style: customStyle,
|
||||||
}: ItemProps) {
|
}: ItemProps) {
|
||||||
const { horizontalSize, verticalSize, latestIndex, supportFlexGap } =
|
const { horizontalSize, verticalSize, latestIndex, supportFlexGap } =
|
||||||
React.useContext(SpaceContext);
|
React.useContext(SpaceContext);
|
||||||
@ -44,7 +46,7 @@ export default function Item({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={className} style={style}>
|
<div className={className} style={{ ...style, ...customStyle }}>
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
{index < latestIndex && split && (
|
{index < latestIndex && split && (
|
||||||
|
@ -222,4 +222,34 @@ describe('Space', () => {
|
|||||||
|
|
||||||
expect(ref.current).toBe(container.firstChild);
|
expect(ref.current).toBe(container.firstChild);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should classNames work', () => {
|
||||||
|
const { container } = render(
|
||||||
|
<Space classNames={{ item: 'test-classNames' }}>
|
||||||
|
<span>Text1</span>
|
||||||
|
<span>Text2</span>
|
||||||
|
</Space>,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(container.querySelector('.ant-space-item.test-classNames')).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should styles work', () => {
|
||||||
|
const { container } = render(
|
||||||
|
<Space
|
||||||
|
styles={{
|
||||||
|
item: {
|
||||||
|
color: 'red',
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span>Text1</span>
|
||||||
|
<span>Text2</span>
|
||||||
|
</Space>,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(container.querySelector('.ant-space-item')?.getAttribute('style')).toEqual(
|
||||||
|
'margin-right: 8px; color: red;',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -64,6 +64,13 @@ Use Space.Compact when child form components are compactly connected and the bor
|
|||||||
| direction | Set direction of layout | `vertical` \| `horizontal` | `horizontal` | 4.24.0 |
|
| direction | Set direction of layout | `vertical` \| `horizontal` | `horizontal` | 4.24.0 |
|
||||||
| size | Set child component size | `large` \| `middle` \| `small` | `middle` | 4.24.0 |
|
| size | Set child component size | `large` \| `middle` \| `small` | `middle` | 4.24.0 |
|
||||||
|
|
||||||
|
### `styles` and `classNames` attribute
|
||||||
|
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
| Property | Description | Version |
|
||||||
|
| -------- | ------------------------- | ------- |
|
||||||
|
| item | set `Space` child element | 5.6.0 |
|
||||||
|
|
||||||
## Design Token
|
## Design Token
|
||||||
|
|
||||||
<ComponentTokenTable component="Space"></ComponentTokenTable>
|
<ComponentTokenTable component="Space"></ComponentTokenTable>
|
||||||
|
@ -29,6 +29,8 @@ export interface SpaceProps extends React.HTMLAttributes<HTMLDivElement> {
|
|||||||
align?: 'start' | 'end' | 'center' | 'baseline';
|
align?: 'start' | 'end' | 'center' | 'baseline';
|
||||||
split?: React.ReactNode;
|
split?: React.ReactNode;
|
||||||
wrap?: boolean;
|
wrap?: boolean;
|
||||||
|
classNames?: { item: string };
|
||||||
|
styles?: { item: React.CSSProperties };
|
||||||
}
|
}
|
||||||
|
|
||||||
const spaceSize = {
|
const spaceSize = {
|
||||||
@ -55,6 +57,8 @@ const Space = React.forwardRef<HTMLDivElement, SpaceProps>((props, ref) => {
|
|||||||
split,
|
split,
|
||||||
style,
|
style,
|
||||||
wrap = false,
|
wrap = false,
|
||||||
|
classNames: customClassNames,
|
||||||
|
styles,
|
||||||
...otherProps
|
...otherProps
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
@ -86,7 +90,7 @@ const Space = React.forwardRef<HTMLDivElement, SpaceProps>((props, ref) => {
|
|||||||
rootClassName,
|
rootClassName,
|
||||||
);
|
);
|
||||||
|
|
||||||
const itemClassName = `${prefixCls}-item`;
|
const itemClassName = classNames(`${prefixCls}-item`, customClassNames?.item);
|
||||||
|
|
||||||
const marginDirection = directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';
|
const marginDirection = directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';
|
||||||
|
|
||||||
@ -108,6 +112,7 @@ const Space = React.forwardRef<HTMLDivElement, SpaceProps>((props, ref) => {
|
|||||||
marginDirection={marginDirection}
|
marginDirection={marginDirection}
|
||||||
split={split}
|
split={split}
|
||||||
wrap={wrap}
|
wrap={wrap}
|
||||||
|
style={styles?.item}
|
||||||
>
|
>
|
||||||
{child}
|
{child}
|
||||||
</Item>
|
</Item>
|
||||||
|
@ -72,6 +72,13 @@ coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*37T2R6O9oi0AAA
|
|||||||
| direction | 指定排列方向 | `vertical` \| `horizontal` | `horizontal` | 4.24.0 |
|
| direction | 指定排列方向 | `vertical` \| `horizontal` | `horizontal` | 4.24.0 |
|
||||||
| size | 子组件大小 | `large` \| `middle` \| `small` | `middle` | 4.24.0 |
|
| size | 子组件大小 | `large` \| `middle` \| `small` | `middle` | 4.24.0 |
|
||||||
|
|
||||||
|
### `styles` 和 `classNames` 属性
|
||||||
|
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
| 名称 | 说明 | 版本 |
|
||||||
|
| ---- | --------------------- | ----- |
|
||||||
|
| item | 设置 `Space` 包裹的子组件 | 5.6.0 |
|
||||||
|
|
||||||
## Design Token
|
## Design Token
|
||||||
|
|
||||||
<ComponentTokenTable component="Space"></ComponentTokenTable>
|
<ComponentTokenTable component="Space"></ComponentTokenTable>
|
||||||
|
Loading…
Reference in New Issue
Block a user