import React, { HTMLAttributes, ReactElement } from 'react';
import styled from 'styled-components';
export interface ItemGroupProps extends HTMLAttributes {
label?: string;
name?: 'ItemGroup';
children?: React.ReactNode;
}
// 不知道react的虚拟节点什么类型所以扩充vNode类型来消除ts警告
type VNode = ReactElement & { type: { name: string } };
const ItemGroupStyled = styled.div`
display: flex;
flex-direction: column;
width: 100%;
&.copy {
padding-left: calc(1em);
}
> .label {
color: #a1a1a1;
padding: 16px 10px 8px 20px;
}
`;
const ItemGroup: React.FC = (props) => {
const { children, label, ...rest } = props;
return (
{React.Children.map(children, (child) => {
const vNode = child as VNode;
if (React.isValidElement(vNode) && vNode.props.name === 'ItemGroup') {
return {vNode};
}
if (React.isValidElement(vNode) && vNode.props.name === 'Label') {
return {vNode}
;
}
return {vNode}
;
})}
);
};
ItemGroup.defaultProps = {
name: 'ItemGroup',
label: '',
children: ''
};
export default ItemGroup;