vxe-pc-ui 4.11.32 → 4.11.34

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.
Files changed (55) hide show
  1. package/es/button/src/button-group.js +11 -5
  2. package/es/button/src/button.js +12 -4
  3. package/es/context-menu/src/context-menu.js +218 -3
  4. package/es/context-menu/style.css +1 -1
  5. package/es/context-menu/style.min.css +1 -1
  6. package/es/icon/style.css +1 -1
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/tree/src/tree.js +1 -0
  10. package/es/ui/index.js +1 -1
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-context-menu/style.css +1 -1
  13. package/es/vxe-context-menu/style.min.css +1 -1
  14. package/lib/button/src/button-group.js +12 -7
  15. package/lib/button/src/button-group.min.js +1 -1
  16. package/lib/button/src/button.js +11 -4
  17. package/lib/button/src/button.min.js +1 -1
  18. package/lib/context-menu/src/context-menu.js +219 -2
  19. package/lib/context-menu/src/context-menu.min.js +1 -1
  20. package/lib/context-menu/style/style.css +1 -1
  21. package/lib/context-menu/style/style.min.css +1 -1
  22. package/lib/icon/style/style.css +1 -1
  23. package/lib/icon/style/style.min.css +1 -1
  24. package/lib/index.umd.js +248 -15
  25. package/lib/index.umd.min.js +1 -1
  26. package/lib/style.css +1 -1
  27. package/lib/style.min.css +1 -1
  28. package/lib/tree/src/tree.js +4 -0
  29. package/lib/tree/src/tree.min.js +1 -1
  30. package/lib/ui/index.js +1 -1
  31. package/lib/ui/index.min.js +1 -1
  32. package/lib/ui/src/log.js +1 -1
  33. package/lib/ui/src/log.min.js +1 -1
  34. package/lib/vxe-context-menu/style/style.css +1 -1
  35. package/lib/vxe-context-menu/style/style.min.css +1 -1
  36. package/package.json +1 -1
  37. package/packages/button/src/button-group.ts +14 -6
  38. package/packages/button/src/button.ts +13 -4
  39. package/packages/context-menu/src/context-menu.ts +216 -4
  40. package/packages/tree/src/tree.ts +1 -0
  41. package/styles/components/context-menu.scss +1 -1
  42. package/types/components/button-group.d.ts +9 -1
  43. package/types/components/button.d.ts +9 -1
  44. /package/es/icon/{iconfont.1767614230277.ttf → iconfont.1767662202838.ttf} +0 -0
  45. /package/es/icon/{iconfont.1767614230277.woff → iconfont.1767662202838.woff} +0 -0
  46. /package/es/icon/{iconfont.1767614230277.woff2 → iconfont.1767662202838.woff2} +0 -0
  47. /package/es/{iconfont.1767614230277.ttf → iconfont.1767662202838.ttf} +0 -0
  48. /package/es/{iconfont.1767614230277.woff → iconfont.1767662202838.woff} +0 -0
  49. /package/es/{iconfont.1767614230277.woff2 → iconfont.1767662202838.woff2} +0 -0
  50. /package/lib/icon/style/{iconfont.1767614230277.ttf → iconfont.1767662202838.ttf} +0 -0
  51. /package/lib/icon/style/{iconfont.1767614230277.woff → iconfont.1767662202838.woff} +0 -0
  52. /package/lib/icon/style/{iconfont.1767614230277.woff2 → iconfont.1767662202838.woff2} +0 -0
  53. /package/lib/{iconfont.1767614230277.ttf → iconfont.1767662202838.ttf} +0 -0
  54. /package/lib/{iconfont.1767614230277.woff → iconfont.1767662202838.woff} +0 -0
  55. /package/lib/{iconfont.1767614230277.woff2 → iconfont.1767662202838.woff2} +0 -0
@@ -1073,6 +1073,7 @@ export default defineVxeComponent({
1073
1073
  if (!lazy || !treeExpandLazyLoadedMaps[nodeid]) {
1074
1074
  handleBaseTreeExpand([node], expanded);
1075
1075
  }
1076
+ dispatchEvent('node-expand', { node, expanded }, evnt);
1076
1077
  };
1077
1078
  const updateCheckboxStatus = () => {
1078
1079
  const { transform } = props;
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI, setConfig, setIcon } from '@vxe-ui/core';
2
2
  import { dynamicApp } from '../dynamics';
3
3
  import { warnLog } from './src/log';
4
- export const version = "4.11.32";
4
+ export const version = "4.11.34";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
package/es/ui/src/log.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { log } from '@vxe-ui/core';
2
- const version = `ui v${"4.11.32"}`;
2
+ const version = `ui v${"4.11.34"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -58,7 +58,7 @@
58
58
  background-color: rgba(0, 0, 0, 0.1);
59
59
  }
60
60
 
61
- .vxe-context-menu--first-item.is--active .vxe-context-menu--children-wrapper {
61
+ .vxe-context-menu--first-item.is--subactive .vxe-context-menu--children-wrapper {
62
62
  display: block;
63
63
  }
64
64
 
@@ -1 +1 @@
1
- .vxe-context-menu{display:none;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu.is--visible{display:block}.vxe-context-menu.is--fixed{position:fixed}.vxe-context-menu.is--absolute{position:absolute}.vxe-context-menu.cp--left .vxe-context-menu--children-wrapper{left:calc(-100% + 2px)}.vxe-context-menu.cp--right .vxe-context-menu--children-wrapper{left:calc(100% - 2px)}.vxe-context-menu--group-wrapper{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-context-menu--group-wrapper:first-child{border:0}.vxe-context-menu--children-wrapper,.vxe-context-menu--wrapper{padding:0;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);border:1px solid var(--vxe-ui-base-popup-border-color);background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.vxe-context-menu--children-wrapper{display:none;position:absolute;transform:translateY(-5px)}.vxe-context-menu--item-wrapper{position:relative;min-width:12em;max-width:20em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu--item-wrapper.is--active{background-color:rgba(0,0,0,.1)}.vxe-context-menu--first-item.is--active .vxe-context-menu--children-wrapper{display:block}.vxe-context-menu--item-inner{height:var(--vxe-ui-context-menu-option-height);display:flex;align-items:center;padding:0 .8em;cursor:pointer}.vxe-context-menu--item-inner.is--loading{opacity:.5;cursor:progress}.vxe-context-menu--item-inner.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-context-menu--item-prefix{min-width:1em;text-align:center}.vxe-context-menu--item-prefix,.vxe-context-menu--item-suffix{flex-shrink:0;font-size:.9em}.vxe-context-menu--item-label{font-size:.9em;padding:0 .5em;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-context-menu{font-size:var(--vxe-ui-font-size-default)}.vxe-context-menu.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-context-menu.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-context-menu.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ .vxe-context-menu{display:none;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu.is--visible{display:block}.vxe-context-menu.is--fixed{position:fixed}.vxe-context-menu.is--absolute{position:absolute}.vxe-context-menu.cp--left .vxe-context-menu--children-wrapper{left:calc(-100% + 2px)}.vxe-context-menu.cp--right .vxe-context-menu--children-wrapper{left:calc(100% - 2px)}.vxe-context-menu--group-wrapper{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-context-menu--group-wrapper:first-child{border:0}.vxe-context-menu--children-wrapper,.vxe-context-menu--wrapper{padding:0;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);border:1px solid var(--vxe-ui-base-popup-border-color);background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.vxe-context-menu--children-wrapper{display:none;position:absolute;transform:translateY(-5px)}.vxe-context-menu--item-wrapper{position:relative;min-width:12em;max-width:20em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu--item-wrapper.is--active{background-color:rgba(0,0,0,.1)}.vxe-context-menu--first-item.is--subactive .vxe-context-menu--children-wrapper{display:block}.vxe-context-menu--item-inner{height:var(--vxe-ui-context-menu-option-height);display:flex;align-items:center;padding:0 .8em;cursor:pointer}.vxe-context-menu--item-inner.is--loading{opacity:.5;cursor:progress}.vxe-context-menu--item-inner.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-context-menu--item-prefix{min-width:1em;text-align:center}.vxe-context-menu--item-prefix,.vxe-context-menu--item-suffix{flex-shrink:0;font-size:.9em}.vxe-context-menu--item-label{font-size:.9em;padding:0 .5em;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-context-menu{font-size:var(--vxe-ui-font-size-default)}.vxe-context-menu.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-context-menu.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-context-menu.size--mini{font-size:var(--vxe-ui-font-size-mini)}
@@ -28,7 +28,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
28
28
  default: () => (0, _ui.getConfig)().buttonGroup.size || (0, _ui.getConfig)().size
29
29
  }
30
30
  },
31
- emits: ['click'],
31
+ emits: ['click', 'contextmenu'],
32
32
  setup(props, context) {
33
33
  const {
34
34
  slots,
@@ -48,12 +48,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
48
48
  const {
49
49
  computePermissionInfo
50
50
  } = (0, _ui.usePermission)(props);
51
+ const dispatchEvent = (type, params, evnt) => {
52
+ emit(type, (0, _ui.createEvent)(evnt, {
53
+ $buttonGroup: $xeButtonGroup
54
+ }, params));
55
+ };
51
56
  const buttonGroupMethods = {
52
- dispatchEvent(type, params, evnt) {
53
- emit(type, (0, _ui.createEvent)(evnt, {
54
- $buttonGroup: $xeButtonGroup
55
- }, params));
56
- }
57
+ dispatchEvent
57
58
  };
58
59
  const buttonGroupPrivateMethods = {
59
60
  handleClick(params, evnt) {
@@ -69,6 +70,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
69
70
  }), evnt);
70
71
  }
71
72
  };
73
+ const contextmenuEvent = evnt => {
74
+ dispatchEvent('contextmenu', {}, evnt);
75
+ };
72
76
  Object.assign($xeButtonGroup, buttonGroupMethods, buttonGroupPrivateMethods);
73
77
  const renderVN = () => {
74
78
  const {
@@ -86,7 +90,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
86
90
  $buttonGroup: $xeButtonGroup
87
91
  }) : className : '', {
88
92
  'is--vertical': vertical
89
- }]
93
+ }],
94
+ onContextmenu: contextmenuEvent
90
95
  }, defaultSlot ? defaultSlot({}) : options ? options.map((item, index) => {
91
96
  return (0, _vue.h)(_button.default, Object.assign({
92
97
  key: index
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_xeUtils=_interopRequireDefault(require("xe-utils")),_button=_interopRequireDefault(require("./button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeButtonGroup",props:{options:Array,mode:String,status:String,round:Boolean,vertical:Boolean,circle:Boolean,align:String,className:[String,Function],disabled:Boolean,permissionCode:[String,Number],size:{type:String,default:()=>(0,_ui.getConfig)().buttonGroup.size||(0,_ui.getConfig)().size}},emits:["click"],setup(n,e){const{slots:o,emit:u}=e;var t=_xeUtils.default.uniqueId(),i=(0,_vue.reactive)({});const r={},s={xID:t,props:n,context:e,reactData:i,getComputeMaps:()=>r},a=((0,_ui.useSize)(n),(0,_ui.usePermission)(n))["computePermissionInfo"],l={dispatchEvent(e,t,i){u(e,(0,_ui.createEvent)(i,{$buttonGroup:s},t))}};Object.assign(s,l,{handleClick(e,t){var i=n["options"];const u=e["name"];i=i?i.find(e=>e.name===u):null;l.dispatchEvent("click",Object.assign(Object.assign({},e),{option:i}),t)}});return s.renderVN=()=>{var{className:e,options:t,vertical:i}=n,u=a.value,r=o.default;return u.visible?(0,_vue.h)("div",{class:["vxe-button-group",e?_xeUtils.default.isFunction(e)?e({$buttonGroup:s}):e:"",{"is--vertical":i}]},r?r({}):t?t.map((e,t)=>(0,_vue.h)(_button.default,Object.assign({key:t},e))):[]):(0,_ui.renderEmptyElement)(s)},(0,_vue.provide)("$xeButtonGroup",s),s},render(){return this.renderVN()}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_xeUtils=_interopRequireDefault(require("xe-utils")),_button=_interopRequireDefault(require("./button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeButtonGroup",props:{options:Array,mode:String,status:String,round:Boolean,vertical:Boolean,circle:Boolean,align:String,className:[String,Function],disabled:Boolean,permissionCode:[String,Number],size:{type:String,default:()=>(0,_ui.getConfig)().buttonGroup.size||(0,_ui.getConfig)().size}},emits:["click","contextmenu"],setup(r,e){const{slots:o,emit:n}=e;var t=_xeUtils.default.uniqueId(),i=(0,_vue.reactive)({});const u={},s={xID:t,props:r,context:e,reactData:i,getComputeMaps:()=>u},a=((0,_ui.useSize)(r),(0,_ui.usePermission)(r))["computePermissionInfo"],l=(e,t,i)=>{n(e,(0,_ui.createEvent)(i,{$buttonGroup:s},t))},c={dispatchEvent:l},p=e=>{l("contextmenu",{},e)};Object.assign(s,c,{handleClick(e,t){var i=r["options"];const n=e["name"];i=i?i.find(e=>e.name===n):null;c.dispatchEvent("click",Object.assign(Object.assign({},e),{option:i}),t)}});return s.renderVN=()=>{var{className:e,options:t,vertical:i}=r,n=a.value,u=o.default;return n.visible?(0,_vue.h)("div",{class:["vxe-button-group",e?_xeUtils.default.isFunction(e)?e({$buttonGroup:s}):e:"",{"is--vertical":i}],onContextmenu:p},u?u({}):t?t.map((e,t)=>(0,_vue.h)(_button.default,Object.assign({key:t},e))):[]):(0,_ui.renderEmptyElement)(s)},(0,_vue.provide)("$xeButtonGroup",s),s},render(){return this.renderVN()}});
@@ -115,7 +115,7 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
115
115
  default: null
116
116
  }
117
117
  },
118
- emits: ['click', 'mouseenter', 'mouseleave', 'dropdown-click', 'dropdownClick'],
118
+ emits: ['click', 'mouseenter', 'mouseleave', 'dropdown-click', 'dropdownClick', 'contextmenu'],
119
119
  setup(props, context) {
120
120
  const {
121
121
  slots,
@@ -393,6 +393,9 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
393
393
  const mouseleaveEvent = evnt => {
394
394
  dispatchEvent('mouseleave', {}, evnt);
395
395
  };
396
+ const contextmenuEvent = evnt => {
397
+ dispatchEvent('contextmenu', {}, evnt);
398
+ };
396
399
  const clickTargetEvent = evnt => {
397
400
  const {
398
401
  loading,
@@ -629,7 +632,9 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
629
632
  return (0, _ui.renderEmptyElement)($xeButton);
630
633
  }
631
634
  if (dropdownsSlot || downBtnList.length) {
632
- const btnOns = {};
635
+ const btnOns = {
636
+ onContextmenu: contextmenuEvent
637
+ };
633
638
  const panelOns = {};
634
639
  if (trigger === 'hover') {
635
640
  // hover 触发
@@ -754,7 +759,8 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
754
759
  to: routerLink,
755
760
  onClick: clickEvent,
756
761
  onMouseenter: mouseenterEvent,
757
- onMouseleave: mouseleaveEvent
762
+ onMouseleave: mouseleaveEvent,
763
+ onContextmenu: contextmenuEvent
758
764
  }, {
759
765
  default() {
760
766
  return renderContent();
@@ -779,7 +785,8 @@ const VxeButtonComponent = (0, _comp.defineVxeComponent)({
779
785
  disabled: btnDisabled || loading,
780
786
  onClick: clickEvent,
781
787
  onMouseenter: mouseenterEvent,
782
- onMouseleave: mouseleaveEvent
788
+ onMouseleave: mouseleaveEvent,
789
+ onContextmenu: contextmenuEvent
783
790
  }, renderContent());
784
791
  };
785
792
  $xeButton.renderVN = renderVN;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_tooltip=_interopRequireDefault(require("../../tooltip/src/tooltip"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeButtonComponent=(0,_comp.defineVxeComponent)({name:"VxeButton",props:{type:String,mode:String,className:[String,Function],popupClassName:[String,Function],size:{type:String,default:()=>(0,_ui.getConfig)().button.size||(0,_ui.getConfig)().size},zIndex:Number,name:[String,Number],routerLink:Object,permissionCode:[String,Number],content:String,placement:String,status:String,title:String,icon:String,iconRender:Object,prefixIcon:String,prefixRender:Object,suffixIcon:String,suffixRender:Object,round:Boolean,circle:Boolean,disabled:Boolean,loading:Boolean,trigger:{type:String,default:()=>(0,_ui.getConfig)().button.trigger},align:String,prefixTooltip:Object,suffixTooltip:Object,options:Array,showDropdownIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().button.showDropdownIcon},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().button.destroyOnClose},transfer:{type:Boolean,default:null}},emits:["click","mouseenter","mouseleave","dropdown-click","dropdownClick"],setup(O,e){const{slots:I,emit:i}=e,n=(0,_vue.inject)("$xeModal",null),o=(0,_vue.inject)("$xeDrawer",null),u=(0,_vue.inject)("$xeTable",null),s=(0,_vue.inject)("$xeTree",null),l=(0,_vue.inject)("$xeForm",null),a=(0,_vue.inject)("$xeButtonGroup",null);var t=_xeUtils.default.uniqueId();const N=(0,_ui.useSize)(O)["computeSize"],P=(0,_ui.usePermission)(O)["computePermissionInfo"],S=(0,_vue.reactive)({initialized:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1,panelIndex:0,panelStyle:{},panelPlacement:""}),r={showTime:void 0,tooltipTimeout:void 0},B=(0,_vue.ref)(),j=(0,_vue.ref)(),z=(0,_vue.ref)(),c={refElem:B},$={xID:t,props:O,context:e,reactData:S,internalData:r,getRefMaps:()=>c};const V=(0,_vue.computed)(()=>{var e=O["transfer"];if(null===e){var t=(0,_ui.getConfig)().button.transfer;if(_xeUtils.default.isBoolean(t))return t;if(u||s||n||o||l)return!0}return e}),E=(0,_vue.computed)(()=>{var e=O["disabled"],t=P.value;return e||t.disabled}),M=(0,_vue.computed)(()=>{var e=O["type"];return!!e&&-1<["submit","reset","button"].indexOf(e)}),U=(0,_vue.computed)(()=>{var{type:e,mode:t}=O;return"text"===t||"text"===e||a&&"text"===a.props.mode?"text":"button"}),D=(0,_vue.computed)(()=>{var e=O["status"];return e||(a?a.props.status:"")}),W=(0,_vue.computed)(()=>{var e=O["align"];return e||!!a&&a.props.align}),Z=(0,_vue.computed)(()=>{var e=O["round"];return e||!!a&&a.props.round}),J=(0,_vue.computed)(()=>{var e=O["circle"];return e||!!a&&a.props.circle}),K=(0,_vue.computed)(()=>{var e=O["options"];return e?e.filter(e=>{e=e.permissionCode;return!e||_ui.permission.checkVisible(e)}):[]}),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.prefixTooltip,O.prefixTooltip)),b=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.suffixTooltip,O.suffixTooltip)),p=()=>{var e=O["zIndex"];e?S.panelIndex=e:S.panelIndex<(0,_utils.getLastZIndex)()&&(S.panelIndex=(0,_utils.nextZIndex)())},v=()=>{const n=O["placement"],i=S["panelIndex"],o=j.value,u=z.value,s=V.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(o,u,{placement:n,teleportTo:s}),t=Object.assign(e.style,{zIndex:i});S.panelStyle=t,S.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},q=e=>{a&&a.handleClick({name:O.name},e),H("click",{$event:e},e)},Q=e=>{0===e.button&&e.stopPropagation()},X=e=>{var t=e.currentTarget;const n=z.value;var{flag:t,targetElem:i}=(0,_dom.getEventTargetNode)(e,t,"vxe-button");t&&(n&&(n.dataset.active="N"),S.visiblePanel=!1,setTimeout(()=>{n&&"Y"===n.dataset.active||(S.isAniVisible=!1)},350),H("dropdown-click",{name:i.getAttribute("name"),option:null},e))},A=()=>{const e=z.value;e&&(e.dataset.active="Y",S.isAniVisible=!0,setTimeout(()=>{"Y"===e.dataset.active&&(S.visiblePanel=!0,p(),v(),setTimeout(()=>{S.visiblePanel&&v()},50))},20))},ee=e=>{var t=O["loading"];E.value||t||(d(),R(e))},te=e=>{Y(),F(e)},R=e=>{H("mouseenter",{},e)},F=e=>{H("mouseleave",{},e)},L=e=>{var{loading:t,trigger:n}=O;E.value||t||("click"===n&&(S.visiblePanel?Y:d)(),q(e))},d=()=>{var e=O["trigger"];const t=z.value;return t&&(t.dataset.active="Y",S.initialized||(S.initialized=!0),r.showTime=setTimeout(()=>{"Y"===t.dataset.active?A():S.isAniVisible=!1},"click"===e?50:250)),(0,_vue.nextTick)()},Y=()=>{const e=z.value;return clearTimeout(r.showTime),e?(e.dataset.active="N",setTimeout(()=>{"Y"!==e.dataset.active&&(S.visiblePanel=!1,setTimeout(()=>{"Y"!==e.dataset.active&&(S.isAniVisible=!1)},350))},100)):(S.isAniVisible=!1,S.visiblePanel=!1),(0,_vue.nextTick)()},ne=()=>{Y()},m=(e,t)=>(0,_vue.h)(_tooltip.default,{useHTML:e.useHTML,content:e.content,enterable:e.enterable,theme:e.theme},{default(){return(0,_vue.h)("span",{class:`vxe-button--item vxe-button--tooltip-${t}-icon`},[(0,_vue.h)("i",{class:e.icon||(0,_ui.getIcon)().BUTTON_TOOLTIP_ICON})])}}),G=()=>{var{content:e,suffixIcon:t,loading:n,prefixTooltip:i,suffixTooltip:o,suffixRender:u}=O,s=O.prefixIcon||O.icon,l=O.prefixRender||O.iconRender,a=_.value,r=b.value,c=I.prefix||I.icon,v=I.suffix,d=I.default,p=[];return i&&p.push(m(a,"prefix")),n?p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--loading-icon",(0,_ui.getIcon)().BUTTON_LOADING]})):c?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-prefix-icon"},c({}))):l?(a=(i=_ui.renderer.get(l.name))?i.renderButtonPrefix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-prefix-icon"]},a?(0,_vn.getSlotVNs)(a(l,{$button:$})):[]))):s&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--prefix-icon",s]})),d?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},d({}))):e&&p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},(0,_utils.getFuncText)(e))),v?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-suffix-icon"},v({}))):u?(c=(n=_ui.renderer.get(u.name))?n.renderButtonSuffix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-suffix-icon"]},c?(0,_vn.getSlotVNs)(c(u,{$button:$})):[]))):t&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--suffix-icon",t]})),o&&p.push(m(r,"suffix")),p},H=(e,t,n)=>{i(e,(0,_ui.createEvent)(n,{$button:$},t))},x=(t={dispatchEvent:H,openPanel:d,closePanel:Y,focus(){var e=j.value;return e&&e.focus(),(0,_vue.nextTick)()},blur(){var e=j.value;return e&&e.blur(),(0,_vue.nextTick)()}},e=>{var t=z.value;S.visiblePanel&&!(0,_dom.getEventTargetNode)(e,t).flag&&Y()}),f=e=>{var t,n=E.value,i=S["visiblePanel"];n||(n=B.value,t=z.value,S.isActivated=(0,_dom.getEventTargetNode)(e,n).flag||(0,_dom.getEventTargetNode)(e,t).flag,i&&!S.isActivated&&Y())},g=()=>{var e=S["visiblePanel"];e&&v()};Object.assign($,t);return $.renderVN=()=>{const{className:e,popupClassName:t,trigger:n,title:i,routerLink:o,type:u,destroyOnClose:s,name:l,loading:a,showDropdownIcon:r}=O;var{initialized:c,isAniVisible:v,visiblePanel:d}=S,p=M.value;const m=U.value;var _=D.value;const b=Z.value;var x=W.value;const f=J.value;var g,h=V.value,T=E.value,y=P.value,C=K.value,w=N.value,k=I.dropdowns;return y.visible?k||C.length?(y={},g={},"hover"===n&&(y.onMouseenter=ee,y.onMouseleave=te,g.onMouseenter=A,g.onMouseleave=ne),(0,_vue.h)("div",{ref:B,class:["vxe-button--dropdown",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,"is--active":d}]},[o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),Object.assign({ref:j,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,to:o,onClick:L},y),{default(){return G().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])}}):(0,_vue.h)("button",Object.assign({ref:j,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,onClick:L},y),G().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!h||!c},[(0,_vue.h)("div",Object.assign({ref:z,class:["vxe-button--dropdown-panel",t?_xeUtils.default.isFunction(t)?t({$button:$}):t:"",{["size--"+w]:w,"is--transfer":h,"ani--leave":v,"ani--enter":d}],placement:S.panelPlacement,style:S.panelStyle},g),c&&(d||v)?[k?(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper",onMousedown:Q,onClick:X},c&&(!s||d||v)?k({}):[]):(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper"},c&&(!s||d||v)?C.map((i,e)=>(0,_vue.h)(VxeButtonComponent,{key:e,type:i.type,mode:i.mode||m,className:i.className,name:i.name,routerLink:i.routerLink,permissionCode:i.permissionCode,title:i.title,content:i.content,status:i.status,icon:i.icon,round:_xeUtils.default.isBoolean(i.round)?i.round:"text"!==m&&b,circle:_xeUtils.default.isBoolean(i.circle)?i.circle:"text"!==m&&f,disabled:i.disabled,loading:i.loading,align:i.align,onClick(e){var t=e,n=i;t=e.$event,Y(),H("dropdown-click",{name:n.name,option:n},t)}})):[])]:[])])])):o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{ref:j,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,to:o,onClick:q,onMouseenter:R,onMouseleave:F},{default(){return G()}}):(0,_vue.h)("button",{ref:j,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,onClick:q,onMouseenter:R,onMouseleave:F},G()):(0,_ui.renderEmptyElement)($)},(0,_vue.onMounted)(()=>{"text"===O.type&&(0,_log.warnLog)("vxe.error.delProp",["[button] type=text","mode=text"]),_ui.globalEvents.on($,"mousewheel",x),_ui.globalEvents.on($,"mousedown",f),_ui.globalEvents.on($,"resize",g)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off($,"mousewheel"),_ui.globalEvents.off($,"mousedown"),_ui.globalEvents.off($,"resize")}),$},render(){return this.renderVN()}});var _default=exports.default=VxeButtonComponent;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_tooltip=_interopRequireDefault(require("../../tooltip/src/tooltip"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeButtonComponent=(0,_comp.defineVxeComponent)({name:"VxeButton",props:{type:String,mode:String,className:[String,Function],popupClassName:[String,Function],size:{type:String,default:()=>(0,_ui.getConfig)().button.size||(0,_ui.getConfig)().size},zIndex:Number,name:[String,Number],routerLink:Object,permissionCode:[String,Number],content:String,placement:String,status:String,title:String,icon:String,iconRender:Object,prefixIcon:String,prefixRender:Object,suffixIcon:String,suffixRender:Object,round:Boolean,circle:Boolean,disabled:Boolean,loading:Boolean,trigger:{type:String,default:()=>(0,_ui.getConfig)().button.trigger},align:String,prefixTooltip:Object,suffixTooltip:Object,options:Array,showDropdownIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().button.showDropdownIcon},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().button.destroyOnClose},transfer:{type:Boolean,default:null}},emits:["click","mouseenter","mouseleave","dropdown-click","dropdownClick","contextmenu"],setup(O,e){const{slots:I,emit:i}=e,n=(0,_vue.inject)("$xeModal",null),o=(0,_vue.inject)("$xeDrawer",null),u=(0,_vue.inject)("$xeTable",null),s=(0,_vue.inject)("$xeTree",null),l=(0,_vue.inject)("$xeForm",null),a=(0,_vue.inject)("$xeButtonGroup",null);var t=_xeUtils.default.uniqueId();const N=(0,_ui.useSize)(O)["computeSize"],P=(0,_ui.usePermission)(O)["computePermissionInfo"],S=(0,_vue.reactive)({initialized:!1,visiblePanel:!1,isAniVisible:!1,isActivated:!1,panelIndex:0,panelStyle:{},panelPlacement:""}),r={showTime:void 0,tooltipTimeout:void 0},B=(0,_vue.ref)(),j=(0,_vue.ref)(),z=(0,_vue.ref)(),c={refElem:B},$={xID:t,props:O,context:e,reactData:S,internalData:r,getRefMaps:()=>c};const V=(0,_vue.computed)(()=>{var e=O["transfer"];if(null===e){var t=(0,_ui.getConfig)().button.transfer;if(_xeUtils.default.isBoolean(t))return t;if(u||s||n||o||l)return!0}return e}),E=(0,_vue.computed)(()=>{var e=O["disabled"],t=P.value;return e||t.disabled}),M=(0,_vue.computed)(()=>{var e=O["type"];return!!e&&-1<["submit","reset","button"].indexOf(e)}),U=(0,_vue.computed)(()=>{var{type:e,mode:t}=O;return"text"===t||"text"===e||a&&"text"===a.props.mode?"text":"button"}),W=(0,_vue.computed)(()=>{var e=O["status"];return e||(a?a.props.status:"")}),Z=(0,_vue.computed)(()=>{var e=O["align"];return e||!!a&&a.props.align}),J=(0,_vue.computed)(()=>{var e=O["round"];return e||!!a&&a.props.round}),K=(0,_vue.computed)(()=>{var e=O["circle"];return e||!!a&&a.props.circle}),Q=(0,_vue.computed)(()=>{var e=O["options"];return e?e.filter(e=>{e=e.permissionCode;return!e||_ui.permission.checkVisible(e)}):[]}),_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.prefixTooltip,O.prefixTooltip)),b=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().button.suffixTooltip,O.suffixTooltip)),p=()=>{var e=O["zIndex"];e?S.panelIndex=e:S.panelIndex<(0,_utils.getLastZIndex)()&&(S.panelIndex=(0,_utils.nextZIndex)())},v=()=>{const n=O["placement"],i=S["panelIndex"],o=j.value,u=z.value,s=V.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(o,u,{placement:n,teleportTo:s}),t=Object.assign(e.style,{zIndex:i});S.panelStyle=t,S.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},D=e=>{a&&a.handleClick({name:O.name},e),H("click",{$event:e},e)},X=e=>{0===e.button&&e.stopPropagation()},ee=e=>{var t=e.currentTarget;const n=z.value;var{flag:t,targetElem:i}=(0,_dom.getEventTargetNode)(e,t,"vxe-button");t&&(n&&(n.dataset.active="N"),S.visiblePanel=!1,setTimeout(()=>{n&&"Y"===n.dataset.active||(S.isAniVisible=!1)},350),H("dropdown-click",{name:i.getAttribute("name"),option:null},e))},q=()=>{const e=z.value;e&&(e.dataset.active="Y",S.isAniVisible=!0,setTimeout(()=>{"Y"===e.dataset.active&&(S.visiblePanel=!0,p(),v(),setTimeout(()=>{S.visiblePanel&&v()},50))},20))},te=e=>{var t=O["loading"];E.value||t||(d(),A(e))},ne=e=>{Y(),R(e)},A=e=>{H("mouseenter",{},e)},R=e=>{H("mouseleave",{},e)},F=e=>{H("contextmenu",{},e)},L=e=>{var{loading:t,trigger:n}=O;E.value||t||("click"===n&&(S.visiblePanel?Y:d)(),D(e))},d=()=>{var e=O["trigger"];const t=z.value;return t&&(t.dataset.active="Y",S.initialized||(S.initialized=!0),r.showTime=setTimeout(()=>{"Y"===t.dataset.active?q():S.isAniVisible=!1},"click"===e?50:250)),(0,_vue.nextTick)()},Y=()=>{const e=z.value;return clearTimeout(r.showTime),e?(e.dataset.active="N",setTimeout(()=>{"Y"!==e.dataset.active&&(S.visiblePanel=!1,setTimeout(()=>{"Y"!==e.dataset.active&&(S.isAniVisible=!1)},350))},100)):(S.isAniVisible=!1,S.visiblePanel=!1),(0,_vue.nextTick)()},ie=()=>{Y()},m=(e,t)=>(0,_vue.h)(_tooltip.default,{useHTML:e.useHTML,content:e.content,enterable:e.enterable,theme:e.theme},{default(){return(0,_vue.h)("span",{class:`vxe-button--item vxe-button--tooltip-${t}-icon`},[(0,_vue.h)("i",{class:e.icon||(0,_ui.getIcon)().BUTTON_TOOLTIP_ICON})])}}),G=()=>{var{content:e,suffixIcon:t,loading:n,prefixTooltip:i,suffixTooltip:o,suffixRender:u}=O,s=O.prefixIcon||O.icon,l=O.prefixRender||O.iconRender,a=_.value,r=b.value,c=I.prefix||I.icon,v=I.suffix,d=I.default,p=[];return i&&p.push(m(a,"prefix")),n?p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--loading-icon",(0,_ui.getIcon)().BUTTON_LOADING]})):c?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-prefix-icon"},c({}))):l?(a=(i=_ui.renderer.get(l.name))?i.renderButtonPrefix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-prefix-icon"]},a?(0,_vn.getSlotVNs)(a(l,{$button:$})):[]))):s&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--prefix-icon",s]})),d?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},d({}))):e&&p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--content"},(0,_utils.getFuncText)(e))),v?p.push((0,_vue.h)("span",{class:"vxe-button--item vxe-button--custom-suffix-icon"},v({}))):u?(c=(n=_ui.renderer.get(u.name))?n.renderButtonSuffix:null,p.push((0,_vue.h)("span",{class:["vxe-button--item vxe-button--custom-suffix-icon"]},c?(0,_vn.getSlotVNs)(c(u,{$button:$})):[]))):t&&p.push((0,_vue.h)("i",{class:["vxe-button--item vxe-button--suffix-icon",t]})),o&&p.push(m(r,"suffix")),p},H=(e,t,n)=>{i(e,(0,_ui.createEvent)(n,{$button:$},t))},x=(t={dispatchEvent:H,openPanel:d,closePanel:Y,focus(){var e=j.value;return e&&e.focus(),(0,_vue.nextTick)()},blur(){var e=j.value;return e&&e.blur(),(0,_vue.nextTick)()}},e=>{var t=z.value;S.visiblePanel&&!(0,_dom.getEventTargetNode)(e,t).flag&&Y()}),f=e=>{var t,n=E.value,i=S["visiblePanel"];n||(n=B.value,t=z.value,S.isActivated=(0,_dom.getEventTargetNode)(e,n).flag||(0,_dom.getEventTargetNode)(e,t).flag,i&&!S.isActivated&&Y())},g=()=>{var e=S["visiblePanel"];e&&v()};Object.assign($,t);return $.renderVN=()=>{const{className:e,popupClassName:t,trigger:n,title:i,routerLink:o,type:u,destroyOnClose:s,name:l,loading:a,showDropdownIcon:r}=O;var{initialized:c,isAniVisible:v,visiblePanel:d}=S,p=M.value;const m=U.value;var _=W.value;const b=J.value;var x=Z.value;const f=K.value;var g,h=V.value,T=E.value,C=P.value,y=Q.value,w=N.value,k=I.dropdowns;return C.visible?k||y.length?(C={onContextmenu:F},g={},"hover"===n&&(C.onMouseenter=te,C.onMouseleave=ne,g.onMouseenter=q,g.onMouseleave=ie),(0,_vue.h)("div",{ref:B,class:["vxe-button--dropdown",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,"is--active":d}]},[o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),Object.assign({ref:j,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,to:o,onClick:L},C),{default(){return G().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])}}):(0,_vue.h)("button",Object.assign({ref:j,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,onClick:L},C),G().concat(r?[(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow "+(0,_ui.getIcon)().BUTTON_DROPDOWN})]:[])),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!h||!c},[(0,_vue.h)("div",Object.assign({ref:z,class:["vxe-button--dropdown-panel",t?_xeUtils.default.isFunction(t)?t({$button:$}):t:"",{["size--"+w]:w,"is--transfer":h,"ani--leave":v,"ani--enter":d}],placement:S.panelPlacement,style:S.panelStyle},g),c&&(d||v)?[k?(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper",onMousedown:X,onClick:ee},c&&(!s||d||v)?k({}):[]):(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper"},c&&(!s||d||v)?y.map((i,e)=>(0,_vue.h)(VxeButtonComponent,{key:e,type:i.type,mode:i.mode||m,className:i.className,name:i.name,routerLink:i.routerLink,permissionCode:i.permissionCode,title:i.title,content:i.content,status:i.status,icon:i.icon,round:_xeUtils.default.isBoolean(i.round)?i.round:"text"!==m&&b,circle:_xeUtils.default.isBoolean(i.circle)?i.circle:"text"!==m&&f,disabled:i.disabled,loading:i.loading,align:i.align,onClick(e){var t=e,n=i;t=e.$event,Y(),H("dropdown-click",{name:n.name,option:n},t)}})):[])]:[])])])):o?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{ref:j,class:["vxe-button","vxe-button--link","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,to:o,onClick:D,onMouseenter:A,onMouseleave:R,onContextmenu:F},{default(){return G()}}):(0,_vue.h)("button",{ref:j,class:["vxe-button","type--"+m,x?"align--"+x:"",e?_xeUtils.default.isFunction(e)?e({$button:$}):e:"",{["size--"+w]:w,["theme--"+_]:_,"is--round":b,"is--circle":f,"is--disabled":T||a,"is--loading":a}],title:i,name:l,type:p?u:"button",disabled:T||a,onClick:D,onMouseenter:A,onMouseleave:R,onContextmenu:F},G()):(0,_ui.renderEmptyElement)($)},(0,_vue.onMounted)(()=>{"text"===O.type&&(0,_log.warnLog)("vxe.error.delProp",["[button] type=text","mode=text"]),_ui.globalEvents.on($,"mousewheel",x),_ui.globalEvents.on($,"mousedown",f),_ui.globalEvents.on($,"resize",g)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off($,"mousewheel"),_ui.globalEvents.off($,"mousedown"),_ui.globalEvents.off($,"resize")}),$},render(){return this.renderVN()}});var _default=exports.default=VxeButtonComponent;
@@ -75,6 +75,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
75
75
  } = props;
76
76
  return options || [];
77
77
  });
78
+ const computeAllFirstMenuList = (0, _vue.computed)(() => {
79
+ const menuGroups = computeMenuGroups.value;
80
+ const firstList = [];
81
+ for (let i = 0; i < menuGroups.length; i++) {
82
+ const list = menuGroups[i];
83
+ for (let j = 0; j < list.length; j++) {
84
+ const firstItem = list[j];
85
+ if (hasValidItem(firstItem)) {
86
+ firstList.push(firstItem);
87
+ }
88
+ }
89
+ }
90
+ return firstList;
91
+ });
78
92
  const computeTopAndLeft = (0, _vue.computed)(() => {
79
93
  const {
80
94
  x,
@@ -204,12 +218,199 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
204
218
  };
205
219
  const handleItemMouseenterEvent = (evnt, item, parentitem) => {
206
220
  reactData.activeOption = parentitem || item;
207
- reactData.activeChildOption = parentitem ? item : null;
221
+ if (parentitem) {
222
+ reactData.activeOption = parentitem;
223
+ reactData.activeChildOption = item;
224
+ } else {
225
+ reactData.activeOption = item;
226
+ if (hasChildMenu(item)) {
227
+ reactData.activeChildOption = findFirstChildItem(item);
228
+ } else {
229
+ reactData.activeChildOption = null;
230
+ }
231
+ }
208
232
  };
209
233
  const handleItemMouseleaveEvent = () => {
210
234
  reactData.activeOption = null;
211
235
  reactData.activeChildOption = null;
212
236
  };
237
+ const hasValidItem = item => {
238
+ return !item.loading && !item.disabled && item.visible !== false;
239
+ };
240
+ const findNextFirstItem = (allFirstList, firstItem) => {
241
+ for (let i = 0; i < allFirstList.length; i++) {
242
+ const item = allFirstList[i];
243
+ if (firstItem === item) {
244
+ const nextItem = allFirstList[i + 1];
245
+ if (nextItem) {
246
+ return nextItem;
247
+ }
248
+ }
249
+ }
250
+ return _xeUtils.default.first(allFirstList);
251
+ };
252
+ const findPrevFirstItem = (allFirstList, firstItem) => {
253
+ for (let i = 0; i < allFirstList.length; i++) {
254
+ const item = allFirstList[i];
255
+ if (firstItem === item) {
256
+ if (i > 0) {
257
+ return allFirstList[i - 1];
258
+ }
259
+ }
260
+ }
261
+ return _xeUtils.default.last(allFirstList);
262
+ };
263
+ const findFirstChildItem = firstItem => {
264
+ const {
265
+ children
266
+ } = firstItem;
267
+ if (children) {
268
+ for (let i = 0; i < children.length; i++) {
269
+ const item = children[i];
270
+ if (hasValidItem(item)) {
271
+ return item;
272
+ }
273
+ }
274
+ }
275
+ return null;
276
+ };
277
+ const findPrevChildItem = (firstItem, childItem) => {
278
+ const {
279
+ children
280
+ } = firstItem;
281
+ let prevValidItem = null;
282
+ if (children) {
283
+ for (let i = 0; i < children.length; i++) {
284
+ const item = children[i];
285
+ if (childItem === item) {
286
+ break;
287
+ }
288
+ if (hasValidItem(item)) {
289
+ prevValidItem = item;
290
+ }
291
+ }
292
+ if (!prevValidItem) {
293
+ for (let len = children.length - 1; len >= 0; len--) {
294
+ const item = children[len];
295
+ if (hasValidItem(item)) {
296
+ return item;
297
+ }
298
+ }
299
+ }
300
+ }
301
+ return prevValidItem;
302
+ };
303
+ const findNextChildItem = (firstItem, childItem) => {
304
+ const {
305
+ children
306
+ } = firstItem;
307
+ let firstValidItem = null;
308
+ if (children) {
309
+ let isMetch = false;
310
+ for (let i = 0; i < children.length; i++) {
311
+ const item = children[i];
312
+ if (!firstValidItem) {
313
+ if (hasValidItem(item)) {
314
+ firstValidItem = item;
315
+ }
316
+ }
317
+ if (isMetch) {
318
+ if (hasValidItem(item)) {
319
+ return item;
320
+ }
321
+ } else {
322
+ isMetch = childItem === item;
323
+ }
324
+ }
325
+ }
326
+ return firstValidItem;
327
+ };
328
+ const handleGlobalMousewheelEvent = evnt => {
329
+ const {
330
+ visible
331
+ } = reactData;
332
+ if (visible) {
333
+ const el = refElem.value;
334
+ if (!(0, _dom.getEventTargetNode)(evnt, el, '').flag) {
335
+ close();
336
+ }
337
+ }
338
+ };
339
+ const handleGlobalKeydownEvent = evnt => {
340
+ const {
341
+ visible,
342
+ childPos,
343
+ activeOption,
344
+ activeChildOption
345
+ } = reactData;
346
+ const allFirstMenuList = computeAllFirstMenuList.value;
347
+ if (visible) {
348
+ const isLeftArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_LEFT);
349
+ const isUpArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_UP);
350
+ const isRightArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT);
351
+ const isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
352
+ const isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
353
+ // 回车选中
354
+ if (isEnter) {
355
+ if (activeOption || activeChildOption) {
356
+ evnt.preventDefault();
357
+ evnt.stopPropagation();
358
+ if (!activeChildOption && hasChildMenu(activeOption)) {
359
+ reactData.activeChildOption = findFirstChildItem(activeOption);
360
+ return;
361
+ }
362
+ handleItemClickEvent(evnt, activeChildOption || activeOption);
363
+ return;
364
+ }
365
+ }
366
+ // 方向键操作
367
+ if (activeChildOption) {
368
+ if (isUpArrow) {
369
+ evnt.preventDefault();
370
+ reactData.activeChildOption = findPrevChildItem(activeOption, activeChildOption);
371
+ } else if (isDwArrow) {
372
+ evnt.preventDefault();
373
+ reactData.activeChildOption = findNextChildItem(activeOption, activeChildOption);
374
+ } else if (isLeftArrow) {
375
+ evnt.preventDefault();
376
+ if (childPos === 'left') {
377
+ // 无操作
378
+ } else {
379
+ reactData.activeChildOption = null;
380
+ }
381
+ } else if (isRightArrow) {
382
+ evnt.preventDefault();
383
+ if (childPos === 'left') {
384
+ reactData.activeChildOption = null;
385
+ } else {
386
+ // 无操作
387
+ }
388
+ }
389
+ } else if (activeOption) {
390
+ evnt.preventDefault();
391
+ if (isUpArrow) {
392
+ reactData.activeOption = findPrevFirstItem(allFirstMenuList, activeOption);
393
+ } else if (isDwArrow) {
394
+ reactData.activeOption = findNextFirstItem(allFirstMenuList, activeOption);
395
+ } else {
396
+ if (hasChildMenu(activeOption)) {
397
+ if (childPos === 'left') {
398
+ if (isLeftArrow) {
399
+ reactData.activeChildOption = findFirstChildItem(activeOption);
400
+ }
401
+ } else {
402
+ if (isRightArrow) {
403
+ reactData.activeChildOption = findFirstChildItem(activeOption);
404
+ }
405
+ }
406
+ }
407
+ }
408
+ } else {
409
+ evnt.preventDefault();
410
+ reactData.activeOption = _xeUtils.default.first(allFirstMenuList);
411
+ }
412
+ }
413
+ };
213
414
  const handleGlobalMousedownEvent = evnt => {
214
415
  const {
215
416
  visible
@@ -221,6 +422,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
221
422
  }
222
423
  }
223
424
  };
425
+ const handleGlobalBlurEvent = () => {
426
+ const {
427
+ visible
428
+ } = reactData;
429
+ if (visible) {
430
+ close();
431
+ }
432
+ };
224
433
  const tagPrivateMethods = {};
225
434
  Object.assign($xeContextMenu, tagMethods, tagPrivateMethods);
226
435
  const renderMenuItem = (item, parentItem, hasChildMenus) => {
@@ -295,10 +504,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
295
504
  children
296
505
  } = firstItem;
297
506
  const hasChildMenus = children && children.some(child => child.visible !== false);
507
+ const isActiveFirst = activeOption === firstItem;
298
508
  moVNs.push((0, _vue.h)('div', {
299
509
  key: `${gIndex}_${i}`,
300
510
  class: ['vxe-context-menu--item-wrapper vxe-context-menu--first-item', firstItem.className || '', {
301
- 'is--active': activeOption === firstItem
511
+ 'is--active': isActiveFirst,
512
+ 'is--subactive': isActiveFirst && !!activeChildOption
302
513
  }]
303
514
  }, [hasChildMenus ? (0, _vue.h)('div', {
304
515
  class: 'vxe-context-menu--children-wrapper'
@@ -346,10 +557,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
346
557
  });
347
558
  handleVisible();
348
559
  (0, _vue.onMounted)(() => {
560
+ _ui.globalEvents.on($xeContextMenu, 'mousewheel', handleGlobalMousewheelEvent);
561
+ _ui.globalEvents.on($xeContextMenu, 'keydown', handleGlobalKeydownEvent);
349
562
  _ui.globalEvents.on($xeContextMenu, 'mousedown', handleGlobalMousedownEvent);
563
+ _ui.globalEvents.on($xeContextMenu, 'blur', handleGlobalBlurEvent);
350
564
  });
351
565
  (0, _vue.onBeforeUnmount)(() => {
566
+ _ui.globalEvents.off($xeContextMenu, 'mousewheel');
567
+ _ui.globalEvents.off($xeContextMenu, 'keydown');
352
568
  _ui.globalEvents.off($xeContextMenu, 'mousedown');
569
+ _ui.globalEvents.off($xeContextMenu, 'blur');
353
570
  _xeUtils.default.assign(reactData, createReactData());
354
571
  _xeUtils.default.assign(internalData, createInternalData());
355
572
  });
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createInternalData(){return{}}function createReactData(){return{visible:!1,activeOption:null,activeChildOption:null,popupStyle:{top:"",left:"",zIndex:0},childPos:""}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeContextMenu",props:{modelValue:Boolean,className:String,size:{type:String,default:()=>(0,_ui.getConfig)().contextMenu.size||(0,_ui.getConfig)().size},options:Array,x:[Number,String],y:[Number,String],zIndex:[Number,String],position:{type:String,default:()=>(0,_ui.getConfig)().contextMenu.position},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().contextMenu.destroyOnClose},transfer:{type:Boolean,default:()=>(0,_ui.getConfig)().contextMenu.transfer}},emits:["update:modelValue","option-click","change","show","hide"],setup(a,e){const i=e["emit"];var t=_xeUtils.default.uniqueId();const l=(0,_vue.ref)(),r=(0,_ui.useSize)(a)["computeSize"],n=createInternalData(),c=(0,_vue.reactive)(createReactData()),u={refElem:l},v=(0,_vue.computed)(()=>{var e=a["options"];return e||[]});var s=(0,_vue.computed)(()=>{var{x:e,y:t}=a;return""+e+t});const o={},d={xID:t,props:a,context:e,reactData:c,getRefMaps:()=>u,getComputeMaps:()=>o},p=(e,t,n)=>{i(e,(0,_ui.createEvent)(n,{$contextMenu:d},t))},_=e=>{i("update:modelValue",e)},m=()=>{var e=a["modelValue"],t=c["visible"],n=!0;c.visible=n,f();{var{zIndex:i,transfer:u}=a,s=c.popupStyle,o=s.zIndex;i?s.zIndex=_xeUtils.default.toNumber(i):o<(0,_utils.getLastZIndex)()&&(s.zIndex=(u?(0,_utils.nextSubZIndex):(0,_utils.nextZIndex))())}return e!==n&&(_(n),p("change",{value:n},null)),t!==n&&p("show",{visible:n},null),(0,_vue.nextTick)()},x=()=>{var e=a["modelValue"],t=c["visible"],n=!1;return e!==(c.visible=n)&&(_(n),p("change",{value:n},null)),t!==n&&p("hide",{visible:n},null),(0,_vue.nextTick)()},f=()=>{var{x:e,y:t}=a,n=c["popupStyle"];n.left=(0,_dom.toCssUnit)(e||0),n.top=(0,_dom.toCssUnit)(t||0)},h=()=>{var e=a["modelValue"];(e?m:x)()};t={dispatchEvent:p,open:m,close:x};const g=()=>{c.activeOption=null,c.activeChildOption=null},y=e=>{var t=c["visible"];t&&(t=l.value,(0,_dom.getEventTargetNode)(e,t,"").flag||x())};Object.assign(d,t,{});const b=(i,u,e)=>{var t,n,s,o,{visible:a,disabled:l,loading:r}=i;return!1===a?(0,_ui.renderEmptyElement)(d):(t=(a=Object.assign({},i.prefixConfig)).icon||i.prefixIcon,s=(n=Object.assign({},i.suffixConfig)).icon||i.suffixIcon,o=r?(0,_ui.getI18n)("vxe.contextMenu.loadingText"):(0,_utils.getFuncText)(i.name),(0,_vue.h)("div",{class:["vxe-context-menu--item-inner",{"is--disabled":l,"is--loading":r}],onClick(e){var t;e=e,(e=>{e=e.children;return e&&e.some(e=>!1!==e.visible)})(t=i)||(p("option-click",{option:t},e),x())},onMouseenter(e){var t,n;t=i,n=u,c.activeOption=n||t,c.activeChildOption=n?t:null},onMouseleave:g},[(0,_vue.h)("div",{class:["vxe-context-menu--item-prefix",a.className||""]},r?[(0,_vue.h)("span",{key:"1"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().CONTEXT_MENU_OPTION_LOADING})])]:[t&&_xeUtils.default.isFunction(t)?(0,_vue.h)("span",{key:"2"},(0,_vn.getSlotVNs)(t({}))):(0,_vue.h)("span",{key:"3"},[(0,_vue.h)("i",{class:t})]),a.content?(0,_vue.h)("span",{key:"4"},""+(a.content||"")):(0,_ui.renderEmptyElement)(d)]),(0,_vue.h)("div",{class:"vxe-context-menu--item-label"},o),r||!s&&!n.content?(0,_ui.renderEmptyElement)(d):(0,_vue.h)("div",{class:["vxe-context-menu--item-suffix",n.className||""]},[s&&_xeUtils.default.isFunction(s)?(0,_vue.h)("span",{key:"2"},(0,_vn.getSlotVNs)(s({}))):(0,_vue.h)("span",{key:"3"},[(0,_vue.h)("i",{class:s})]),n.content?(0,_vue.h)("span",{key:"4"},""+(n.content||"")):(0,_ui.renderEmptyElement)(d)]),e?(0,_vue.h)("div",{class:"vxe-context-menu--item-subicon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().CONTEXT_MENU_CHILDREN})]):(0,_ui.renderEmptyElement)(d)]))};return(0,_vue.watch)(s,()=>{f()}),(0,_vue.watch)(()=>a.modelValue,()=>{h()}),h(),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(d,"mousedown",y)}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(d,"mousedown"),_xeUtils.default.assign(c,createReactData()),_xeUtils.default.assign(n,createInternalData())}),d.renderVN=()=>{var{className:e,position:t,destroyOnClose:n}=a,{visible:i,popupStyle:u,childPos:s}=c,o=r.value;return(0,_vue.h)("div",{ref:l,class:["vxe-context-menu vxe-context-menu--wrapper","absolute"===t?"is--"+t:"is--fixed","cp--"+("left"===s?s:"right"),e||"",{["size--"+o]:o,"is--visible":i}],style:u},!n||i?(()=>{const{activeOption:o,activeChildOption:a}=c;var e=v.value;const t=[];return e.forEach((e,u)=>{const s=[];e.forEach((t,e)=>{var n=t["children"],i=n&&n.some(e=>!1!==e.visible);s.push((0,_vue.h)("div",{key:u+"_"+e,class:["vxe-context-menu--item-wrapper vxe-context-menu--first-item",t.className||"",{"is--active":o===t}]},[i?(0,_vue.h)("div",{class:"vxe-context-menu--children-wrapper"},n.map(e=>(0,_vue.h)("div",{class:["vxe-context-menu--item-wrapper vxe-context-menu--child-item",e.className||"",{"is--active":a===e}]},[b(e,t)]))):(0,_ui.renderEmptyElement)(d),b(t,null,i)]))}),t.push((0,_vue.h)("div",{key:u,class:"vxe-context-menu--group-wrapper"},s))}),t})():[])},d},render(){return this.renderVN()}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createInternalData(){return{}}function createReactData(){return{visible:!1,activeOption:null,activeChildOption:null,popupStyle:{top:"",left:"",zIndex:0},childPos:""}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeContextMenu",props:{modelValue:Boolean,className:String,size:{type:String,default:()=>(0,_ui.getConfig)().contextMenu.size||(0,_ui.getConfig)().size},options:Array,x:[Number,String],y:[Number,String],zIndex:[Number,String],position:{type:String,default:()=>(0,_ui.getConfig)().contextMenu.position},destroyOnClose:{type:Boolean,default:()=>(0,_ui.getConfig)().contextMenu.destroyOnClose},transfer:{type:Boolean,default:()=>(0,_ui.getConfig)().contextMenu.transfer}},emits:["update:modelValue","option-click","change","show","hide"],setup(o,e){const n=e["emit"];var t=_xeUtils.default.uniqueId();const r=(0,_vue.ref)(),s=(0,_ui.useSize)(o)["computeSize"],i=createInternalData(),v=(0,_vue.reactive)(createReactData()),l={refElem:r},c=(0,_vue.computed)(()=>{var e=o["options"];return e||[]}),_=(0,_vue.computed)(()=>{var t=c.value,i=[];for(let e=0;e<t.length;e++){var n=t[e];for(let e=0;e<n.length;e++){var l=n[e];y(l)&&i.push(l)}}return i});var u=(0,_vue.computed)(()=>{var{x:e,y:t}=o;return""+e+t});const a={},d={xID:t,props:o,context:e,reactData:v,getRefMaps:()=>l,getComputeMaps:()=>a},p=(e,t,i)=>{n(e,(0,_ui.createEvent)(i,{$contextMenu:d},t))},f=e=>{n("update:modelValue",e)},m=()=>{var e=o["modelValue"],t=v["visible"];v.visible=!0,x();{var{zIndex:i,transfer:n}=o,l=v.popupStyle,u=l.zIndex;i?l.zIndex=_xeUtils.default.toNumber(i):u<(0,_utils.getLastZIndex)()&&(l.zIndex=(n?(0,_utils.nextSubZIndex):(0,_utils.nextZIndex))())}return!0!==e&&(f(!0),p("change",{value:!0},null)),!0!==t&&p("show",{visible:!0},null),(0,_vue.nextTick)()},h=()=>{var e=o["modelValue"],t=v["visible"];return(v.visible=!1)!==e&&(f(!1),p("change",{value:!1},null)),!1!==t&&p("hide",{visible:!1},null),(0,_vue.nextTick)()},x=()=>{var{x:e,y:t}=o,i=v["popupStyle"];i.left=(0,_dom.toCssUnit)(e||0),i.top=(0,_dom.toCssUnit)(t||0)},g=()=>{var e=o["modelValue"];(e?m:h)()};t={dispatchEvent:p,open:m,close:h};const E=e=>{e=e.children;return e&&e.some(e=>!1!==e.visible)},b=(e,t)=>{E(t)||(p("option-click",{option:t},e),h())},O=()=>{v.activeOption=null,v.activeChildOption=null},y=e=>!e.loading&&!e.disabled&&!1!==e.visible,C=e=>{var t=e["children"];if(t)for(let e=0;e<t.length;e++){var i=t[e];if(y(i))return i}return null},N=e=>{var t=v["visible"];t&&(t=r.value,(0,_dom.getEventTargetNode)(e,t,"").flag||h())},I=e=>{var{visible:t,childPos:i,activeOption:n,activeChildOption:l}=v,u=_.value;if(t){var t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_LEFT),a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),o=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT),r=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),s=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER);if(s&&(n||l))return e.preventDefault(),e.stopPropagation(),!l&&E(n)?void(v.activeChildOption=C(n)):void b(e,l||n);l?a?(e.preventDefault(),v.activeChildOption=((e,t)=>{var i=e["children"];let n=null;if(i){for(let e=0;e<i.length;e++){var l=i[e];if(t===l)break;y(l)&&(n=l)}if(!n)for(let e=i.length-1;0<=e;e--){var u=i[e];if(y(u))return u}}return n})(n,l)):r?(e.preventDefault(),v.activeChildOption=((e,i)=>{var n=e["children"];let l=null;if(n){let t=!1;for(let e=0;e<n.length;e++){var u=n[e];if(l||y(u)&&(l=u),t){if(y(u))return u}else t=i===u}}return l})(n,l)):t?(e.preventDefault(),"left"!==i&&(v.activeChildOption=null)):o&&(e.preventDefault(),"left"===i)&&(v.activeChildOption=null):n?(e.preventDefault(),a?v.activeOption=((t,i)=>{for(let e=0;e<t.length;e++){var n=t[e];if(i===n&&0<e)return t[e-1]}return _xeUtils.default.last(t)})(u,n):r?v.activeOption=((t,i)=>{for(let e=0;e<t.length;e++)if(i===t[e]){var n=t[e+1];if(n)return n}return _xeUtils.default.first(t)})(u,n):E(n)&&("left"===i?t&&(v.activeChildOption=C(n)):o&&(v.activeChildOption=C(n)))):(e.preventDefault(),v.activeOption=_xeUtils.default.first(u))}},D=e=>{var t=v["visible"];t&&(t=r.value,(0,_dom.getEventTargetNode)(e,t,"").flag||h())},S=()=>{var e=v["visible"];e&&h()};Object.assign(d,t,{});const T=(n,l,e)=>{var t,i,u,a,{visible:o,disabled:r,loading:s}=n;return!1===o?(0,_ui.renderEmptyElement)(d):(t=(o=Object.assign({},n.prefixConfig)).icon||n.prefixIcon,u=(i=Object.assign({},n.suffixConfig)).icon||n.suffixIcon,a=s?(0,_ui.getI18n)("vxe.contextMenu.loadingText"):(0,_utils.getFuncText)(n.name),(0,_vue.h)("div",{class:["vxe-context-menu--item-inner",{"is--disabled":r,"is--loading":s}],onClick(e){b(e,n)},onMouseenter(e){var t,i;t=n,i=l,v.activeOption=i||t,i?(v.activeOption=i,v.activeChildOption=t):(v.activeOption=t,E(t)?v.activeChildOption=C(t):v.activeChildOption=null)},onMouseleave:O},[(0,_vue.h)("div",{class:["vxe-context-menu--item-prefix",o.className||""]},s?[(0,_vue.h)("span",{key:"1"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().CONTEXT_MENU_OPTION_LOADING})])]:[t&&_xeUtils.default.isFunction(t)?(0,_vue.h)("span",{key:"2"},(0,_vn.getSlotVNs)(t({}))):(0,_vue.h)("span",{key:"3"},[(0,_vue.h)("i",{class:t})]),o.content?(0,_vue.h)("span",{key:"4"},""+(o.content||"")):(0,_ui.renderEmptyElement)(d)]),(0,_vue.h)("div",{class:"vxe-context-menu--item-label"},a),s||!u&&!i.content?(0,_ui.renderEmptyElement)(d):(0,_vue.h)("div",{class:["vxe-context-menu--item-suffix",i.className||""]},[u&&_xeUtils.default.isFunction(u)?(0,_vue.h)("span",{key:"2"},(0,_vn.getSlotVNs)(u({}))):(0,_vue.h)("span",{key:"3"},[(0,_vue.h)("i",{class:u})]),i.content?(0,_vue.h)("span",{key:"4"},""+(i.content||"")):(0,_ui.renderEmptyElement)(d)]),e?(0,_vue.h)("div",{class:"vxe-context-menu--item-subicon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().CONTEXT_MENU_CHILDREN})]):(0,_ui.renderEmptyElement)(d)]))};return(0,_vue.watch)(u,()=>{x()}),(0,_vue.watch)(()=>o.modelValue,()=>{g()}),g(),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(d,"mousewheel",N),_ui.globalEvents.on(d,"keydown",I),_ui.globalEvents.on(d,"mousedown",D),_ui.globalEvents.on(d,"blur",S)}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(d,"mousewheel"),_ui.globalEvents.off(d,"keydown"),_ui.globalEvents.off(d,"mousedown"),_ui.globalEvents.off(d,"blur"),_xeUtils.default.assign(v,createReactData()),_xeUtils.default.assign(i,createInternalData())}),d.renderVN=()=>{var{className:e,position:t,destroyOnClose:i}=o,{visible:n,popupStyle:l,childPos:u}=v,a=s.value;return(0,_vue.h)("div",{ref:r,class:["vxe-context-menu vxe-context-menu--wrapper","absolute"===t?"is--"+t:"is--fixed","cp--"+("left"===u?u:"right"),e||"",{["size--"+a]:a,"is--visible":n}],style:l},!i||n?(()=>{const{activeOption:o,activeChildOption:r}=v;var e=c.value;const t=[];return e.forEach((e,u)=>{const a=[];e.forEach((t,e)=>{var i=t["children"],n=i&&i.some(e=>!1!==e.visible),l=o===t;a.push((0,_vue.h)("div",{key:u+"_"+e,class:["vxe-context-menu--item-wrapper vxe-context-menu--first-item",t.className||"",{"is--active":l,"is--subactive":l&&!!r}]},[n?(0,_vue.h)("div",{class:"vxe-context-menu--children-wrapper"},i.map(e=>(0,_vue.h)("div",{class:["vxe-context-menu--item-wrapper vxe-context-menu--child-item",e.className||"",{"is--active":r===e}]},[T(e,t)]))):(0,_ui.renderEmptyElement)(d),T(t,null,n)]))}),t.push((0,_vue.h)("div",{key:u,class:"vxe-context-menu--group-wrapper"},a))}),t})():[])},d},render(){return this.renderVN()}});
@@ -58,7 +58,7 @@
58
58
  background-color: rgba(0, 0, 0, 0.1);
59
59
  }
60
60
 
61
- .vxe-context-menu--first-item.is--active .vxe-context-menu--children-wrapper {
61
+ .vxe-context-menu--first-item.is--subactive .vxe-context-menu--children-wrapper {
62
62
  display: block;
63
63
  }
64
64
 
@@ -1 +1 @@
1
- .vxe-context-menu{display:none;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu.is--visible{display:block}.vxe-context-menu.is--fixed{position:fixed}.vxe-context-menu.is--absolute{position:absolute}.vxe-context-menu.cp--left .vxe-context-menu--children-wrapper{left:calc(-100% + 2px)}.vxe-context-menu.cp--right .vxe-context-menu--children-wrapper{left:calc(100% - 2px)}.vxe-context-menu--group-wrapper{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-context-menu--group-wrapper:first-child{border:0}.vxe-context-menu--children-wrapper,.vxe-context-menu--wrapper{padding:0;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);border:1px solid var(--vxe-ui-base-popup-border-color);background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.vxe-context-menu--children-wrapper{display:none;position:absolute;transform:translateY(-5px)}.vxe-context-menu--item-wrapper{position:relative;min-width:12em;max-width:20em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu--item-wrapper.is--active{background-color:rgba(0,0,0,.1)}.vxe-context-menu--first-item.is--active .vxe-context-menu--children-wrapper{display:block}.vxe-context-menu--item-inner{height:var(--vxe-ui-context-menu-option-height);display:flex;align-items:center;padding:0 .8em;cursor:pointer}.vxe-context-menu--item-inner.is--loading{opacity:.5;cursor:progress}.vxe-context-menu--item-inner.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-context-menu--item-prefix{min-width:1em;text-align:center}.vxe-context-menu--item-prefix,.vxe-context-menu--item-suffix{flex-shrink:0;font-size:.9em}.vxe-context-menu--item-label{font-size:.9em;padding:0 .5em;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-context-menu{font-size:var(--vxe-ui-font-size-default)}.vxe-context-menu.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-context-menu.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-context-menu.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ .vxe-context-menu{display:none;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu.is--visible{display:block}.vxe-context-menu.is--fixed{position:fixed}.vxe-context-menu.is--absolute{position:absolute}.vxe-context-menu.cp--left .vxe-context-menu--children-wrapper{left:calc(-100% + 2px)}.vxe-context-menu.cp--right .vxe-context-menu--children-wrapper{left:calc(100% - 2px)}.vxe-context-menu--group-wrapper{border-top:1px solid var(--vxe-ui-base-popup-border-color)}.vxe-context-menu--group-wrapper:first-child{border:0}.vxe-context-menu--children-wrapper,.vxe-context-menu--wrapper{padding:0;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);border:1px solid var(--vxe-ui-base-popup-border-color);background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.vxe-context-menu--children-wrapper{display:none;position:absolute;transform:translateY(-5px)}.vxe-context-menu--item-wrapper{position:relative;min-width:12em;max-width:20em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-context-menu--item-wrapper.is--active{background-color:rgba(0,0,0,.1)}.vxe-context-menu--first-item.is--subactive .vxe-context-menu--children-wrapper{display:block}.vxe-context-menu--item-inner{height:var(--vxe-ui-context-menu-option-height);display:flex;align-items:center;padding:0 .8em;cursor:pointer}.vxe-context-menu--item-inner.is--loading{opacity:.5;cursor:progress}.vxe-context-menu--item-inner.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-context-menu--item-prefix{min-width:1em;text-align:center}.vxe-context-menu--item-prefix,.vxe-context-menu--item-suffix{flex-shrink:0;font-size:.9em}.vxe-context-menu--item-label{font-size:.9em;padding:0 .5em;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-context-menu{font-size:var(--vxe-ui-font-size-default)}.vxe-context-menu.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-context-menu.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-context-menu.size--mini{font-size:var(--vxe-ui-font-size-mini)}