From 39cc2552b7210be41edd713cb3daae4623693a37 Mon Sep 17 00:00:00 2001 From: lmoti Date: Wed, 16 Sep 2020 17:06:41 +0300 Subject: [PATCH 1/3] fix: Trigger onFocus/onBlur --- src/index.js | 71 ++++++++++++++++++--------- types/react-dropdown-tree-select.d.ts | 1 + 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/index.js b/src/index.js index 4081b403..e1cebad6 100644 --- a/src/index.js +++ b/src/index.js @@ -64,6 +64,7 @@ class DropdownTreeSelect extends Component { this.state = { searchModeOn: false, currentFocus: undefined, + isManagingFocus: false, } this.clientId = props.id || clientIdGenerator.get(this) } @@ -106,40 +107,59 @@ class DropdownTreeSelect extends Component { } componentWillUnmount() { - document.removeEventListener('click', this.handleOutsideClick, false) + document.removeEventListener('click', this.handleDropdownCollapse, false) } componentWillReceiveProps(nextProps) { this.initNewProps(nextProps) } + onBlur = () => { + // setTimeout runs afterwards in the event. + // If onFocus is triggered immediately in a child component, clearTimeout will stop setTimeout to run. + this._timeoutID = setTimeout(() => { + if (this.state.isManagingFocus) { + this.props.onBlur() + this.setState({ + isManagingFocus: false, + }) + } + }, 0) + } + + onFocus = () => { + clearTimeout(this._timeoutID) + if (!this.state.isManagingFocus) { + this.props.onFocus() + this.setState({ + isManagingFocus: true, + }) + } + } + handleClick = (e, callback) => { this.setState(prevState => { // keep dropdown active when typing in search box const showDropdown = this.props.showDropdown === 'always' || this.keepDropdownActive || !prevState.showDropdown - // register event listeners only if there is a state change - if (showDropdown !== prevState.showDropdown) { - if (showDropdown) { - document.addEventListener('click', this.handleOutsideClick, false) - } else { - document.removeEventListener('click', this.handleOutsideClick, false) - } + const searchStateReset = !showDropdown ? this.resetSearchState() : {} + // adds event listener for collapsing the dropdown + if (this.state.isManagingFocus && this.props.showDropdown !== 'always') { + document.addEventListener('click', this.handleDropdownCollapse, false) } - if (showDropdown) this.props.onFocus() - else this.props.onBlur() - - return !showDropdown ? { showDropdown, ...this.resetSearchState() } : { showDropdown } + return { + showDropdown, + searchStateReset, + } }, callback) } - handleOutsideClick = e => { - if (this.props.showDropdown === 'always' || !isOutsideClick(e, this.node)) { - return - } - - this.handleClick() + handleDropdownCollapse = e => { + if (!isOutsideClick(e, this.node)) return + document.removeEventListener('click', this.handleDropdownCollapse, false) + const showDropdown = this.props.showDropdown === 'always' + this.setState({ showDropdown: showDropdown }) } onInputChange = value => { @@ -157,12 +177,15 @@ class DropdownTreeSelect extends Component { }) } - onTagRemove = (id, isKeyboardEvent) => { + onTagRemove = id => { const { tags: prevTags } = this.state this.onCheckboxChange(id, false, tags => { - if (!isKeyboardEvent) return - - keyboardNavigation.getNextFocusAfterTagDelete(id, prevTags, tags, this.searchInput).focus() + const nextFocus = keyboardNavigation.getNextFocusAfterTagDelete(id, prevTags, tags, this.searchInput) + if (nextFocus) { + nextFocus.focus() + } else { + this.onBlur() + } }) } @@ -201,7 +224,7 @@ class DropdownTreeSelect extends Component { } if (isSingleSelect && !showDropdown) { - document.removeEventListener('click', this.handleOutsideClick, false) + document.removeEventListener('click', this.handleDropdownCollapse, false) } keyboardNavigation.adjustFocusedProps(currentFocusNode, node) @@ -311,6 +334,8 @@ class DropdownTreeSelect extends Component { return (
Date: Wed, 16 Sep 2020 17:10:34 +0300 Subject: [PATCH 2/3] fix: Update tests/story --- __snapshots__/src/index.test.js.md | 12 ++++++++++++ __snapshots__/src/index.test.js.snap | Bin 4706 -> 4787 bytes docs/src/stories/Options/index.js | 8 ++++++++ src/index.test.js | 9 +++++---- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/__snapshots__/src/index.test.js.md b/__snapshots__/src/index.test.js.md index 182f516c..1a45f104 100644 --- a/__snapshots__/src/index.test.js.md +++ b/__snapshots__/src/index.test.js.md @@ -11,6 +11,8 @@ Generated by [AVA](https://ava.li).
OrRZZ?4g5Q-MWiy~JA zq3B1TEfuxZDoSq=g(7}F)+$s>DlL^O7OHJU%T?Nn<^E=7XLjc7%5bl4kl@W6No?jije8=!Ltuudb z|M|if+Zg`rjNyb_-n!?pOSk;?)`Yv?&*D?IrL2ZOot*yOmVy9%lHn z>lYDXC;gEZhKVp?ww0|+#akL;)5O6nm06YYq2CsupKpDzX39bRP zUUfE=OXCcr1Y|u<81y z@rhJRhQDG9^NE+*a*2DAiP80$STez187sTuN+zy~x1{;=Y2_Vbn%G2Rl)ti3cEz1c zj7!$H(3uG|HzntaH6z6~L}#%r@eH5HK3O8pOmtqRnQsMm2hJY^N5S8~P&*;lf?B&+ z{32!VaLJj*JCkMxXdN$^L^aM?jP z9G2p<)kH;CYD7zwN5zlOh!?Ar3O|<)$NwX;?sT7B>`o4C1Qg z%7$zMRc6q4E1UVwTd>oi?e^N$yUYo@TE{>RZF~;D>fm#TPv3BGW07xg$6|b53hn`` z9XgF{S2nUxTZF2ma`j53!+OzS9>)0s9=->>1^x;8IkR0y%s?Mm2KZYXS0ZE_s0Fvt z;RBW7QbTQaiVejSY$%V|L}J5owd|DDGRqf1XqJ91*@&%gip3k!(FFAfXPm8z#-*cJ zCOW5z4ryiMEm96#{81JEd^`V`t2_6YY6Fj{=DUO^fhT0Zt>AX>2-ppdf=^vy7jaKb z#~K@>X{wtz=()gF>L#SGTR9K(Rm=mJFwR22FmM4C*pCjp0s&Wp$yDGVMWEE$H@L;t zc2X7KsgK8^iOhJF0rrGDSH<3BB3sacb8L35?~vW?$gqtvkwG8Q2cy7ueAI~iO5Oloh>+XBgJ2gO-k%P){~00gb76ie^vt}JFG0u^U^=*! z4nHd|2z}LfVyNRlboZyj0Ct|J~JbBY4prd0mZU0CLXK5nZFPX zD2Bn;qitjPsZf!$Bb|)rrjfc9Je>~lWZ1g#sEm312?r4;vjQdb&SD45Vk_%dIz3rw z?2{%>r6;ybER)NT5FkySHwVm4o^F1QuGF8UJ;E$qDa_M0BMIuy$6|ujvb^8dxx7~! z%6ql(yjL5_JEDXg8kne&Y)1d?MLiZwMKlqdmJv%RSaF~z^ zFeOZdo|Ctfv?F9OSO<2};X^dmhj+s!cA04M%6P0fV_*b&v(r(5LG2SKBtyemN>qPf z=Mt?pnrOAboK~C3X|=(eR#z$~(6b_DCs65e=No+7`N9Yrk0(tA)4|M$G{WLBYJ_?6 zHp|Nqy)vSlhlZ-pLu(@@yBJp(+5N{Nyd;DC`uY|VG5`z%=YeS;36_C}!Smoiu~-f# zFKH%qX09s{3*m#Q>aWSaDN%b( z#)aR>E(DVazLYZER9b*=(KB#`S~l~sI$c?aQvL&3MeBCrNL z30?+&0>x!gW5rY&%cpDsQ7I9tkDB6(RF+vk|IeV-st{JWB_yp4Vm2bmY^ZFeBm54T zZOJ6-lXFt>Xhy0OhcICl==ZK>UXSA&>HISF{%}K?meTg!GL4?{<1zy~V}B~n)<>I? z@rGzx3LevxOg2YHj2J<0qcd%(T-mrTq*b+kV-iciSXj_lSV$RGSk4WuK)`>4^q&w%wd$gVc8ZG}{nM)?~#zWa3Iq z={Kbz{XV2A{l3~A((k7l(y!f4h?moAK_4&;WWWk@((exu{wUb`rICJLIDOLZNe$_D zkV9Acy-t#T7s{mH$ME@QU_03LpOk(%x%U+4?IffcOe-w?wjpE@SPQlrm3|MIkbcX= zCK|vGXsL}P9ryy5h7LUa^yt7#dRhneK8hzi34Q@~f+Ha0#>N9o0CjHDT5ua~SyV_1 zUXFm3U~M5S_y-8s0-iRe1wSuo!7hXQOB2(4nWrn7@ns%01>h==j%IwVN2wXlm4x9R z(VFo-=@RkgG~H`z2>1uEg$N0T4C%(bLuRc= z6U$FcNJn3852>v#tM&Bd^^%DE60I-)UAol2NYa&yNKArVjkrbG8qk+HF}N%G^6kZsFoJ3)S^Go(4u>lYe|2j$~AgQwA{ds`%A4w zyQ2uW8MJ`;;90OAyiasQFD;STEs4xMuJ&ESsP~ctliwHkk~;6lmG6Tef+xT;jB)K& zy|#xKYm}jMn6#5T#E9F)^K8O)(cD)rg*SpY?&ZD`y#Oo$o53#dC-8}_fDWb5FNGDf z*iJ}qFc1vU6S#{sy1@;0v%7gT+$MYHM4}@8?w9Rq+j#l6f%8P7{dVJPcv$MD^~ppA zB@hPBIe7W51Q&zLK^<5G?sw?DhdGS&t&qyh92BN>VQCQ+>JIQX;C2!+6kG!u!JW=r z9x$}1JcKp&02`cIBUq>DjyZK+u*zL(EmQ4MU5QO>JiaDRS1_<}_D+{#k&rn`Ps*-@ zx#c5Te{)@Oo@^QUoh%}dOiaS2WoojqF;0s|o)p^{t%uFHzY^T9f>)vdejbE@qS3a&BA_rxImo`_8Yc2=+8$-e>bfRBO4 zLr7mR9E<|jgF27_OThykE~hpoz^84W$fmfB1NU#8tPM6cg`RCJ>>TwSkhyP7Z1Je> zXmRC$M}5sSV9xPPNsWKR&#K2@s~3vE7G@8~AT4+ls>cnL{`_rZ_Xg zN5~aE`I%N6EmNG?fumn5&N%#d-}cMTOu*3$#hGq2_OwtfoDQgYUTN<`NY(O^jv?yJ#TZe zRuLiGR}&|J7Fs&$t(Q&}pU#80XA{^7jsmnfxrkPP`e>I5iu*iuZT)?cfR zs-(K!i+lEi{{wyT+I|&?(Xa1k=%pjn(yFXpuoe6s*zpQFtW;maQ>IhRmv0L0`8H?< ztH871E%0wJxJ=(P;?fJ`(#w``BJQdIw}7?am*B5-N`tiPT_|5U-s}2-OTkUxcJN5K zzAGgx0+?D~lfM+s)X<__GaI6*Oq1lWC@$J(=H5u8fsB;@A%72*Y;S7a$v%%i;SP4E z_bn8!e=oDe%iI6T%O{&$6fy3ZDHiEw^6H`U#qESOM897s%SG!t@^UGrIo*x_pC0PfG&Qtj59r23Qq=ffy|G2LtjLZjrn9xjQJ{q zW4=qp?S!S;)ge=5c+BV5K)2W|-BAEzW8QE9%vm}@r(18n(-|upof)HLGu83T+e-%8 z&aP8FYA>W)LhZWf4r`)Y=I#7WZ)|qx$`>GbTWcq}-Amw5FQrqbbh|x_?OzBWy_G?w z^w;Ek2nd4;DzFzFcntz3f>~4`{lz=SVgxJ&8^Ci^F#S~t+nWe@iwYV@TaGsFy&tth zlr6x|V*CY$QCU+ZN$+HD*_Yvz2`M%~R8orlg?28gG;>jvz0t1z)GD2)W@k9znoV_7 z2*pz-ocFrnsOUpT75ENl??b&Hl;yo3(BroUzeHtOGnO@DSu^73u&f!&n#ne&WzAUD zjAhMO){JG%Sk{bX%~;lqWzFadF_txBSu=D2ENez%GO(-}%bKyQna-EZvSuu6#ENkX-Zq0DNFx3hcgQeh6um`*gPMNo6oaJ`B_=2-R6}VW>p7CmQg;;0onJrzi zXZESuGac&ojL-lF?P3E|I7~Evx>Ms^fHanX&0se;VA!ECt|5l`mkRvTEj0dzc*cqB z59wb7CS{$OrC@{P&Zx@zioeMe{GM&NV+S}4{>k0#BIH6)1De5VSFS__{T_4v&f_i} zf9DNVf9C^rf5(IjA98ES@T1)7^GnpNA;Yh5>&oy?xiw|@11dinZ_cJVK{?Jt`Ozlsi-MoeNIBN1K z@FM5{?}AT2&`Zb}*`~e1ap7!bKW`qbZ6rt8lbYapp}Ny{9;HW`K}th0}Bkj&4_+`2~(%&Yhth z8H{m)_eU}iTmiTrDQ^dB!FJP*%pu%y1TZ1AIv4|D;12M3CmfmAanGCJ1mJ!F=4ue{ zgd=kw?pX)6fjTBNOD@7f=PJf%)KJqmIm;9&==leHI*< zQp=IC92v`z(djyJN9OV`gd;P{a%3z==5#wU_gapO<;a|VM`jzk-44)E$dUOF0Vk-S zJV%DPY9so}la%A=*V1ExgGRMEfj?BP5gbV>S;1=*p8?H`K>00000000B+ zoeP)~<+;bd$^E)X_697V%iUYhU5ghG#e-5&akoIJdq9`jY}gHElQhXL7q!Le!5iMn zgY{Br1#An}V$~LG6>EK<_CT=(m7_kQM@y~RR&)iSVCjEmGLxAvGs#TY<#2R-{AuQ! z_q$)`|4y>22q6x#f5ONsE$4QfzwbMXpRAho-cW{c|6Ec-Nb{DhZ%*8F+V^@|->^P? z{pLjsA3E(+LMHZX`RVv|uN>}OUc2n@rrYjj_)zvDLYDtA6RSPttls$CTbHjMH|lDJ z5AD8+kcYafXIEVNS?{j9M$}#J@IJusp-XxQX}Evxc@t)*1A8w#efQiyZ-1BJL(|t0 zVkJXS7KRBiLAHktr{dimu|zl>Wg}U}!Z5&h3k>cA_koq*DX$!gv{GHQzpr zpD=F1R4@!mOR5G!UT|sMGUjV+NIm+_H2f_9f~F5u>^|1rX!tG6RGYj zf5#H!6Zcv2iMx`C3nSTBGQrYjAYv$oyT^^vwR}ImnCA)Mi*u?d@tBvLij7-EwBd+vx+TkZIAU(O>0p$ zt&6cvg83BC%twQ%{lavbUBuLip8^3G4&urxYY5)bHKjYjUoof1E`q_JWS?su%KB6d zYpKyF`_nY+#ipdp!?Zd64atVlY^ykoEL11BBXKs9xq|JAiXnCUfDgClIwqXOm@qS&5>$#dW}aF{l)SDH&LRc{wtiYeJrF0qYxdmBGwQ+C<7XZa4v@HbY-Znz?y zv3PqrnxL|<$Jw@MT)K*7qg@TONe>(EmP+8@uNwILt$a3{%FCuvM>dUoC%WE44u1!q zfzQEk2Uch>7xXy9PIb;q$2vNqX{uvwbjMomK$PVUNn~;;i zMWDkib|1r19cNc|oUj}bY8k3gS%#{_#RxNUDbimCHh@>$)QlWdFoE~Ohi5&TPA3=Cwk^m0~^=jI?zlciP02W!t8r zF&6RxHX<%&C2HuN$JWnd!)+{`o~$<3E1G7~3tKjp&6h|pkQUEBdyOuhPJWFJ7hk1a z!YUnZP~Cx56D++R5jrTJ5s z{1XfdP^Kpom`;UB6X>B$M;4f_gvlDPl{Ot!u$A<}KUfXcg6-h1-0ez227zf>Q&wU)&7&uWd4GOR|&$=I8Uvyo_LGTt6dOU9EslgUhU?AWpNF*>^_m9HB>VI0 zt1cYTW_z6-t&R)LLR7dQgOFoawPT0kbJqi*a2E%hZyOZD*G z6tMJ{ma6Q#u4KE^ciuGH9!t*1sc9(0IhvYlr-tTwucqd@r7twseHxnUA%r8CctHqE zGp4!5VV(xpeQ7k;n~$~T`hujn?w4tR9CP|GX39yf839vhkjR1S7zXe$LNC$Rv@D(r~w1S(#DzF*6 zVO)g$1W^u@5@9V)96mv%vxEpc6b2(e*r`i|J;y0_zeDH2&cOP5=TV8Zzfcuxe_c$h zeV!6)_ezTFi7ra4z0@V%S|k%|*W|?6r@*hk9uRO7as}uHcY?KGTR)4nA0qva!4MCI z8Lg2PinX(0!YQ!Vf*+O^Yq!8;8~C`iSUbQ=2&cfF4d&1aY@t~D9hlq#9@8t72 zwe>y?vG%LJFPvCAtvtc=xDac5{$Gl4z+h!y_3(WPG z5Nxl3!8gIRV5wi1V0(`w*y{BG8rXie6%%%QRfXL^MG;}Qrb65@CRI?v?lsb_d-KBX z^D<#~FFx<*i~{Jj!2gM`dj_&S3tUC(s)fStf5GH-@I+~0_jQ=O4V<+6S}5$E4wG?U z4sANBVB5I~Cbxk#V5?qXx7QSQk2_&^Z0J}CyEBke3y6SN$cV5jN~}7B-PK1a?0zl@ zyWW#32^pIcaL)%3a6NbgJPTe0`#`YDptw5*5yD_rl}>SYNtM93X6$7{;V8ZbaX$q6z#&j?A!Gu$8e}ac1R#afCv07}BhEeGLGZAp zNVNhQ{jk$g#;bHgtmUaQ0Y3I*tJ?W_s094qDJpfUfo31G&uAf1^=-iqvin+~T9#{faf!~0)fz_Tb1I9L0hM>mgTPNwS z23}d|v=@1@xy!EBGmqL;w?G3s{?Fy<3N9OjS{+(Glv8APg50_tja<`~Tqs+=zb3Qr zB@qX<-6?3*k3`wcv%E zYWpcC!8&m!a~3^s+10k@l8d|Y0nJZ8pkcShk>+CLd>Ob3B*6_}Id}wY0KW%sfWLzy zAmrjoYGHhQ+SX}oircZd{}(CRD195sXnkg5)Q=v<-V+$%(t1x|hD-fOu-K)s@jvV; zdPIEDrFlgB$W=H$+=THFrjoJv-GtQflCLEY z$o06oO%bvgS1&6x6BQ&VMOS}q~2 zTx#4af}P+-@G#g6J_Mc$98&0)=xPg7^N6Vl={dfRIJ3bbz`cz3JMa%Woq@&DY2eeT z4G=N}j0bbUEnqz@=nT@Xosh~d#CQ`N0w)Fuxfsl+6`4A%_U6-Y-VOVE!Oy{VuondI zB-|LH(iyB(nuc6k&q9njU;$VGo(6A$e}NJ7%S=PH+NeQl>#2y-1iHX-@N4i6oz98H z(h*w8Qzbm8j|DTqbzn99{9RuxokqTXTM_3^;BUZ#=fyL?m0$r_Sxu!ktS~)aKD}HG zw;fLL&dIjfSdHrOIi^9g) znqrY|wxAu#uWlJW8T$D`Sugr2P+l*^GFP-_S}o8gs%&3WfX?wKD_~3kE?xmWBdb*L z)koG*d*2-VY=xPQS9(4NZMi)kJ-3$#p<9;0-eP=CFKk6)0w1(Pk(HA~}K3TU5 z2fe=4;b`7G;QdMCG3+LRmH|o^nbOVdVk{XLETW96>G#uagu$&~4P`ihHvA0?wt%-N z!-Cfi4#MCFs2fPgSp${EC(vb_4udNxqv5o#&%!Z}l|r%brual^I-bzcWw0lfpM z2ZWk}2LyWl_T$@2rccE5iHO^l=@T)1BBoEo^of{05z{AP`b12hh%z11Ct~_UOrMB! zW%@)k1QOFHV){f(pNQ!bDQC)HafFoa{l8zQ*j+N1lB94`54z;e075Es8>fbjzwDj){ z4t4!|w?jk!wmXaJ-={e>_3s%fzcpjbKh)w>^AA1h)bbDQaF+599d!1yf2dwX^jDt( z_TnBLhw_}E-1eMmb4*irKOVkQsb!}2?OP}ByBdv_JPn)=nn4@Lf~DZT+z$;s1Ga;= z!6(P3@5(82`qHGS-8ISmDsg;_3!P$TPUwstECT z2^p+#=uF2|L=o};t{zo{e1NOZ6(L{o5i&XN^r2lLi*aiSco1v^+z(Orf=WLj;|#k( zS`ecZEC%<1XTUq$4?|ZFGP(>`$mNJL9i#yFV?OnP#YxVJir=sh1?ALJHSuCX7C3 z6wnTC15be0%5a4+RfIUfD8T*3Z3aA0hAZT^i1Q+N7ckX?i~&s`0aldd3V9Z>UI70K z+%<%p3Fa7fg)BvkWndlH4n75g^twVW=r>nL=keeQxx;jYn641h6;fpA$Xy}7{6e@w z-ZEVwrYq!FyFz@XE5vk#9D7$t1BTt%pt+PQWIha1rCcG4VXy=|SjrW$0S3>4S4+7< z_QGI42n{48T*?(P6$VZH>*{zYluBL2!bVkcr?wK}!0&4*l_!4b{JoP}cA6sy5 { console.log('onNodeToggle::', curNode) } + onFocus = (node, action) => { + console.log('onFocus::', action, node) + } + onBlur = (node, action) => { + console.log('onBlur::', action, node) + } onOptionsChange = value => { this.setState({ [value]: !this.state[value] }) @@ -121,6 +127,8 @@ class WithOptions extends PureComponent { id="rdts" data={data} onChange={this.onChange} + onBlur={this.onBlur} + onFocus={this.onFocus} onAction={this.onAction} onNodeToggle={this.onNodeToggle} clearSearchOnChange={clearSearchOnChange} diff --git a/src/index.test.js b/src/index.test.js index 68b43c6e..832c6fec 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -243,15 +243,16 @@ test('deactivates dropdown active on blur', t => { test('detects click outside', t => { const { tree } = t.context const wrapper = mount() - const handleOutsideClick = spy(wrapper.instance(), 'handleOutsideClick') + const handleDropdownCollapse = spy(wrapper.instance(), 'handleDropdownCollapse') + wrapper.instance().onFocus() wrapper.instance().handleClick() t.true(wrapper.state().showDropdown) const event = new MouseEvent('click', { bubbles: true, cancelable: true }) global.document.dispatchEvent(event) - t.true(handleOutsideClick.calledOnce) + t.true(handleDropdownCollapse.calledOnce) t.false(wrapper.state().showDropdown) }) @@ -270,7 +271,7 @@ test('detects click inside', t => { target: checkboxItem, }) Object.defineProperty(event, 'target', { value: checkboxItem, enumerable: true }) - wrapper.instance().handleOutsideClick(event) + wrapper.instance().handleDropdownCollapse(event) t.true(wrapper.state().showDropdown) }) @@ -291,7 +292,7 @@ test('detects click outside when other dropdown instance', t => { target: searchInput, }) Object.defineProperty(event, 'target', { value: searchInput, enumerable: true }) - wrapper1.instance().handleOutsideClick(event) + wrapper1.instance().handleDropdownCollapse(event) t.false(wrapper1.state().showDropdown) }) From 862180da63305bb6b6f003b5600ffdcea2efbb77 Mon Sep 17 00:00:00 2001 From: lmoti Date: Wed, 16 Sep 2020 21:17:15 +0300 Subject: [PATCH 3/3] fix: Removed public export for timeoutId --- types/react-dropdown-tree-select.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/types/react-dropdown-tree-select.d.ts b/types/react-dropdown-tree-select.d.ts index 65510e87..844f579d 100644 --- a/types/react-dropdown-tree-select.d.ts +++ b/types/react-dropdown-tree-select.d.ts @@ -114,7 +114,6 @@ declare module 'react-dropdown-tree-select' { searchInput: HTMLInputElement keepDropdownActive: boolean handleClick(): void - _timeoutID: number } export interface TreeNode {