From 7ed66b321d940ef4e929df66fe99ef7843ccac02 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Fri, 7 May 2021 22:28:38 +0800 Subject: [PATCH] feat: add contextmenu components --- package-lock.json | 18 ++++ package.json | 1 + src/main.ts | 2 + src/plugins/i18n/config.ts | 2 + src/router/index.ts | 23 +++-- src/views/components/contextmenu/basic.vue | 75 +++++++++++++++ src/views/components/contextmenu/index.vue | 34 +++++++ .../components/contextmenu/menuDynamic.vue | 94 +++++++++++++++++++ .../components/contextmenu/menuGroup.vue | 72 ++++++++++++++ src/views/components/count-to/index.vue | 7 +- 10 files changed, 315 insertions(+), 13 deletions(-) create mode 100644 src/views/components/contextmenu/basic.vue create mode 100644 src/views/components/contextmenu/index.vue create mode 100644 src/views/components/contextmenu/menuDynamic.vue create mode 100644 src/views/components/contextmenu/menuGroup.vue diff --git a/package-lock.json b/package-lock.json index eea0b677a..ac5f97399 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "path": "^0.12.7", "path-to-regexp": "^6.2.0", "resize-observer-polyfill": "^1.5.1", + "v-contextmenu": "^3.0.0", "vue": "^3.0.11", "vue-i18n": "^9.1.6", "vue-json-pretty": "^2.0.2", @@ -2549,6 +2550,17 @@ "node": ">= 0.4.0" } }, + "node_modules/v-contextmenu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v-contextmenu/-/v-contextmenu-3.0.0.tgz", + "integrity": "sha512-zi38JxmTt66TmljgV1JbfEa9WvoQkpzRuEwZK7Tjb2XoRejbWLozQtkyTWXJa6x6Y3FrVDfgT36w01gpTpo41A==", + "engines": { + "node": ">=10.16.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vite": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.2.3.tgz", @@ -4946,6 +4958,12 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "v-contextmenu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v-contextmenu/-/v-contextmenu-3.0.0.tgz", + "integrity": "sha512-zi38JxmTt66TmljgV1JbfEa9WvoQkpzRuEwZK7Tjb2XoRejbWLozQtkyTWXJa6x6Y3FrVDfgT36w01gpTpo41A==", + "requires": {} + }, "vite": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/vite/-/vite-2.2.3.tgz", diff --git a/package.json b/package.json index f65569909..12dffa3ee 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "path": "^0.12.7", "path-to-regexp": "^6.2.0", "resize-observer-polyfill": "^1.5.1", + "v-contextmenu": "^3.0.0", "vue": "^3.0.11", "vue-i18n": "^9.1.6", "vue-json-pretty": "^2.0.2", diff --git a/src/main.ts b/src/main.ts index 73497fea8..a2e67933f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,6 +13,8 @@ import "./style/index.scss"; import "./assets/iconfont/iconfont.js"; import "./assets/iconfont/iconfont.css"; +import "v-contextmenu/dist/themes/default.css"; + import { setConfig, getConfig } from "./config"; import axios from "axios"; diff --git a/src/plugins/i18n/config.ts b/src/plugins/i18n/config.ts index a212098d8..cf8e7e1ec 100644 --- a/src/plugins/i18n/config.ts +++ b/src/plugins/i18n/config.ts @@ -31,6 +31,7 @@ export const menusConfig = { hsselector: "选择器组件", hsflowChart: "流程图", hsseamless: "无缝滚动", + hscontextmenu: "右键菜单", }, }, en: { @@ -54,6 +55,7 @@ export const menusConfig = { hsselector: "Selector Components", hsflowChart: "Flow Chart", hsseamless: "Seamless Scroll", + hscontextmenu: "Context Menu", }, }, }; diff --git a/src/router/index.ts b/src/router/index.ts index d712ffa8d..077c93847 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -145,15 +145,18 @@ const routes: Array = [ savedPosition: true, }, }, - // { - // path: '/components/flowChart', - // component: () => import(/* webpackChunkName: "components" */ '../views/components/flow-chart/index.vue'), - // meta: { - // title: 'message.hsflowChart', - // showLink: false, - // savedPosition: true - // } - // } + { + path: "/components/contextmenu", + component: () => + import( + /* webpackChunkName: "components" */ "../views/components/contextmenu/index.vue" + ), + meta: { + title: "message.hscontextmenu", + showLink: false, + savedPosition: true, + }, + }, ], meta: { icon: "el-icon-menu", @@ -355,7 +358,7 @@ router.beforeEach((to, _from, next) => { NProgress.start(); const { t } = i18n.global; // @ts-ignore - document.title = t(to.meta.title); // 动态title + to.meta.title ? (document.title = t(to.meta.title)) : ""; // 动态title whiteList.indexOf(to.path) !== -1 || storageSession.getItem("info") ? next() : next("/login"); // 全部重定向到登录页 diff --git a/src/views/components/contextmenu/basic.vue b/src/views/components/contextmenu/basic.vue new file mode 100644 index 000000000..07435b4e5 --- /dev/null +++ b/src/views/components/contextmenu/basic.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/contextmenu/index.vue b/src/views/components/contextmenu/index.vue new file mode 100644 index 000000000..77d53d453 --- /dev/null +++ b/src/views/components/contextmenu/index.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/views/components/contextmenu/menuDynamic.vue b/src/views/components/contextmenu/menuDynamic.vue new file mode 100644 index 000000000..8f8234f11 --- /dev/null +++ b/src/views/components/contextmenu/menuDynamic.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/contextmenu/menuGroup.vue b/src/views/components/contextmenu/menuGroup.vue new file mode 100644 index 000000000..f20e39f56 --- /dev/null +++ b/src/views/components/contextmenu/menuGroup.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/count-to/index.vue b/src/views/components/count-to/index.vue index f6ffdef07..fe3a16956 100644 --- a/src/views/components/count-to/index.vue +++ b/src/views/components/count-to/index.vue @@ -1,7 +1,7 @@