@imengyu/vue3-context-menu 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.CN.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  * 简洁易用,体积小
13
13
  * 提供组件模式和函数模式,调用方便
14
- * 提供多个菜单主体供您使用
14
+ * 提供多个菜单主题供您使用
15
15
  * 可自定义
16
16
 
17
17
  ### 用法
package/README.md CHANGED
@@ -13,6 +13,7 @@ English | [简体中文](https://github.com/imengyu/vue3-context-menu/blob/main/
13
13
 
14
14
  * Simple and easy to use, small size
15
15
  * Provide component mode and function mode
16
+ * Provide multiple theme styles for your use
16
17
  * Customizable
17
18
 
18
19
  ## Documentation
@@ -3050,9 +3050,9 @@ var es_array_index_of = __webpack_require__(2772);
3050
3050
  var es_array_for_each = __webpack_require__(9554);
3051
3051
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js
3052
3052
  var es_array_splice = __webpack_require__(561);
3053
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextMenuItem.vue?vue&type=template&id=6785ddf2&ts=true
3053
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextMenuItem.vue?vue&type=template&id=f61bf578&ts=true
3054
3054
 
3055
- var ContextMenuItemvue_type_template_id_6785ddf2_ts_true_hoisted_1 = {
3055
+ var ContextMenuItemvue_type_template_id_f61bf578_ts_true_hoisted_1 = {
3056
3056
  key: 0,
3057
3057
  "class": "mx-context-menu-item-wrapper",
3058
3058
  ref: "menuItemRef",
@@ -3072,14 +3072,14 @@ var _hoisted_5 = {
3072
3072
  var _hoisted_6 = {
3073
3073
  "class": "mx-shortcut"
3074
3074
  };
3075
- function ContextMenuItemvue_type_template_id_6785ddf2_ts_true_render(_ctx, _cache, $props, $setup, $data, $options) {
3075
+ function ContextMenuItemvue_type_template_id_f61bf578_ts_true_render(_ctx, _cache, $props, $setup, $data, $options) {
3076
3076
  var _component_VNodeRender = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("VNodeRender");
3077
3077
 
3078
3078
  var _component_ContextMenuIconCheck = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("ContextMenuIconCheck");
3079
3079
 
3080
3080
  var _component_ContextMenuIconRight = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("ContextMenuIconRight");
3081
3081
 
3082
- return !_ctx.hidden ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ContextMenuItemvue_type_template_id_6785ddf2_ts_true_hoisted_1, [_ctx.globalHasSlot('itemRender') ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_VNodeRender, {
3082
+ return !_ctx.hidden ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ContextMenuItemvue_type_template_id_f61bf578_ts_true_hoisted_1, [_ctx.globalHasSlot('itemRender') ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_VNodeRender, {
3083
3083
  key: 0,
3084
3084
  vnode: function vnode() {
3085
3085
  return _ctx.globalRenderSlot('itemRender', _ctx.getItemDataForChildren());
@@ -3164,7 +3164,7 @@ function ContextMenuItemvue_type_template_id_6785ddf2_ts_true_render(_ctx, _cach
3164
3164
  key: 3
3165
3165
  }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 512)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true);
3166
3166
  }
3167
- ;// CONCATENATED MODULE: ./src/ContextMenuItem.vue?vue&type=template&id=6785ddf2&ts=true
3167
+ ;// CONCATENATED MODULE: ./src/ContextMenuItem.vue?vue&type=template&id=f61bf578&ts=true
3168
3168
 
3169
3169
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextMenuIconCheck.vue?vue&type=template&id=f3b78eb6
3170
3170
 
@@ -3462,18 +3462,20 @@ const ContextMenuIconRight_exports_ = /*#__PURE__*/(0,exportHelper/* default */.
3462
3462
  if (disabled.value || e && e.target.classList.contains('mx-context-no-clickable')) return; //Has submenu?
3463
3463
 
3464
3464
  if (hasChildren.value) {
3465
- if (clickableWhenHasChildren.value && typeof clickHandler.value === 'function') clickHandler.value();else if (!_showSubMenu.value) onMouseEnter();
3465
+ if (clickableWhenHasChildren.value) {
3466
+ if (typeof clickHandler.value === 'function') clickHandler.value();
3467
+ context.emit('click');
3468
+ } else if (!_showSubMenu.value) onMouseEnter();
3466
3469
  } else {
3467
3470
  //Call hander from options
3468
3471
  if (typeof clickHandler.value === 'function') clickHandler.value();
3472
+ context.emit('click');
3469
3473
 
3470
3474
  if (clickClose.value) {
3471
3475
  //emit close
3472
3476
  globalCloseMenu();
3473
3477
  }
3474
3478
  }
3475
-
3476
- context.emit('click');
3477
3479
  } //MouseEnter handler: show item submenu
3478
3480
 
3479
3481
 
@@ -3538,7 +3540,7 @@ const ContextMenuIconRight_exports_ = /*#__PURE__*/(0,exportHelper/* default */.
3538
3540
 
3539
3541
 
3540
3542
  ;
3541
- const ContextMenuItem_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(ContextMenuItemvue_type_script_lang_ts, [['render',ContextMenuItemvue_type_template_id_6785ddf2_ts_true_render]])
3543
+ const ContextMenuItem_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(ContextMenuItemvue_type_script_lang_ts, [['render',ContextMenuItemvue_type_template_id_f61bf578_ts_true_render]])
3542
3544
 
3543
3545
  /* harmony default export */ const ContextMenuItem = (ContextMenuItem_exports_);
3544
3546
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextMenuSeparator.vue?vue&type=template&id=27643a0a&ts=true
@@ -4018,7 +4020,7 @@ const ContextSubMenu_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Con
4018
4020
  document.removeEventListener("contextmenu", onBodyClick, true);
4019
4021
  document.removeEventListener("click", onBodyClick, true);
4020
4022
  document.removeEventListener("wheel", onBodyWhell, true);
4021
- if (options.value.keyboardControl) document.removeEventListener('keydown', onMenuKeyDown);
4023
+ if (options.value.keyboardControl !== false) document.removeEventListener('keydown', onMenuKeyDown);
4022
4024
  } //For keyboard event, remember which submenu is active
4023
4025
 
4024
4026
 
@@ -4030,11 +4032,7 @@ const ContextSubMenu_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Con
4030
4032
  function onMenuKeyDown(e) {
4031
4033
  var _currentOpenedMenu$va3, _currentOpenedMenu$va4, _currentOpenedMenu$va5, _currentOpenedMenu$va6, _currentOpenedMenu$va8, _currentOpenedMenu$va9;
4032
4034
 
4033
- if (currentOpenedMenu.value) {
4034
- e.stopPropagation();
4035
- e.preventDefault();
4036
- } //Handle keyboard event
4037
-
4035
+ var handled = true; //Handle keyboard event
4038
4036
 
4039
4037
  switch (e.key) {
4040
4038
  case "Escape":
@@ -4083,6 +4081,15 @@ const ContextSubMenu_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Con
4083
4081
  case "Enter":
4084
4082
  (_currentOpenedMenu$va9 = currentOpenedMenu.value) === null || _currentOpenedMenu$va9 === void 0 ? void 0 : _currentOpenedMenu$va9.triggerCurrentItemClick();
4085
4083
  break;
4084
+
4085
+ default:
4086
+ handled = false;
4087
+ break;
4088
+ }
4089
+
4090
+ if (handled && currentOpenedMenu.value) {
4091
+ e.stopPropagation();
4092
+ e.preventDefault();
4086
4093
  }
4087
4094
  }
4088
4095
 
@@ -4185,10 +4192,10 @@ const ContextSubMenu_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(Con
4185
4192
  }));
4186
4193
  ;// CONCATENATED MODULE: ./src/ContextSubMenuWrapper.vue?vue&type=script&lang=ts
4187
4194
 
4188
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextSubMenuWrapper.vue?vue&type=style&index=0&id=3dc2078b&lang=css
4195
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ContextSubMenuWrapper.vue?vue&type=style&index=0&id=46acb3c0&lang=css
4189
4196
  // extracted by mini-css-extract-plugin
4190
4197
 
4191
- ;// CONCATENATED MODULE: ./src/ContextSubMenuWrapper.vue?vue&type=style&index=0&id=3dc2078b&lang=css
4198
+ ;// CONCATENATED MODULE: ./src/ContextSubMenuWrapper.vue?vue&type=style&index=0&id=46acb3c0&lang=css
4192
4199
 
4193
4200
  ;// CONCATENATED MODULE: ./src/ContextSubMenuWrapper.vue
4194
4201
 
@@ -4356,6 +4363,54 @@ function _typeof(obj) {
4356
4363
  "default": 'iconfont'
4357
4364
  },
4358
4365
 
4366
+ /**
4367
+ * Is this menu item checked?
4368
+ *
4369
+ * The check mark are displayed on the left side of the icon, so it is not recommended to display the icon at the same time.
4370
+ */
4371
+ checked: {
4372
+ type: Boolean,
4373
+ "default": false
4374
+ },
4375
+
4376
+ /**
4377
+ * Shortcut key text display on the right.
4378
+ *
4379
+ * The shortcut keys here are only for display. You need to handle the key events by yourself.
4380
+ */
4381
+ shortcut: {
4382
+ type: String,
4383
+ "default": ''
4384
+ },
4385
+
4386
+ /**
4387
+ * Display icons use svg symbol (`<use xlink:href="#icon-symbol-name">`) , only valid when icon attribute is empty.
4388
+ */
4389
+ svgIcon: {
4390
+ type: String,
4391
+ "default": ''
4392
+ },
4393
+
4394
+ /**
4395
+ * The user-defined attribute of the svg tag, which is valid when using `svgIcon`.
4396
+ */
4397
+ svgProps: {
4398
+ type: Object,
4399
+ "default": null
4400
+ },
4401
+
4402
+ /**
4403
+ * Should a fixed-width icon area be reserved for menu items without icon. (this item)
4404
+ *
4405
+ * Default is true .
4406
+ *
4407
+ * The width of icon area can be override with css var `--mx-menu-placeholder-width`.
4408
+ */
4409
+ preserveIconWidth: {
4410
+ type: Boolean,
4411
+ "default": true
4412
+ },
4413
+
4359
4414
  /**
4360
4415
  * Show right arrow on this menu?
4361
4416
  */