@@ -42,7 +42,6 @@ class Modal extends AbstractDomElement {
4242
4343 new ThrottledEvent ( window , 'resize' ) . add ( 'resize' , this . _onResizeHandler )
4444 this . _onResizeHandler ( )
45- this . disableAllFocusedElements ( )
4645 }
4746
4847 /**
@@ -54,6 +53,7 @@ class Modal extends AbstractDomElement {
5453 */
5554 init ( ) {
5655 this . initialized = true
56+ this . disableAllFocusedElements ( )
5757 const el = this . _element
5858 const { closeButtonSelector, closedClassName, descriptionSelector, labelSelector, triggerSelector } = this . _settings
5959
@@ -113,6 +113,7 @@ class Modal extends AbstractDomElement {
113113 */
114114 open ( ) {
115115 this . isOpened = true
116+ this . enableAllFocusedElements ( )
116117
117118 const el = this . _element
118119 const { closedClassName, openedClassName } = this . _settings
@@ -137,8 +138,6 @@ class Modal extends AbstractDomElement {
137138 window . addEventListener ( 'click' , this . _handleOutsideClick )
138139 } )
139140 }
140-
141- this . enableAllFocusedElements ( )
142141 }
143142
144143 /**
@@ -153,6 +152,7 @@ class Modal extends AbstractDomElement {
153152 const { closedClassName, openedClassName } = this . _settings
154153
155154 this . isOpened = false
155+ this . disableAllFocusedElements ( )
156156
157157 el . classList . add ( closedClassName )
158158 el . classList . remove ( openedClassName )
@@ -170,8 +170,6 @@ class Modal extends AbstractDomElement {
170170 if ( this . _settings . closeOnFocusOutside ) {
171171 window . removeEventListener ( 'click' , this . _handleOutsideClick )
172172 }
173-
174- this . disableAllFocusedElements ( )
175173 }
176174
177175 /**
@@ -184,6 +182,10 @@ class Modal extends AbstractDomElement {
184182 * @author Milan Ricoul
185183 */
186184 checkNextFocusableElement ( e ) {
185+ if ( ! this . isOpened && this . initialized ) {
186+ return
187+ }
188+
187189 const el = this . _element
188190 const focusableElements = el . querySelectorAll ( FOCUSABLE_ELEMENTS )
189191 const currentIndexOfActiveElement = Array . prototype . indexOf . call ( focusableElements , document . activeElement )
@@ -220,6 +222,8 @@ class Modal extends AbstractDomElement {
220222 btn . removeEventListener ( 'click' , this . open )
221223 } )
222224
225+ this . enableAllFocusedElements ( )
226+
223227 super . destroy ( )
224228 }
225229
@@ -229,7 +233,7 @@ class Modal extends AbstractDomElement {
229233 enableAllFocusedElements ( ) {
230234 const el = this . _element
231235
232- for ( const focusableElement of Array . from ( el . querySelectorAll ( FOCUSABLE_ELEMENTS ) ) ) {
236+ for ( const focusableElement of Array . from ( el . querySelectorAll ( '[tabindex="-1"]' ) ) ) {
233237 focusableElement . removeAttribute ( 'tabindex' )
234238 }
235239 }
0 commit comments