From ff1e54bddd101a4fefffd8c049612236fbe952db Mon Sep 17 00:00:00 2001 From: zernonia Date: Wed, 23 Aug 2023 15:05:55 +0800 Subject: [PATCH] feat: add popover demo --- packages/shadcn-vue/src/App.vue | 5 +- .../shadcn-vue/src/components/ui/Popover.ts | 29 ++++++++ .../src/components/ui/PopoverDemo.vue | 67 +++++++++++++++++++ 3 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 packages/shadcn-vue/src/components/ui/Popover.ts create mode 100644 packages/shadcn-vue/src/components/ui/PopoverDemo.vue diff --git a/packages/shadcn-vue/src/App.vue b/packages/shadcn-vue/src/App.vue index e2f833c8..89d0308b 100644 --- a/packages/shadcn-vue/src/App.vue +++ b/packages/shadcn-vue/src/App.vue @@ -1,9 +1,12 @@ diff --git a/packages/shadcn-vue/src/components/ui/Popover.ts b/packages/shadcn-vue/src/components/ui/Popover.ts new file mode 100644 index 00000000..14eb19fc --- /dev/null +++ b/packages/shadcn-vue/src/components/ui/Popover.ts @@ -0,0 +1,29 @@ +import { defineComponent, h } from 'vue' +import { + type PopoverContentEmits, PopoverContent as PopoverContentPrimitive, type PopoverContentProps, + PopoverPortal, + PopoverRoot, + PopoverTrigger as PopoverTriggerPrimitive, +} from 'radix-vue' +import { type ParseEmits, cn } from '@/utils' + +export const Popover = PopoverRoot +export const PopoverTrigger = PopoverTriggerPrimitive + +export const PopoverContent = defineComponent>( + (props, { attrs, slots }) => { + return () => h(PopoverPortal, + () => h(PopoverContentPrimitive, + { + align: 'center', + sideOffset: 20, // set default value + + ...attrs, + ...props, + class: cn('z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', attrs.class), + }, slots), + ) + }, { + name: 'PopoverContent', + }, +) diff --git a/packages/shadcn-vue/src/components/ui/PopoverDemo.vue b/packages/shadcn-vue/src/components/ui/PopoverDemo.vue new file mode 100644 index 00000000..3f5de128 --- /dev/null +++ b/packages/shadcn-vue/src/components/ui/PopoverDemo.vue @@ -0,0 +1,67 @@ + + +