uui/components/tables/DataTableHeaderRow.tsx (41 lines of code) (raw):
import * as React from 'react';
import { DataTableHeaderRow as uuiDataTableHeaderRow } from '@epam/uui-components';
import { DataTableHeaderRowProps as CoreDataTableHeaderRowProps, withMods } from '@epam/uui-core';
import { DataTableHeaderRowMods } from './types';
import { DataTableHeaderCell } from './DataTableHeaderCell';
import { IconButton } from '../buttons';
import { ReactComponent as ConfigIcon } from '@epam/assets/icons/action-settings-fill.svg';
import { settings } from '../../settings';
import './variables.scss';
import css from './DataTableHeaderRow.module.scss';
import { DataTableHeaderGroupCell } from './DataTableHeaderGroupCell';
export type DataTableHeaderRowProps = CoreDataTableHeaderRowProps & DataTableHeaderRowMods;
export const DataTableHeaderRow = withMods<CoreDataTableHeaderRowProps, DataTableHeaderRowProps>(
uuiDataTableHeaderRow,
() => [css.root, 'uui-dt-vars'],
(mods) => ({
renderCell: (props) => (
<DataTableHeaderCell
{ ...props }
size={ mods.size }
textCase={ mods.textCase || 'normal' }
key={ props.column.key }
columnsGap={ mods.columnsGap }
/>
),
renderGroupCell: (props) => (
<DataTableHeaderGroupCell
{ ...props }
size={ mods.size }
textCase={ mods.textCase || 'normal' }
key={ props.key }
columnsGap={ mods.columnsGap }
/>
),
renderConfigButton: () => (
<IconButton
key="configuration"
onClick={ mods.onConfigButtonClick }
cx={ ['config-icon', `uui-size-${settings.sizes.dataTable.header.row.cell.iconSize[mods.size || settings.sizes.dataTable.header.row.default]}`] }
color="neutral"
icon={ ConfigIcon }
/>
),
}),
);