@grafana/ui
Version:
Grafana Components Library
1 lines • 6.45 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":";;;;;;;;AAkBO,MAAM,SAAA,GAAY,CAAC,KAAA,KAA0B;AAClD,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAe,WAAA,EAAY,GAAI,KAAA;AACrD,EAAA,MAAM,iBAAA,GAAoB,SAAA,CAAU,UAAA,CAAW,MAAA,CAAO,aAAA,CAAc,KAAA;AAEpE,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,UAAA,EAAW,SAAA,EAAW,YAAY,SAAA,EACzC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,WAAA,KAA6B;AAC9C,IAAA,MAAM,EAAE,GAAA,EAAK,GAAG,gBAAA,EAAiB,GAAI,YAAY,mBAAA,EAAoB;AACrE,IAAA,uBACE,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,WAAA,CAAY,KAAA;AAAA,QACtB,GAAG,gBAAA;AAAA,QACJ,GAAA;AAAA,QACA,cAAY,iBAAA,CAAkB,MAAA;AAAA,QAC9B,IAAA,EAAK;AAAA,OAAA;AAAA,MAEJ,YAAY,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,MAAA,EAAgB,KAAA,KACxC,gBAAA,CAAiB,MAAA,EAAQ,aAAa,aAAa;AAAA;AACrD,KACF;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,gBAAA,CAAiB,MAAA,EAAa,WAAA,EAA0B,aAAA,EAAyB;AA5C1F,EAAA,IAAA,EAAA;AA6CE,EAAA,MAAM,EAAE,GAAA,EAAK,GAAG,WAAA,EAAY,GAAI,OAAO,cAAA,EAAe;AACtD,EAAA,MAAM,KAAA,GAAA,CAAe,EAAA,GAAA,MAAA,CAAO,KAAA,KAAP,IAAA,GAAA,EAAA,GAAgB,IAAA;AACrC,EAAA,MAAM,iBAAA,GAAmD,+BAAO,MAAA,CAAO,MAAA;AAEvE,EAAA,IAAI,OAAO,SAAA,EAAW;AACpB,IAAA,WAAA,CAAY,KAAA,CAAM,UAAA,GAAa,MAAA,CAAO,UAAA,GAAa,MAAA,GAAS,MAAA;AAAA,EAC9D;AAEA,EAAA,WAAA,CAAY,MAAM,QAAA,GAAW,UAAA;AAC7B,EAAA,WAAA,CAAY,KAAA,CAAM,iBAAiB,MAAA,CAAO,cAAA;AAC1C,EAAA,WAAA,CAAY,KAAA,CAAM,OAAO,MAAA,CAAO,SAAA;AAEhC,EAAA,IAAI,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA;AAE1C,EAAA,IAAI,iBAAA,GAAoB,MAAA,CAAO,OAAA,oBAC7B,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,YAAQ,GAAG,MAAA,CAAO,sBAAqB,EAAG,SAAA,EAAW,YAAY,eAAA,EAC/D,QAAA,EAAA;AAAA,MAAA,aAAA,oBACC,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,gBAAA,CAAiB,KAAK,CAAA,EAAG,KAAA,EAAO,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAA,EAAM,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,YAAY,QAAA,EAAU,CAAA;AAAA,sBAEtG,GAAA,CAAC,SAAK,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,MACnB,MAAA,CAAO,aACL,MAAA,CAAO,YAAA,uBACL,IAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,YAAA,EAAa,SAAA,EAAW,YAAY,QAAA,EAAU,CAAA,uBAElE,IAAA,EAAA,EAAK,IAAA,EAAK,YAAW,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,WAAA,CAAY,QAAA,EAAU,CAAA;AAAA,KAAA,EAEvE,CAAA;AAAA,IACC,OAAO,SAAA,oBAAa,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,aAA0B,KAAA,EAAc;AAAA,GAAA,EACvF,CAAA;AAEF,EAAA,IAAI,iBAAA,KAAqB,uDAAmB,eAAA,CAAA,EAAiB;AAC3D,IAAA,iBAAA,uBAAqB,iBAAA,CAAkB,eAAA,EAAlB,EAAkC,KAAA,EAAc,gBAAgB,iBAAA,EAAmB,CAAA;AAAA,EAC1G,CAAA,MAAA,IAAW,uDAAmB,eAAA,EAAiB;AAC7C,IAAA,aAAA,uBAAiB,iBAAA,CAAkB,eAAA,EAAlB,EAAkC,KAAA,EAAc,gBAAgB,aAAA,EAAe,CAAA;AAAA,EAClG;AAEA,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,WAAA,CAAY,YAAuB,GAAG,WAAA,EAAa,MAAK,cAAA,EACrE,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,OAAA,IAAW,iBAAA;AAAA,IAClB,CAAC,OAAO,OAAA,IAAW,aAAA;AAAA,IACnB,CAAC,OAAO,OAAA,IAAW,MAAA,CAAO,6BAAa,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,WAAA,EAA0B,KAAA,EAAc,CAAA;AAAA,IACvG,MAAA,CAAO,SAAA,oBAAa,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,OAAO,eAAA,EAAgB,EAAG,SAAA,EAAW,WAAA,CAAY,YAAA,EAAc;AAAA,GAAA,EAAA,EAJlD,GAK7C,CAAA;AAEJ;;;;"}