mirror of
https://gitee.com/dapppp/ruoyi-plus-vben5.git
synced 2026-03-08 07:31:09 +08:00
feat: 添加上下文菜单演示,添加菜单项隐藏性 (#7057)
Co-authored-by: luoqiz <851092732@qq.com>
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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 图标
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ export {
|
|||||||
VbenButtonGroup,
|
VbenButtonGroup,
|
||||||
VbenCheckbox,
|
VbenCheckbox,
|
||||||
VbenCheckButtonGroup,
|
VbenCheckButtonGroup,
|
||||||
|
VbenContextMenu,
|
||||||
VbenCountToAnimator,
|
VbenCountToAnimator,
|
||||||
VbenFullScreen,
|
VbenFullScreen,
|
||||||
VbenInputPassword,
|
VbenInputPassword,
|
||||||
|
|||||||
@@ -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:*",
|
||||||
|
|||||||
@@ -72,5 +72,8 @@
|
|||||||
},
|
},
|
||||||
"button-group": {
|
"button-group": {
|
||||||
"title": "Button Group"
|
"title": "Button Group"
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"contentMenu": "Content Menu"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,5 +72,8 @@
|
|||||||
},
|
},
|
||||||
"button-group": {
|
"button-group": {
|
||||||
"title": "按钮组"
|
"title": "按钮组"
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"contentMenu": "上下文菜单"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
Normal file
60
playground/src/views/examples/context-menu/index.vue
Normal file
@@ -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>
|
||||||
4163
pnpm-lock.yaml
generated
4163
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user