mirror of https://github.com/certd/certd
				
				
				
			🔱: [client] sync upgrade with 6 commits [trident-sync]
chore: chore: help menu chore: help menu fix: 修复 antdv 弹出菜单边框过大的问题 fix: 修复 antdv懒加载后dropdown按钮无法点击的bugpull/91/head
							parent
							
								
									140606744b
								
							
						
					
					
						commit
						2b4b15f558
					
				| 
						 | 
				
			
			@ -62,5 +62,6 @@ export default defineComponent({
 | 
			
		|||
.fs-highlight {
 | 
			
		||||
  margin: 0px;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"))
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,8 @@ export const frameworkResource = [
 | 
			
		|||
          auth: true
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      ...dynamicRoutes
 | 
			
		||||
      // @ts-ignore
 | 
			
		||||
      ...dynamicRoutes.sort((a, b) => (a.meta?.order || 0) - (b.meta?.order || 0))
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			@ -31,4 +31,4 @@ export const uiResources = [
 | 
			
		|||
  }
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default uiResources;
 | 
			
		||||
// export default uiResources;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
        )
 | 
			
		||||
      "
 | 
			
		||||
    >
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
export default {
 | 
			
		||||
  crud: `  columns: {
 | 
			
		||||
    date:{
 | 
			
		||||
    name:{
 | 
			
		||||
      title: '姓名', //字段名称
 | 
			
		||||
      type: 'text', //字段类型,添加、修改、查询将自动生成相应表单组件
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue