diff --git a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.test.tsx b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.test.tsx index 3ad2782776881..455a485f4ab4a 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.test.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.test.tsx @@ -310,9 +310,11 @@ describe('MetricVisComponent', function () { }); // for the secondary metric const secondaryLabel = table.columns.find((col) => col.id === minPriceColumnId)!.name; - expect( - screen.getByText(`${secondaryLabel} number-${table.rows[0][minPriceColumnId]}`) - ).toBeInTheDocument(); + + const secondaryElement = screen.getByTestId('metric-secondary-element'); + expect(secondaryElement.textContent).toBe( + `${secondaryLabel}number-${table.rows[0][minPriceColumnId]}` + ); await rerender({ config: { @@ -558,10 +560,12 @@ describe('MetricVisComponent', function () { }, }); + let secondaryElements = screen.getAllByTestId('metric-secondary-element'); for (const row of table.rows) { - expect( - screen.getByText(new RegExp(`howdy number-${row[minPriceColumnId]}`, 'i')) - ).toBeInTheDocument(); + const regExp = new RegExp(`howdynumber-${row[minPriceColumnId]}`, 'i'); + expect(secondaryElements.some((element) => regExp.test(element.textContent ?? ''))).toBe( + true + ); } // Now remove the prefix and check the secondary label is there @@ -573,11 +577,14 @@ describe('MetricVisComponent', function () { }, }); + secondaryElements = screen.getAllByTestId('metric-secondary-element'); + const secondaryLabel = table.columns.find((col) => col.id === minPriceColumnId)!.name; for (const row of table.rows) { - expect( - screen.getByText(new RegExp(`${secondaryLabel} number-${row[minPriceColumnId]}`, 'i')) - ).toBeInTheDocument(); + const regExp = new RegExp(`${secondaryLabel}*number-${row[minPriceColumnId]}`, 'i'); + expect(secondaryElements.some((element) => regExp.test(element.textContent ?? ''))).toBe( + true + ); } }); diff --git a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.tsx b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.tsx index 0a58231b2b517..3459e4089bf72 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/metric_vis.tsx @@ -298,12 +298,15 @@ export const MetricVis = ({ return (
); }; + +const styles = { + layout: css({ + '.echMetricText__valuesBlock': { + display: 'flex', + minWidth: 0, + maxWidth: '100%', + }, + '.echMetricText__valuesBlock > div': { + minWidth: 'inherit', + maxWidth: 'inherit', + }, + }), +}; diff --git a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.test.tsx b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.test.tsx index c8643b77ea3d3..2ee95e933df4c 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.test.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.test.tsx @@ -64,7 +64,7 @@ describe('Secondary metric', () => { }); // Test id is the last resource here as the element will be empty const el = screen.getByTestId('metric-secondary-element'); - expect(el).toBeEmptyDOMElement(); + expect(el.textContent).toBe(''); }); }); diff --git a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.tsx b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.tsx index 55bae8bbf5bde..ea9da585c4d12 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_metric/public/components/secondary_metric.tsx @@ -256,16 +256,44 @@ export function SecondaryMetric({ const value = metricColumn ? row[metricColumn.id] : undefined; return ( - - {prefix} - {prefix ? ' ' : ''} - + + {prefix && {prefix}} + + + ); } + +const styles = { + wrapper: css({ + display: 'flex', + alignItems: 'center', + minWidth: 0, + width: '100%', + overflow: 'hidden', + whiteSpace: 'nowrap', + }), + prefix: css({ + flex: '0 1 auto', + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + }), + value: css({ + display: 'inline-flex', + flex: '1 0 auto', + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + minWidth: 0, + marginLeft: 4, + maxWidth: 'calc(100% - 4px)', // Subtract the marginLeft value + }), +}; diff --git a/x-pack/test/functional/apps/lens/group3/dashboard_inline_editing.ts b/x-pack/test/functional/apps/lens/group3/dashboard_inline_editing.ts index 279c242acd28d..387beeb978d43 100644 --- a/x-pack/test/functional/apps/lens/group3/dashboard_inline_editing.ts +++ b/x-pack/test/functional/apps/lens/group3/dashboard_inline_editing.ts @@ -85,6 +85,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('applyFlyoutButton'); await dashboard.waitForRenderComplete(); const data = await lens.getMetricVisualizationData(); + const normalizedData = data.map((item) => ({ + ...item, + ...(item.extraText && { extraText: item.extraText.replace(/\n/g, ' ') }), + })); const expectedData = [ { title: 'Average of bytes', @@ -98,8 +102,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }, ]; - log.debug(data); - expect(data).to.eql(expectedData); + log.debug(normalizedData); + expect(normalizedData).to.eql(expectedData); await timeToVisualize.resetNewDashboard(); }); diff --git a/x-pack/test/functional/apps/lens/group6/metric.ts b/x-pack/test/functional/apps/lens/group6/metric.ts index e6d1ffe52d550..4f0230511f8b0 100644 --- a/x-pack/test/functional/apps/lens/group6/metric.ts +++ b/x-pack/test/functional/apps/lens/group6/metric.ts @@ -122,6 +122,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await lens.waitForVisualization('mtrVis'); const data = await lens.getMetricVisualizationData(); + const normalizedData = data.map((item) => ({ + ...item, + ...(item.extraText && { extraText: item.extraText.replace(/\n/g, ' ') }), + })); const expectedData = [ { @@ -185,7 +189,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { showingBar: false, }, ]; - expect(data).to.eql(expectedData); + expect(normalizedData).to.eql(expectedData); await lens.openDimensionEditor( 'lnsMetric_primaryMetricDimensionPanel > lns-dimensionTrigger'