import {ThemeProps, themeable} from '../theme'; import React from 'react'; export interface ListGroupProps extends ThemeProps, Omit, 'placeholder'> { expand?: boolean; items?: Array; itemClassName?: string; itemRender: (item: any, index: number) => JSX.Element; placeholder?: JSX.Element; getItemProps?: (props: {item: any; index: number}) => any; } export class ListGroup extends React.Component { static defaultProps = { itemRender: (item: any) => <>{`${item}`} }; render() { const { classnames: cx, className, expand, placeholder, items, children, itemClassName, itemRender, getItemProps, classPrefix, ...rest } = this.props; return (
{Array.isArray(items) && items.length ? ( items.map((item: any, index) => { const itemProps = getItemProps?.({item, index}) || {}; return (
{itemRender(item, index)}
); }) ) : placeholder ? (
) : null} {children}
); } } export default themeable(ListGroup);