Browse Source

feat: 添加上下文菜单演示,添加菜单项隐藏性 (#7057)

Co-authored-by: luoqiz <851092732@qq.com>
pull/7043/head
luoqiz 1 month ago
committed by GitHub
parent
commit
89b237f6b4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      packages/@core/ui-kit/shadcn-ui/src/components/context-menu/context-menu.vue
  2. 4
      packages/@core/ui-kit/shadcn-ui/src/components/context-menu/interface.ts
  3. 1
      packages/effects/common-ui/src/components/index.ts
  4. 1
      playground/package.json
  5. 3
      playground/src/locales/langs/en-US/examples.json
  6. 3
      playground/src/locales/langs/zh-CN/examples.json
  7. 9
      playground/src/router/routes/modules/examples.ts
  8. 60
      playground/src/views/examples/context-menu/index.vue
  9. 4151
      pnpm-lock.yaml

1
packages/@core/ui-kit/shadcn-ui/src/components/context-menu/context-menu.vue

@ -73,6 +73,7 @@ function handleClick(menu: IContextMenuItem) {
> >
<template v-for="menu in menusView" :key="menu.key"> <template v-for="menu in menusView" :key="menu.key">
<ContextMenuItem <ContextMenuItem
v-if="!menu.hidden"
:class="itemClass" :class="itemClass"
:disabled="menu.disabled" :disabled="menu.disabled"
:inset="menu.inset || !menu.icon" :inset="menu.inset || !menu.icon"

4
packages/@core/ui-kit/shadcn-ui/src/components/context-menu/interface.ts

@ -10,6 +10,10 @@ interface IContextMenuItem {
* @param data * @param data
*/ */
handler?: (data: any) => void; handler?: (data: any) => void;
/**
* @zh_CN
*/
hidden?: boolean;
/** /**
* @zh_CN * @zh_CN
*/ */

1
packages/effects/common-ui/src/components/index.ts

@ -20,6 +20,7 @@ export {
VbenButtonGroup, VbenButtonGroup,
VbenCheckbox, VbenCheckbox,
VbenCheckButtonGroup, VbenCheckButtonGroup,
VbenContextMenu,
VbenCountToAnimator, VbenCountToAnimator,
VbenFullScreen, VbenFullScreen,
VbenInputPassword, VbenInputPassword,

1
playground/package.json

@ -31,6 +31,7 @@
"dependencies": { "dependencies": {
"@tanstack/vue-query": "catalog:", "@tanstack/vue-query": "catalog:",
"@vben-core/menu-ui": "workspace:*", "@vben-core/menu-ui": "workspace:*",
"@vben-core/shadcn-ui": "workspace:*",
"@vben/access": "workspace:*", "@vben/access": "workspace:*",
"@vben/common-ui": "workspace:*", "@vben/common-ui": "workspace:*",
"@vben/constants": "workspace:*", "@vben/constants": "workspace:*",

3
playground/src/locales/langs/en-US/examples.json

@ -72,5 +72,8 @@
}, },
"button-group": { "button-group": {
"title": "Button Group" "title": "Button Group"
},
"function": {
"contentMenu": "Content Menu"
} }
} }

3
playground/src/locales/langs/zh-CN/examples.json

@ -72,5 +72,8 @@
}, },
"button-group": { "button-group": {
"title": "按钮组" "title": "按钮组"
},
"function": {
"contentMenu": "上下文菜单"
} }
} }

9
playground/src/router/routes/modules/examples.ts

@ -328,6 +328,15 @@ const routes: RouteRecordRaw[] = [
title: $t('examples.button-group.title'), title: $t('examples.button-group.title'),
}, },
}, },
{
name: 'ContextMenu',
path: '/examples/context-menu',
component: () => import('#/views/examples/context-menu/index.vue'),
meta: {
icon: 'mdi:menu',
title: $t('examples.function.contentMenu'),
},
},
], ],
}, },
]; ];

60
playground/src/views/examples/context-menu/index.vue

@ -0,0 +1,60 @@
<script setup lang="ts">
import { Page } from '@vben/common-ui';
import { VbenContextMenu } from '@vben-core/shadcn-ui';
import { Button, Card, message } from 'ant-design-vue';
const needHidden = (role: string) => {
return role === 'user';
};
const contextMenus = () => {
return [
{
text: '刷新',
key: 'refresh',
handler: (data: any) => {
message.success('刷新成功', data);
},
hidden: needHidden('admin'),
},
{
text: '关闭当前',
key: 'close-current',
handler: (data: any) => {
message.success('关闭当前', data);
},
hidden: needHidden('user'),
},
{
text: '关闭其他',
key: 'close-other',
handler: (data: any) => {
message.success('关闭其他', data);
},
},
{
text: '关闭所有',
key: 'close-all',
handler: (data: any) => {
message.success('关闭所有', data);
},
},
];
};
</script>
<template>
<Page title="Context Menu 上下文菜单">
<Card title="基本使用">
<div>一共四个菜单刷新关闭当前关闭其他关闭所有</div>
<br/>
<br/>
<VbenContextMenu :menus="contextMenus" :modal="true" item-class="pr-6">
<Button> 右键点击我打开上下文菜单(有隐藏项) </Button>
</VbenContextMenu>
</Card>
</Page>
</template>

4151
pnpm-lock.yaml

File diff suppressed because it is too large
Loading…
Cancel
Save