@@ -351,6 +351,7 @@ import Timer from '../../utils/Timer.js'
351
351
import Close from ' vue-material-design-icons/Close.vue'
352
352
import Pause from ' vue-material-design-icons/Pause.vue'
353
353
import Play from ' vue-material-design-icons/Play.vue'
354
+ import { useTrapStackControl } from ' ../../composables/useTrapStackControl.js'
354
355
355
356
export default {
356
357
name: ' NcModal' ,
@@ -574,7 +575,6 @@ export default {
574
575
playing: false ,
575
576
slideshowTimeout: null ,
576
577
focusTrap: null ,
577
- externalFocusTrapStack: [],
578
578
randId: GenRandomId (),
579
579
internalShow: true ,
580
580
}
@@ -657,6 +657,10 @@ export default {
657
657
},
658
658
},
659
659
660
+ created () {
661
+ useTrapStackControl (() => this .showModal )
662
+ },
663
+
660
664
beforeMount () {
661
665
window .addEventListener (' keydown' , this .handleKeydown )
662
666
},
@@ -864,11 +868,6 @@ export default {
864
868
setReturnFocus: this .setReturnFocus ,
865
869
}
866
870
867
- // Deactivate other focus traps to unlock modal elements
868
- this .externalFocusTrapStack = [... options .trapStack ]
869
- for (const trap of this .externalFocusTrapStack ) {
870
- trap .deactivate ()
871
- }
872
871
// Init focus trap
873
872
this .focusTrap = createFocusTrap ([contentContainer, ... this .additionalTrapElements ], options)
874
873
this .focusTrap .activate ()
@@ -879,10 +878,6 @@ export default {
879
878
}
880
879
this .focusTrap ? .deactivate ()
881
880
this .focusTrap = null
882
- for (const trap of this .externalFocusTrapStack ) {
883
- trap .activate ()
884
- }
885
- this .externalFocusTrapStack = []
886
881
},
887
882
888
883
},
0 commit comments