From b9f5d9e92dd81dce104dea313a7de9989de9910c Mon Sep 17 00:00:00 2001 From: DAK <40970507+dakahn@users.noreply.github.com> Date: Thu, 28 Mar 2019 14:41:00 -0500 Subject: [PATCH] feat(modal): make modal a focus trap (#2096) * fix(modal): add focus-trap-react package * fix(modal): make modal a focus trap * chore(modal): update snapshots * fix(modal): move focus trap to outer-inner modal * fix(modal): remove focusButton, onBlur, onTransitionEnd * fix(modal): add asudoh suggested changes * fix(modal): reverting changes * chore(modal): update snapshot * fix(modal): get tests passing * fix(modal): add check for open modal * chore(modal): update snapshot --- .yarn-offline-mirror/focus-trap-4.0.2.tgz | Bin 0 -> 12274 bytes .../focus-trap-react-6.0.0.tgz | Bin 0 -> 6339 bytes .yarn-offline-mirror/tabbable-3.1.2.tgz | Bin 0 -> 6295 bytes package.json | 1 + src/components/Modal/Modal-test.js | 15 +- src/components/Modal/Modal.js | 37 ++- .../__snapshots__/ModalWrapper-test.js.snap | 254 +++++++++--------- yarn.lock | 20 ++ 8 files changed, 186 insertions(+), 141 deletions(-) create mode 100644 .yarn-offline-mirror/focus-trap-4.0.2.tgz create mode 100644 .yarn-offline-mirror/focus-trap-react-6.0.0.tgz create mode 100644 .yarn-offline-mirror/tabbable-3.1.2.tgz diff --git a/.yarn-offline-mirror/focus-trap-4.0.2.tgz b/.yarn-offline-mirror/focus-trap-4.0.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a35ebac14ed9afba1876c1a6157cd9eb2100ed49 GIT binary patch literal 12274 zcmZ{~Q*a%Q*R~zowr$&XvSZtg(b%?=#%Xqv9ka3BSWO#SJGSxu=Ksuh_^r8S9j*Ix z9o%z~Cm=xlZ?G?d&NPW97I$9iKn&lgB!-eu`cz3cMNJcLeq6N-B0o>7VVnbiE*k6U zhM;cPVI2v7wmUG~FhLh>(8a}1dTtUk={pbjRx1NoTjm=>lmsUo}7i~v;k;?P- z>@f@B*P(DoTU(o{SO{Bn(eUx=-zEG#_Bqp@jkT@d7Z2pML2~w@{>YI2Cz)!oB^Gqe zACv7vyQ2snS6}qS2GX%d0tB)%_4cN89}aD~pusZm?%f%~%${{(Ly=FLkot=Qfz1a` z(ZTHuBM<%`t&Ncv3bF)=9>G_NF+~FJj&X+ADhClX;C9%^vqP|O9M_$|`N1u0#JHY- zurG%qFqn&IRIrU~Y(Eg2?}7=bs&l{(1PnEmni5F?YCE}XmAR9}JtQU36Bn)?PfJf0 zHPo;nzzWL{e$on^`Vl0h&m@2aNU-GC77yqW7N2i*ck=0rTj(7zExC8?bn#pHApVfc zL9z-ZM(2N6unY-IjjrVpz?zlLaHxU99D_KMVs>o_OsrCFtZ5d(`WOi3mNP?%MVyO> zAL7`J^tNBMafy4JUNRj^HI(nLK~qW06cXadNUHNi1x1`{8lst26Joy22ov~A9E`gS zXM3pM6H}qkcjqhuNf|l(G7ler|MD)XNSwI0B(RGB-dwlw^wa&y!&a5-rb)P?>E*SK zf{8V$w?uW#Lp#hEj}R%g-lSLGxf;ALg@$>iL8;&8AeZ^DNDXdskHWauFe_cpr$J2% zp2G=}Qs$MJzmhk=GaDHe_*c1ThsH?%<6udfoqWKAMzT6CC^K>pLtYrP5bhwRpjmKF zTu`_&+<7BNH1=U%uz)2_QgGXn0M7DmJn$fI{6p`at-8B%x{Q_%;0YUkmJkpx17IXm zjRNQ}HAXwg<^LYs?(9)@?07zJ7kjtSeueS(AI}$%Q5&uCWk7laY9US)P@J}X)ZW#$ z*w_oJoZOfR&q3xL!FaiJiYC_Qb5Cis_}luURIK7hqi6VU`PtqPjW%6hq!fbS@+{&1 z>Kh%^?b$iv&CM{2&Eywz3uf3Ag49vz*!C@~0VOlvNZ43N9uu^efAD{qrK*ZV#(Kuo_V2mN!Tly6xaxYAl zDikowIXM>-kfdznLXh_~FGY5VzQf z=7pfcT=0-$>yReReDg)F=?dM%>lG=K6IEXqO7ysdH-cOVTSZD;Dcd;#riWTG?J4^! zY7J0RZx6aa-Ehhnle$i8X-J#yjh#pTgs|CnOoiTy8DvfLiBlk>{nsH?6if2NrN-?k zw$CX_bBGi93WkuIgq!dp*n??kLi~ZJ*iT*(hCiTGp?4~xOk@U;j=xP#Co%L&$bzXh z4TJY14h)m6+ThC~#OX(5W&$aW=>6Y4%r9R31cPVf(LjGEzDIK+Ocmnjt5vo5BJeFq zcc3-5MBwXnw0DTea|S~$N*cpB)Q?5qA25_^w_K`nrSPErDctlt*wb7RQKarYoaqQ` zE?HSTvm|KkNyy`>6T-cYg5)=Q1Y!jB!!cZnNSSfSHr&emDzp+YL+MK{b0-`+Ol9DyY&L-I9FO1g&$fg5#FIb?d zyu|(>EI1;NDb(?xEoBemoX5H*{f4okq$AW|K07L`h$MS9OT;0EBLR6u@r8v_T}m!L z(nE5e$EtZ3y21o0xAlOmi62pytD6i;swb=v7M}FK-y;~Bf%AdJLyw510P7UXu)GxP zsQNZR8~y~7PaCVXlCo}{2PIlgNQJAhEL${0jD6M%=|t(XyJQ7};|f9QGt(ssnSNu) z8-XWbya8i=0D2aSUu;Y6;NC2G#1SR2V`4e z^_>$UO_`A)Gev@5;fi^plm59v5(uH#7d^oq5l&Ym5ABX%u3pm0wrjCD8JN#AK?@JH zygwP?4AB(2d9!*s9)ZS#^kcgO0wqICA!Jb@HNGtHjM3>4W1{iNjbUsz_0hx;lVw)H zbk|DT7-a_NuJBEeKy?uY9l&~v;{b2}mcQkggLki;PrEK_ApS$U-Mqv@SbQgJGSz)> z(VvjyZ}67mlgt&!S0wjH{3#Jf&*=+K%~(91*THlgaxov$>1rL9q)sG7E~5Yj^QpvY zGKODe?2JN6qly#4z7t-hk>kfkN=O^sd+{CcTzntq`O|8{>dU$Rxyky=x#7HD{CL2ZV?1J-VKW!jD79F`+R;Xx+VvAW~&{gLYI&RACrXP^;jjb;g3qQ zHiL$-a&7RrP6U=m7990HyxXCm3YwR|;vQ~hI+wcKl?@kZ4C#Oz5~??ncCv?xEvwgs_!~2l$S0Z&I*4i6p(#+HD1a?C zlW!mtFsn=0d{~Nk&OoO<^F6Krnkg+A^P%L@_n<<;ezGk#Y zqM<H+qYiUh6N&WF=q5Rw?G}BUfYD$)NO5 zsu>kaiCL@wTwc0}UOdX94zlz_rD=xTqlA?CFZ!2dY*p&GJaKHIL=v7IovYaTy=E?y zrC%>CnfZ8(x+?WFUfZYZ&X@H&tw^4}%dGW?kwVCv=eF0INC`_Z_2smJg%iMe4>Cpm zh>z5x2HbM1y3&#fhYNNMM|HA2vTv*#yZtIq=5nWjciaMGX){ag@qegvXzF4Fy9WN~ z_9X_>?q>1OG0r7g{)9$03{>kdYu8M%e2kJ`qR{z-bzL)QNfEBe9}VeE`Sum`30>PC za4z0>Z<=}e)fOE1=w$QtL0Eh?aC`VV0Q}-iTB>ZVFRE+zAzF!k?%50_+cEN2RpD8b zCmmH%Zo=kZPK{VnxW4RP{3u|bolWymA|1E6K`5 ztV`kJdyHuiH!}lv<@NcNZ-MepGAFuo@?uY|VaUi{@<`Co=35$HeAC7lBalTL0ZgPq zp7J?8eT74})}90*p6g_rUd1XcVe397=G_X3BRin1pI=qO8EQp=^No|S4@GBp(4W$WELz& zgmd6RB}TjEqJNtRFNj{{H5Bzwc{NSF+ySw=Nj;(@8~&{-6TYm(8*lk+5BHHxz`}aC z?W9_)>_Krp=LR=XF{UsJGAfd2xRhCgHk(h?VEE`?Ji|5lxAIE%lcq4%#Iy#%C~#*2E4?{$ZZqBR4?|mm#XmFAHzI9bE{lKNAF2~Lj?rCd- zp-n1gG)Y;BoiTKNnZ1;w_aeH`XSeQTB%Zrz4%j=DLjMUsI7eWE3-L0u-ITR*uX6$mUcea{>q<9| zRG%49d!uvtCgWwk?6X{(k1=2UkET|@(ZE?9QymO{&3)tky{xVntQabs3Xb7=dxz07 zUS9hnT^{I>FAo%zG}3BdeDzbgrJJpvt47byf>&gvcEQm+Tj3{->_wuu-{eMv_mu^2 z`i$(N)MU0)(?~GQ>gHw~QC@wC#;^yI!zQWz)c)ppZ3{S8hCK!%;F8YPkt2R2?ogyVlkYe) z@UQB8O1M=FlJ0htJ;;XD#<8m>{uX-5ASJ`46&H3gL@_pUS4>T6x35)gcx>NW{T@E; z9!!=fS_+IJl}A()?OZSsr#mR~hfc{pDWYHc4CSKis~7Kl(*7s<-Yf%RU#Jt^4@q(H z2EC~}fJImpTLo}0-@Gdu&fh4`^`v}P;IzZ_Ezz0Yf|mFos>rdvvQFI-uENnG((v?X zoWbDja7w~u7J^w7Er&Hr<#^oN3p6;W{WFax|K>S1v+Tx^}TssRYv~;pzoA5cN zv(_c13FNvIBKz|1+^&=y=emcjE?<^utlcU96ss&o1e=0bcB`IfX^Asjx|KcLN>ql1 zLC3XMGA*=y4Y_B`ya-rqU13O6CdTq<99AqquWvJLmtlK@xW#g1!A^G0-w-o(Me6g& zfuFw|)&Nh%b?MRD^)y-GnC645Jhs8wTU!(7HlK}_IFcH`7RNz zg4sSS>Z4J&W*O6{V*=QX6af|GIP3H^()`Bwjb_}{<`PREpqko0ptD|3dL6)~uCuPW zRjV#I|IQlRWOAeMLMQD0sJpw2V)94Xq#2SmdB6BDsA%B^wF}++@W(HT1u3z_Y2$56 z1h?z~N;uOP$a9Wv3T25*m7RGC7qG1mSq^}awpfxH{gDsuDC^xtie8-)$6U#!69R~+ zX-$YjNgX8a8x@!~wovZv)BC4yr&Gf$Rw3M-yt4$#_~3(YJw?c%NCiy}$dG6eAXYI! z(}AR~wf`OV?&nw))tqe-*>N);Ex&SR%rEU*Hq0}sLlV_Sf&BnStVxKHAa+cFKcM0) z&M?nd?v-*b`#g>w2ievS+}z#-aq6EtwoBGrxZHDt+`gp?EjBl3XtkNMhF!4M3OD*= z^BVW?+l1UVnq|Vfh*wEBlSC(403IwZz6v)i4_t0%_X3#LHxPE(!;-atHfQS(up+l~ zlxg&ksTvrM?9Pb_j)t2()@HZBX`LeVJEjq~rZiRtZoku2^SIUwwoFUa~Vc8cwO{B|5lQtB+Sj*1@nQ?BE!=WV$RFkcx=k`c@D6yG- zxz7S?)fbP(;!WSaT>_E_=EwH#v9Q@3^pPxZF8tTbLagD=+#2ya>L{?q6%`L{uT(-S zw61Z-v{Cm!j{$HPMC}|yLXIQv2lkK4=ITtKk^3UBXA3?Z2{Y5s*iUqZky(V4tGZ({ z5p4omt~#F<8RanXY9PdFw;0-X`MJsZzpNR84d~Uk==lL%_^HrwPB2JCW_oqyv=*v0 z=88NDbDnm`lXL-w0QmiC1Soz(yDDdK-jv5b$>JYP0+F;Ojyuu`ND3j|kcth{E0F23 zFAgH{63SuxMJsy`?l|r-`%2g6;F`KZos;qY1NqUA9`TiRago(8=`nqhuP?8&al7*8 z6cBre@o309A$cPAo0}WcmS-KtLOA<{oE3ZSMn$IY+G+dfQr!i9{&j!OP&MbGePH4u zpuio$mTul6$ep=4$bA)x{ZO_)8>Yw$G^;@sfMH*uMyX zyN!?-mcYT9Rlh}l`HjSRK6;$Ax)5%Nk4*!`0!TZxaSocZzZOsoKumGq4#0vm4k;40 zoIVlER<&-w;{uOQfVudOSVYa^2a`G^zq#dioxVvp$Z_0BeP^XH)Y`)`0g<(I9P^Z( z;`%|Psq=y7tH;rah4m#fpOmN3!MJDN!29+H{x??{&nK8Ze$kt=L2x%v9Ry`aaz$43 zNte78zd5`;(oas(cQf)C^5)wU;z5<1Obkyh)+fFaV+S7-a3$U=DDW=Z6CE5QFEIr# zF#>Uaudow}^=I%C5$dfmB++3X)ZKu-MPBfE#JfdSKt?s)EP<9Hq%zDmCTKC-ni zzMYI7?B~O@McNzEf{t!>H9Y;@tbhCXr#T?t$_HJ{cW>r0X4CAk>K~?rpo=+oQQ`B$ zrkL2!&G+5@-lYhjwDH*1!Y-II@WDK59MpBz08jr`v?3}dAQ{;sD)zd=i%~eg9~&ys zKO7VtUWqrGEP?(03AQ$a#&Lc0*@mvgK2KEEPSQgR_@We3`Xs-)>U(MYg2xGYnG(JI z0zcjzm%oM>v0tw$eSX~(le7Hey*`$0eOCxHuQqo>-m}7)FtXckE0ge?wjlqBfFR%@ zY6hYCzWw#m|4YlzHVcqG4&h1aZ(exM(D?xq#E`PA=b>UAk99;Jc0eq%h(8z1s?AV} z(~7*%f8jY3p8iIv)xHp?j(LX@gL#Z8q!rPZn0*eMPnhqm`4_W?KW%v%Mce#)WGuS+ zn6Hdx()@?B6Gk;ev`Y2Jxqt@iEeUt!i9xE=_?bBh5Pol4jgJokd6@Bx6pJ*22Qrl! z;(>905~3My5TfjRrVASI%s%#wLvgHt`jEzP!kDOlOZYT-A!=BR{Fb#iH)vbsW)n+R zKi*`Gj1{Fdme>~|FJc2%ZkMA^A>uxJBiWHlJ6BQ-u05|B;%5TlBd)n-U^O)75;8r% zfNuMW3LF1h1dKNJEaR8XmV-Hi6!7M3=v*cRglE+!e4ow>fD`!Bk>CfWS6F50kkoXd zbdt1fvtd$RP(!3Sp(Aaqh*eTWvS$8WIfTYwt`C6w<#563FA-Ppy_@=b6ULB$MBd}% zYJ?Skt_szlwX!BA61|Z}2A1ZtjAkq9nL==!%VGLU&u;7Ly`x6wyj0#UT;&v9L?W_f z$0ncKxv1F9a<`;TQflKO=F#nic`xNCHJ`QAUpdBGn1ojpY?d(~zTTu`jq38L0uwU? z>%qgOyo0OG4Mrg=D<4A=k=l1h8@_54asIf}YUQdXzWI-!<)7`wE{b?n;Z4>ns5f-h z#Sq>~t?Al>1RlrKeO{}K5vo1p3a(W`h%B#8>MiInajilvXj*g_71BwhiWTmb_$g&X zCFZ77HKiT^N#7)X4a#e%9)leneOmE9MMf!W(IsK4bR^nGB+m~jIbDm{g^KbA9!#NY z0_96-)P^>pKT;L7r}faTgHZ%{ZV%;v|IT`ojcZ5Y~38jdR&b<=>klU0@ug)#GQ69YVWeqDmFvxfvkwKk6- zNiN_G`aHS!vnHWzi&Jf{8^~)lJH)0iu^~ZF8*?Hra?!d)Ryeci6aJ_l?I;rw`&Lz) zbyU>92iN+Yh8=+4m2s3QN`1|W~hBx>UoR`Vf*LnV0)J6^P@k!8Q>&Tn=EeO8&dFD&csbh#b|k46Am~GhLQXC z@uq97{&iA0QeUTB7^7OKa$V>52BYhLxYW;LItXrEyo?CwE5%W*oPA~h6g|~>z)f9? z)YzzCB}ggI7WTlGU^YeAhqTPSRO(2DQ<9fC2v35xh5?Jgdrg4fUF4ZINp1ukv=2dp zsOxebOMRfh&$&e{Kp7pHEYizM`_H&od=$}7h$Z$9l%CFszynk{thSEPeD$jV+#ViI z*=RB&SK1uLHjl=dL!J2vLKXjh*slmin{1}bGY$zOHN#Rv8=z+$e`e;dA>GI4G3o@b zB*pJB9OF{a1=(}s{uO7G_SAdnNGz%4*--SfUrEwN4~97%Kz+mKn3GL06nnh%DtRpD zRO{xh$^UYl?R(q@-v}`a8IJE=9UttW~2MXS;H1YMLP7yn5?< zHi;m_74rDNd@JR9qr}SS7nYc-E}?;hhwZDznMeKYz6GxBs)c8UZ^lz26!@!rU(HvN zq~BJnH~cgf_cSmEfdQDguZ6$cn=1Ie+lGwqd3Fo;;flgTTJxk10i#;mXr9~tq$BGh z1Z8PU$j2!erh5!li#si(`HIe5=w+izItY{4PtBS zpDm6daygaI*r31vxSimbB+Vu{ht9CS*A`f?dWR%0P8RdM63i6B2 z)17m5Id&Zgz7_y-6T`m^)q@tmB4J-%lBlFLzC6jbWnZ&8naUy4XX_D-t@Y8G-aCEvcVzrqB@=#I2s%*M3FF9vkt) z>j_QvNbn{i>?IqjbWab30d#gS|JqgOl1RomCzufq6og1#A0m8z+yF*rI34nnlBlzG z9M;F3+z5_pg}o|^M2YMOHku;0BM5%HtwVVI5^7tce>*D{qLAJ}YFJpoHgc1i8Z-&& z1q#4R*1V}kv*oFGkG1|97Sq2IMi`K!=jsd8>)WXDfANnwZW(uW^1=Gj4mX@et2>I8 zXKdeWT~~66Z+FSyL9#-lj_ib}Oq zirzUHP4RawNE=sciPU}Dm51Fvkv_5DzjzR)Vf$gV-rW&MhzVS*10{-LZ-e2xzly(5 zp{<(S3m|kV#ztL?WnNGfVo>`eD@nRXKij4=Vtbc;Qf!aSiJAFl`TW+DR*b?d6quw1 zqP;rh`s0Tn0a*V|RtJeyMOvSUwXwP-5fa4);K@uhex}e7%2qf&R{ZjLzC@{W+Sldp z&$~(eCgE&o5w02A9K;mTDSb=jPM1?1vOA2}91t5pHt3?%=qDfK;s)&afx3ii0hK#gG)i`~L*2wNT zF6H9^g(p6G{!4@liAta5-vURjMw(=hIE||J%NgF}i%m|Iy!eneSD6_JpkLPR5(V6# zD>JK)!{RKQi}84{9eyV92{Y!ENQS=i{TVuv@{&Ptf(s=BMn{{9JF#U4Nm^cT%AN&o z!7aRxMP2t2pFD-UbyTsmfnv2aUGW2F#|I1#A!se-DKS=Eb3f7JWOKl9nj%%6J)w~n z@;!By{26d#c1ZmDihpeAxxtRTsF!6lL_Fxl^5Lx^WO7`4y~Am4PdN*hom(Jq+m#MS zf5X@)qv4tB1+!-X*D3EJH~(eVtZmIR7p`8y!zi*c8s^7)BX;7@W8#-fVPQbdhF>(? z%yKfMJG2v5CnH+W;oaR{sNV1a6+yPq-JRvPgU!RX=geb|Lu&d$Gw<^nTjQf1XC0QG zjNA|@fIY>`^U5;nnkL51h4`MP93%B~-SeAd5u)PJ<99uokTgGgi-o5{ESe=lql^%W zBQlfvx`%a-b1{gZU&~|1S`SW4#efN!ZJKWWrxkkTAyqhxT7L5Jl>D=qM>NnFJn65x zkE0kMfAQAU*T?nA{grEq7-^q_{~*b(YG6UPcm~7C?9m;m@$l+jKlqu{zcQGKpr-U& zsBtmg4KZ=$Io#9qzt5L!&U3wSc0v_oK$m)tb%oC$1%eHpAB%QdK|DhVtuS?6P_diCfM~?nSMQ>US zR{sBS+UBog>G^-S_y2#f{|o>BZB-+ZS|z7X5JS`IkARj6s!!Xes()oh<+e|&?;8PK z=O(-gbR7Ai1(~FAz=FY^gQ5}{<73sG{<{;O9a+G@c6bZqiQ)0PY&J?s|D1L~exN*L ziQR8biFcb@%F%E<@}h}agB=qYr(=^wu;C~uIO9J3$dA~+@JhP@7WH}YRj61J(zPz& zwLS>vV4y3mg>&~}T`y>@E>Zhw5*2w|Yf)z=44>XFoI(hRN<(UN>KwZNZ%eJycWjfu zxH~DWw`{GJUHg-&U(9rjSrLb4{pOLmohli08M?tizKf7`kV#lC2oAoLE;36eNZ3s{ z?6Y2tkT1#_fcT+3<(Kb5bks=pkU-?BQUuf5bj;_fQ8PeRjppYRE5-*0qT4rs1q z-W67hw&oqB%aP2>`L7oKT_qsPM8 z6J!}OR9(a8Jb?hQKm5=Oi=xc00|pz-b&NSQg4(4B z)#f#Lidn*hHTtqpBmgqj9kc$h7CA_?&09wmAg75NF$^xMU4UzXkdC|KA7BO~&}H{4 z8L45F0bY!obL#`55oluOwG1QeDZG*voZ23*@J;yN=3}D5v%U)?DfcDvoz1w*Pg3|l zG9l~kFeg%zdrUCPGO|Xok&_ z=88svo5RDmoih%jSgX|z>7cCQ%vs&Z6>LMTj)Z2!N8wy6yyLS{erH(D6d4y}x1g0? z0dL8pYEgBNrlP}`8&vh#e5N!s#KggM$Ed(_Z_L)<&wnF6*0h;s{&R;igh7@kHm?!C_`LC@jwqVG;uHU2J`G zHSBd@3N0-4m*bq(&b<|ijftH0WkGus)`g(taX_s~hqWsJr{ZaLCMPd)z?P%6Y7-kAXF&F+>q*-a$fUX7fP3P&7|WIIrQ!KZ~HUVxG)YoMAeMi zc#a=1W7+c6G6?rr!~fn;ngW$si2n#%pJrDQ`q-)DtS9?&;+yl2Foy?==cb3`bDIFK znfA_zm|zs2=ttBMmiCxbE1ETdvmDM0AU{0FW0^Oo(4=2)r1`19Zs56Mq*u6$5g>co zW;j_C)2`z`YUMNW<-pLn*f3h@^!-=hLAd}n>Y>tqg{ zLEHpB%sVegZkitxOw4)6H|dY@V>zx}k}&=lwbnb7!vCK;UQ6mJk{D9KF}&lrHNk*1 zOZ8IAj|C4~E@zSQFL!Ov-QEqKTlB{Wv229VW;A@?)$h4-+SOQNrBEe3fz=F=Uh}B{ z`7|~=I(C)wTWgN~8{EGfLZp?DUR*X}g^jWidQ|3kXQi@Swqj~gEIZ--D;%VYg^a9G zkWJEIJ`g@!gph(VyNbcWBWEd}JXx!q3$$3Ox)J-zEyM_jcOC#F9E_`*-h@6!NK6sc zmS-aP9sfy*y#faPPR{HS$etdHl^DcjyLqG2zBD3~&uxQz!D*Gf>wc|+0AI!!;?>m< z^?vp1r(q!fo9si}4>*=P8l=U~P&JRmB-A30n4adp+7y(UnjY5e?mvZw&hk53OaJR#k-8MY}H zJo8KxDgApt;~?nT5rPW^M1;GfzQFyQgC<*Yac-|-n-Uj3d^9`N%K4g!s_361NC^4b zA6>f08GXO9n=2MII}G_EEY|sa(mM`$GfVsERr>ryPkZlmx@-?>*stkv@sys6rMGa| zy3Oj{$dIatGb`aOBswc*l$j}bH{<`vLGz`|e>`S|v%#wWc>S}ks<8|i?SM=lO__7o zdhAI*u_D1*MldDlPQAUo;WAgfSong&rogiWH&lDd|AZvC09zmun4J>eQu|}72W}bJ z{abq8@wG#%58eU$I(UjZx9j|D#D@Ocs?S|k8muRpzt4Vk^T9TzDcgxrK8*2bnTGSY9qrN8W0UHHgdo{EuL9U41|X z@`ndfXg=gQzHMilZt>z<^`}mI!9H?LYjc3zcipR=)HAzX_derWwzx?q>ufCoQkgY- zPmWGwM;A`Uf9x|T-i5M)tpnP>PH!CDwIZ~bDYF_K%hzW&c-H+WTfcWA8j@b-78i=S zsh_e;|53{;#MQ#GLsv*E{I+nl7;6nYvc4(W+SFN$Zn^L(Q~F~m@r}$mZS8iR79eQt zV%|OX&A~4h=8xkMAm!|oK)W%Ad5JuqYqt?B_!3>IW?PRVbr z%23s~cccd<;R%xR^WRbe^=u{gR{r*uwvgMXaV!}mbGSK-=Y7w%Y(Z@fZzlHJdTRZf z{p``1XzN;l??gV|omUpo-F>T4;5AC;aN({0frc1&;TWlR05My=V396H6R>NW;Gt;y zy{(wF{A%JRUpb+sK!b~YdZTP(lmD!{J1WlI!~ZU-lWB@}V8K*xqNVy*d+wm+gg>Mv zU0QFO?xc5(#7uI=23-#H{H973(1he_Xw=f*DX7Sh!gw_DJXl9b>foGm;eo=-P!4559=s{j zW?xj<5Rmu|5?_O0<3awMMN8dmW3Y)NQayDNn^Gr;$Btzf8r`$LUCzxX1v z43_!K9V!23{XR&}6oc@Yi70c8Z-+iePUnrV-R&oRU6#u8=bo&HbHvfwp+4B886$C0 zw;#pjVN-^3yHnBEhS2!V#o1$ia}%rTzjC!2JA!E`Tw8Zu<&&~ii6CIiv{5QE)odCX z3W@kqyBy*tau?H^yl4Z;_yc+B!+yp4vohU#iCG!jKX^Z5&Iu6JxSefMmy@l!w-Wl> zh!uCN-t6w+H{`xV2GHeBU1V<3mF+nNzp0Q8h)zqM{xtLG@E^@dNe64|!w0K1PXe}w zet+%6fIGIUr8;Omv&A_TGk@IE`(_7Wf05zAk7pEzXp}=R%yz3@y|79tKUc48`dN2K zB@63veU%G+GOKE9*+A3=$MUG=ZF_S$YA#)E7jFLRS2^ccpEolBh+-l;UqF)8z-rVf zf(~FQxKt8Y5LC6$eqm7E`{qwGcePqs&LLW3o1Ue9bxD@K300>!m2Ft4<}ldHI_k2$ z$yzwpY~F$os?}E1^=r;6Xk2tMDs2-pJ4B~0gcW2mlayATS#uxiI94(s5c)P^mYTk( zjhgT5nt%1q+ybah2Pn+c&pymok?Hu6*l8wy(TVQsP_|mNq^>ORe(ltM_9`LoCd33F0^PT$U{^?d{Z8DyQxDs}E8{ZAQ5T6o-zxqO23qlc_S$E;@68a1)sUq@hy zQk0ZBy0t_Dx4r4vKx%W^F!g5B$Q-+4C0%pmc#HMW+Dy=E%I<&t_q`b2sJG=W!EnvO z#(yJ0Z=*Y2{Cp-_6oCMR^j9X?pE=?4%1d|3>X(;fSRGE`vxmLK#?Cgif@ExoJg$2q zRp^RpB!8!@Ls(t$qKGsUI+b9;nO zwWr-xKH#j+C6WK~D7?fa9$aLAxzUH)FZwS>b;H~=e#SJ)wn40B?zH9gJ-7G^9;RO- K4B`j^;{O5agS{;P literal 0 HcmV?d00001 diff --git a/.yarn-offline-mirror/focus-trap-react-6.0.0.tgz b/.yarn-offline-mirror/focus-trap-react-6.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..935608d6372e7852bfcbf9108c8e8bf6c693f51a GIT binary patch literal 6339 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 N{|l9T!qNa#007<&Zh-&* literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 5e61644d81..cd3b3f08c3 100644 --- a/package.json +++ b/package.json @@ -134,6 +134,7 @@ "classnames": "2.2.6", "downshift": "^1.31.14", "flatpickr": "4.5.5", + "focus-trap-react": "^6.0.0", "invariant": "^2.2.3", "lodash.debounce": "^4.0.8", "lodash.isequal": "^4.5.0", diff --git a/src/components/Modal/Modal-test.js b/src/components/Modal/Modal-test.js index 080b98b47b..a1f5231e3e 100644 --- a/src/components/Modal/Modal-test.js +++ b/src/components/Modal/Modal-test.js @@ -13,31 +13,34 @@ import ModalWrapper from '../ModalWrapper'; import { shallow, mount } from 'enzyme'; import { componentsX } from '../../internal/FeatureFlags'; +// The modal is the 0th child inside the wrapper on account of focus-trap-react +const getModal = wrapper => wrapper.childAt(0); + describe('Modal', () => { describe('Renders as expected', () => { const wrapper = shallow(); const mounted = mount(); it('has the expected classes', () => { - expect(wrapper.hasClass('bx--modal')).toEqual(true); + expect(getModal(wrapper).hasClass('bx--modal')).toEqual(true); }); it('should add extra classes that are passed via className', () => { - expect(wrapper.hasClass('extra-class')).toEqual(true); + expect(getModal(wrapper).hasClass('extra-class')).toEqual(true); }); it('should not be a passive modal by default', () => { - expect(wrapper.hasClass('bx--modal-tall')).toEqual(true); + expect(getModal(wrapper).hasClass('bx--modal-tall')).toEqual(true); }); it('should be a passive modal when passiveModal is passed', () => { wrapper.setProps({ passiveModal: true }); - expect(wrapper.hasClass('bx--modal-tall')).toEqual(false); + expect(getModal(wrapper).hasClass('bx--modal-tall')).toEqual(false); }); it('should set id if one is passed via props', () => { const modal = shallow(); - expect(modal.props().id).toEqual('modal-1'); + expect(getModal(modal).props().id).toEqual('modal-1'); }); it('has the expected default iconDescription', () => { @@ -215,7 +218,7 @@ describe('Danger Modal', () => { const wrapper = shallow(); it('has the expected classes', () => { - expect(wrapper.hasClass('bx--modal--danger')).toEqual(true); + expect(getModal(wrapper).hasClass('bx--modal--danger')).toEqual(true); }); it('has correct button combination', () => { diff --git a/src/components/Modal/Modal.js b/src/components/Modal/Modal.js index a470d994c6..f3c42e3f98 100644 --- a/src/components/Modal/Modal.js +++ b/src/components/Modal/Modal.js @@ -14,6 +14,7 @@ import Button from '../Button'; import { settings } from 'carbon-components'; import Close20 from '@carbon/icons-react/lib/close/20'; import { breakingChangesX, componentsX } from '../../internal/FeatureFlags'; +import FocusTrap from 'focus-trap-react'; const { prefix } = settings; @@ -125,6 +126,12 @@ export default class Modal extends Component { * be focused when the Modal opens */ selectorPrimaryFocus: PropTypes.string, + + /** + * Specify whether the modal should be a focus trap. NOTE: by default + * this is true + */ + focusTrap: PropTypes.bool, }; static defaultProps = { @@ -137,6 +144,7 @@ export default class Modal extends Component { modalHeading: '', modalLabel: '', selectorPrimaryFocus: '[data-modal-primary-focus]', + focusTrap: true, }; button = React.createRef(); @@ -266,6 +274,7 @@ export default class Modal extends Component { selectorPrimaryFocus, // eslint-disable-line selectorsFloatingMenus, // eslint-disable-line shouldSubmitOnEnter, // eslint-disable-line + focusTrap, ...other } = this.props; @@ -339,18 +348,22 @@ export default class Modal extends Component { ); return ( -
- {modalBody} -
+ +
+ {modalBody} +
+
); } } diff --git a/src/components/ModalWrapper/__snapshots__/ModalWrapper-test.js.snap b/src/components/ModalWrapper/__snapshots__/ModalWrapper-test.js.snap index d34b3a3c29..b15870fa2e 100644 --- a/src/components/ModalWrapper/__snapshots__/ModalWrapper-test.js.snap +++ b/src/components/ModalWrapper/__snapshots__/ModalWrapper-test.js.snap @@ -42,6 +42,7 @@ exports[`ModalWrapper should render 1`] = ` - - + diff --git a/yarn.lock b/yarn.lock index 48be742efa..6481751819 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5463,6 +5463,21 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" +focus-trap-react@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-6.0.0.tgz#3f5a9f68447dd374d22388fb4c50018be83e74a5" + integrity sha512-mvEYxmP75PMx0vOqoIAmJHO/qUEvdTAdz6gLlEZyxxODnuKQdnKea2RWTYxghAPrV+ibiIq2o/GTSgQycnAjcw== + dependencies: + focus-trap "^4.0.2" + +focus-trap@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-4.0.2.tgz#4ee2b96547c9ea0e4252a2d4b2cca68944194663" + integrity sha512-HtLjfAK7Hp2qbBtLS6wEznID1mPT+48ZnP2nkHzgjpL4kroYHg0CdqJ5cTXk+UO5znAxF5fRUkhdyfgrhh8Lzw== + dependencies: + tabbable "^3.1.2" + xtend "^4.0.1" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -12304,6 +12319,11 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" +tabbable@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" + integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== + table@^5.0.2: version "5.1.1" resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837"