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'
213import type { Placement } from '@popperjs/core'
314
415import { usePopper } from '../../composables'
@@ -54,7 +65,7 @@ const CDropdown = defineComponent({
5465 * - `'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.
5566 */
5667 autoClose : {
57- type : [ Boolean , String ] ,
68+ type : [ Boolean , String ] as PropType < boolean | 'inside' | 'outside' > ,
5869 default : true ,
5970 validator : ( value : boolean | string ) => {
6071 return typeof value === 'boolean' || [ 'inside' , 'outside' ] . includes ( value )
@@ -181,7 +192,7 @@ const CDropdown = defineComponent({
181192
182193 const { initPopper, destroyPopper } = usePopper ( )
183194
184- const popperConfig = {
195+ const popperConfig = computed ( ( ) => ( {
185196 modifiers : [
186197 {
187198 name : 'offset' ,
@@ -196,7 +207,7 @@ const CDropdown = defineComponent({
196207 props . alignment ,
197208 isRTL ( dropdownMenuRef . value )
198209 ) as Placement ,
199- }
210+ } ) )
200211
201212 watch (
202213 ( ) => props . visible ,
@@ -213,7 +224,7 @@ const CDropdown = defineComponent({
213224 dropdownRef
214225 )
215226 if ( referenceElement && popper . value ) {
216- initPopper ( referenceElement , dropdownMenuRef . value , popperConfig )
227+ initPopper ( referenceElement , dropdownMenuRef . value , popperConfig . value )
217228 }
218229
219230 window . addEventListener ( 'click' , handleClick )
0 commit comments