import React from 'react' import { MoreSelect, MoreSelectGroupDataItem } from '../more_select' import { Flex } from '../flex' import _ from 'lodash' import { getColumnKey } from './util' import classNames from 'classnames' import { TableSelectProps, TableSelectDataItem } from './types' /** todo 泛型 */ /** 和 MoreSelect 类似。多了 columns */ const TableSelect = React.forwardRef>((props, ref) => { const { data, columns, className, ...rest } = props const Title = ( {_.map(columns, (column, i) => (
{column.Header}
))}
) let newData: MoreSelectGroupDataItem[] = [] if (data.length !== 0) { newData = [ { label: Title, children: data, }, ] } const renderListItem = (item: TableSelectDataItem, index: number) => { return ( {_.map(columns, (column, i) => { let content = null if (column.Cell) { content = column.Cell({ original: item, index, }) } else if (_.isFunction(column.accessor)) { content = column.accessor(item) } else if (_.isString(column.accessor)) { content = _.get(item, column.accessor) } if (content === null || content === undefined) { content =
-
} return (
{content}
) })}
) } return ( ) }) export default TableSelect