@grafana/ui
Version:
Grafana Components Library
1 lines • 3.55 kB
Source Map (JSON)
{"version":3,"file":"utils.cjs","sources":["../../../../src/components/InteractiveTable/utils.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport { type Column as RTColumn } from 'react-table';\n\nimport { EmptyExpanderHeader, ExpanderCell, ExpanderHeader } from './Expander';\nimport { type Column } from './types';\n\nexport const EXPANDER_CELL_ID = '__expander' as const;\n\ntype InternalColumn<T extends object> = RTColumn<T> & {\n visible?: (data: T[]) => boolean;\n};\n\n// Returns the columns in a \"react-table\" acceptable format\nexport function getColumns<K extends object>(\n columns: Array<Column<K>>,\n showExpandAll = false\n): Array<InternalColumn<K>> {\n return [\n {\n id: EXPANDER_CELL_ID,\n Cell: ExpanderCell,\n Header: showExpandAll ? ExpanderHeader : EmptyExpanderHeader,\n disableSortBy: true,\n width: 0,\n },\n // @ts-expect-error react-table expects each column key(id) to have data associated with it and therefore complains about\n // column.id being possibly undefined and not keyof T (where T is the data object)\n // We do not want to be that strict as we simply pass undefined to cells that do not have data associated with them.\n ...columns.map((column) => ({\n id: column.id,\n accessor: column.id,\n Header: column.header || (() => null),\n sortType: column.sortType || 'alphanumeric',\n disableSortBy: !Boolean(column.sortType),\n width: column.width ?? (column.disableGrow ? 0 : undefined),\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n widthClass: css({\n width: typeof column.width === 'number' && column.width > 0 ? column.width : undefined,\n minWidth: typeof column.minWidth === 'number' && column.minWidth > 0 ? column.minWidth : undefined,\n maxWidth: typeof column.maxWidth === 'number' && column.maxWidth > 0 ? column.maxWidth : undefined,\n }),\n visible: column.visible,\n ...(column.sortDescFirst !== undefined && { sortDescFirst: column.sortDescFirst }),\n ...(column.cell && { Cell: column.cell }),\n })),\n ];\n}\n"],"names":["ExpanderCell","ExpanderHeader","EmptyExpanderHeader","css"],"mappings":";;;;;;;;AAMO,MAAM,gBAAA,GAAmB;AAOzB,SAAS,UAAA,CACd,OAAA,EACA,aAAA,GAAgB,KAAA,EACU;AAC1B,EAAA,OAAO;AAAA,IACL;AAAA,MACE,EAAA,EAAI,gBAAA;AAAA,MACJ,IAAA,EAAMA,kBAAA;AAAA,MACN,MAAA,EAAQ,gBAAgBC,oBAAA,GAAiBC,yBAAA;AAAA,MACzC,aAAA,EAAe,IAAA;AAAA,MACf,KAAA,EAAO;AAAA,KACT;AAAA;AAAA;AAAA;AAAA,IAIA,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAQ;AA5B5B,MAAA,IAAA,EAAA;AA4BgC,MAAA,OAAA;AAAA,QAC1B,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,UAAU,MAAA,CAAO,EAAA;AAAA,QACjB,MAAA,EAAQ,MAAA,CAAO,MAAA,KAAW,MAAM,IAAA,CAAA;AAAA,QAChC,QAAA,EAAU,OAAO,QAAA,IAAY,cAAA;AAAA,QAC7B,aAAA,EAAe,CAAC,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA;AAAA,QACvC,QAAO,EAAA,GAAA,MAAA,CAAO,KAAA,KAAP,IAAA,GAAA,EAAA,GAAiB,MAAA,CAAO,cAAc,CAAA,GAAI,KAAA,CAAA;AAAA,QACjD,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,YAAYC,OAAA,CAAI;AAAA,UACd,KAAA,EAAO,OAAO,MAAA,CAAO,KAAA,KAAU,YAAY,MAAA,CAAO,KAAA,GAAQ,CAAA,GAAI,MAAA,CAAO,KAAA,GAAQ,KAAA,CAAA;AAAA,UAC7E,QAAA,EAAU,OAAO,MAAA,CAAO,QAAA,KAAa,YAAY,MAAA,CAAO,QAAA,GAAW,CAAA,GAAI,MAAA,CAAO,QAAA,GAAW,KAAA,CAAA;AAAA,UACzF,QAAA,EAAU,OAAO,MAAA,CAAO,QAAA,KAAa,YAAY,MAAA,CAAO,QAAA,GAAW,CAAA,GAAI,MAAA,CAAO,QAAA,GAAW,KAAA;AAAA,SAC1F,CAAA;AAAA,QACD,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,GAAI,MAAA,CAAO,aAAA,KAAkB,UAAa,EAAE,aAAA,EAAe,OAAO,aAAA,EAAc;AAAA,QAChF,GAAI,MAAA,CAAO,IAAA,IAAQ,EAAE,IAAA,EAAM,OAAO,IAAA;AAAK,OACzC;AAAA,IAAA,CAAE;AAAA,GACJ;AACF;;;;;"}