123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import React from 'react';
- import PropTypes from 'prop-types';
- import classnames from 'classnames';
- import { get } from 'lodash';
- import { cssClasses } from '@douyinfe/semi-foundation/table/constants';
- import { flattenColumns } from '@douyinfe/semi-foundation/table/utils';
- import { ColumnProps } from './interface';
- export interface ColGroupProps {
- columns?: ColumnProps[];
- prefixCls?: string;
- className?: string;
- style?: React.CSSProperties;
- components?: Record<string, any>;
- }
- export default class ColGroup extends React.PureComponent<ColGroupProps> {
- static propTypes = {
- columns: PropTypes.array,
- prefixCls: PropTypes.string,
- className: PropTypes.string,
- style: PropTypes.object,
- components: PropTypes.object,
- };
- static defaultProps = {
- columns: [] as [],
- prefixCls: cssClasses.PREFIX,
- };
- render() {
- const { columns, className, style, prefixCls, components } = this.props;
- // eslint-disable-next-line @typescript-eslint/no-shadow
- const ColGroup = get(components, 'colgroup.wrapper', 'colgroup');
- const Col = get(components, 'colgroup.col', 'col');
- const cols = flattenColumns(columns).map((column: ColumnProps, idx: number) => {
- const colStyle: { width?: number | string; minWidth?: number | string } = {};
- /**
- * table width
- */
- if (column.width) {
- colStyle.width = column.width;
- colStyle.minWidth = colStyle.width;
- }
- return (
- <Col
- className={classnames(`${prefixCls}-col`, column.className)}
- key={column.key || column.dataIndex || idx}
- style={colStyle}
- />
- );
- });
- const groupCls = classnames(`${prefixCls}-colgroup`, className);
- return (
- <ColGroup className={groupCls} style={style}>
- {cols}
- </ColGroup>
- );
- }
- }
|