From d1bd7c75e4892fda33698ce9a5798b04f97a632f Mon Sep 17 00:00:00 2001 From: Max Gefvert Date: Mon, 2 Dec 2019 13:40:04 +0100 Subject: [PATCH] fix: padding and alignment issues (#84) * fix: dynamic margin * test: update unit * test: new baseline --- src/utils/__tests__/style-formatter.spec.js | 7 ++++--- src/utils/style-formatter.js | 17 ++++++++++++----- .../__artifacts__/baseline/action-button.png | Bin 19397 -> 18901 bytes 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/utils/__tests__/style-formatter.spec.js b/src/utils/__tests__/style-formatter.spec.js index f205e95c..9be1e9ab 100644 --- a/src/utils/__tests__/style-formatter.spec.js +++ b/src/utils/__tests__/style-formatter.spec.js @@ -5,7 +5,7 @@ describe('style-formatter', () => { describe('getStyles', () => { let style; const defaultStyle = - 'width: 100%;height: 100%;padding: 4px;transition: transform .1s ease-in-out;cursor: pointer;color: #ffffff;font-weight: bold;background-color: myPrimaryColor;border: none;'; + 'width: 100%;height: 100%;transition: transform .1s ease-in-out;cursor: pointer;color: #ffffff;font-weight: bold;background-color: myPrimaryColor;border: none;'; const someColor = '#ffff00'; const someColorExpression = 'rgb(255,255,0)'; const someUrl = '/media/Logo/qlik.png'; @@ -226,7 +226,7 @@ describe('style-formatter', () => { expect(text.children[0].textContent).to.equal('Button'); expect(text.style.whiteSpace).to.equal('nowrap'); expect(text.style.fontFamily).to.equal('myFont'); - expect(text.style.fontSize).to.equal('12.5px'); + expect(text.style.fontSize).to.equal('11.75px'); expect(text.style.display).to.equal('flex'); expect(text.style.alignItems).to.equal('center'); expect(text.style.justifyContent).to.equal('center'); @@ -251,7 +251,7 @@ describe('style-formatter', () => { button.children.push(child); }; styleFormatter.createLabelAndIcon({ Theme, button, style }); - expect(button.children[0].style.fontSize).to.equal('9.2px'); + expect(button.children[0].style.fontSize).to.equal('9.399999999999999px'); }); it('should place icon first then label inside text element', () => { @@ -262,6 +262,7 @@ describe('style-formatter', () => { const text = button.children[0]; expect(text.children[0].style.textDecoration).to.equal('none'); expect(text.children[1].textContent).to.equal('Button'); + expect(button.children[0].style.fontSize).to.equal('11.25px'); }); it('should place label first then icon inside text element', () => { diff --git a/src/utils/style-formatter.js b/src/utils/style-formatter.js index c7afa781..7d2cfdda 100644 --- a/src/utils/style-formatter.js +++ b/src/utils/style-formatter.js @@ -32,7 +32,7 @@ const getColor = ({ useColorExpression, colorExpression, color }, defaultColor, export default { getStyles({ style, disabled, Theme, element }) { - let styles = 'width: 100%;height: 100%;padding: 4px;transition: transform .1s ease-in-out;'; + let styles = 'width: 100%;height: 100%;transition: transform .1s ease-in-out;'; const { font, background, border } = style; const primaryColor = colorUtils.getDefaultColor(Theme); const palette = colorUtils.getPalette(Theme); @@ -84,7 +84,8 @@ export default { style.font.style.underline && (textSpan.style.textDecoration = 'underline'); text.appendChild(textSpan); // icon - if (isSense && style.icon.useIcon && style.icon.iconType !== '') { + const hasIcon = isSense && style.icon.useIcon && style.icon.iconType !== ''; + if (hasIcon) { const iconSpan = document.createElement('span'); iconSpan.style.textDecoration = 'none'; iconSpan.style.fontSize = 'inherit'; @@ -101,11 +102,17 @@ export default { let newFontsize = (button.clientHeight / text.offsetHeight) * button.clientHeight; text.style.fontSize = `${newFontsize}px`; // 3. Adjust the font size to the width ratio between button container and text box - if (text.offsetWidth + 8 > button.clientWidth) { - newFontsize *= (button.clientWidth - 8) / text.offsetWidth; + if (text.offsetWidth > button.clientWidth) { + newFontsize *= button.clientWidth / text.offsetWidth; } // 4. Setting final font size by scaling with the font size from the layout + other font styling - text.style.fontSize = `${Math.max((newFontsize * style.font.size), 8)}px`; + if (hasIcon) { + text.style.fontSize = `${Math.max(newFontsize * style.font.size * 0.9, 8)}px`; + text.children[0].style.marginRight = `${text.offsetWidth * 0.04}px`; + } else { + text.style.fontSize = `${Math.max(newFontsize * style.font.size * 0.94, 8)}px`; + } + text.style.margin = '0 3%'; text.style.display = 'flex'; text.style.alignItems = 'center'; text.style.justifyContent = diff --git a/test/integration/__artifacts__/baseline/action-button.png b/test/integration/__artifacts__/baseline/action-button.png index 762a45751f4ebe724b6c9adf3eecfd04a5bbbde8..2ccc3497c4ff1757d4e317a1508eccfd63a0bc11 100644 GIT binary patch literal 18901 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 literal 19397 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