Merge branch 'main' of https://github.com/vbenjs/vue-vben-admin into warmflow

This commit is contained in:
dap
2025-01-12 10:07:39 +08:00
42 changed files with 848 additions and 131 deletions

View File

@@ -1,8 +1,12 @@
<script setup lang="ts">
import type { ClassType } from '@vben-core/typings';
import type { DialogContentEmits, DialogContentProps } from 'radix-vue';
import type { ClassType } from '@vben-core/typings';
import { computed, ref } from 'vue';
import { cn } from '@vben-core/shared/utils';
import { X } from 'lucide-vue-next';
import {
DialogClose,
@@ -10,26 +14,26 @@ import {
DialogPortal,
useForwardPropsEmits,
} from 'radix-vue';
import { computed, ref } from 'vue';
import DialogOverlay from './DialogOverlay.vue';
const props = withDefaults(
defineProps<
{
DialogContentProps & {
appendTo?: HTMLElement | string;
class?: ClassType;
closeClass?: ClassType;
modal?: boolean;
open?: boolean;
overlayBlur?: number;
showClose?: boolean;
zIndex?: number;
} & DialogContentProps
}
>(),
{ appendTo: 'body', showClose: true, zIndex: 1000 },
);
const emits = defineEmits<
{ close: []; closed: []; opened: [] } & DialogContentEmits
DialogContentEmits & { close: []; closed: []; opened: [] }
>();
const delegatedProps = computed(() => {
@@ -79,7 +83,12 @@ defineExpose({
<Transition name="fade">
<DialogOverlay
v-if="open && modal"
:style="{ zIndex, position }"
:style="{
zIndex,
position,
backdropFilter:
overlayBlur && overlayBlur > 0 ? `blur(${overlayBlur}px)` : 'none',
}"
@click="() => emits('close')"
/>
</Transition>

View File

@@ -3,10 +3,12 @@ import type { DialogContentEmits, DialogContentProps } from 'radix-vue';
import type { SheetVariants } from './sheet';
import { cn } from '@vben-core/shared/utils';
import { DialogContent, DialogPortal, useForwardPropsEmits } from 'radix-vue';
import { computed, ref } from 'vue';
import { cn } from '@vben-core/shared/utils';
import { DialogContent, DialogPortal, useForwardPropsEmits } from 'radix-vue';
import { sheetVariants } from './sheet';
import SheetOverlay from './SheetOverlay.vue';
@@ -15,6 +17,7 @@ interface SheetContentProps extends DialogContentProps {
class?: any;
modal?: boolean;
open?: boolean;
overlayBlur?: number;
side?: SheetVariants['side'];
zIndex?: number;
}
@@ -29,7 +32,7 @@ const props = withDefaults(defineProps<SheetContentProps>(), {
});
const emits = defineEmits<
{ close: []; closed: []; opened: [] } & DialogContentEmits
DialogContentEmits & { close: []; closed: []; opened: [] }
>();
const delegatedProps = computed(() => {
@@ -73,12 +76,23 @@ function onAnimationEnd(event: AnimationEvent) {
<template>
<DialogPortal :to="appendTo">
<Transition name="fade">
<SheetOverlay v-if="open && modal" :style="{ zIndex, position }" />
<SheetOverlay
v-if="open && modal"
:style="{
zIndex,
position,
backdropFilter:
overlayBlur && overlayBlur > 0 ? `blur(${overlayBlur}px)` : 'none',
}"
/>
</Transition>
<DialogContent
ref="contentRef"
:class="cn(sheetVariants({ side }), props.class)"
:style="{ zIndex, position }"
:style="{
zIndex,
position,
}"
@animationend="onAnimationEnd"
v-bind="{ ...forwarded, ...$attrs }"
>