From 6ba8a149ca51c0ca56042b352c3c2886dc1bcba1 Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Tue, 1 Jun 2021 13:02:16 +0200 Subject: [PATCH 1/3] fix(value_labels): allow zero as valid value for textBorder and borderWidth This commit fixes the cases where the user wants to disable the border width. BREAKING CHANGE: the `textBorder` of `ValueFillDefinition` is now optional or a number only --- api/charts.api.md | 2 +- .../xy_chart/renderer/canvas/primitives/text.ts | 9 +++++---- src/chart_types/xy_chart/renderer/canvas/values/bar.ts | 2 +- src/utils/themes/theme.ts | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/api/charts.api.md b/api/charts.api.md index b5e2b3c648..ea6014ba78 100644 --- a/api/charts.api.md +++ b/api/charts.api.md @@ -666,7 +666,7 @@ export type DisplayValueStyle = Omit & { } | { textInvertible: boolean; textContrast?: number | boolean; - textBorder?: number | boolean; + textBorder?: number; }; alignment?: { horizontal: Exclude; diff --git a/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts b/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts index f5994dc2c0..e71b301fdd 100644 --- a/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts +++ b/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts @@ -56,13 +56,14 @@ export function renderText( } ctx.translate(origin.x, origin.y); ctx.scale(scale, scale); - if (font.shadow) { + const shadowSize = font.shadowSize ?? 0; + if (font.shadow && shadowSize > 0) { + ctx.save(); ctx.lineJoin = 'round'; - const prevLineWidth = ctx.lineWidth; - ctx.lineWidth = font.shadowSize || 1.5; + ctx.lineWidth = shadowSize; ctx.strokeStyle = font.shadow; ctx.strokeText(text, 0, 0); - ctx.lineWidth = prevLineWidth; + ctx.restore(); } ctx.fillText(text, 0, 0); }); diff --git a/src/chart_types/xy_chart/renderer/canvas/values/bar.ts b/src/chart_types/xy_chart/renderer/canvas/values/bar.ts index 47cb84ae2b..de79df4cdd 100644 --- a/src/chart_types/xy_chart/renderer/canvas/values/bar.ts +++ b/src/chart_types/xy_chart/renderer/canvas/values/bar.ts @@ -414,7 +414,7 @@ function getTextBorderSize(fill: ValueFillDefinition): number { return DEFAULT_BORDER_WIDTH; } if ('borderWidth' in fill) { - return Math.min(fill.borderWidth || DEFAULT_BORDER_WIDTH, MAX_BORDER_WIDTH); + return Math.min(fill.borderWidth ?? DEFAULT_BORDER_WIDTH, MAX_BORDER_WIDTH); } const borderWidth = 'textBorder' in fill && typeof fill.textBorder === 'number' ? fill.textBorder : DEFAULT_BORDER_WIDTH; diff --git a/src/utils/themes/theme.ts b/src/utils/themes/theme.ts index 6ddbb10b2e..7574ec4749 100644 --- a/src/utils/themes/theme.ts +++ b/src/utils/themes/theme.ts @@ -317,7 +317,7 @@ export type DisplayValueStyle = Omit & { | { textInvertible: boolean; textContrast?: number | boolean; - textBorder?: number | boolean; + textBorder?: number; }; alignment?: { horizontal: Exclude; From 8f1cb435af02e52a5e7306d6679a992bf422f653 Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Tue, 1 Jun 2021 17:46:58 +0200 Subject: [PATCH 2/3] test: add style tests --- ...value-label-with-0-border-width-1-snap.png | Bin 0 -> 26320 bytes ...-value-label-with-0-text-border-1-snap.png | Bin 0 -> 26081 bytes integration/tests/styles.test.ts | 33 ++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-border-width-1-snap.png create mode 100644 integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-text-border-1-snap.png create mode 100644 integration/tests/styles.test.ts diff --git a/integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-border-width-1-snap.png b/integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-border-width-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ac14c40657ee090cc7ed45bafdc4f91288663a GIT binary patch literal 26320 zcmbTe1z40_+b%qaf=CHSNl6=YHwG!C(%m549fN|>ASDedAgFZr&>`InH6Wcs_rPA` zv)}!G``iEV@9*1l93DQ;E!?y2b+2_@=XIXvwL)Jh%i`a;e+L4A;LFQNy@5b(tV19e zZ*OCPD;rJbo8T`Dmp8J{A%*?a;9nj<M?dI<`Z{edl9um3!3Uwgvi@%5{`J+gZ!=t5#a2d{!vG%@G=s7ZT#g zSvt3Ug3ar}z}Ku*cdFK31^uxl#xl{Y_Xhh=aUwq^fLTnzD8a3b8-`~HDi_6H!7&tkp1^LWr*#A4> z2{#2^1g&_==;){hO)7eTT?=my7-mgMxU5GXx^GWOJ2^QuG!ik&ILBx7btlHWXVV9M`Iu8dn zG6fp~74&0fcTf4&D7=09aJJU1)wb~3i=Kxkb}>qn0L;&A6BCn%oSY7h{_gGqsPiMt z2g1V1EiKQjt*yJdyXpD)Nq>!nwJtp1=8j?4tt`I`K;KZxKUaWrn93A6*Km)VJT56| z^2@-ovvJil1{Ve1Lg`Nm@ttbf?wKWwSE-Kby6n}hfQF2F6f}_sqakSWhn$34k^iW4{Pc3suWJU|l zc?KFZcn`s#*WP|-XJ_wjh%qyNaN8WmC^l}z`m?xLqEnEao&702T}ep^-`w2%-o1OD z;^RlxP6!DJC6`p>V3Mufs`gBctnU*tShCG9;#c?FU0i*p zu}@*SE3vwF7G|EWS5t~F^8h`HC7Xj}*UW)V#%Qtk;IS6>!1wgUKT@59K_#gKY>ig? z)AMyI?gTh3b`0gJ(0yjtmC@0;Z)Ih5xILXXGoxqGm-3;{0xUhufaC3HUe8@4i-C;D zp|@sRlOT2(Vb!}*|x>7kuy}~QTp6`CLu!}|Dadov2t=CcvW(Kd<{!)`oTz6Zxd>jEqVn&9t zx3~8JlXryYUXOHrSny)#iZa$v%(;Ts@hkZ)&M6UMWp2046DWL6xRKQ`#*NxF1>icA1_s=i+UW-;LpNd{2+PCRyob+8>sr`QTLb~>*?OZ+OHPoU*(g;^P^yZf|9gPx_09WF(*lo3W3qjJQ;zW$Lk?^;A zqs7U7)q8s@7q}FX{=TV^=%_O_mjUAtervdpiEub{lRzCR7w3pUo?>VPt@V9u^pTIE|tJSx5=SbrqFRDMsVwBAoqF%qnPr8m?e8UXX zixsBZ2?gJY(D3YNKs23(E1Z+b8Xlz3jE-YxLdOpYi_v7KUds(zWO~EcfYk z3;PV3ijBHBv7D)Pde>Mr=N;acDmYT8 zFKS=6U5S~2Jo45qHp1}o@(TL!Atol~nXT=t>W}{%`ai04-$Q2}905CtIQtSU3V!Q* zt7$IEfsOAlv7N`%HBl>P+S=NlVzd^$NzGj`jNQGxH@{?O2dV$k;I^CMD{MH{;o;?V zs+(o!!9w3CW@U6m+WTKI-d^YjqQS?brKQFH;Bsrr_WWoQ`>C@t&xa2mK-&2f7x%*2 z`mx3@(%{x-CMFEJm9|zf-00^G;X?;@C}(2Nhgo~*nts=AU?Ql#aM?J^#WUsESl2B5H zf@Jkin2t$H>-~sN6%rlYXz4ZSC#c4s&Ar z2M0g$^UcQdwIis7V=*wXif!RM!^6XJ3JO^ch{mOr6&{;$Hd_HIN=iydxdS4jIS`xI z=h!wvhS9V$s@A2gU31WVzZjYc5+7l@#jOw6@4Kpk)ScwAO`F^~1#;pW)3nPOhf z^A+7@B5QbF-rgeX>+3K{c^vNn@e^vxOaW?K3AUtDR@3`!TVG?fHX7-2*Wds5>g+NB7FG z4Vz&#pYUS6;vERRqUf%nSGt)4t2XcOK$MIU&%9n*98a{-F3Tx=img@F-l^_lt=*90 z1a-*tSs?9*N|idN%&J)`{dKleN2kNJIRBMFKgtulTQnwOYb1m)u60CjS=}WMk7Rfp zP7_|AQE;UAwH5Xx*um){Zr15b=&v$4`0Pb6brKy-ICrAZ>9*M-Y3TKtQ}W`| z0c(_LN9K+s%MPwu42NueaWNNoD>f%9H;QA^U32WCFK_7CX5S1jX4}kh+R%K&6`FwLh%L4*} ze6e0G2yuxEMng@&2{&nqr}dS>6dXKH_6L406BpX^ zHpa9tSK-HCwF)z3x^U(=j2VXe<2-sdK^AfO0TUtTOZh`j<}rP`=-}#mTpd15uu4p& zuW361`@hp6)(3G#D#^FzL*dZX_SFoQM?ZGpEQ>69GpBd1Z+~C@8##v=IH=rr&*rK6 zB@XqRq@|g`K4)Ta$D04O`~{*2iT+uaYk>FR@lF{};Sxl#OEIG8iW6S>j{bO1h^&3@H0APiv35ZEZ;HBmYzar$(w_G{_#R$qMO_`M-n9*^| zQOL1I5C4xI2f2G44J5ERVAj5K*?G(cJ0v1PZ2k-#dl{Np-i99<9$cUztsQLB&~$7vY-;MnxK(+r0LWio}LGUdgw`dxZfRBpmzxON!#7QbxpsbFsAv$3t&01 zy;H-}KO>4C(|A6Ken*hFqfO*g7n9rZlg@E71F|(jxqIQ{uaT&a;s|)f4T*0FiO9E4E%6Feq)SZniJcm8_ zF?fH@if3k>8ii*YhDTG4@Ul4hOjxI`rSg1ywQ^)_|3(GEsq@gsvF0}=w=adqC8AG@ zjjVFT&UBoyth=wT)uhC+V?B2dS~V*r7xKYwx{~)OMYsC&53W|}l8g7rPWPc`uG4j3 zbg8>OnLjMEKb_cfp$0~L|Nhh(_cj~b(&>@`6CDBl;p|fm~GqY}Tu#O#9c8wu3uB~GcG=ibu#M|u*v#BCw zEc(;Dni{jSnRe1(FpNQ~1^cR&#T6<1#Yl#6kg<4UvoMojpZ8yT~|S z*HsP`EqXn1b~wW6wVWeNfrn+^V24%I=M(-&Q~x7^aKg}q)XM5d{O8Y3(=^aOv$v2g z-R##Be9w`3@@fxrVE%lq`=TrYqE*CB$~NHgZnQ#S%4F?FV6tz!TUv@l*axIv zlm3WnC<}Se8F97tp!={d?u-LVXg<67VjKDn8zfVvV3v=x+48bUJTPn;3Q6nRKb% znR>!~pGwjJbxwsWKKw<>=6R9H#N@g(GSIm6F%>yKTV>e3_e)8+#nu?2rlEngV?G0e z-I#_>wYIe6<>lpjDC@(N{=x9WJXq~4)a9JaKVM`Osj8K;?t+!aU?MV_elYXv_sd%M%^OWq zZrb%_^L~(C3*M~$`~BfAhONtwS96bqeUIU9I-)3VHRZ)v?k=hb`&RfeCnTtgom}?d ztwDL5O1O1){>E;0Q?=Ed`cD!mHB>OxTvyKJ9UU-}j?*}S_Z!M^o02UF7Q-G1&O0aY zUPicb!1C<{VVi{wVc6IE6q$Y{@gcj8=O?1c{5CMrH8=O|$7bWLDsOZ&KK5BG5}Ni~ zfVGv%_Z{G<+`PObo5IYGJ?hG<%6npm^Wtso9gt#w6qbfB3ZFbfk~U!4p)Lj{c6c-E z+L4}!Xko^8gg?!9I27W#5#JPeGO*MQA1JQM4vJHGxp;N4bE9c~B1?!+7ld_x*md3% zrytVA@QowN26iFhw@=HOt-A>8uqK%1$;dh^aDYzmKd*KBqB6JG7as%meb>T}^It0P zzr_6g7s)~Yo(V%}pCH0FaA4JRzUdtvl|cTpi2oW)5Wo2sCa~a6B_Gb#c^n*pa5JJL z=rnCtRpO8Gc1O<5KHzxr1UI^~HG-0tLfDxpIXM{;A0J{BapB|w zdT{z`8+#-vhufg&BtSS6jTl||JCKnlPkI5;?`sH-MC zQ2BJOyJGzTm&8F?bm*h0rbf-vv3g)!p+n`T^!KYfZf{u4gN%n!Y%{?zUSz0(X!OJA z8Wef&hFffxC2c(ExgbauL+Xpa^{Uecplr#zF0Yjj+A9u^jM8y|o9@?d~fOpN;fA>%UseLD}I>1P}I9gY3F<}w-1mdB1z zP*GtO7jKYuCiy%2kDfLB6Z)65vj6WC^?zZZ{y+W5N~Q9AmG42HpfA81khZoq$02EQ zFx#8$08f#zX+1SCpfxr&HZwE3OGSm-w7=Y=UE|CQN>jjE$EBo9ZJ7SEmVSOomoNJH z)1*6=dB(97{}OSHqSN@5z;83o7t-_lcgx})muUx{Ocb>|SjrIaUI4=xW;OENX}e+~ zHaR(TdfR^67`;wH__PPf*8O30kmydZ+gi8XO{=D<+RXn;I5+CqU!3cBbK99bwXXwi znb~I=EiNM`2LitPavO#g{`P7-?3u6 zN-sGoNfn6l5XIXcsP zkPV3gCb|2Mv%EfJPQKI*OtL(UDie+(6wZ{I;?Bf}T!!me@9h(Wcb- z(1Z~!eoWDgc}{e_rYJJwkI&560DsV-uhx5|0%N#Zs0%@ju*di7h7^4#gCPbQ$r0JD z?5c8}`v#3y`wAL`dT^|)PY6a(y8s?rS^P+Cr8l{iL`CeGogI5_hWBGg&u4bi=}J2Y zVARRW;Jx|UWm=_XII9^x9FXnlD$CvZ=H3kP)YVLAMu}-BKnhc~Vhq@^Nl9{mI)MxY z4UuBE^XXY1k=}~P*?F;2bGU@NkD>M3y<-?NfR|+C^y&in2q-T(Thdb5IRI~3KmG;T zoftKVa^?&9ac(bej2hwk_`$@UPFgOyaCFJGBOQim8Wj171BXJ9g+(!??VEJCj?e9V z(OY042aKplrh`8X&n}j_<1mYqSV-bnltkvw0EhGLh8)x6@}ilj@|(~f69%DFl6RG7 zgL|Wbu_HaYg{pI{GWT}pXm6ZkvYT?vRexvv=V{&HtK0W2WGK4iA zG*5h4Cijyt#5H4OU?{L#X!(#Pba+oJH|KR~ReA%|=fi0yvcpJ#=8zgzw1aFdLMD$O zJ~FBfa(EC4Yp7{zx+tt;>nYyJ9jE6vX;8ll2`LZa(68NH4698QpREhq-7adox89_wEjnM?k!p2X*ReC14G{u zARUcuJEXU~O(l{PrBwQw?wT~~Ye}u!;NJH6L(4{E8bZMx-?CoT^!CBV@Bx?3rhA5s zB!6H7G(8-#y^_|$X^GYk#2Bm|2O6gO(N+Hb{Ss{Qg@pyX^p|Dui9NnJ|3T zi9Hxf*UDrj>y6-^fXGI2Ck$VWY$ksj8OFpr>^k9NZ{2@)eoXsbyDUTSz zPPakY&oYBap0-w8@X7T3u#ce7_lfY_J zCP$}gb+EDuin5obKF95rwcVAn9@0;7Mtme`(BpxJ>o5m1$i&WDLn*FS-2AD|+`?1F z>lD*piY^aGg*Yg}>D%5nzipdo+#$KT;?%gyZLKw5ty^VZkWvQnj~v&l7!LOD&dVaU zFU|$uo?Q5PhAZUh9f*Gzu`F4Q5w7+i$DHS2>(JF}0rccz`Xj-Ey-vC+_bGJpw^Np` zEx!$$P*_f(yG=K9(uAVr{CF34FS@_Y{iWn_gAlB+b+ui!Jh565(I4Wov$WsC2}qX; zla;@}tpa{Kq!d|J!qhS0^9K&4jF3@`aks@(xzQxB%Vd4v0dezb{CFge5eQdwt>SRq znMt0RnbGJ&D>T^!Kjae0N<7*HgRZTADD(|@dA{7BZM!>;l==ysy7~0zJW`8z5u^A> zG-hK<38?A6!;gziI|-shcdEyg4A6IowDKUga##0!*rTJ;+0*}PV&{Bb)i(FA)%T?& z^=f+GoaL4L84T7o$&t49ixca?;r-WK|MCLZKD|E%PldZpqkN6Z_J+#_h$$)IWPg#S z74PHW9QX%gi>6;tQ%fcDhU28^BAj{w_%xB=!FR0H`w=qVifV5MNV;x!d*w!1!_Ck< z-}_H!#ud}>Uazi|7O$`km=OsD7{%dgd|DRHPtzS*z|Ea|XqVEH=c;^^{ zH*cP+tCOaSdRTNu(fIB*V@pX(a|6*DXzFFmWF#c5y~(^7yB8?2^R=wQ^^x3XdKwyJ zw9&zoycTG21)vwzT;-g9%QZiL{YvJwBxnGscbxh!KdJLPE*$-vs@mG!R1Wpc0Pw3A z8`DFks~lFNp_is*thbBprUhDBTh|A_z6fjt02K@W{!O%qgGTDuMwva! zE%sHIMqCud)7#a0h2Gl`kl?)^Mxk#+O_ZXS4FL9CQc`Jv@*s(Z{=$~&Ze&32?#rMK z0F@3f4Pdhmqx`QOXz70HFTr@=ExYemLqeljStMw)hPq~=B~8?a`n@Gx$Ql$TvT55q zSvfAKMqroI13sae1(UFDK9VYd$ybiUUa#X zKM-A$qi95jLF~mm7XAM%2`&UyUIb5UGV}434^7~?PZ;>HCnFo92i`<>B6EJPT6kSw z02jv5pSg#6&AN54j*xe{bx{_cuCw?xHu^PU@h7yjndGghKHTXZW_FpL9P)VLduoNX zS-d;nOd_CXR40kH?YmwE4}jZ1)$;<=wR+o{E&Y$@!GOx1Q#Ped(GFzP9`WIc4gbpB z*$cFsA6(QeeGW_;o=0Pv7!*K+0_Yw%IRHM6wooA;s2^pPl+5hvk^?m9KlMozD9!|I zC!hNIiUEWiAAfJ9KfNb}h%xWy&u^eak&k2HKlf{GZ6%~sRaG5X+PhhX#vu!F*Uf>r zGx3E`QitX@9CSPd28woYjeWt!rzbyBcgKWkHn&ICy~alwBc6LpciMU+hI?0(NF~zuzs>Vw>?m_~B2ns$3cFneikOh`h-7 z$Kw#bipzzA@2^VZo@#9>E_gnDcQw7_~d?fWx$l( zt@#s@VfK<|hJl3U{&bMJ{X55;`qDGA_>z<8?Z&5`6?VvN+VLqR<@c|m#@}Gc5Ztc< zrXULi#i=Npk-ABrh*l$!!73bVjyF`5bTtSrwR}C<(@$5}TfDNee`Zf$7o_zUzqzD^ z9g&kCELCvoc1{)aeF{TyA+st@w8PILXMiH2&&NVw- zN@H)8Nx8P@Hv+Dn0};y1fN@YXWutIBrc36W4I-YJ{{c-UJ!+#uv+x23HXWIxz*>Lt z1DqJNl%<)!U)sJ1| zaa`fp9PY*YR)p<_ccMB(Z{^aRkQ;@Sn}&u1V7osfMobH%Qq4|3R^^?%n5a3OwQo_` zR(Xs3Tw|pJf=HCUQpT14=|b?2!otFdN)M!gedF1Rg~H3J{xIf)l9R?SbA>Dwg?9Hi zP?C`R81WE^Jss!OBWC0*k*gx~URL|ZW+Nu!Hpz#l4+Hy(m`qiaBpAXc%H8$XPMc`( zr$`Ka@l?%bTT7m+`owWv7>J-y&lp%~P6NB1Y{FV??f3oQ=mg$mytPvbm;{X?gFZ|` zu_heWv?j|;zYb7e9P$lhwVi3s_I$jx<85cmZFN|G8QkO)>|Ztf6;XiSAGzj?C0>*_ z?ag&rUNx!T05gvx1(8JfC4Y?^ouEB+I5{U;Xa)#1CL!Si+;(NkrpPYz5{L|6hv;|`3`sjK6m}KiY+CLEb*^r`kz0Fmb?;z0QGKkeB2r6 zzn>Bk#J%m4l=OV+-yJHqD6UcdUQ@Kc4S6)|)Fh8rjq315nd?@SY$irmelmsHAug_Q9nr7$q* z;SW#@P^H23P0PMk)oT&-aUT!gOZF4mN&Uz@8kUHdAwta z{H7=(!ABDaZ-cGW%XggOOqBpBEgPTTOX>VzKvD&`!&oys86Y72cbM^@{bUv@%2M|& z=~IPFn;d($vmjiZh?xG95b0>XN<%Un#f5ofwsW7z@W0=7V{8j+TD!<+o5yOxFdpcX=&+Ga&q_R4^@z8jmLhfE2auWZfsbC;{OHkGnQzv^=0JB z>4vw;s11;4+Y6YkQ%64%As)zR2y#^rGpc8%Cs2(~pDH*D`cA9Tww`;}>HHByD-rb+ ztWjNFKuZvvC9o99X9_tnu*8KrS(NakzN2IIaQb$KqGt zSXA0(=6?-m&t?0t#J5wr+$%mwv8omM&9(njKG?iZJ@Hm z{FxK413|qqos&fmvo{1tsqYdEOMj@5#VjDjT}3d#r84n3OTv(9GKO@zaBOA=W%dMymqAL%pJId%?Cm!uSU`qE~ct?q79rKNdF#ev2MHYlnv@wZe=@|jX!_q#NKRhf7&wiYSXs;d zqfeI0V@FRWg5nt{tU%xZV(gD0BqFKk;>nXIghDTn@Vd;p4Btz7VeyedPRun z%xSH*IJ{LMYQ36E!?gPPSU!`Q=;btdYz`AH&W{>x8NFRzZp>>rt7A#HgT2Zh{##PX24>s! z(7U3G9f9?#j^4*`OJTPazR#347&m+xuHTH+W`v$!ALT=jBhx=Py*=O308t}>jtfHBQSS?Acgf5C=ft|=}qAe zXIA*^xKp!w!%g}MFvZE@J^}-h*J8liWml1|FLB}h$UXn?`vRspM4*IFl>U(E4zEnd zU?67~_WYAO6bi%;azb%g!UW;p+j9-6;O%`9T5<=W@uyH5sCpSt1|Fyw^JTmd<7)1E+__|#VdjHzQlLGzW6ADItra-fe#t3yeBjyYh; z-qrf3D8>-f=O~NSofzH5`MSob5+}Y*OY3(y1hRu%Ryy?RtUP-CsiLnK_ugLb#XheF z>306f!CbAwI&|t))aFO?=dU+fnwD->veePY0GN*;nCxj>q2In@LeZ})f zxoIuZr>KlG*OC35I*Gz>sd&a9Mi-L8X_`-g|F!y_Z9{JAdx za$DgX5bMrL>wPXj$7Mm7(6$d_W^)QU!1T#$i=?}qyVEL_yQby7Gvn1{(=}ua0tPx4 zL?Tt%)lV^vX|Rc*9kvmluTj?v1+#>w+#kv@n*dtRK-EDUk%$k%-*(^_FgAlo_61c}S$J>LZN zYT1nET1EYAvo#IuZ^&ab#+Q;o_62s29}}Mw6FY%@GnM@ZBfOPRvNwTT?>&u8*1+E4 z^#FA9VBKOOE2DF9p$^%YH4?kWn)X=P0g6bb>gEpxgnE%%n2?$Lx+cn~TQh_dKX0PoQf$fpit+#!6d1O2l> z$Lsh{*Kits=$w%F7m;VN>C_PJo!Jao0 zrKG_2ip3N`@_T4+7Y?#iBx%Y+VLpl(NyaCW6@A`LQ|z6$Gl42;;9o>7&>a zvYCs&@>?A47@zGgiyaQW0NE!d@Zuzs?(6U>^VX7tltqNiD_7lG_ixVI(L((+@?$A< z&719;Y@L^x%Lafqe0!*P-VsR!uP)iKsR8!QrahqH?0Sj;efE2MtXS;j1>)M`VAbX{ zwY!>cwzJ&d^=!nF< z7$DytVjmA#mR{_1b~SF(_KR%hV@;Qb-3$jlAzt$#F_He1sN8HkFkONnq4l0ODr(N| z_4~$8&Dc@UY;z^OKR@OsvZ9a7kcR>fIiz~Ka#~JB#j+&`2SO1k0~%J)a!)c|G{Z^p zduhcln8q`$cXyT)toNJ=#D$WDAphdD+vKIK#3Z(t1^RV#ra&uCXYyiUi>hv9#f!)3 zG7^MMa}_Fo*4!|n=E(1QY+&B=b;a?SkdS}d8`_p}a32!Wo%pK6lrq)eC4-nq+8Wh> zL(f<0&q+xX9H$qiY?C@ryFygjb-@$CBqi7Cg?-EnI&Resq97u)axz|Ejc*L%gODGWu-cp@(h`r@pd$Q}IN;=YE2tvI!7F~*3x*zTPM~Gi zZ}I@LQ`>RCE}h3$?Z0*)8Ov2Tx1f2tDe4Iov?|6#Lz+t81RO+jis}Oq+w@!6_ozu^ zG3QUtCfzpuPHn847js-z``NThgMiVXk~%h|{EH0fIw;=eKad;DqfQXm4|sXwaulfg zC;dQC-ItmUD*V@frX66**Ntaef{E_%^NfH3Bo0i1G;l~R7bbc8sbXGah0YYS^Qg_} z>_bgGr(3U1=1KE>hF3s=L3Ih>JGcdMA}{$6FkDXK+Lk3QtICD-`!4}>H}v$XjByNdI`I3O~!yk{6=3t5^mc8N`yd#zZ~n*gOvKSjiz^)XMl=AJKkOd z6D$LbcA_ts_Jd69ZiHXkZqjU00ytkfJ|Ab0*%=r*zp;?7 z{ zD}8vL^Y5^4h;{}A1vz%oc<_bnc{i|W6$b!v7g#-kweNv|09n9tPhy$#@=JgN0Hrt{ z_Xa%yOCf_x3@A_~wyz%Sjq5tR1~M7o6M-&h0$kvI8EK#!2$VfA%Kv6{gq}1x7m_1i%J>E{Hk{h5VAzvNB4(w|60ck4BqZQ&R2&>Pb#XsolE5q(Vm? zc*Q|h2KcbbJL>NoDGjly(AO?}q|$=n{}7%>St= zp<0iFnn3me2M-T%V$WFqS!h=YI|!MNFHa$H{6RxS{Z@BXwd)hrp~BlM5N_#fo|0}T@Vlva=!ShtpN*50VF>4qRi{dL%ruCQLNTxB9CtQ)ExASdY#OA==$6S%_iCJYg;11!free5lI0= zulv^I(1U+^-QLwczl8B_y4Q&h5`fk>Ox~SHz)w1LWp>=#XK=Rtb!jiY@B;hB-3*DO zpZt=Ld3a6gphN?P9Q9ygdpJ30JeXor0X-%hksQN7tS2}hA#S$@@cZHfiEVU!g|eM0 z4+Vt!jZc}GbPtBAZ+r)~y#yX| zq8OuzwPg;|jtHx6vHPH$>`fJn2CD?v*aETe@7#lf<-y3#9$8+_cYeIBU~kV+X3^JT zQ3hlQjHlqeP>OkSm01pSfaV4FEv@Y>pnF>PrSR+RxAIgj+nEkzxfHubv6g#8U*Edy zaIWtPXMJ_PQHRc3T^Oj4@NisPVbDZITn;4y8H%8qQ>5uXYUW0I|Fk}^$7Y7eRoTzZ z2b(9EPLqtE+_bK;FVf7u24F-}J(8R49>614Rh{m7iqRz4yWmQs?S3rNX4;F6X_djlrB zf2grte|ERT&oY4v0{WE*qVj`8wa$@?LhERzM-O<6DDXaN^gvbIm{rMP?VYOjELJmb zm8@+uOjzte{2%YieY$H@%36lH zl1smj8GGAIc?sn!wr{kOHjs9fw#4N%;L*5xGrF~#v~?s|(7_<}*bwPlx(+AbMJ9HY zY`pvlb2Gp1;fBwAjS_KE835(M@)B;(*?d72PThKK$5nLvtJl6a6#~8!84xI^2{m^Y zh~B1wl3339o=~f^h#lcST|A@kzdj$$+dxIHb8XybdmTw0IG7_Ntt0b-j)4L30?2$| zms(EN6?t(spH?UnDxS<$N=e`4MK)VRR}pLkyST(T%n7>@Kv6 zDTwQjYtMctjgwy?F1D@?u04?x8ElqqE-+Re?sxnoJ8ekARo3>8vacL>jZ%;248%|8 z16^T@0>3wG2DC}e4yGUZY)C7T;j%z+hpt6-Xh0dsMiwQxe-ny-+oYFwztb10i`=j-v16 zakNBaD$S=2I+ZgmI`^;Xxk?0m2GX*3rzdjhlH_vV!EQC}sZ-)di}zgZ8Y!|yEwsJp zrK6faA(BL=YLDF40|_OXYz0U@$3KM^a`tO$)?8tJv$%?wA2oY?jeMbeea0>_cR)Aq zzHqt0Gz9YtSn#J;Oy>Czh)r0zQQF0j$oRsL6$s}Xjh%GRw0zNABZ88QvJQPsl`+}O zyBAB0u3q*SEa4x1N760+%>Ta8x*as@>qq52GdexMPVYL(pL7GWUstz`oqTh!*-iv; z9c%#{MYc25F*ECB4}B~i9et2}=yRUK!oTwo%i85y-qD%|()0BXpy&s}rWc*H5w>-|LMB(F_cf@H+T_b8eoXRHV#a^& zd}F)D^>P4eNQ74v9E-hTT6(%?ksK(yQ+G}5e$mQh*-wpjNfmn-W*JS8r+Jy;r_-ik z@QKS$-J^Jly5hu9jL6+N@VzvpD$+2cnaNC{sk>cc|1iNYeSU2y>(DBqn*Lv2fQ_-9 z#5$&7j)$PtQqKb2` zeXp%0BE2B?y1!IXe4rw*$OJTHC6+GJl{;iG(eN)?rkx`N_p0^4{qOQu>>)qjG)#Co zn}HcWBN=^Np`%@Eh64;R5<7Zrr}x0g0d2o7+ezER&u(Mro8mO==`^1AjRfFa)9T-* zaf?*(ajDS*J$$hqt9;6Wql=ZA&ZTP)X`oK5&om8&@*BN%Ip`%{+LZPVKl-_c=zpyT z9f{nUsZphGAiY82O@vB?LeF>m;<5v=nMlMQ)WA&@EqG%jVKf1{-b`HnlX({W48v)E zw^6TvyII`DtbtdHkLcFtn4npn{b@q0KV!3*74V0(Ag3=cFV`O}8(8?2hLXUb?}}54 zSl50(ahw=^16|{4M#TkmJQ*DI-KR`nomup&udBt19{G^TelM{hHd?^m>`%0VUEG|s zl#T*D*Z@=FmfFI(iA4;jKWZSONYNlePl~Id^m_in5%=F2+Ebq0^5JwR*Q-#cR(!$J zpXNj{$m~zRjoBAB&zcdQIfuu4&Z-nmZnW@<; zO0$EPqMJ~Rd6LmBSb*cVn{7njO70h>KNE`X`V@g zM@L6TORKAKv9ZsMj2;N2M%vHTIsqG1rS;#g=p`RsS2@EvcXrS?)?zE+kxEKR3Yvp4 zjChj4=@41pzJ2R<4%ppw1hNW;*T7#yO#ZvrWf=F)9j;`>!!39m;A7It`WN?nS5XJ- zl8GrPDF@@gk}7cFGKv0i=QFM?Iq%o6iLeQ2&4BoUZbJiQz&=pk_ZIP@UNT9joLrZe4baj!v|kyv zvDQo4u=fY|wJ|e&I;xY!DS@Yqrf~@OUyIcSgq6l=*%>Q(`_jhf|9J?9ep-h427Rm* zxx~EGzMOo{qLkt)fBx4m8$M7>kE%l(K!8mh)Z6Il0+7g{xVQ_tCxG_`0&sD5Zf+TH zi~|q}fMqiRf#^)Hno)bRe%Q-?S#-wNUIc561MW`Gm1-7#bEuxoE9VG(1?8EY_e4{#Na;D z0|Ur3#wF0F3#`w2`&S$vqHbbdrzjwu-x(ex%lDgh;+%I=K;EA-JMTyL?1BIjc%y;e zJ`p#rI|z80Q#<}vY40n-Kl#^89scg2?wJkEak-ZcMH%*uU!1Hx@9XC*j--*_&NU3^ z`Osq!%FL7YvBgCBY8@v0#y>^VP&;f}SJfOnwzg_KpFep`_#@v(mfJgVcvY>pr zbP{_S_wR%~^gBJ_yGPw&i`#x!M065hFdL$KNmZyPmI)5YkV(u$PqLNly2eQBJ-p(~d zJ)sSbo5$#$w5P%k$f^z^QDMVK#D&^$6?}m4^GekX%e`etPW8BSmxPVKe~de;NTC?b^ z0OAW!47tErF#ir?qhn)xU;yBFmJk>W7JV#-eu`{!Jn>oJi@NugS{)p)Vp#xqK0<(Y zupR(w7|_=@HaEKm23SE$L{rmKu<0Boz~IL1IRCV; z`cIg}=99;dK_tVxFN^r6HS5c_Z#Po=Rtj(l33EYs>pMp;6r!_6Ji1{zKyg^x*l3rS z+yaM4fS#0w?sJFe;!K-1lwQx@36JR5rKfoyB$V`|u=+jF%mr}Q1yb?rW|j5ysA;1+ zMN2^x`#5WVG7jH%2g0+?Wtt@*fgB=xmKh#C%v%;^NbKeG-@_fx_ra}#V&c%3^lqY5 zZOLrn?&o&))xWRm`X#2A#2kV+>i(wbxG3LIl<41^+FA8Scs|&)Qz-uh)~Sggda59p z!H2-j1T0x#?7#*Qo0&NPrUK*P{f}9pV6VhGE;tr(w=X! z@aLY?%cz@i)}m~wNN*vzmk-F-y-+@UX=kzD{5VM@-6R*j=J=lf=D(T4VoHFwJ2Z!m z-OK&O^bG(}gT7-l0|xRwCKjGiQ$WX1A2^r-@PIGDSr4GBM%%_d;F1FZ1~@-%JODmB zpsD~;Dgtf`&Y0jXs4Z1cu%;mh{ysz@rKpHEczUo~t)JA}2lY?5g(Mn6u0n!35Q^O$ z*KK33CoCZ^t0xetSNAXm3Ks{8nQUaaF18J_HSwXe-3lVG~1H6aITV| zL9a8!8@WWfdvWmpQQMV=)tvtA(_&AFL0S=IETuyGLYgEMGZd{xLaNiE({|bnQ;`%6 zA(a_RMjI-r)4obVyOwh*?fbsh>Aj!K`^WFP-rxJqZ?5b8gNr!le9!lJp3icB?)(1o znSAX#E^J(38{y+GrLZHIBgkmR(NL_YeABvlUNeVT8%5uq$_+bjHQQAaPVc*v@1KMJx(G%Ix*h-{qn zQ|FI#UQ(qkpXg&PHv7xwE{_Tu3b)^c#OryU<%T@Dz2`Td8Fn)xg8qY^hc}sduVVSk zdx;wNH`%+#OO!lb%xcN78y<=72}+0@8xmR4STk9bdOcUv-n`tLyyl~J#X{8jN8#(= zN4%Yx)FxA$wmcL246ReAHbBzeoaaCCSZwb3slOT7dYIoL+g?OAU$|U-jxmyc@#2LW zCa+yghJ0CBnchYCW;rND5Ou}utS7L;drGwJ2zIuOnNYCVc6WEXv8OtKBjzK^Ytz3e zs$~5l`d5pJ>L-|IP*8huf!+THs=`yuNL9K303!;*D%86_T38r(d#j-^!bGm2WKKF)NQpakB$`OF@_$k2XgrBj)nih2Hgk}@(w zv3vg|rjg3*Ut(GV2)4UkBpS!*_1goc>!lAwR~jGi_g(eu8B;5(vt2TlJu*qX+v~<3 zU9a`Sr{*Jq4ofJKF$TkxMS+SZ=nt~h`*SW$^xeDiAWL!KBE_U|zf`DYh=3L z*w{FfhA(r~-`_H^_K?251mxntwa5FJy0*4EFJHb)2KX3WlbJmfF$mUh)_5~HrA+H~ zW}yOoa87&_iar%auU-F?uKbH&J4;sGwJrMU4Nu@!SwPq)0N}v4HeME4%q~q6lwfue5S% z{C-Dmy1N{3NU)w|FMQqzp4rK_4x2!Wjg8$&L3$w*C&2k=48ZTHkT7!5F)-*TNl?*H zt^TsAV?SRIWe z4u*G{8aI8UH>xM?*t<2V>Ed%vmB~d{IZyX}*?=O5Yyu~D8QVkl0~ZZ?|FA9E>~X`w z^=@*b(zU7Bx#t9<65a8AUJ;juB>-1t%w zBOmF{IaWpd5#Jl-X3E<;!`hNGaguU?9@Kt>eVDRbK3-BG&L@0efdD^w_Zh?VtaSPy zXMvW*SE;#F*HfO=MU(#d4z_v6r;o6H^*O}jC~p49&2Am_yhyW`+_J7=ampY5rO|GE zA`cs;_C(xHTdg!AnOR4eiTp$Szm5jlvS+6nrUKn>m>qAlH7jQpWuz!OXWhK2>?$8K z#MgJ&v%S4=x+mr3W2gD2Hijhk^631(g)c_>RC~Cvf`cz8=KWdo?8ItJ65z0*1>#js zP7YyZV_HLj1~wNn9yDOYtd9)9Y%R!@wbErq4^4+`(wv-vNlV0DsQ45j^hu;AE=|S7 z9FIWo0zW1cc5N61!$dEq*&#`*o~+U4_4%JSse-H4)YLQ(`!_4EGD5Kqc(+K#`H($a z5SC-;L%~&{fke+!c2-ft%}oIfW#+}7$mKmL;8B&#*s3D>$(5zvIDE;vxKaRvliG&< z#t!m60Xa!CA=JcLQ2jC4fRkXlcqgQr=n(BAm{iG4n|?2-kBg62vk$88li0m`kUqB1 z0Xs?cISIUd{`{R#c4%lQY#$b#M&*`YSh!k1;1J3n`grf}nVFGt=RY1bH9Zog=4Cu9 z49KKo4u>^u%M8dun>UBaYX(0_IQi-q*g2p*BxjiL3|_>iODF-Y(T`FnJhfjgO3o z%gK$z(*EkmZnMZOIVg3xUT8QTb@F zA{BXiLOArQl}ikMVwd+Q=w{^ttj^o^-9QT zgRJu*>22GZB3xNHZB8<$vnf9W30B1xwmH3m2pmf8WxTu+J9Y#@@Xhtos$?B@uV3-m zGw6sQXigfFBC8(^=c~awUFkJ5lL?MBmBUr`>(~7D;D+MvM>-L9vq9WreOF4%i-)u$ zH*T9+KFcWN{47J?zW-Xr6!Sz)x%z&^19dllj%L7?jO9IJhXy@glTS4tK*;yow_h|2 z`+JzmfFCYo5*deA{$|FaOAf2o?SFU`W@k zwa!ImNJ{z*Fb~`+cf)2AIs>TWZA81ZklEp21S=&SKFZ*J%1K5}JZ+W&n1CQpfx zvQPbpXmE6wS4xNQou>Hs=GMfLfb<|1Q-yu$nzuQ{Ez^b+vrIIk*NoaFu*~;+g@B*cGk^7&wX+N#_xUrJ7E|SM?2UAo zU-6|^KNf3&OPUKJK&k3P16MYP2{0w)fi(J3Xd1*gLGVZga&{GrTv#a0b{l1#!P*=@ ze%!6cDE1^u6G7B!yFAz^^a2^0ajipc0GRB;<}X9?FBKM;o&9F6%~fX4o;|1cg}*vk zS2|;qfZK%;po! zY?U9t4-T`0{=;`CjLZr^!GECQjq|oeLIQ>2C#Gwo9_q<^%C6M#F?`9fkdP4F*Jh~- zJTu+GLPEM=c0Yaklql@*jwn93GyuXO?qScsYYAa;E4peFG^_D{feey)xXGIvD0+`# zjT{|iVB)aL+uK6yEj1;4dfFpuV#o_!d$WT=oz(y}Maaj;2VcsQc{rx3stS60nedg$ zfqk*gu`_-*$KFI+X7r5>G)6&122k?o&UGt%CiBEPEB{556H0X(!v%yoRvX z+`Vlrg*_Ur?${HT;)L1rPo}0f&?~~SLKP$ryNZGRbk*v%uK*I2vOx-V>xgi5P!Q%3 zRtO2FrY$4 zOzP9BOm7*!l`F?+JK_xC07$)}>+Vj<(!Txz)1ox{&V_~Y(kx0#GV~4aI^&MYd3bM*U&@cS?#Ll(7zoRnzPCSzuqXiy7379-!&;n=&8$i%|D9~aOw@}%8 zRsr}=4g?W3aY@&qd1>|+8>b1ywWHsH3x)bzm%+8*;0}l_GpT8)dm;P5OG>9bR9(T~fI_p!URXs)rk42Xj6cu46kb8Tp?t`5Z6BFlg>rhA@ zH8gC0+@HU`t|+9+>Kw`_q_d^I;5xwNrLX0tvD89=c-kVR>>`q!5R-w(dde< zmUv@{EnD)Hr+Zx(UJZIZBoD)uj+)jbVUglg3x5+yDXEV$I>%6QFqWk?CgI>O<`HP> z*=PLp_ut_-cJk!CV21VmHIn+DlWmMRxws&Az*Yp8LKI(FAKwh-9($CZ>FVl|Vgj}f zIM67`cqSOhkOSat_n3%&_uWBg9WtUCirX~R9j{DHYpLwsy^0cEN*Y)z-LMFZDw7%O z^NEaeqR~ezx`L=J$T9Gm?uy38MUAZwElXumBRz+8;2I&Y&sM<5!Yet!l5%LMMyn2JX*;v>m(ldC$6;dySpIt6!en+1FkXj}471qYWb^ z>~LWfx0g)4=qrWRPxghE(i_hu9y@-#HSgxZj|p>6LQ0T#(3?A1Lst3Hxq{~Zp4IkXs_xNIO~c{OpK(x89wA@V#_qFo2f$1ftHhkN10 ztaeW|l|l)Y3U>%xQTpW9Kp3(Gp@E!9OI}x>Y_lGKL*K>gl^B>zb{Y5_Cbp|Md`K`> zU-PeJQhU;sT>C$)lyAs}1porcMk%Ry=0o{mvr)#0x+~-J>U~Svd-z9@BpyvMd{UhO z^SWcI{uVagOZoUFXv&ScNLz|-gBzv7N^0UB*5GC-(z?GRPMffE&TVrVg0o4JgMug1 zIM7pdT5Q7x9n|gG!J=c1+Pi=NbXLWzN0{2UZCd~!c{qxDG7V#rQvQ^JB@jRu;LRMJ zH3=3B!GetL7cp;fjNt(-ftwBXU0KbpBM;eh_GBX(3iY*pcTjn)!&4(es@gMr_pGP z$;z)bxIS)fZih+O#PJF%XhiErcs86U0W`Gy!t4`Am|d_gJ*x|aIXfDXZM$|Av^m`h z3yW@yJL4u1tTrO^5Dm>B$b)c~!3A4lrTW@e-`HUo`{?=e01%dxoIA78_NC&Ecw!IO zeR+8qm@8e{eNj-w2E>1_FDFWfa1A#CJTdGWBB)_zlu_w z^LJczBCW>|3k1127Z^K85*$E_U@?L!01fUhSFWTYX4jPti8n_5_jFdk=iOn%goCZJ z{~)QZ(Rq(&1S~#Bo)PdbFE7t8f2ymat80ncFp~<)n%7T}vcr;L6BKgyZu{I}pgUkQ zS|K~^V*Q|}7c?=1L&|D{jqxUs#y}i3yIw7QANK^_Go5wGF$pI8{HeC5JeiP(@q_Ui(6b!E9r$~QQ0!Q7<*zDzrflL8=NqYx`56wf&CoTo9k`AY_x*L-0g zvkl3UDBS?TllR66B;JwI)hY0F_;>(KF}DJ$HCPJ}Ut(cpmm47=tL&e{{(dhZzQW1i zmbfTS6GEK%Rkg zqqwBR62uX7pL@ExfSbr6)!aKGfsjpXEa5B-ID=4q5guKty&&><_Tt5LP<8J!`qKhY z6c7hgq*00+k}huR3Jm_wv=j!Z%#Bt|&dem@Q46zkbK!Oa*CZo1N=pYrJ|>I!jp5XC zJeWaxHXJ2i$CEDnzGrbgiYEHNL{|k+UnLmsWU<%!E)jL}1vQ{ZSkdV!RwxmcYoZ>V zoBA^*%<;*KvNI-F@aP?*c3@35gQf{vO^!kM_gq5gK}+h^cE<>9DXCS+X~zeQeAeW1 z7gPQ@mm5C(1+bSYe6ZJsK+VXaR#+Nh9MRjDH6J@ujvK_DuE{#HFZ|Dh1W80qAlwL= z%Y0EOveMlFrbGZK;&K4H1xEi-iPVJncwS#jDPU=R08SG?Z{p@9VA&IBy~XU{)xy&Z z+{bgUGakQkqS z`7J!CDHwWl?orek3n%A8_SiN>_ z0padLTugknA!_p6F%I4J0)wPg2qkX1_9$yuJX!xd0a3C~4yagSlGh4Mzht zWn#RhL{&7{wYH{S$*DCUWxOYK0MlkYkE!V(-{P~J*=MY4{iAg6?rcUkcMjDf*y;Jo zO7o@gXRJF2g9;7~4l?)bP5cyjiJs@TlGszE&yClsjDNADkjF`YHnDCD6N9*DvK?mW z`W`4W2p^k*sJf&{QhjO}k#9js-41iNMqoZIP>cWU<1XT%D5_#-{v-2Lx zHyT0+h77VOO46LWa0i3v)H2OE~yz~)q$_2EwU~>SjorvQOr zf&xzsZg2d<_S|Jn+2bAFo>d18dbk$W0P zkFJU_N;rr6goPwJZh-wcIO&tEp#}n2Vl3gTV#n2#YGOKwze5&!7RL`v3;9#(K5Wlk z7iF|B;+Pg|i+O$L>ps#>FiBfFocG#bHr`ZaWMKtjF7T&8R3C2IlZfVD<=iu;rlJWN n6)^emhkrg~{||6Ewz|xT)Vz%eLS}eG4Mj&w|6u%q)4%)|)8GIv literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-text-border-1-snap.png b/integration/tests/__image_snapshots__/styles-test-ts-styles-should-hide-the-value-label-with-0-text-border-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..068597f1915ec538f474b6b13457b63a3fddf4d8 GIT binary patch literal 26081 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 { + it('should hide the value label with 0 borderWidth', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--with-value-label-advanced&knob-show value label=true&knob-alternating value label=&knob-contain value label within bar element=&knob-hide clipped value=&knob-debug=&knob-textInverted=&knob-value color=rgba(0,0,0,1)&knob-value border color=rgba(0,0,0,1)&knob-value border width=0&knob-Fixed font size=10&knob-Use fixed font size=&knob-Max font size=25&knob-Min font size=10&knob-offsetX=0&knob-offsetY=0&knob-data volume size=s&knob-split series=&knob-stacked series=&knob-chartRotation=0', + ); + }); + it('should hide the value label with 0 textBorder', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/bar-chart--with-value-label-advanced&knob-show value label=true&knob-alternating value label=&knob-contain value label within bar element=&knob-hide clipped value=&knob-debug=&knob-textInverted=true&knob-value color=rgba(0,0,0,1)&knob-value border color=rgba(0,0,0,1)&knob-value border width=0&knob-Fixed font size=10&knob-Use fixed font size=&knob-Max font size=25&knob-Min font size=10&knob-offsetX=0&knob-offsetY=0&knob-data volume size=s&knob-split series=&knob-stacked series=&knob-chartRotation=0', + ); + }); +}); From 2bb8901f7de13abd6dc9e8b8f298effb4823c35c Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Thu, 3 Jun 2021 17:16:09 +0200 Subject: [PATCH 3/3] refactor: remove save/restore from text rendering --- src/chart_types/xy_chart/renderer/canvas/primitives/text.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts b/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts index e71b301fdd..475aea1cc1 100644 --- a/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts +++ b/src/chart_types/xy_chart/renderer/canvas/primitives/text.ts @@ -58,12 +58,10 @@ export function renderText( ctx.scale(scale, scale); const shadowSize = font.shadowSize ?? 0; if (font.shadow && shadowSize > 0) { - ctx.save(); ctx.lineJoin = 'round'; ctx.lineWidth = shadowSize; ctx.strokeStyle = font.shadow; ctx.strokeText(text, 0, 0); - ctx.restore(); } ctx.fillText(text, 0, 0); });