From d2f9a816f9dc46f45e2cca35a7b9b2dbe24567a9 Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Tue, 26 Jun 2018 15:11:34 +0200 Subject: [PATCH 1/9] Implement readonly, required and invalid properties. Implement error-message area Implement validation checks --- src/vaadin-radio-group.html | 97 ++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 7 deletions(-) diff --git a/src/vaadin-radio-group.html b/src/vaadin-radio-group.html index e4337f9..667c415 100644 --- a/src/vaadin-radio-group.html +++ b/src/vaadin-radio-group.html @@ -43,8 +43,12 @@ +
[[errorMessage]]
- From 4f3cc19882994e1b577609d8a91a0a275936e2bd Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Wed, 27 Jun 2018 13:10:14 +0200 Subject: [PATCH 7/9] Adding error message to visual tests --- test/visual/default.html | 5 +++++ .../default-tests/default/android.png | Bin 2321 -> 4949 bytes .../default-tests/default/chrome.png | Bin 2314 -> 4458 bytes .../default-tests/default/edge.png | Bin 2381 -> 4465 bytes .../default-tests/default/firefox.png | Bin 2439 -> 4358 bytes .../default-tests/default/ie.png | Bin 2411 -> 4579 bytes 6 files changed, 5 insertions(+) diff --git a/test/visual/default.html b/test/visual/default.html index 3709079..41c97e0 100644 --- a/test/visual/default.html +++ b/test/visual/default.html @@ -16,6 +16,11 @@ 2 3 + + + 1 + 2 + diff --git a/test/visual/screens/vaadin-radio-button/default-tests/default/android.png b/test/visual/screens/vaadin-radio-button/default-tests/default/android.png index c0ce23099c697cf1ce74bba80e66ae3012677b70..33312afcdd2f2b19f3baead6bcdd687532eaf99e 100644 GIT binary patch literal 4949 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 literal 2321 zcmb7GX*gT!7LL>Qp;}XqHV2ioh8k+XYaM%?_J+|_u4!8mW44NuP84F1mZI_ zF|Y!Gj%@<#>pZ^!R~6`~dJu?*Y-(`BCcJ<)6A&mICf>g_=NU%dRSG*WhMT~T9lwS3 z7#76|pPxp(bB8sJJ}{Acon-IzKD2yn@TxYmMD_bI=)6g#btP#;$Om@j?b&tcW1mV{ zE`t&YE|Ck@PfA@XH&rrj*z;oVyYvfhDB;6C&s4zLoPz~IV_Q1$0Y#W?{2a8{(~cu3 zPBV)b$^|Sy*!1fH0EGV$4*_8F%5ORV%)1_s1fZ*jX9s||CqgTnSb-Of%|+K{7&#bj z0VwRYv!;x&4Xtma-q+bTc3u^I`Q}{?1xRM{*x|NkDnWnko4brg^wLpQOVd;uH#?#& z=@Ew}Fh^(DtEuk819&R9R+y73PSo#FrcuzZur{`r2-|%>1#FSFSKl84 zLS!=?!Mz)^jE%8UAr|uk*x8Ou**T;~AFj%15UZ+~2Mk!jG>2U{8Bs!~G=&ky!Oeac zS31lol<)|Fj8xi<2_36kpT>_55OQGkpE(SfmCoi103Z%$7+c^f4H~piO6nN2wyqEpIz#i+(kYyYG(WAxQb$3 zQXp-*4m%L75z}~zipEo=A0nJsDvAUYtR1we*c5SMGBO* z_9y?nE3J{wHgxrQMy6!n*(uD_o7gwrmA8)|WtgqXu`0yiJcilAhPJ|!wToN**>UGA zy|>EGSxRNL3QEl9B>G%3Kag7a>>4216q!OQUyM{f_R&>NYa5tRpquV2IIQSM)@&CrQpuGcz8 zh6Ju8W{lKR^d{|8DyT(3Nn7DoeEWqHpX{**$qrynLD99WYLvYqkx#YSI#njfk^z58 zR(}UbyC*4TDRs27&Co3laDzMGziqv&VJ{k666-90ZNs0E-Z0`BtE&3)HudPj$mQJ4 zuAy$Aac4z(wsM`ms;PgOW|E*WM}uPrIocIA^66~tp!Kg;YsWkORo;M0*)&npC>-!F z?|pHCzCE_vw5u|AOE$c}G5{96v#*xQv4*DB31&^v&ch==d}~aFUx0UGOhwz$#~p*> zNon&to>Fwt8DYs`K4XVw<94NFVv zo?@qK-T*kjytpYyzYT`wi|iUXR*08_;3m#N@6yI-Jkw*J!4)IBwW{ zFH+d_@Rzxd(l56COorPv1a-udI57(YkXE6&) zvzHIWI<{s|X4iq)9Tx^v|K-p}Bdl*uyDGi+k)Rv(_F+GswCDF=_B+<(<=>=GB`2%a z7%Vl2kYF^SqZGW@=1e?|PfA!@NJn3t#W066VwYHooFbGe9r3NwI)&-Iy;yMzG3EQA za`A4*nI1Rw!oF>nEk~4=um+i0ytt$8&{Y=QMIn^7fN)rMs4_bP_qKO@Q*Oy%?a40-F%Ufe+(2a25dt3X(6?B6q;e{^13>mY~3WYG&N2WaAo z;_G_h9_-TB#o%aq1Jg`|l*j#|zxZ^*+vRSwpnhZq^T zR}OX*kCU6fyZc)7rXJh zei9jGo*3kv!;I|`200q_3afQRO8Ich;%@vKbUVD8FMFd zTQq5y_?|<&btt#X)udm@{c637&`c6cQIJcimJPbmT%>S8v1s_asbW!`WjgQvQi&)J z?g-`gnDY+h+d_VQ@w<%q7}@|eNZ=n#`~UqdU_ncrMY0yUZ2#o&m>OCb)WBU5{sRck BK#KqX diff --git a/test/visual/screens/vaadin-radio-button/default-tests/default/chrome.png b/test/visual/screens/vaadin-radio-button/default-tests/default/chrome.png index c3e6fdae640024e27196bce519a302c3346df267..595b8f3817412b9e280143fcb5cc284ce03c5def 100644 GIT binary patch literal 4458 zcmbVQXH-+$whnSUc#vWP1(YI9K|n>S1}yYmMY;tf;yAwWV85J=vR_nte>pZCTc??={{du7dUe{0RPzB$)UvM|%<5 z20B(C5a$YD>m2$WXl0g&z{Al?hB`NFLh_ag(LOfr%^j=#fo1FQ%$s$M?(HJU2AMLc zCsHy;v;$R++=2ZGlCe{oCO&%15$zmz>CoZHBY)Y!#MF*Wbh=z&a{T$5z|CS8R%1zf zW00g_+J#b;A;Q+s*&v5+d*r>w=pK`+5RbC?9+S7qR7RG`>zshT0J!I+)d2YXj#l<# z_0xg?ClIL9Ti2Sv@yon;>A$+zHP5k-Uq}+0)PxB>O!v|NBm``i!*0Hir{qP;smWU$xb-2_g z$(ly+kg+UAGyGEO8peGcf@{Gcxb0qQW=j`Z7>rlbJy){TW<#Zi^P1LQF38EqhPldJ8|_Z1VgKT|XjMYpSd! zpWDNA{~E-K=7;j@X_nK!~;pUxw#0G{%k%;Baq}J_q@8ptP1Jh38gxc}#Q7AO0xQpDi8c z5o{0{n6T?ZP;>h?FjDlK|PIFxz!Ka0|HQ~=MyDpE+l3)}Z(F!naLepcn+#pgx1#s4! zawK;B-g>@ie8*zHvk0s?J&1W*We_FMje6vY-Pk$_Q>L=FX-v;6S58-EjG!G9^OW^H z=SQ9^*~QQ<3ZpUQFK%tRoYY1K77|?Fsp{m(MChujT+2~!mGzbs3&Aww>-||j9aNF( z?l}+bWUsQrd|k2B@=LW%JwFk=S3SKoVU<3(5$>myzoMRs7^8lf3ZK|pmDkDEN(~w9 zY?p$}#DCYKSr31W(Y#tR9`)4qYb1aHN)?LdXtt&@r4o^1qZNls_~}ta@`F%(^p1^~ z;vE4YL;+bn^_HOVbbl|bg&{l0$`Y>E^|oj60lp^aOx-01B0Do<_>oZQT4PQj-%a}dZPo#iP)!`)XNgykT- z@g5C}cQzG~{p^T@p2gnN5QmP~%8G(%bff;LyFQG1H^>YpY#1M(P+8}{5D6Iv~H)-E`?M|q(_)mnew&-y*?dU5cao7-KNyDX1jXTO zt?zaEv1I@pGRji>^>6Fhy(mwX*IPL!p-rXv&r|PqxqQ3k#f(DXZ7!8-A3Q(Yxu8L@ z5Bl?_g!4z@+g3+n=6se(0HyD0Sw;C@hQe&rRDP3#+d$0V`=5&Y3SKy0W~e4J86+oU zj_oOli$@N9179q^d(n*?QBiLo;4b}Pg8M;3ETH{VxCpn7#|e`!4{MQLb37VL?HPDw zHsB{69Llv=@_vj{=~MXLAAT;n2tMDy00%`FVOU-ZxyCi2W<-T z(Jrax+6MO{d)m^rMR(wiZwAmO-Y%iV$B{W2i$~e8CNgaZA3*gNRum2MwG%ey-Xh+5 z%c{Pqt+`ehS`(odENquMs{Ob-Fa%a|_hL!x4QN-z@1w&{Ea!`BL<<%sUk5FR6#&k< z52ZJV7a1oTE8CLc0~qq+iu5o_u?&j2O2`;~ZF^W?YGtI!J=LQd@YDn4o6C z@xJlt=$x{xu`b?K(Hg(cfIAOeWpDO#>eNbpf@(zk z5GF^MsX|ya23yG0v(#Vti>0rI?4!MlTa3J0cB;IJ{N%H>tHw9tH5tm(IDhQh8HQ>i z{a1E4eev3Xg3fG9R|nTG)LFWy?lLx6 zZ;}_`V;|ODe7uX-)>H|5ub+$wsF=|Rm0Js-hV6uf&xBVS!Jk>D6#%^{2~0o!Z^|gI znWrB-N)Uehdez!O;CZyQFbf7H)ab`%EEX?U!fJv8CyAH%h4lK)4Exd$KQgi@|{l+s2izZ6ky z|9-maTC0VycU$fFGuLJg&%R}8A-Y5kkdQR|idg~Jx?8yVh2|Hu0-W!`pYdc0!N0>{ zCjaBvV`NvFjin>X2@+mfHFzLIUpsqCZ>;y~Nx5V1?7ZDf_mk90#!u>eUPf^hL)7E~ z5sFXtI*n48C&i*$4hj#spmB=j<;|9bO>&`T`qlEpTAL|ONeS@dCy^WY&d91!kt-tu zXA%0%Rbmz8XvgXX%>;@nk9OXQT4k!)m*)QGX^Da)QJWRAfiq}Pvz<_(OKjpzI}rVz zCfoI-=&Hj?jV=-0J4muF$-W-)bYtpQ7|&;^Lp;RoF9og7(wO!Wmn)9!; z^s+|EFeSN~;)bu=T?)T7)?oTUpLEcy8Y&`ClU2JMC}l&l7Xf*kDdY*p^%K0P5d{zq5sZjD@+#Ki9IHY3HR6=h?L)B=Y&Gtp+c z-((ujt%Mbq=!LpK{VMF45N~M}xeb@(x~kiK4OGkE!(!^CpVG3PoK9jyOv#{eMI_nV zh!(A|N|g0I1=~T%LCW6YMYpsQzO*#KKARsi(dR4m4$f0=M|gf6U~L)LY_L_lEVJE`YC`u8+aCRF9JX~K&4WzP&3 z^zpdixr%+DdwL5H$~fY2+~*`+x>CyF$qaYTz)Uc+-Y}>)^TE2v(4c_iFuB<7yQ{iX z{^Xm&?en{qY3DZ_OR;H#%zIh#?#?G8#l=(jH`42<8?T}QYtM)Qv{Jcv4g&STvBcrt z4lKKDWt7Nlt;If(t^qQ_S5Cf+7uf4RkmIND{W@rv#F%xPft|b`y;OC%fj!> zyNmP^C}$_Wp(2VNiT< zPhRF=2yD18-LtQb9;YP#v{d^!iG^m4yx09mHK(o3OpgT{{~Yr%P9Mw9jx@2VMOdnQ~vlj!Em zd>=QcLTg2*w?HzMDwvf6rE&)sk z94!JY2`HoW7+)gqC@dhnM4!$}p+(Mp8ziU@ij-Uxg@|5#uYjcTsF)}k#d^0DiT1Wa zojv?3>Atx;fH(30GPrUXtSh}TjC5zbWqe1>H-&`>%oa4CcG&)RmG`PL+ppICDZSE2 zKtL$(delN>Z}{BzPR6dn?k*H+zI&PD)aY5i_!+!v!y(t?2w9KrR)=7Km$;u0-%9!j zPGG31ShP)o36zv)oae22E4!S*c?z-DEvT_K+9Zfx3Rb%INj~=H;$VlhSnSImP$vSJ z-&Wb9^PUoX1}&Wug*c$b1$*)R1PxWKVkyiU29;>P@SO(aqHJqyAALPCdS} z&xw-BGouCKY;R9r)>?zh0@uoFXIk!K%}9HMah9^&3n-@e`WMqxs4~Wcjdq=Q`OJ?8 zuW|8S)I&%FxO|M-`IoP0maXyJ9a}p{?;>(tZ~Ir3RwOyru3GUt86v0HkmI-xPyEMq zytD08B0&Z=ECCyaXMNjb3wdzr{T2w@=TlH#Gi-?K{?QKnG1{d{e zB>EUy)lf|_goHj8LXv8|Lz1e9S0<5!L`2*#GxraeweDKq_wBRJcg}DBetVy@_x<2N zAHyA{J3t_iq3>Dm3m}lL1Q>g6(+9qtxT;wYXxpH#_sNSHRideLsH(VJ0}1`B33hVq zCfzFcyP`AR9Pb6I?ceABc2Vd2C652lZSTjW;r6@J`g>kXd)e4We!uk%*cQ4i!Dhh< zA*$Kd{Nw_pck9ViPd`s@-xtU0V+gegsL|yyQla~M-_Ju9^rPu0qqU7+&&z4-br}0= z-@FGqEQm6W(((x(9(kE&01R^OZr8H>sJAr(FmpOOZh%SKvc&>0?KvPLz#u$xfR#B8 z!HJhL_?2Qo9G=)HAIVZ!^9EYb{yZCC3I9&!LuM>Ru%{<#pj>ev$PJr(9Fc;RLm;!g zvsgVXbhy5~4Di0$hn1nrLSRjbcmTX;_bl1k;YXYevby?BOUC&PAk`C ztLKVWq*Mn&3O(2b`2W$b8{|>kLx)K<0t9d1oiT)!C)@bJqF=__+mW%M9EH3jAfJP^ zzRq^r$f?rz6s%OOeS^~Dgf*voqL^$=yB%`O@dWnD5st+ek!aFabVZM`1t6o>OxMqz z5{JP+l1HzbLET;eti8AEf@ONUzt7^^kjSp*M_+99c zE=%^@nA>SHF#{t$n@tgZ09STGRpq={XUr1JMMo4!r z%fk#n6SK!1WSAw^QJymG-p+De0F(S?mo_h53m>~pwc(3y`^$OS*98E08vl(C=z6qs z+h0xZ|F#`MtEPJgGgs+RY`}a&dT#C8a(#~3z{#Y@N`#xD*w06s2O^b2tWBKYLNY^e z0eDmlb3D5KZ4BDBWOzOx^qCVB;a@CQlsW~^vps7dx}}F65tLu%|Ek0 znFu4?PaQ5}lRImR3nw#@MqWDl0%D_~@pfI7ZiBt2*ym=I)DKZ@f_9R6G|b>N`V{8h zT@hr`;PU;U#e6TeVzr@9@^RvU-;^UKIx+L0br8`vDg8{hmtPI{C4Ef=kZ!!e2B?Og z{SxEuTG{dzTMWjxR_2ii19LGxICv;<%*hhcftAetPrvR-NZtMJr}$&0Np}@9Y9muE z+SBvuAArE~8Hd1p%Uh2pLNn-mC6(#6${G3GEIdvsr^(h(8kU`jh%ZXd&#%5_*MSUf zbasLb{to%a9v3t}c$J+Uc&>R0#o@Z*TF8>@ljKk~CvIZH@nk;jPU>7U+`MH(n#}%NOLydL z*AYXUL~MrLpJ$P^57P)wGX}^uB;M6gcbBB*iK(qw%ENNVBuue3mp5B?1zIs5ouvFU z>`1Izo@p@~acDP^wcTK?zaDj5^`ot1NN4a_iGw2Gctwh4135n*;Wf?Ga8yQTj%ImV;+ndN3k@r*!}Jd1az3)a}QUJO@@kBLScv)CoZ&Q1QSf^xbUGR;!UI~L&Gz?uE#Sz$*o z(?2iKgfPX=;^jurHm4`4M0QwDVz2`Q#!tW4Ge3GX{hc)gzK1T?xBc0YD}Gb(1#7_! zsYay90Hm-^uR0kkABaFxqV!|xhXQLtW5ICrX&v=Y9k{Qj?COHrvnE+@aWBK(ti;}| zQ4)v)c5Tk=DC}alx*-0pNVY>C)4{99s$H*B%z;a@lReynq0d%YD8;6FU5cJ~)8)Zo)zpt-QB%!4|)@r#{Y zF0@TE@mN04iscCc>7|TgK_->#EYcgJvik_~3-EL)jV-{81rFOD2=K2z1n94GCbPwqtxXWJp z5#2UKNNIbJ(l*3>sJImW+O@QAA?;v&NaaJ==9K_E(grBPyDqBAVuYE1?6Sa~KRSFk gY}V)hX%7-xJ0-zw@(}CU%UeUMz3$%5FGXMYp diff --git a/test/visual/screens/vaadin-radio-button/default-tests/default/edge.png b/test/visual/screens/vaadin-radio-button/default-tests/default/edge.png index dc2dfe4b2a27c81115dacabe9500e20a9200367e..66a57a112600c3c3ccdca535cc79b132f9177fea 100644 GIT binary patch literal 4465 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 literal 2381 zcmbVOc{rQ-7LIC}(om|jYPmC7M5a`mP`fGG+6^+As=XCKEVUD%Ogn82F4|}{#%j9p>Y}yz1MYqIq~;6#VYj-#^tDsM`4v1~D=v z>QvUO{5{{appPNeXf%Y@gyA;LD5=(#9SY%^%&=ebtJk3uZwwe5gPE9wxYgGj4mSpi zzlA)oR}u&W&D-^t1`tT@a5QBx+76a2r3?I`1+RrO^=eWyLQZBM8Hg zajU5mo)-V^2tZ?QswcW_v^h7){h%B&rdx$EEC^zXM8Ue1lR_E(m*R_~0WPQeT@e2I zTt%z+VEET$L%~ZD&eOJpSL*4`BH_tKY(s_PrCj?h8Fp3doA%Y`_eA>EGW@Ck-k_u3q+SLcFa}bpnExML{(F*?5S_nH!q!^y zPYO2@Eszn@{y21yg}GOd1lq4KCh62w)E{{THqad1n@IfWju{?AR!U1TUGv295-O)O zQvEs9@0g;k{SDqmr|%h(W*S89wvYqZr`i%b9Gvn39n0=t$}Q(JlTbVXYvgEe4?`AV z|GJ7OqOH*id#se->uQ)o^SUVK`j+IpkvO&y+|QqBxEP7_t9Z~T^gSapM5Vf(J9>?f z1z1HQTy8u;%zhCY;%t&ipzOe>Ooh{Z#3iqW)l~1{bMW(dkI*Aq5eG#@5S3bMc5u_e z4o%%K>ra(FEi2^U^Q6mQ#!E!+Dw1=NXVQ5>{lmxZ6g@ka zRyFIV-Rf%XT;803gn-gzL!S`3*S%_$$54kvMMjZs_Gf_6`US+AnndkpM=On$%|X^3 z>Be(k4cAl#1O#~ucQy(~vGAMB$!Kjj{S;qTv$8$V7jbfDymqG#&f})av@wmM!e{@O zT-LTmw)U1~mA**xr_=5c=#3X1#u zFU4r3z6NShfS132t07HYeITPHeEw4AWi7oxmx0Te5hu!O@t@iEzDBCMgmopDcC5I* zF%hB8n-CVaN`)SUhOD6quh4}ddSY8-_u2rU?~C9=U(FixjhYV$``6uD4A<-`986qD zg5O#tw8PpmsN4Bt9?#=4yQ789W;a52Woi8<#V4;P3spgvBaz`0a-PBOLnNHNrJ~|M zSl{#Z#m*;Nd#A(Sf}j)dKjjF_Xci0p8F{Se`2m#dCXpxuSo(B+Rn}II`I7yDz*ufL z#!QtS-?;Ur`iRA5_)Pj8!Oct_gzcGC<8i0TbyS)8?15EDn(4ERhZXc58y2OR$@Btq zvr8>6ZFcLy6-)s0B`-qwuWJ*vZ!WMY+Ci^&!+(IoArx&F!~~Uk5o_!1K*gUZxJbOm z(4ULR98?fu_v=XRlGuK29YhT)?}FOfru!1dKDg z263kf(j&~PBf6C9~h}Cu?qdMgi?M*R#1IW?{w@i>mS=v%rd^!G4_`{P3O0*X8b^*T+?8DNem_ zQMTaOroQu|32m~380(sV(%A&dAC~Y|Fd8lBN}nTOlB;^q=%1Tt%9C+b2 z=6Xz1+fod&%+q(mX=PHvfZle$d(C=nAs08ljUn5>^OSVvRceT=birqmmzU1lw0Pi# zG1r4GyDv%2lC6Rrn6KVd_2632j}42*E>Km`?wWFu##UH*cEHDpOpux(6He${tE<1B z;0T^&-+i>8`{kI_T~}wzwcKZVCY`3h9qt4xx)qVX+IQGiTE%AX zw4bQcdlTHWNs%2zq8Df>XbmZnkK+t`WwX$>UM3HXtcPK(2(8L2Q5=I50?p-wMij;c znsb}Xh+n{9nbEq5r8Dl5Merkuu|7^nR#ij3yo6XJ$|L;%E`c-pIzxkhw`i@q@Z&J` z#bTo+uoUD|7ePAKyYmSSr1Bc10W7_!Up#op$1WM~>`3~+&b=5vsaz1!#Y9SB8%)5&0M=b9aJ-D;H? zLdY>BH*a?+60-duWfwj*3T;Y!9>2Bu%WcfWP&vx2Zs)WCq{ h#s7XY{0~17+p3kHoBqm|a{sVTYHj6UNxkHq@^5xv8*~5w diff --git a/test/visual/screens/vaadin-radio-button/default-tests/default/firefox.png b/test/visual/screens/vaadin-radio-button/default-tests/default/firefox.png index d0a64a9bc61aeb00cf7decf1be223f9790761a08..03ba9e2d75c1d454cc6c8a2b8f377094bb80bb67 100644 GIT binary patch literal 4358 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 TrEU~XqZO=UppDXe{_4K~H<3#8 literal 2439 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 literal 2411 zcmbVNdpwhU8+WKw3eQuiyvzOL*0yMEv6cYm+jf&SiG zHydr%(9qcGbJFAQ8XDT)fwjlR4Zzbs8g2+A;o{&-0BzfG|wX>5OnggZmZFA)cwOATJr`Q51x7Y zYRb?c``OKeQw4jU-5PbQZ9ib{cz7TG-MnkO_)>awp$HA@uSV4)Kun5jbVHHgrV`Q7sQDChe-%6Etc+wO@5oJPW!9p<@pW z-^piPfuNW74Yid^3;kxR%mS*8Q&=#<63dM`-;ymX;EyB>PTXg{Fa^S5Yy0*sir?4a zKUW9?5^1u2N4Vfg#eCQZ=Mf@lU|C`{)j->8mKBo{nJg=EYSIBxDy+#mIg5!IjC$Sj zLVX(gjklLw*}O4$iu41p5#=s`#=I@yE#7@$)IF5294p#&Ied*V2gb!b$ODDtC>nlk zwM)Xh%jMNkN>fkEknu4xSGg!*SK@!-)~JUOraIUy8OuEd{AT?eaKsr(Ca$c!(oX%Q zHbFh`SxX8a_M9->vPORotqSG(VQ9=YwrY0 z2r03MQYee8B;QBXNT5$dQrQ@nzYT?iPhO+Wxcd0R_Dn3o#xi(U;;ZDO=>RxQVbHz^ zoWANi&LS1%RfK=I|D%99$%N&8dyV`7sq zhIlb0&a$qqc2Wd65=Qe&n~~@Z@7d#G#zb4p&JNa@4t2KS^?*y`Y_ncYQOT5=jiVSP za~TI#cU;O)rBYuhvR$8tvWr;qkw^ADuser-qWsZE(s+o)_(S!gJteh?m(wG|to=z> zJFnNRHGsm*4I2glBwe?U<=uKkh3r5KSBr&%V%5bF1wTM}B4AGXFMUKvQ|yXZ=MT_~ z?Va>87XC11TR*x>6x!)7sEz)d+i}G|t*vjjyd_=TyQ~~%py9A_7+ z`xjOkfQGuQ8f6Tg7{IUk9yyN)?@+t?n6?kOHYR~r!uNk-Z{Rg@k%J^Arw#&H*=Dn0daV!DUACdDm4OnITaGU0sm4IU-LLgb4 z{}$8!?+p3C?yczPF)yBH2Ue&d>W*CXkVxOig@Hc)qN7CU~=r1XA5KT3Wn=S{~^EaJ-$Kk{7{b6;tG`2-BMxE zK`5{c6*tCSq%0Jja-=j78_urmse$6D@173^KSC~%C{0#CQ8gRII|+2YbBYq>hdn3n zAyxI>xclOaEeZHbr#v?6$WzIy5GlB;3D>Q|U6?kbqp=fw6`F8VasyxgIwx}a^fM?S zCMDCdr8Seo;gnz%!J&v6>*?vzalIE^w`svKfchS!&j}RW>g;Y;o=`Y^EF!{JXB;T? zN_MNs7r^H6`;9IGH0;;ZTpOCFj^zQo=KXB2=6k$u-SxlXQkg|m)~|;ri;e@?8a|%> K9*rj=Z~hzjOQvK1 From cdf62ee35d3a56970398db62e7c1dff232aa635f Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Thu, 28 Jun 2018 08:18:24 +0200 Subject: [PATCH 8/9] IE and Edge needs to wait before checking error visibility --- analysis.json | 423 ++++++++++++++++++++++++++++++----- src/vaadin-radio-group.html | 3 +- test/vaadin-radio-group.html | 14 +- 3 files changed, 384 insertions(+), 56 deletions(-) diff --git a/analysis.json b/analysis.json index 69d26e0..d07320c 100644 --- a/analysis.json +++ b/analysis.json @@ -8,11 +8,11 @@ "sourceRange": { "file": "src/vaadin-radio-group.html", "start": { - "line": 294, + "line": 394, "column": 6 }, "end": { - "line": 294, + "line": 394, "column": 42 } }, @@ -1454,7 +1454,7 @@ ] }, { - "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n`group-field` | The element that wraps radio-buttons\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", + "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n`group-field` | The element that wraps radio-buttons\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`readonly` | Set to a readonly text field | :host\n`invalid` | Set when the element is invalid | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", "summary": "", "path": "src/vaadin-radio-group.html", "properties": [ @@ -1465,11 +1465,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 164, + "line": 214, "column": 8 }, "end": { - "line": 166, + "line": 216, "column": 9 } }, @@ -1486,11 +1486,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 95, + "line": 101, "column": 12 }, "end": { - "line": 99, + "line": 105, "column": 13 } }, @@ -1501,6 +1501,115 @@ } } }, + { + "name": "readonly", + "type": "boolean | null | undefined", + "description": "This attribute indicates that the user cannot modify the value of the control.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 110, + "column": 12 + }, + "end": { + "line": 114, + "column": 13 + } + }, + "metadata": { + "polymer": { + "observer": "\"_readonlyChanged\"", + "attributeType": "Boolean" + } + } + }, + { + "name": "invalid", + "type": "boolean | null | undefined", + "description": "This property is set to true when the value is invalid.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 119, + "column": 12 + }, + "end": { + "line": 124, + "column": 13 + } + }, + "metadata": { + "polymer": { + "notify": true, + "attributeType": "Boolean" + } + }, + "defaultValue": "false" + }, + { + "name": "required", + "type": "boolean | null | undefined", + "description": "Specifies that the user must fill in a value.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 129, + "column": 12 + }, + "end": { + "line": 132, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "Boolean" + } + } + }, + { + "name": "errorMessage", + "type": "string | null | undefined", + "description": "Error to show when the input value is invalid.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 137, + "column": 12 + }, + "end": { + "line": 140, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "String" + } + }, + "defaultValue": "\"\"" + }, + { + "name": "_errorId", + "type": "string | null | undefined", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 144, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "String" + } + } + }, { "name": "_checkedButton", "type": "Object | null | undefined", @@ -1508,11 +1617,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 101, + "line": 146, "column": 12 }, "end": { - "line": 104, + "line": 149, "column": 13 } }, @@ -1530,11 +1639,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 109, + "line": 154, "column": 12 }, "end": { - "line": 113, + "line": 158, "column": 13 } }, @@ -1553,11 +1662,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 118, + "line": 163, "column": 12 }, "end": { - "line": 122, + "line": 167, "column": 13 } }, @@ -1577,11 +1686,11 @@ "privacy": "private", "sourceRange": { "start": { - "line": 129, + "line": 174, "column": 8 }, "end": { - "line": 150, + "line": 195, "column": 9 } }, @@ -1597,11 +1706,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 152, + "line": 197, "column": 8 }, "end": { - "line": 162, + "line": 212, "column": 9 } }, @@ -1617,11 +1726,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 168, + "line": 218, "column": 8 }, "end": { - "line": 171, + "line": 221, "column": 9 } }, @@ -1638,11 +1747,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 173, + "line": 223, "column": 8 }, "end": { - "line": 177, + "line": 226, "column": 9 } }, @@ -1656,17 +1765,64 @@ "type": "void" } }, + { + "name": "_updateDisableButtons", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 228, + "column": 8 + }, + "end": { + "line": 240, + "column": 9 + } + }, + "metadata": {}, + "params": [], + "return": { + "type": "void" + } + }, + { + "name": "_readonlyChanged", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 242, + "column": 8 + }, + "end": { + "line": 244, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "newV" + }, + { + "name": "oldV" + } + ], + "return": { + "type": "void" + } + }, { "name": "_addActiveListeners", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 179, + "line": 246, "column": 8 }, "end": { - "line": 199, + "line": 267, "column": 9 } }, @@ -1682,11 +1838,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 201, + "line": 269, "column": 8 }, "end": { - "line": 209, + "line": 277, "column": 9 } }, @@ -1709,11 +1865,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 211, + "line": 279, "column": 8 }, "end": { - "line": 216, + "line": 284, "column": 9 } }, @@ -1726,11 +1882,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 218, + "line": 287, "column": 8 }, "end": { - "line": 220, + "line": 289, "column": 9 } }, @@ -1743,11 +1899,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 222, + "line": 291, "column": 8 }, "end": { - "line": 234, + "line": 303, "column": 9 } }, @@ -1767,11 +1923,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 236, + "line": 305, "column": 8 }, "end": { - "line": 248, + "line": 317, "column": 9 } }, @@ -1791,11 +1947,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 250, + "line": 319, "column": 8 }, "end": { - "line": 254, + "line": 323, "column": 9 } }, @@ -1815,11 +1971,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 256, + "line": 325, "column": 8 }, "end": { - "line": 260, + "line": 329, "column": 9 } }, @@ -1839,11 +1995,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 262, + "line": 331, "column": 8 }, "end": { - "line": 272, + "line": 347, "column": 9 } }, @@ -1860,17 +2016,58 @@ "type": "void" } }, + { + "name": "validate", + "description": "Returns true if `value` is valid.\n`` uses this to check the validity or all its elements.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 355, + "column": 8 + }, + "end": { + "line": 357, + "column": 9 + } + }, + "metadata": {}, + "params": [], + "return": { + "type": "boolean", + "desc": "True if the value is valid." + } + }, + { + "name": "checkValidity", + "description": "Returns true if the current input value satisfies all constraints (if any)", + "privacy": "public", + "sourceRange": { + "start": { + "line": 363, + "column": 8 + }, + "end": { + "line": 365, + "column": 9 + } + }, + "metadata": {}, + "params": [], + "return": { + "type": "boolean" + } + }, { "name": "_setFocusable", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 274, + "line": 367, "column": 8 }, "end": { - "line": 277, + "line": 370, "column": 9 } }, @@ -1890,11 +2087,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 279, + "line": 372, "column": 8 }, "end": { - "line": 285, + "line": 378, "column": 9 } }, @@ -1907,6 +2104,60 @@ "return": { "type": "void" } + }, + { + "name": "_getActiveErrorId", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 380, + "column": 8 + }, + "end": { + "line": 382, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "invalid" + }, + { + "name": "errorMessage" + }, + { + "name": "errorId" + } + ] + }, + { + "name": "_getErrorMessageAriaHidden", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 384, + "column": 8 + }, + "end": { + "line": 386, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "invalid" + }, + { + "name": "errorMessage" + }, + { + "name": "errorId" + } + ] } ], "staticMethods": [ @@ -1997,11 +2248,11 @@ "metadata": {}, "sourceRange": { "start": { - "line": 85, + "line": 91, "column": 6 }, "end": { - "line": 287, + "line": 387, "column": 7 } }, @@ -2014,27 +2265,91 @@ "description": "The current disabled state of the radio group. True if group and all internal radio buttons are disabled.", "sourceRange": { "start": { - "line": 95, + "line": 101, + "column": 12 + }, + "end": { + "line": 105, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "readonly", + "description": "This attribute indicates that the user cannot modify the value of the control.", + "sourceRange": { + "start": { + "line": 110, "column": 12 }, "end": { - "line": 99, + "line": 114, "column": 13 } }, "metadata": {}, "type": "boolean | null | undefined" }, + { + "name": "invalid", + "description": "This property is set to true when the value is invalid.", + "sourceRange": { + "start": { + "line": 119, + "column": 12 + }, + "end": { + "line": 124, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "required", + "description": "Specifies that the user must fill in a value.", + "sourceRange": { + "start": { + "line": 129, + "column": 12 + }, + "end": { + "line": 132, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "error-message", + "description": "Error to show when the input value is invalid.", + "sourceRange": { + "start": { + "line": 137, + "column": 12 + }, + "end": { + "line": 140, + "column": 13 + } + }, + "metadata": {}, + "type": "string | null | undefined" + }, { "name": "label", "description": "String used for the label element.", "sourceRange": { "start": { - "line": 109, + "line": 154, "column": 12 }, "end": { - "line": 113, + "line": 158, "column": 13 } }, @@ -2046,11 +2361,11 @@ "description": "Value of the radio group.", "sourceRange": { "start": { - "line": 118, + "line": 163, "column": 12 }, "end": { - "line": 122, + "line": 167, "column": 13 } }, @@ -2059,6 +2374,12 @@ } ], "events": [ + { + "type": "CustomEvent", + "name": "invalid-changed", + "description": "Fired when the `invalid` property changes.", + "metadata": {} + }, { "type": "CustomEvent", "name": "value-changed", diff --git a/src/vaadin-radio-group.html b/src/vaadin-radio-group.html index 05f2acd..cd5b0dd 100644 --- a/src/vaadin-radio-group.html +++ b/src/vaadin-radio-group.html @@ -78,9 +78,8 @@ * Attribute | Description | Part name * -----------|-------------|------------ * `disabled` | Set when the radio group and its children are disabled. | :host - * `invalid` | Set when the element is invalid | :host - * `focused` | Set when the element is focused | :host * `readonly` | Set to a readonly text field | :host + * `invalid` | Set when the element is invalid | :host * `has-label` | Set when the element has a label | :host * * See [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki) diff --git a/test/vaadin-radio-group.html b/test/vaadin-radio-group.html index 88e7712..5d26ffa 100644 --- a/test/vaadin-radio-group.html +++ b/test/vaadin-radio-group.html @@ -267,18 +267,26 @@ expect(/^vaadin-radio-group-error-\d+$/.test(errorElement.id)).to.be.true; }); + it('should remove aria-hiden when error is shown', () => { + vaadinRadioButtonGroup.errorMessage = 'Bad input!'; + vaadinRadioButtonGroup.invalid = true; + expect(errorElement.getAttribute('aria-hidden')).to.be.equal('false'); + }); + it('should hide error message by default', () => { vaadinRadioButtonGroup.errorMessage = 'Bad input!'; expect(visible(errorElement)).to.be.false; }); - it('should show error message on invalid', () => { + it('should show error message on invalid', done => { vaadinRadioButtonGroup.required = true; vaadinRadioButtonGroup.errorMessage = 'Bad input!'; blur(vaadinRadioButtonGroup); - expect(visible(errorElement)).to.be.true; - expect(errorElement.getAttribute('aria-hidden')).to.be.equal('false'); + Polymer.Base.async(() => { + expect(visible(errorElement)).to.be.true; + done(); + }, 100); }); }); From 67c1f5ad698824fd679c6d3bafeb4714350c462f Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Thu, 28 Jun 2018 13:46:13 +0200 Subject: [PATCH 9/9] Remove dead code. Adding more tests --- analysis.json | 926 +++++++++++++++++------------------ src/vaadin-radio-group.html | 4 - test/vaadin-radio-group.html | 55 ++- 3 files changed, 515 insertions(+), 470 deletions(-) diff --git a/analysis.json b/analysis.json index d07320c..ee360b0 100644 --- a/analysis.json +++ b/analysis.json @@ -6,13 +6,13 @@ "description": "", "summary": "", "sourceRange": { - "file": "src/vaadin-radio-group.html", + "file": "src/vaadin-field.html", "start": { - "line": 394, + "line": 266, "column": 6 }, "end": { - "line": 394, + "line": 266, "column": 42 } }, @@ -816,9 +816,9 @@ ] }, { - "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", + "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n`group-field` | The element that wraps radio-buttons\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`readonly` | Set to a readonly text field | :host\n`invalid` | Set when the element is invalid | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", "summary": "", - "path": "src/vaadin-field.html", + "path": "src/vaadin-radio-group.html", "properties": [ { "name": "_radioButtons", @@ -827,11 +827,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 136, + "line": 214, "column": 8 }, "end": { - "line": 138, + "line": 216, "column": 9 } }, @@ -848,11 +848,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 67, + "line": 101, "column": 12 }, "end": { - "line": 71, + "line": 105, "column": 13 } }, @@ -863,6 +863,115 @@ } } }, + { + "name": "readonly", + "type": "boolean | null | undefined", + "description": "This attribute indicates that the user cannot modify the value of the control.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 110, + "column": 12 + }, + "end": { + "line": 114, + "column": 13 + } + }, + "metadata": { + "polymer": { + "observer": "\"_readonlyChanged\"", + "attributeType": "Boolean" + } + } + }, + { + "name": "invalid", + "type": "boolean | null | undefined", + "description": "This property is set to true when the value is invalid.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 119, + "column": 12 + }, + "end": { + "line": 124, + "column": 13 + } + }, + "metadata": { + "polymer": { + "notify": true, + "attributeType": "Boolean" + } + }, + "defaultValue": "false" + }, + { + "name": "required", + "type": "boolean | null | undefined", + "description": "Specifies that the user must fill in a value.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 129, + "column": 12 + }, + "end": { + "line": 132, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "Boolean" + } + } + }, + { + "name": "errorMessage", + "type": "string | null | undefined", + "description": "Error to show when the input value is invalid.", + "privacy": "public", + "sourceRange": { + "start": { + "line": 137, + "column": 12 + }, + "end": { + "line": 140, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "String" + } + }, + "defaultValue": "\"\"" + }, + { + "name": "_errorId", + "type": "string | null | undefined", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 144, + "column": 13 + } + }, + "metadata": { + "polymer": { + "attributeType": "String" + } + } + }, { "name": "_checkedButton", "type": "Object | null | undefined", @@ -870,11 +979,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 73, + "line": 146, "column": 12 }, "end": { - "line": 76, + "line": 149, "column": 13 } }, @@ -892,11 +1001,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 81, + "line": 154, "column": 12 }, "end": { - "line": 85, + "line": 158, "column": 13 } }, @@ -915,11 +1024,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 90, + "line": 163, "column": 12 }, "end": { - "line": 94, + "line": 167, "column": 13 } }, @@ -939,11 +1048,11 @@ "privacy": "private", "sourceRange": { "start": { - "line": 101, + "line": 174, "column": 8 }, "end": { - "line": 122, + "line": 195, "column": 9 } }, @@ -959,11 +1068,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 124, + "line": 197, "column": 8 }, "end": { - "line": 134, + "line": 212, "column": 9 } }, @@ -979,11 +1088,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 140, + "line": 218, "column": 8 }, "end": { - "line": 143, + "line": 221, "column": 9 } }, @@ -1000,11 +1109,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 145, + "line": 223, "column": 8 }, "end": { - "line": 149, + "line": 226, "column": 9 } }, @@ -1018,17 +1127,64 @@ "type": "void" } }, + { + "name": "_updateDisableButtons", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 228, + "column": 8 + }, + "end": { + "line": 240, + "column": 9 + } + }, + "metadata": {}, + "params": [], + "return": { + "type": "void" + } + }, + { + "name": "_readonlyChanged", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 242, + "column": 8 + }, + "end": { + "line": 244, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "newV" + }, + { + "name": "oldV" + } + ], + "return": { + "type": "void" + } + }, { "name": "_addActiveListeners", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 151, + "line": 246, "column": 8 }, "end": { - "line": 171, + "line": 263, "column": 9 } }, @@ -1044,11 +1200,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 173, + "line": 265, "column": 8 }, "end": { - "line": 181, + "line": 273, "column": 9 } }, @@ -1071,11 +1227,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 183, + "line": 275, "column": 8 }, "end": { - "line": 188, + "line": 280, "column": 9 } }, @@ -1088,11 +1244,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 190, + "line": 283, "column": 8 }, "end": { - "line": 192, + "line": 285, "column": 9 } }, @@ -1105,11 +1261,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 194, + "line": 287, "column": 8 }, "end": { - "line": 206, + "line": 299, "column": 9 } }, @@ -1129,11 +1285,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 208, + "line": 301, "column": 8 }, "end": { - "line": 220, + "line": 313, "column": 9 } }, @@ -1153,11 +1309,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 222, + "line": 315, "column": 8 }, "end": { - "line": 226, + "line": 319, "column": 9 } }, @@ -1177,11 +1333,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 228, + "line": 321, "column": 8 }, "end": { - "line": 232, + "line": 325, "column": 9 } }, @@ -1201,11 +1357,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 234, + "line": 327, "column": 8 }, "end": { - "line": 244, + "line": 343, "column": 9 } }, @@ -1223,40 +1379,81 @@ } }, { - "name": "_setFocusable", - "description": "", - "privacy": "protected", + "name": "validate", + "description": "Returns true if `value` is valid.\n`` uses this to check the validity or all its elements.", + "privacy": "public", "sourceRange": { "start": { - "line": 246, + "line": 351, "column": 8 }, "end": { - "line": 249, + "line": 353, "column": 9 } }, "metadata": {}, - "params": [ - { - "name": "idx" + "params": [], + "return": { + "type": "boolean", + "desc": "True if the value is valid." + } + }, + { + "name": "checkValidity", + "description": "Returns true if the current input value satisfies all constraints (if any)", + "privacy": "public", + "sourceRange": { + "start": { + "line": 359, + "column": 8 + }, + "end": { + "line": 361, + "column": 9 } - ], + }, + "metadata": {}, + "params": [], "return": { - "type": "void" + "type": "boolean" } }, { - "name": "_labelChanged", + "name": "_setFocusable", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 251, + "line": 363, "column": 8 }, "end": { - "line": 257, + "line": 366, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "idx" + } + ], + "return": { + "type": "void" + } + }, + { + "name": "_labelChanged", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 368, + "column": 8 + }, + "end": { + "line": 374, "column": 9 } }, @@ -1269,6 +1466,60 @@ "return": { "type": "void" } + }, + { + "name": "_getActiveErrorId", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 376, + "column": 8 + }, + "end": { + "line": 378, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "invalid" + }, + { + "name": "errorMessage" + }, + { + "name": "errorId" + } + ] + }, + { + "name": "_getErrorMessageAriaHidden", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 380, + "column": 8 + }, + "end": { + "line": 382, + "column": 9 + } + }, + "metadata": {}, + "params": [ + { + "name": "invalid" + }, + { + "name": "errorMessage" + }, + { + "name": "errorId" + } + ] } ], "staticMethods": [ @@ -1359,11 +1610,11 @@ "metadata": {}, "sourceRange": { "start": { - "line": 57, + "line": 91, "column": 6 }, "end": { - "line": 259, + "line": 383, "column": 7 } }, @@ -1376,27 +1627,91 @@ "description": "The current disabled state of the radio group. True if group and all internal radio buttons are disabled.", "sourceRange": { "start": { - "line": 67, + "line": 101, "column": 12 }, "end": { - "line": 71, + "line": 105, "column": 13 } }, "metadata": {}, "type": "boolean | null | undefined" }, + { + "name": "readonly", + "description": "This attribute indicates that the user cannot modify the value of the control.", + "sourceRange": { + "start": { + "line": 110, + "column": 12 + }, + "end": { + "line": 114, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "invalid", + "description": "This property is set to true when the value is invalid.", + "sourceRange": { + "start": { + "line": 119, + "column": 12 + }, + "end": { + "line": 124, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "required", + "description": "Specifies that the user must fill in a value.", + "sourceRange": { + "start": { + "line": 129, + "column": 12 + }, + "end": { + "line": 132, + "column": 13 + } + }, + "metadata": {}, + "type": "boolean | null | undefined" + }, + { + "name": "error-message", + "description": "Error to show when the input value is invalid.", + "sourceRange": { + "start": { + "line": 137, + "column": 12 + }, + "end": { + "line": 140, + "column": 13 + } + }, + "metadata": {}, + "type": "string | null | undefined" + }, { "name": "label", "description": "String used for the label element.", "sourceRange": { "start": { - "line": 81, + "line": 154, "column": 12 }, "end": { - "line": 85, + "line": 158, "column": 13 } }, @@ -1408,11 +1723,11 @@ "description": "Value of the radio group.", "sourceRange": { "start": { - "line": 90, + "line": 163, "column": 12 }, "end": { - "line": 94, + "line": 167, "column": 13 } }, @@ -1421,6 +1736,12 @@ } ], "events": [ + { + "type": "CustomEvent", + "name": "invalid-changed", + "description": "Fired when the `invalid` property changes.", + "metadata": {} + }, { "type": "CustomEvent", "name": "value-changed", @@ -1438,12 +1759,12 @@ "name": "", "range": { "start": { - "line": 19, - "column": 4 + "line": 42, + "column": 8 }, "end": { - "line": 19, - "column": 27 + "line": 42, + "column": 31 } } } @@ -1454,9 +1775,9 @@ ] }, { - "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n`group-field` | The element that wraps radio-buttons\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`readonly` | Set to a readonly text field | :host\n`invalid` | Set when the element is invalid | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", + "description": "`` is a Polymer element for grouping vaadin-radio-buttons.\n\n```html\n\n Foo\n Bar\n Baz\n\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`label` | The label element\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-----------|-------------|------------\n`disabled` | Set when the radio group and its children are disabled. | :host\n`has-label` | Set when the element has a label | :host\n\nSee [ThemableMixin – how to apply styles for shadow parts](https://github.com/vaadin/vaadin-themable-mixin/wiki)", "summary": "", - "path": "src/vaadin-radio-group.html", + "path": "src/vaadin-field.html", "properties": [ { "name": "_radioButtons", @@ -1465,11 +1786,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 214, + "line": 136, "column": 8 }, "end": { - "line": 216, + "line": 138, "column": 9 } }, @@ -1486,11 +1807,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 101, + "line": 67, "column": 12 }, "end": { - "line": 105, + "line": 71, "column": 13 } }, @@ -1501,115 +1822,6 @@ } } }, - { - "name": "readonly", - "type": "boolean | null | undefined", - "description": "This attribute indicates that the user cannot modify the value of the control.", - "privacy": "public", - "sourceRange": { - "start": { - "line": 110, - "column": 12 - }, - "end": { - "line": 114, - "column": 13 - } - }, - "metadata": { - "polymer": { - "observer": "\"_readonlyChanged\"", - "attributeType": "Boolean" - } - } - }, - { - "name": "invalid", - "type": "boolean | null | undefined", - "description": "This property is set to true when the value is invalid.", - "privacy": "public", - "sourceRange": { - "start": { - "line": 119, - "column": 12 - }, - "end": { - "line": 124, - "column": 13 - } - }, - "metadata": { - "polymer": { - "notify": true, - "attributeType": "Boolean" - } - }, - "defaultValue": "false" - }, - { - "name": "required", - "type": "boolean | null | undefined", - "description": "Specifies that the user must fill in a value.", - "privacy": "public", - "sourceRange": { - "start": { - "line": 129, - "column": 12 - }, - "end": { - "line": 132, - "column": 13 - } - }, - "metadata": { - "polymer": { - "attributeType": "Boolean" - } - } - }, - { - "name": "errorMessage", - "type": "string | null | undefined", - "description": "Error to show when the input value is invalid.", - "privacy": "public", - "sourceRange": { - "start": { - "line": 137, - "column": 12 - }, - "end": { - "line": 140, - "column": 13 - } - }, - "metadata": { - "polymer": { - "attributeType": "String" - } - }, - "defaultValue": "\"\"" - }, - { - "name": "_errorId", - "type": "string | null | undefined", - "description": "", - "privacy": "protected", - "sourceRange": { - "start": { - "line": 142, - "column": 12 - }, - "end": { - "line": 144, - "column": 13 - } - }, - "metadata": { - "polymer": { - "attributeType": "String" - } - } - }, { "name": "_checkedButton", "type": "Object | null | undefined", @@ -1617,11 +1829,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 146, + "line": 73, "column": 12 }, "end": { - "line": 149, + "line": 76, "column": 13 } }, @@ -1639,11 +1851,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 154, + "line": 81, "column": 12 }, "end": { - "line": 158, + "line": 85, "column": 13 } }, @@ -1662,11 +1874,11 @@ "privacy": "public", "sourceRange": { "start": { - "line": 163, + "line": 90, "column": 12 }, "end": { - "line": 167, + "line": 94, "column": 13 } }, @@ -1683,99 +1895,34 @@ { "name": "connectedCallback", "description": "", - "privacy": "private", - "sourceRange": { - "start": { - "line": 174, - "column": 8 - }, - "end": { - "line": 195, - "column": 9 - } - }, - "metadata": {}, - "params": [], - "return": { - "type": "void" - } - }, - { - "name": "ready", - "description": "", - "privacy": "protected", - "sourceRange": { - "start": { - "line": 197, - "column": 8 - }, - "end": { - "line": 212, - "column": 9 - } - }, - "metadata": {}, - "params": [], - "return": { - "type": "void" - } - }, - { - "name": "_filterRadioButtons", - "description": "", - "privacy": "protected", - "sourceRange": { - "start": { - "line": 218, - "column": 8 - }, - "end": { - "line": 221, - "column": 9 - } - }, - "metadata": {}, - "params": [ - { - "name": "nodes" - } - ] - }, - { - "name": "_disabledChanged", - "description": "", - "privacy": "protected", + "privacy": "private", "sourceRange": { "start": { - "line": 223, + "line": 101, "column": 8 }, "end": { - "line": 226, + "line": 122, "column": 9 } }, "metadata": {}, - "params": [ - { - "name": "disabled" - } - ], + "params": [], "return": { "type": "void" } }, { - "name": "_updateDisableButtons", + "name": "ready", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 228, + "line": 124, "column": 8 }, "end": { - "line": 240, + "line": 134, "column": 9 } }, @@ -1786,26 +1933,44 @@ } }, { - "name": "_readonlyChanged", + "name": "_filterRadioButtons", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 242, + "line": 140, "column": 8 }, "end": { - "line": 244, + "line": 143, "column": 9 } }, "metadata": {}, "params": [ { - "name": "newV" + "name": "nodes" + } + ] + }, + { + "name": "_disabledChanged", + "description": "", + "privacy": "protected", + "sourceRange": { + "start": { + "line": 145, + "column": 8 }, + "end": { + "line": 149, + "column": 9 + } + }, + "metadata": {}, + "params": [ { - "name": "oldV" + "name": "disabled" } ], "return": { @@ -1818,11 +1983,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 246, + "line": 151, "column": 8 }, "end": { - "line": 267, + "line": 171, "column": 9 } }, @@ -1838,11 +2003,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 269, + "line": 173, "column": 8 }, "end": { - "line": 277, + "line": 181, "column": 9 } }, @@ -1865,11 +2030,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 279, + "line": 183, "column": 8 }, "end": { - "line": 284, + "line": 188, "column": 9 } }, @@ -1882,11 +2047,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 287, + "line": 190, "column": 8 }, "end": { - "line": 289, + "line": 192, "column": 9 } }, @@ -1899,11 +2064,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 291, + "line": 194, "column": 8 }, "end": { - "line": 303, + "line": 206, "column": 9 } }, @@ -1923,11 +2088,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 305, + "line": 208, "column": 8 }, "end": { - "line": 317, + "line": 220, "column": 9 } }, @@ -1947,11 +2112,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 319, + "line": 222, "column": 8 }, "end": { - "line": 323, + "line": 226, "column": 9 } }, @@ -1971,11 +2136,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 325, + "line": 228, "column": 8 }, "end": { - "line": 329, + "line": 232, "column": 9 } }, @@ -1995,11 +2160,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 331, + "line": 234, "column": 8 }, "end": { - "line": 347, + "line": 244, "column": 9 } }, @@ -2016,58 +2181,17 @@ "type": "void" } }, - { - "name": "validate", - "description": "Returns true if `value` is valid.\n`` uses this to check the validity or all its elements.", - "privacy": "public", - "sourceRange": { - "start": { - "line": 355, - "column": 8 - }, - "end": { - "line": 357, - "column": 9 - } - }, - "metadata": {}, - "params": [], - "return": { - "type": "boolean", - "desc": "True if the value is valid." - } - }, - { - "name": "checkValidity", - "description": "Returns true if the current input value satisfies all constraints (if any)", - "privacy": "public", - "sourceRange": { - "start": { - "line": 363, - "column": 8 - }, - "end": { - "line": 365, - "column": 9 - } - }, - "metadata": {}, - "params": [], - "return": { - "type": "boolean" - } - }, { "name": "_setFocusable", "description": "", "privacy": "protected", "sourceRange": { "start": { - "line": 367, + "line": 246, "column": 8 }, "end": { - "line": 370, + "line": 249, "column": 9 } }, @@ -2087,11 +2211,11 @@ "privacy": "protected", "sourceRange": { "start": { - "line": 372, + "line": 251, "column": 8 }, "end": { - "line": 378, + "line": 257, "column": 9 } }, @@ -2104,60 +2228,6 @@ "return": { "type": "void" } - }, - { - "name": "_getActiveErrorId", - "description": "", - "privacy": "protected", - "sourceRange": { - "start": { - "line": 380, - "column": 8 - }, - "end": { - "line": 382, - "column": 9 - } - }, - "metadata": {}, - "params": [ - { - "name": "invalid" - }, - { - "name": "errorMessage" - }, - { - "name": "errorId" - } - ] - }, - { - "name": "_getErrorMessageAriaHidden", - "description": "", - "privacy": "protected", - "sourceRange": { - "start": { - "line": 384, - "column": 8 - }, - "end": { - "line": 386, - "column": 9 - } - }, - "metadata": {}, - "params": [ - { - "name": "invalid" - }, - { - "name": "errorMessage" - }, - { - "name": "errorId" - } - ] } ], "staticMethods": [ @@ -2248,11 +2318,11 @@ "metadata": {}, "sourceRange": { "start": { - "line": 91, + "line": 57, "column": 6 }, "end": { - "line": 387, + "line": 259, "column": 7 } }, @@ -2265,91 +2335,27 @@ "description": "The current disabled state of the radio group. True if group and all internal radio buttons are disabled.", "sourceRange": { "start": { - "line": 101, - "column": 12 - }, - "end": { - "line": 105, - "column": 13 - } - }, - "metadata": {}, - "type": "boolean | null | undefined" - }, - { - "name": "readonly", - "description": "This attribute indicates that the user cannot modify the value of the control.", - "sourceRange": { - "start": { - "line": 110, - "column": 12 - }, - "end": { - "line": 114, - "column": 13 - } - }, - "metadata": {}, - "type": "boolean | null | undefined" - }, - { - "name": "invalid", - "description": "This property is set to true when the value is invalid.", - "sourceRange": { - "start": { - "line": 119, - "column": 12 - }, - "end": { - "line": 124, - "column": 13 - } - }, - "metadata": {}, - "type": "boolean | null | undefined" - }, - { - "name": "required", - "description": "Specifies that the user must fill in a value.", - "sourceRange": { - "start": { - "line": 129, + "line": 67, "column": 12 }, "end": { - "line": 132, + "line": 71, "column": 13 } }, "metadata": {}, "type": "boolean | null | undefined" }, - { - "name": "error-message", - "description": "Error to show when the input value is invalid.", - "sourceRange": { - "start": { - "line": 137, - "column": 12 - }, - "end": { - "line": 140, - "column": 13 - } - }, - "metadata": {}, - "type": "string | null | undefined" - }, { "name": "label", "description": "String used for the label element.", "sourceRange": { "start": { - "line": 154, + "line": 81, "column": 12 }, "end": { - "line": 158, + "line": 85, "column": 13 } }, @@ -2361,11 +2367,11 @@ "description": "Value of the radio group.", "sourceRange": { "start": { - "line": 163, + "line": 90, "column": 12 }, "end": { - "line": 167, + "line": 94, "column": 13 } }, @@ -2374,12 +2380,6 @@ } ], "events": [ - { - "type": "CustomEvent", - "name": "invalid-changed", - "description": "Fired when the `invalid` property changes.", - "metadata": {} - }, { "type": "CustomEvent", "name": "value-changed", @@ -2397,12 +2397,12 @@ "name": "", "range": { "start": { - "line": 42, - "column": 8 + "line": 19, + "column": 4 }, "end": { - "line": 42, - "column": 31 + "line": 19, + "column": 27 } } } diff --git a/src/vaadin-radio-group.html b/src/vaadin-radio-group.html index cd5b0dd..d2937c8 100644 --- a/src/vaadin-radio-group.html +++ b/src/vaadin-radio-group.html @@ -246,10 +246,6 @@ _addActiveListeners() { this.addEventListener('keydown', e => { - - if (this.disabled || this.readonly) { - return; - } // if e.target is vaadin-radio-group then assign to checkedRadioButton currently checked radio button var checkedRadioButton = (e.target == this) ? this._checkedButton : e.target; diff --git a/test/vaadin-radio-group.html b/test/vaadin-radio-group.html index 5d26ffa..3f6c216 100644 --- a/test/vaadin-radio-group.html +++ b/test/vaadin-radio-group.html @@ -118,6 +118,29 @@ expect(vaadinRadioButtonList[2].checked).to.be.false; }); + it('should check radio button with keyboard if not disabled or readonly', () => { + vaadinRadioButtonList[1].checked = true; + + MockInteractions.keyDownOn(vaadinRadioButtonGroup, 39); + expect(vaadinRadioButtonList[2].checked).to.be.true; + }); + + it('should not check radio button with keyboard if disabled', () => { + vaadinRadioButtonList[1].checked = true; + vaadinRadioButtonGroup.disabled = true; + + MockInteractions.keyDownOn(vaadinRadioButtonGroup, 39); + expect(vaadinRadioButtonList[2].checked).to.be.false; + }); + + it('should not check radio button with keyboard if readonly', () => { + vaadinRadioButtonList[1].checked = true; + vaadinRadioButtonGroup.readonly = true; + + MockInteractions.keyDownOn(vaadinRadioButtonGroup, 39); + expect(vaadinRadioButtonList[2].checked).to.be.false; + }); + it('previous/last radio button should be focused and checked after left/up', () => { vaadinRadioButtonList[1].checked = true; @@ -243,18 +266,44 @@ expect(vaadinRadioButtonList[2].disabled).to.be.false; }); - it('should validate when field is not required', () => { + it('should not have the has-value attribute by default', () => { + expect(vaadinRadioButtonGroup.hasAttribute('has-value')).to.be.false; + }); + + it('should change the has-value attribute on value', () => { + vaadinRadioButtonGroup.value = '2'; + expect(vaadinRadioButtonGroup.hasAttribute('has-value')).to.be.true; + + vaadinRadioButtonGroup.value = ''; + expect(vaadinRadioButtonGroup.hasAttribute('has-value')).to.be.false; + }); + + it('should pass validation when field is not required', () => { expect(vaadinRadioButtonGroup.checkValidity()).to.be.true; expect(vaadinRadioButtonGroup.invalid).to.be.false; }); - it('should validate when field is required and user has not blurred', () => { + it('should not set invalid when field is required and user has not blurred yet', () => { vaadinRadioButtonGroup.required = true; expect(vaadinRadioButtonGroup.checkValidity()).to.be.false; expect(vaadinRadioButtonGroup.invalid).to.be.false; }); - it('should validate when field is required and user blurs', () => { + it('validate method should set invalid', () => { + vaadinRadioButtonGroup.required = true; + vaadinRadioButtonGroup.validate(); + expect(vaadinRadioButtonGroup.invalid).to.be.true; + }); + + it('should validate after changing selected option', () => { + vaadinRadioButtonGroup.required = true; + vaadinRadioButtonGroup.validate(); + + vaadinRadioButtonList[1].checked = true; + expect(vaadinRadioButtonGroup.invalid).to.be.false; + }); + + it('should pass validation and set invalid when field is required and user blurs', () => { vaadinRadioButtonGroup.required = true; blur(vaadinRadioButtonGroup); expect(vaadinRadioButtonGroup.checkValidity()).to.be.false;