diff --git a/src/runtime/components/elements/Dropdown.vue b/src/runtime/components/elements/Dropdown.vue index 73d1a615..37802026 100644 --- a/src/runtime/components/elements/Dropdown.vue +++ b/src/runtime/components/elements/Dropdown.vue @@ -48,7 +48,7 @@ import Avatar from '../elements/Avatar.vue' import { classNames } from '../../utils' import { usePopper } from '../../composables/usePopper' import type { Avatar as AvatarType } from '../../types/avatar' -import type { PopperOptions } from './../types' +import type { PopperOptions } from '../../types' import $ui from '#build/ui' const props = defineProps({ @@ -132,9 +132,9 @@ const props = defineProps({ } }) -const popperOptions = computed(() => defu({}, props.popperOptions, { placement: 'bottom-end', strategy: 'fixed' })) +const popperOptions = computed(() => defu({}, props.popperOptions, $ui.dropdown.popperOptions)) -const [trigger, container] = usePopper(popperOptions.value) +const [trigger, container] = usePopper(popperOptions.value as PopperOptions) function resolveItemClass ({ active, disabled }: { active: boolean, disabled: boolean }) { return classNames( diff --git a/src/runtime/components/forms/SelectCustom.vue b/src/runtime/components/forms/SelectCustom.vue index d9840dd2..a22588aa 100644 --- a/src/runtime/components/forms/SelectCustom.vue +++ b/src/runtime/components/forms/SelectCustom.vue @@ -97,7 +97,7 @@ import { import Icon from '../elements/Icon.vue' import { classNames } from '../../utils' import { usePopper } from '../../composables/usePopper' -import type { PopperOptions } from './../types' +import type { PopperOptions } from '../../types' import $ui from '#build/ui' const props = defineProps({ @@ -263,9 +263,9 @@ const props = defineProps({ const emit = defineEmits(['update:modelValue']) -const popperOptions = computed(() => defu({}, props.popperOptions, { placement: 'bottom-end' })) +const popperOptions = computed(() => defu({}, props.popperOptions, $ui.selectCustom.popperOptions)) -const [trigger, container] = usePopper(popperOptions.value) +const [trigger, container] = usePopper(popperOptions.value as PopperOptions) const query = ref('') const searchInput = ref>() diff --git a/src/runtime/components/overlays/ContextMenu.vue b/src/runtime/components/overlays/ContextMenu.vue index 5c1bb892..82afdf9a 100644 --- a/src/runtime/components/overlays/ContextMenu.vue +++ b/src/runtime/components/overlays/ContextMenu.vue @@ -12,7 +12,7 @@ import { PropType, computed, toRef } from 'vue' import { defu } from 'defu' import { usePopper } from '../../composables/usePopper' -import type { PopperOptions } from './../types' +import type { PopperOptions } from '../../types' import $ui from '#build/ui' const props = defineProps({ @@ -63,9 +63,9 @@ const isOpen = computed({ const virtualElement = toRef(props, 'virtualElement') -const popperOptions = computed(() => defu({}, props.popperOptions, { placement: 'bottom-start', scroll: false })) +const popperOptions = computed(() => defu({}, props.popperOptions, $ui.contextMenu.popperOptions)) -const [, container] = usePopper(popperOptions.value, virtualElement) +const [, container] = usePopper(popperOptions.value as PopperOptions, virtualElement) diff --git a/src/runtime/composables/usePopper.ts b/src/runtime/composables/usePopper.ts index 8b6b5d0a..147d1a8f 100644 --- a/src/runtime/composables/usePopper.ts +++ b/src/runtime/composables/usePopper.ts @@ -24,7 +24,7 @@ export function usePopper ({ resize = true, placement, strategy -}, virtualReference) { +}, virtualReference: Ref = null) { const reference: Ref = ref(null) const popper: Ref = ref(null) const instance: Ref = ref(null) diff --git a/src/runtime/presets/default.ts b/src/runtime/presets/default.ts index 3a00f90e..f8874645 100644 --- a/src/runtime/presets/default.ts +++ b/src/runtime/presets/default.ts @@ -221,6 +221,9 @@ export default (variantColors: string[]) => { leaveFromClass: 'opacity-100', leaveToClass: 'opacity-0' } + }, + popperOptions: { + placement: 'bottom-end' } } @@ -357,6 +360,10 @@ export default (variantColors: string[]) => { leaveActiveClass: 'transition duration-75 ease-out', leaveFromClass: 'transform scale-100 opacity-100', leaveToClass: 'transform scale-95 opacity-0' + }, + popperOptions: { + placement: 'bottom-end', + strategy: 'fixed' } } @@ -488,6 +495,9 @@ export default (variantColors: string[]) => { leaveActiveClass: 'transition ease-in duration-150', leaveFromClass: 'opacity-100 translate-y-0', leaveToClass: 'opacity-0 translate-y-1' + }, + popperOptions: { + strategy: 'fixed' } } @@ -503,6 +513,9 @@ export default (variantColors: string[]) => { leaveActiveClass: 'transition ease-in duration-150', leaveFromClass: 'opacity-100 translate-y-0', leaveToClass: 'opacity-0 translate-y-1' + }, + popperOptions: { + strategy: 'fixed' } } @@ -518,6 +531,10 @@ export default (variantColors: string[]) => { leaveActiveClass: 'transition ease-in duration-150', leaveFromClass: 'opacity-100 translate-y-0', leaveToClass: 'opacity-0 translate-y-1' + }, + popperOptions: { + placement: 'bottom-start', + scroll: false } }