diff --git a/packages/grafana-ui/src/components/Table/TableNG/TableNG.test.tsx b/packages/grafana-ui/src/components/Table/TableNG/TableNG.test.tsx index ead8014e550..570deb68e13 100644 --- a/packages/grafana-ui/src/components/Table/TableNG/TableNG.test.tsx +++ b/packages/grafana-ui/src/components/Table/TableNG/TableNG.test.tsx @@ -96,6 +96,12 @@ const createNestedDataFrame = (): DataFrame => { const nestedFrame = toDataFrame({ name: 'NestedData', fields: [ + { + name: 'Nested hidden', + type: FieldType.string, + values: ['secret1', 'secret2'], + config: { custom: { hideFrom: { viz: true } } }, + }, { name: 'Nested A', type: FieldType.string, @@ -413,6 +419,10 @@ describe('TableNG', () => { expect(screen.getByText(text)).toBeInTheDocument(); }); + // Hidden nested fields should stay hidden + expect(screen.queryByText('Nested hidden')).not.toBeInTheDocument(); + expect(screen.queryByText('secret1')).not.toBeInTheDocument(); + // Check if the expanded row has the aria-expanded attribute const expandedRow = container.querySelector('[aria-expanded="true"]'); expect(expandedRow).toBeInTheDocument(); diff --git a/packages/grafana-ui/src/components/Table/TableNG/TableNG.tsx b/packages/grafana-ui/src/components/Table/TableNG/TableNG.tsx index f17a62b92cf..74fe9b99b14 100644 --- a/packages/grafana-ui/src/components/Table/TableNG/TableNG.tsx +++ b/packages/grafana-ui/src/components/Table/TableNG/TableNG.tsx @@ -745,7 +745,11 @@ export function TableNG(props: TableNGProps) { () => (hasNestedFrames ? rows.find((r) => r.data)?.data : undefined), [hasNestedFrames, rows] ); - const [nestedFieldWidths] = useColWidths(firstRowNestedData?.fields ?? [], availableWidth); + const nestedVisibleFields = useMemo( + () => (firstRowNestedData ? getVisibleFields(firstRowNestedData.fields) : []), + [firstRowNestedData] + ); + const [nestedFieldWidths] = useColWidths(nestedVisibleFields, availableWidth); const { columns, cellRootRenderers } = useMemo(() => { const result = fromFields(visibleFields, widths); @@ -759,7 +763,7 @@ export function TableNG(props: TableNGProps) { const hasNestedHeaders = firstRowNestedData.meta?.custom?.noHeader !== true; const renderRow = renderRowFactory(firstRowNestedData.fields, panelContext, expandedRows, enableSharedCrosshair); const { columns: nestedColumns, cellRootRenderers: nestedCellRootRenderers } = fromFields( - firstRowNestedData.fields, + nestedVisibleFields, nestedFieldWidths ); @@ -782,6 +786,7 @@ export function TableNG(props: TableNGProps) { firstRowNestedData, fromFields, nestedFieldWidths, + nestedVisibleFields, panelContext, visibleFields, widths,