diff --git a/superset-frontend/packages/superset-ui-core/src/dimension/computeMaxFontSize.ts b/superset-frontend/packages/superset-ui-core/src/dimension/computeMaxFontSize.ts index a762d8b1f4460..ebd1f6e5688ba 100644 --- a/superset-frontend/packages/superset-ui-core/src/dimension/computeMaxFontSize.ts +++ b/superset-frontend/packages/superset-ui-core/src/dimension/computeMaxFontSize.ts @@ -27,8 +27,20 @@ function decreaseSizeUntil( ): number { let size = startSize; let dimension = computeDimension(size); + while (!condition(dimension)) { size -= 1; + + // Here if the size goes below zero most likely is because it + // has additional style applied in which case we assume the user + // knows what it's doing and we just let them use that. + // Visually it works, although it could have another + // check in place. + if (size < 0) { + size = startSize; + break; + } + dimension = computeDimension(size); } @@ -66,7 +78,7 @@ export default function computeMaxFontSize( size = decreaseSizeUntil( size, computeDimension, - dim => dim.width <= maxWidth, + dim => dim.width > 0 && dim.width <= maxWidth, ); } @@ -74,7 +86,7 @@ export default function computeMaxFontSize( size = decreaseSizeUntil( size, computeDimension, - dim => dim.height <= maxHeight, + dim => dim.height > 0 && dim.height <= maxHeight, ); } diff --git a/superset-frontend/packages/superset-ui-core/test/dimension/computeMaxFontSize.test.ts b/superset-frontend/packages/superset-ui-core/test/dimension/computeMaxFontSize.test.ts index 99574f4ccf758..a64d819535c6b 100644 --- a/superset-frontend/packages/superset-ui-core/test/dimension/computeMaxFontSize.test.ts +++ b/superset-frontend/packages/superset-ui-core/test/dimension/computeMaxFontSize.test.ts @@ -59,5 +59,14 @@ describe('computeMaxFontSize(input)', () => { }), ).toEqual(25); }); + it('ensure idealFontSize is used if the maximum font size calculation goes below zero', () => { + expect( + computeMaxFontSize({ + maxWidth: 5, + idealFontSize: 34, + text: SAMPLE_TEXT[0], + }), + ).toEqual(34); + }); }); });