🔱: [client] sync upgrade with 6 commits [trident-sync]

chore:
chore: help menu
chore: help menu
fix: 修复 antdv 弹出菜单边框过大的问题
fix: 修复 antdv懒加载后dropdown按钮无法点击的bug
pull/91/head
GitHub Actions Bot 2025-03-05 19:24:47 +00:00
parent 140606744b
commit 2b4b15f558
11 changed files with 142 additions and 55 deletions

View File

@ -62,5 +62,6 @@ export default defineComponent({
.fs-highlight {
margin: 0px;
border-radius: 4px;
font-size: 12px;
}
</style>

View File

@ -15,15 +15,15 @@ const userStore = useUserStore();
const accessStore = useAccessStore();
const menus = computed(() => [
{
handler: () => {
openWindow(VBEN_DOC_URL, {
target: "_blank"
});
},
icon: BookOpenText,
text: $t("ui.widgets.document")
}
// {
// handler: () => {
// openWindow(VBEN_DOC_URL, {
// target: "_blank"
// });
// },
// icon: BookOpenText,
// text: $t("ui.widgets.document")
// }
]);
const avatar = computed(() => {
@ -38,7 +38,7 @@ async function handleLogout() {
<template>
<BasicLayout @clear-preferences-and-logout="handleLogout">
<template #user-dropdown>
<UserDropdown :avatar :menus :text="userStore.userInfo?.nickName" description="ann.vben@gmail.com" tag-text="Pro" @logout="handleLogout" />
<UserDropdown :avatar :menus :text="userStore.userInfo?.nickName" description="development@handsfree.work" tag-text="Pro" @logout="handleLogout" />
</template>
<template #lock-screen>
<LockScreen :avatar @to-login="handleLogout" />

View File

@ -1,19 +1,15 @@
import { defineAsyncComponent } from "vue";
import Input from "ant-design-vue/es/input/Input";
import Button from "ant-design-vue/es/button/button";
export default {
install(app: any) {
app.component(
"AInput",
defineAsyncComponent(() => import("ant-design-vue/es/input/Input"))
);
app.component("AInput", Input);
app.component("AButton", Button);
app.component(
"AInputPassword",
defineAsyncComponent(() => import("ant-design-vue/es/input/Password"))
);
app.component(
"AButton",
defineAsyncComponent(() => import("ant-design-vue/es/button/button"))
);
app.component(
"AButtonGroup",
defineAsyncComponent(() => import("ant-design-vue/es/button/button-group"))
@ -158,5 +154,18 @@ export default {
"AToar",
defineAsyncComponent(() => import("ant-design-vue/es/tree-select"))
);
app.component(
"AMenu",
defineAsyncComponent(() => import("ant-design-vue/es/menu/index"))
);
app.component(
"ASubMenu",
defineAsyncComponent(() => import("ant-design-vue/es/menu/src/SubMenu"))
);
app.component(
"AMenuItem",
defineAsyncComponent(() => import("ant-design-vue/es/menu/src/MenuItem"))
);
}
};

View File

@ -35,7 +35,8 @@ export const frameworkResource = [
auth: true
}
},
...dynamicRoutes
// @ts-ignore
...dynamicRoutes.sort((a, b) => (a.meta?.order || 0) - (b.meta?.order || 0))
]
}
];

View File

@ -0,0 +1,85 @@
import { IFrameView } from "/@/vben/layouts";
export const aboutResource = [
{
title: "关于",
name: "about",
path: "/about",
redirect: "/about/doc",
meta: {
icon: "lucide:copyright",
order: 9999
},
children: [
{
title: "文档",
name: "document",
path: "/about/doc",
component: IFrameView,
meta: {
icon: "lucide:book-open-text",
link: "http://fast-crud.docmirror.cn/",
title: "文档"
}
},
{
name: "Github",
path: "/about/github",
component: IFrameView,
meta: {
icon: "mdi:github",
link: "https://github.com/fast-crud/fast-crud",
title: "Github"
}
},
{
name: "Gitee",
path: "/about/gitee",
component: IFrameView,
meta: {
icon: "ion:logo-octocat",
link: "https://gitee.com/fast-crud/fast-crud",
title: "Gite"
}
},
{
title: "其他Demo",
name: "demo",
path: "/about/demo",
meta: {
icon: "ion:git-branch-outline"
},
children: [
{
title: "Element版",
path: "/about/demo/element",
component: IFrameView,
meta: {
link: "http://fast-crud.docmirror.cn/element/",
title: "Element版"
}
},
{
title: "Naive版",
path: "/about/demo/naive",
component: IFrameView,
meta: {
link: "http://fast-crud.docmirror.cn/naive/",
title: "Naive版"
}
},
{
title: "VbenAdmin",
path: "/about/demo/vben",
meta: {
link: "http://fast-crud.docmirror.cn/vben/",
title: "VbenAdmin"
}
}
]
}
]
}
];
export default aboutResource;

View File

@ -31,4 +31,4 @@ export const uiResources = [
}
];
export default uiResources;
// export default uiResources;

View File

@ -382,6 +382,9 @@ function removeMenuItem(item: MenuItemRegistered) {
.is-menu-align {
justify-content: var(--menu-align, start);
}
.vben-menu__popup-container {
padding: 0px !important;
}
.vben-menu__popup-container,
.vben-menu {

View File

@ -1,24 +1,24 @@
<script setup lang="ts">
import type { VbenButtonProps } from './button';
import type { VbenButtonProps } from "./button";
import { computed } from 'vue';
import { computed } from "vue";
import { LoaderCircle } from '/@/vben/icons';
import { cn } from '/@/vben/shared/utils';
import { LoaderCircle } from "/@/vben/icons";
import { cn } from "/@/vben/shared/utils";
import { Primitive } from 'radix-vue';
import { Primitive } from "radix-vue";
import { buttonVariants } from '../../ui';
import { buttonVariants } from "../../ui";
interface Props extends VbenButtonProps {}
const props = withDefaults(defineProps<Props>(), {
as: 'button',
class: '',
as: "button",
class: "",
disabled: false,
loading: false,
size: 'default',
variant: 'default',
size: "default",
variant: "default"
});
const isDisabled = computed(() => {
@ -27,16 +27,8 @@ const isDisabled = computed(() => {
</script>
<template>
<Primitive
:as="as"
:as-child="asChild"
:class="cn(buttonVariants({ variant, size }), props.class)"
:disabled="isDisabled"
>
<LoaderCircle
v-if="loading"
class="text-md mr-2 size-4 flex-shrink-0 animate-spin"
/>
<Primitive :as="as" :as-child="asChild" :class="cn(buttonVariants({ variant, size }), props.class)" :disabled="isDisabled">
<LoaderCircle v-if="loading" class="text-md mr-2 size-4 flex-shrink-0 animate-spin" />
<slot></slot>
</Primitive>
</template>

View File

@ -1,23 +1,20 @@
<script setup lang="ts">
import type { PopoverContentEmits, PopoverContentProps } from 'radix-vue';
import type { PopoverContentEmits, PopoverContentProps } from "radix-vue";
import { computed } from 'vue';
import { computed } from "vue";
import { cn } from '/@/vben/shared/utils';
import { cn } from "/@/vben/shared/utils";
import { PopoverContent, PopoverPortal, useForwardPropsEmits } from 'radix-vue';
import { PopoverContent, PopoverPortal, useForwardPropsEmits } from "radix-vue";
defineOptions({
inheritAttrs: false,
inheritAttrs: false
});
const props = withDefaults(
defineProps<PopoverContentProps & { class?: any }>(),
{
align: 'center',
sideOffset: 4,
},
);
const props = withDefaults(defineProps<PopoverContentProps & { class?: any }>(), {
align: "center",
sideOffset: 4
});
const emits = defineEmits<PopoverContentEmits>();
const delegatedProps = computed(() => {
@ -36,7 +33,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
:class="
cn(
'bg-popover text-popover-foreground 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 border-border w-72 rounded-md border p-4 shadow-md outline-none',
props.class,
props.class
)
"
>

View File

@ -22,7 +22,6 @@ export default defineComponent({
setup() {
const { crudBinding, crudRef, crudExpose, context, crudOptions, resetCrudOptions, appendBindingOptions } = useFs({ createCrudOptions, context: { text: 111 } });
debugger;
const { merge } = useMerge();
setTimeout(() => {
//crudOptions

View File

@ -1,6 +1,6 @@
export default {
crud: ` columns: {
date:{
name:{
title: '姓名', //字段名称
type: 'text', //字段类型,添加、修改、查询将自动生成相应表单组件
},