1
- import { defineComponent , h , nextTick , onUnmounted , provide , PropType , ref , Ref , watch } from 'vue'
1
+ import {
2
+ computed ,
3
+ defineComponent ,
4
+ h ,
5
+ nextTick ,
6
+ onUnmounted ,
7
+ provide ,
8
+ PropType ,
9
+ ref ,
10
+ Ref ,
11
+ watch ,
12
+ } from 'vue'
2
13
import type { Placement } from '@popperjs/core'
3
14
4
15
import { usePopper } from '../../composables'
@@ -54,7 +65,7 @@ const CDropdown = defineComponent({
54
65
* - `'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.
55
66
*/
56
67
autoClose :{
57
- type :[ Boolean , String ] ,
68
+ type :[ Boolean , String ] as PropType < boolean | 'inside' | 'outside' > ,
58
69
default :true ,
59
70
validator :( value :boolean | string ) => {
60
71
return typeof value === 'boolean' || [ 'inside' , 'outside' ] . includes ( value )
@@ -181,7 +192,7 @@ const CDropdown = defineComponent({
181
192
182
193
const { initPopper, destroyPopper} = usePopper ( )
183
194
184
- const popperConfig = {
195
+ const popperConfig = computed ( ( ) => ( {
185
196
modifiers :[
186
197
{
187
198
name :'offset' ,
@@ -196,7 +207,7 @@ const CDropdown = defineComponent({
196
207
props . alignment ,
197
208
isRTL ( dropdownMenuRef . value )
198
209
) as Placement ,
199
- }
210
+ } ) )
200
211
201
212
watch (
202
213
( ) => props . visible ,
@@ -213,7 +224,7 @@ const CDropdown = defineComponent({
213
224
dropdownRef
214
225
)
215
226
if ( referenceElement && popper . value ) {
216
- initPopper ( referenceElement , dropdownMenuRef . value , popperConfig )
227
+ initPopper ( referenceElement , dropdownMenuRef . value , popperConfig . value )
217
228
}
218
229
219
230
window . addEventListener ( 'click' , handleClick )