@grafana/ui
Version:
Grafana Components Library
1 lines • 6.43 kB
Source Map (JSON)
{"version":3,"file":"HeaderRow.mjs","sources":["../../../../../src/components/Table/TableRT/HeaderRow.tsx"],"sourcesContent":["import { HeaderGroup, Column } from 'react-table';\n\nimport { Field } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { getFieldTypeIcon } from '../../../types/icon';\nimport { Icon } from '../../Icon/Icon';\nimport { TableFieldOptions } from '../types';\n\nimport { Filter } from './Filter';\nimport { TableStyles } from './styles';\n\nexport interface HeaderRowProps {\n headerGroups: HeaderGroup[];\n showTypeIcons?: boolean;\n tableStyles: TableStyles;\n}\n\nexport const HeaderRow = (props: HeaderRowProps) => {\n const { headerGroups, showTypeIcons, tableStyles } = props;\n const e2eSelectorsTable = selectors.components.Panels.Visualization.Table;\n\n return (\n <div role=\"rowgroup\" className={tableStyles.headerRow}>\n {headerGroups.map((headerGroup: HeaderGroup) => {\n const { key, ...headerGroupProps } = headerGroup.getHeaderGroupProps();\n return (\n <div\n className={tableStyles.thead}\n {...headerGroupProps}\n key={key}\n aria-label={e2eSelectorsTable.header}\n role=\"row\"\n >\n {headerGroup.headers.map((column: Column, index: number) =>\n renderHeaderCell(column, tableStyles, showTypeIcons)\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nfunction renderHeaderCell(column: any, tableStyles: TableStyles, showTypeIcons?: boolean) {\n const { key, ...headerProps } = column.getHeaderProps();\n const field: Field = column.field ?? null;\n const tableFieldOptions: TableFieldOptions | undefined = field?.config.custom;\n\n if (column.canResize) {\n headerProps.style.userSelect = column.isResizing ? 'none' : 'auto'; // disables selecting text while resizing\n }\n\n headerProps.style.position = 'absolute';\n headerProps.style.justifyContent = column.justifyContent;\n headerProps.style.left = column.totalLeft;\n\n let headerContent = column.render('Header');\n\n let sortHeaderContent = column.canSort && (\n <>\n <button {...column.getSortByToggleProps()} className={tableStyles.headerCellLabel}>\n {showTypeIcons && (\n <Icon name={getFieldTypeIcon(field)} title={field?.type} size=\"sm\" className={tableStyles.typeIcon} />\n )}\n <div>{headerContent}</div>\n {column.isSorted &&\n (column.isSortedDesc ? (\n <Icon size=\"lg\" name=\"arrow-down\" className={tableStyles.sortIcon} />\n ) : (\n <Icon name=\"arrow-up\" size=\"lg\" className={tableStyles.sortIcon} />\n ))}\n </button>\n {column.canFilter && <Filter column={column} tableStyles={tableStyles} field={field} />}\n </>\n );\n if (sortHeaderContent && tableFieldOptions?.headerComponent) {\n sortHeaderContent = <tableFieldOptions.headerComponent field={field} defaultContent={sortHeaderContent} />;\n } else if (tableFieldOptions?.headerComponent) {\n headerContent = <tableFieldOptions.headerComponent field={field} defaultContent={headerContent} />;\n }\n\n return (\n <div className={tableStyles.headerCell} key={key} {...headerProps} role=\"columnheader\">\n {column.canSort && sortHeaderContent}\n {!column.canSort && headerContent}\n {!column.canSort && column.canFilter && <Filter column={column} tableStyles={tableStyles} field={field} />}\n {column.canResize && <div {...column.getResizerProps()} className={tableStyles.resizeHandle} />}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}