UNPKG

@nuxt/devtools-ui-kit

Version:

<a href="https://www.npmjs.com/package/@nuxt/devtools-ui-kit-edge"><img src="https://flat.badgen.net/npm/v/@nuxt/devtools-ui-kit-edge"></a>

37 lines (31 loc) 948 B
<script setup lang="ts"> import { ref } from 'vue' import { onClickOutside, useVModel } from '@vueuse/core' const props = withDefaults(defineProps<{ modelValue?: boolean direction?: 'start' | 'end' }>(), { direction: 'start', }) const emit = defineEmits<{ (...args: any): void }>() const enabled = useVModel(props, 'modelValue', emit, { passive: true }) const el = ref<HTMLDivElement>() onClickOutside(el, () => { enabled.value = false }) </script> <template> <div ref="el" class="relative"> <slot name="trigger" :enabled="enabled" :click="() => enabled = !enabled"> <NButton @click="enabled = !enabled"> Dropdown </NButton> </slot> <div class="absolute z-10 border n-border-base rounded shadow n-transition n-bg-base" :class="[enabled ? 'op-100' : 'op0 pointer-events-none -translate-y-1', direction === 'end' ? 'right-0' : 'left-0']" > <slot /> </div> </div> </template>