@@ -7,6 +7,7 @@ import { getNextActiveElement, isRTL } from '../../utils'
7
7
8
8
import type { Alignments } from './types'
9
9
import { getPlacement } from './utils'
10
+ import { CFocusTrap } from '../focus-trap'
10
11
11
12
const CDropdown = defineComponent ( {
12
13
name :'CDropdown' ,
@@ -217,7 +218,8 @@ const CDropdown = defineComponent({
217
218
window . removeEventListener ( 'click' , handleClick )
218
219
window . removeEventListener ( 'keyup' , handleKeyup )
219
220
dropdownMenuRef . value && dropdownMenuRef . value . removeEventListener ( 'keydown' , handleKeydown )
220
- dropdownToggleRef . value && dropdownToggleRef . value . removeEventListener ( 'keydown' , handleKeydown )
221
+ dropdownToggleRef . value &&
222
+ dropdownToggleRef . value . removeEventListener ( 'keydown' , handleKeydown )
221
223
emit ( 'hide' )
222
224
} )
223
225
@@ -315,22 +317,27 @@ const CDropdown = defineComponent({
315
317
provide ( 'setVisible' , setVisible )
316
318
317
319
return ( ) =>
318
- props . variant === 'input-group'
319
- ?[ slots . default && slots . default ( ) ]
320
- :h (
321
- 'div' ,
322
- {
323
- class :[
324
- props . variant === 'nav-item' ?'nav-item dropdown' :props . variant ,
325
- props . direction === 'center'
326
- ?'dropdown-center'
327
- :props . direction === 'dropup-center'
328
- ?'dropup dropup-center'
329
- :props . direction ,
330
- ] ,
331
- } ,
332
- slots . default && slots . default ( )
333
- )
320
+ h (
321
+ CFocusTrap ,
322
+ { active :props . teleport && visible . value , additionalContainer :dropdownMenuRef } ,
323
+ ( ) =>
324
+ props . variant === 'input-group'
325
+ ?[ slots . default && slots . default ( ) ]
326
+ :h (
327
+ 'div' ,
328
+ {
329
+ class :[
330
+ props . variant === 'nav-item' ?'nav-item dropdown' :props . variant ,
331
+ props . direction === 'center'
332
+ ?'dropdown-center'
333
+ :props . direction === 'dropup-center'
334
+ ?'dropup dropup-center'
335
+ :props . direction ,
336
+ ] ,
337
+ } ,
338
+ slots . default && slots . default ( )
339
+ )
340
+ )
334
341
} ,
335
342
} )
336
343