vxe-pc-ui 4.16.6 → 4.16.8

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 (64) hide show
  1. package/dist/all.esm.js +236 -132
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/cascader/src/cascader.js +66 -26
  5. package/es/cascader/style.css +9 -9
  6. package/es/cascader/style.min.css +1 -1
  7. package/es/date-range-picker/src/date-range-picker.js +25 -9
  8. package/es/icon/style.css +1 -1
  9. package/es/menu/src/menu.js +65 -17
  10. package/es/menu/style.css +15 -8
  11. package/es/menu/style.min.css +1 -1
  12. package/es/style.css +1 -1
  13. package/es/style.min.css +1 -1
  14. package/es/ui/index.js +3 -3
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-cascader/style.css +9 -9
  17. package/es/vxe-cascader/style.min.css +1 -1
  18. package/es/vxe-menu/style.css +15 -8
  19. package/es/vxe-menu/style.min.css +1 -1
  20. package/lib/cascader/src/cascader.js +73 -27
  21. package/lib/cascader/src/cascader.min.js +1 -1
  22. package/lib/cascader/style/style.css +9 -9
  23. package/lib/cascader/style/style.min.css +1 -1
  24. package/lib/date-range-picker/src/date-range-picker.js +27 -9
  25. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  26. package/lib/icon/style/style.css +1 -1
  27. package/lib/icon/style/style.min.css +1 -1
  28. package/lib/index.umd.js +171 -53
  29. package/lib/index.umd.min.js +1 -1
  30. package/lib/menu/src/menu.js +66 -13
  31. package/lib/menu/src/menu.min.js +1 -1
  32. package/lib/menu/style/style.css +15 -8
  33. package/lib/menu/style/style.min.css +1 -1
  34. package/lib/style.css +1 -1
  35. package/lib/style.min.css +1 -1
  36. package/lib/ui/index.js +3 -3
  37. package/lib/ui/index.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/lib/vxe-cascader/style/style.css +9 -9
  41. package/lib/vxe-cascader/style/style.min.css +1 -1
  42. package/lib/vxe-menu/style/style.css +15 -8
  43. package/lib/vxe-menu/style/style.min.css +1 -1
  44. package/package.json +1 -1
  45. package/packages/cascader/src/cascader.ts +66 -25
  46. package/packages/date-range-picker/src/date-range-picker.ts +23 -9
  47. package/packages/menu/src/menu.ts +71 -17
  48. package/packages/ui/index.ts +2 -2
  49. package/styles/components/cascader.scss +9 -9
  50. package/styles/components/menu.scss +9 -5
  51. package/types/components/cascader.d.ts +1 -0
  52. package/types/components/menu.d.ts +6 -0
  53. /package/es/icon/{iconfont.1783838735018.ttf → iconfont.1783923662673.ttf} +0 -0
  54. /package/es/icon/{iconfont.1783838735018.woff → iconfont.1783923662673.woff} +0 -0
  55. /package/es/icon/{iconfont.1783838735018.woff2 → iconfont.1783923662673.woff2} +0 -0
  56. /package/es/{iconfont.1783838735018.ttf → iconfont.1783923662673.ttf} +0 -0
  57. /package/es/{iconfont.1783838735018.woff → iconfont.1783923662673.woff} +0 -0
  58. /package/es/{iconfont.1783838735018.woff2 → iconfont.1783923662673.woff2} +0 -0
  59. /package/lib/icon/style/{iconfont.1783838735018.ttf → iconfont.1783923662673.ttf} +0 -0
  60. /package/lib/icon/style/{iconfont.1783838735018.woff → iconfont.1783923662673.woff} +0 -0
  61. /package/lib/icon/style/{iconfont.1783838735018.woff2 → iconfont.1783923662673.woff2} +0 -0
  62. /package/lib/{iconfont.1783838735018.ttf → iconfont.1783923662673.ttf} +0 -0
  63. /package/lib/{iconfont.1783838735018.woff → iconfont.1783923662673.woff} +0 -0
  64. /package/lib/{iconfont.1783838735018.woff2 → iconfont.1783923662673.woff2} +0 -0
@@ -22,6 +22,23 @@ const {
22
22
  getConfig,
23
23
  getIcon
24
24
  } = _ui.VxeUI;
25
+ function createInternalData() {
26
+ return {
27
+ menuEffectMaps: {}
28
+ };
29
+ }
30
+ function createReactData() {
31
+ return {
32
+ initialized: false,
33
+ isEnterCollapse: false,
34
+ collapseStyle: {},
35
+ collapseZindex: 0,
36
+ activeName: '',
37
+ menuList: [],
38
+ itemHeight: 1
39
+ };
40
+ }
41
+ let nemuUniqueKey = 100000000;
25
42
  var _default = exports.default = (0, _comp.defineVxeComponent)({
26
43
  name: 'VxeMenu',
27
44
  props: {
@@ -60,15 +77,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
60
77
  const {
61
78
  computeSize
62
79
  } = (0, _ui.useSize)(props);
63
- const reactData = (0, _vue.reactive)({
64
- initialized: !!props.collapsed,
65
- isEnterCollapse: false,
66
- collapseStyle: {},
67
- collapseZindex: 0,
68
- activeName: props.modelValue,
69
- menuList: [],
70
- itemHeight: 1
71
- });
80
+ const reactData = (0, _vue.reactive)(createReactData());
81
+ const internalData = createInternalData();
72
82
  const refMaps = {
73
83
  refElem
74
84
  };
@@ -150,6 +160,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
150
160
  const objItem = Object.assign(Object.assign({}, item), {
151
161
  parentKey: parent ? parent.name || path.slice(0, path.length - 1).join(',') : '',
152
162
  level: path.length,
163
+ itemId: ++nemuUniqueKey,
153
164
  itemKey: item.name || path.join(','),
154
165
  isExactActive: false,
155
166
  isActive: false,
@@ -219,12 +230,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
219
230
  accordion
220
231
  } = props;
221
232
  const {
233
+ menuEffectMaps
234
+ } = internalData;
235
+ const {
236
+ itemId,
222
237
  hasChild,
223
238
  isExpand
224
239
  } = item;
240
+ const isCollapsed = computeIsCollapsed.value;
241
+ const expanded = !isExpand;
225
242
  if (hasChild) {
226
243
  evnt.stopPropagation();
227
244
  evnt.preventDefault();
245
+ if (menuEffectMaps[itemId]) {
246
+ clearTimeout(menuEffectMaps[itemId]);
247
+ }
228
248
  if (accordion) {
229
249
  itemList.forEach(obj => {
230
250
  if (obj !== item) {
@@ -232,7 +252,32 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
232
252
  }
233
253
  });
234
254
  }
235
- item.isExpand = !isExpand;
255
+ item.isExpand = expanded;
256
+ const wrapperEl = isCollapsed ? refCollapseElem.value : refElem.value;
257
+ if (wrapperEl) {
258
+ const nemuEl = wrapperEl.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${itemId}"]`);
259
+ const groupEl = nemuEl ? nemuEl.querySelector('.vxe-menu--item-group') : null;
260
+ if (groupEl) {
261
+ if (expanded) {
262
+ groupEl.style.height = '0';
263
+ groupEl.setAttribute('data-effect', 'y');
264
+ requestAnimationFrame(() => {
265
+ groupEl.style.height = `${groupEl.scrollHeight}px`;
266
+ });
267
+ } else {
268
+ groupEl.style.height = `${groupEl.scrollHeight}px`;
269
+ groupEl.setAttribute('data-effect', 'y');
270
+ requestAnimationFrame(() => {
271
+ groupEl.style.height = '0';
272
+ });
273
+ }
274
+ menuEffectMaps[itemId] = setTimeout(() => {
275
+ delete menuEffectMaps[itemId];
276
+ groupEl.removeAttribute('data-effect');
277
+ groupEl.style.height = '';
278
+ }, 350);
279
+ }
280
+ }
236
281
  }
237
282
  };
238
283
  const emitModel = value => {
@@ -395,6 +440,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
395
440
  };
396
441
  const renderDefaultChildren = (item, itemList) => {
397
442
  const {
443
+ itemId,
398
444
  itemKey,
399
445
  level,
400
446
  hasChild,
@@ -419,7 +465,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
419
465
  'is--exact-active': isExactActive,
420
466
  'is--active': isActive,
421
467
  'is--expand': (!isCollapsed || isEnterCollapse) && isExpand
422
- }]
468
+ }],
469
+ 'data-menu-id': itemId
423
470
  }, [routerLink ? (0, _vue.h)((0, _vue.resolveComponent)('router-link'), {
424
471
  class: 'vxe-menu--item-link',
425
472
  to: routerLink,
@@ -445,6 +492,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
445
492
  };
446
493
  const renderCollapseChildren = (item, itemList) => {
447
494
  const {
495
+ itemId,
448
496
  itemKey,
449
497
  level,
450
498
  hasChild,
@@ -463,7 +511,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
463
511
  class: ['vxe-menu--item-wrapper', `vxe-menu--item-level${level}`, {
464
512
  'is--exact-active': isExactActive,
465
513
  'is--active': isActive
466
- }]
514
+ }],
515
+ 'data-menu-id': itemId
467
516
  }, [routerLink ? (0, _vue.h)((0, _vue.resolveComponent)('router-link'), {
468
517
  class: 'vxe-menu--item-link',
469
518
  to: routerLink,
@@ -569,7 +618,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
569
618
  updateCollapseStyle();
570
619
  });
571
620
  (0, _vue.onBeforeUnmount)(() => {
572
- _ui.globalEvents.off($xeMenu, 'resize');
573
621
  const collapseEl = refCollapseElem.value;
574
622
  if (collapseEl) {
575
623
  const parentNode = collapseEl.parentNode;
@@ -577,7 +625,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
577
625
  parentNode.removeChild(collapseEl);
578
626
  }
579
627
  }
628
+ _ui.globalEvents.off($xeMenu, 'resize');
629
+ _xeUtils.default.assign(reactData, createReactData());
630
+ _xeUtils.default.assign(internalData, createInternalData());
580
631
  });
632
+ reactData.initialized = !!props.collapsed;
633
+ reactData.activeName = props.modelValue;
581
634
  updateMenuConfig();
582
635
  updateActiveMenu(true);
583
636
  $xeMenu.renderVN = renderVN;
@@ -1 +1 @@
1
- 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"),_loading=_interopRequireDefault(require("../../loading"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let errLog=(0,_log.createComponentLog)("menu").errLog,{menus,getConfig,getIcon}=_ui.VxeUI;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeMenu",props:{modelValue:[String,Number],expandAll:Boolean,accordion:{type:Boolean,default:()=>getConfig().menu.accordion},collapsed:{type:Boolean,default:null},collapseFixed:Boolean,loading:Boolean,options:{type:Array,default:()=>[]},size:{type:String,default:()=>getConfig().menu.size||getConfig().size},menuConfig:Object},emits:["update:modelValue","click","option-menu","menu-click"],setup(r,e){let{emit:n,slots:c}=e;var i=_xeUtils.default.uniqueId();let t=(0,_vue.inject)("$xeLayoutAside",null),v=(0,_vue.ref)(),d=(0,_vue.ref)(),m=(0,_ui.useSize)(r).computeSize,p=(0,_vue.reactive)({initialized:!!r.collapsed,isEnterCollapse:!1,collapseStyle:{},collapseZindex:0,activeName:r.modelValue,menuList:[],itemHeight:1}),l={refElem:v},o=(0,_vue.computed)(()=>Object.assign({},getConfig().menu.menuConfig,r.menuConfig)),_=(0,_vue.computed)(()=>{var e=r.collapsed;return _xeUtils.default.isBoolean(e)?e:!!t&&!!t.props.collapsed}),s=(0,_vue.computed)(()=>{let e="";return e=t?t.props.collapseWidth||"":e}),u=(0,_vue.computed)(()=>{let e="";return e=t?t.props.width||"":e}),a={computeSize:m},x={xID:i,props:r,context:e,reactData:p,getRefMaps:()=>l,getComputeMaps:()=>a},h=e=>""+(e.title||e.name),g=s=>{let u=p.activeName;_xeUtils.default.eachTree(p.menuList,(e,i,t,n,l,o)=>{e.itemKey===u?(o.forEach(e=>{e.isActive=!0,s&&(e.isExpand=!0)}),e.isExactActive=!0):(e.isExactActive=!1,e.isActive=!1)},{children:"childList"})},C=()=>{let{options:e,expandAll:o}=r;p.menuList=_xeUtils.default.mapTree(e,(e,i,t,n,l)=>Object.assign(Object.assign({},e),{parentKey:l?l.name||n.slice(0,n.length-1).join(","):"",level:n.length,itemKey:e.name||n.join(","),isExactActive:!1,isActive:!1,isExpand:_xeUtils.default.isBoolean(e.expanded)?e.expanded:!!o,hasChild:e.children&&0<e.children.length}),{children:"children",mapChildren:"childList"})},f=()=>{var e=r.collapseFixed;e&&(0,_vue.nextTick)(()=>{var e,i=p.isEnterCollapse,t=_.value,n=u.value,l=s.value,o=v.value;o&&(e=o.getBoundingClientRect(),o=o.parentNode,p.collapseStyle=t?{top:(0,_dom.toCssUnit)(e.top),left:(0,_dom.toCssUnit)(e.left),height:(0,_dom.toCssUnit)(o.clientHeight),width:i?n?(0,_dom.toCssUnit)(n):"":l?(0,_dom.toCssUnit)(l):"",zIndex:p.collapseZindex}:{})})},E=()=>{var e=r.collapseFixed;e&&(e=p.initialized,_.value&&!e&&(p.initialized=!0,(0,_vue.nextTick)(()=>{var e=d.value;e&&document.body.appendChild(e)})),p.isEnterCollapse=!1,p.collapseZindex<(0,_utils.getLastZIndex)()&&(p.collapseZindex=(0,_utils.nextZIndex)()),f())},y=(e,i,t)=>{var n=r.accordion,{hasChild:l,isExpand:o}=i;l&&(e.stopPropagation(),e.preventDefault(),n&&t.forEach(e=>{e!==i&&(e.isExpand=!1)}),i.isExpand=!o)},k=e=>{p.activeName=e,n("update:modelValue",e)},M=(n,l)=>{var e=r.menuConfig,i=o.value;(e?(0,_utils.isEnableConf)(i):i.enabled)&&({options:e,visibleMethod:i}=i,i&&!i({$menu:x,options:e,currentMenu:l})||_ui.VxeUI.contextMenu&&_ui.VxeUI.contextMenu.openByEvent(n,{options:e,events:{optionClick(e){var i=e.option,t=menus.get(i.code),t=t?t.menuMenuMethod:null,i={menu:i,currentMenu:l,$event:n,$menu:x};t&&t(i,n),N("menu-click",i,e.$event)}}})),N("option-menu",{currentMenu:l},n)},U=(e,i,t)=>{var{itemKey:n,routerLink:l,hasChild:o}=i,l=(!l&&o?y(e,i,t):(k(n),V()),{currentMenu:i,menu:i});N("click",l,e)},b=()=>{var e=p.collapseStyle,i=u.value;p.collapseStyle=Object.assign({},e,{width:i?(0,_dom.toCssUnit)(i):""}),p.isEnterCollapse=!0},L=()=>{var e=p.isEnterCollapse;e||b()},V=()=>{var e=p.collapseStyle,i=v.value;p.collapseStyle=Object.assign({},e,{width:i?(0,_dom.toCssUnit)(i.offsetWidth):""}),p.isEnterCollapse=!1},A=(e,i)=>e&&(_xeUtils.default.isString(e)&&(e=c[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(i)):[],N=(e,i,t)=>{n(e,(0,_ui.createEvent)(t,{$menu:x},i))};i={dispatchEvent:N};Object.assign(x,i,{});let z=(i,t)=>{var{icon:e,isExpand:n,hasChild:l}=i,o=i.slots||{},s=o.default||c.option,u=o.title||c.optionTitle||c["option-title"],o=o.icon||c.optionIcon||c["option-icon"],a=h(i),r=_.value,r={currentMenu:i,collapsed:r,option:i};return[s?(0,_ui.renderEmptyElement)(x):(0,_vue.h)("div",{class:"vxe-menu--item-link-icon"},o?A(o,r):e?[(0,_vue.h)("i",{class:e})]:[]),s?(0,_vue.h)("div",{class:"vxe-menu--item-custom-title"},A(s,r)):(0,_vue.h)("div",{class:"vxe-menu--item-link-title",title:a},u?A(u,r):a),l?(0,_vue.h)("div",{class:"vxe-menu--item-link-collapse",onClick(e){y(e,i,t)}},[(0,_vue.h)("i",{class:n?getIcon().MENU_ITEM_EXPAND_OPEN:getIcon().MENU_ITEM_EXPAND_CLOSE})]):(0,_ui.renderEmptyElement)(x)]},I=(i,t)=>{let{itemKey:e,level:n,hasChild:l,isActive:o,isExactActive:s,isExpand:u,routerLink:a,childList:r}=i;var c=p.isEnterCollapse,v=_.value;return i.permissionCode&&!_ui.permission.checkVisible(i.permissionCode)?(0,_ui.renderEmptyElement)(x):(0,_vue.h)("div",{key:e,class:["vxe-menu--item-wrapper","vxe-menu--item-level"+n,{"is--exact-active":s,"is--active":o,"is--expand":(!v||c)&&u}]},[a?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{class:"vxe-menu--item-link",to:a,onContextmenu(e){M(e,i)},onClick(e){U(e,i,t)}},{default:()=>z(i,t)}):(0,_vue.h)("div",{class:"vxe-menu--item-link",onContextmenu(e){M(e,i)},onClick(e){U(e,i,t)}},z(i,t)),l?(0,_vue.h)("div",{class:"vxe-menu--item-group"},r.map(e=>I(e,r))):(0,_ui.renderEmptyElement)(x)])};let S=(0,_vue.ref)(0);return(0,_vue.watch)(()=>r.options?r.options.length:-1,()=>{S.value++}),(0,_vue.watch)(()=>r.options,()=>{S.value++}),(0,_vue.watch)(S,()=>{C(),g(!0)}),(0,_vue.watch)(()=>r.modelValue,e=>{p.activeName=e}),(0,_vue.watch)(()=>p.activeName,()=>{g(!0)}),(0,_vue.watch)(_,()=>{E()}),(0,_vue.onMounted)(()=>{var e=r.menuConfig,i=_ui.VxeUI.getComponent("VxeContextMenu");e&&!i&&errLog("vxe.error.reqComp",["vxe-context-menu"]),_ui.globalEvents.on(x,"resize",f),f()}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(x,"resize");var e,i=d.value;i&&(e=i.parentNode)&&e.removeChild(i)}),C(),g(!0),x.renderVN=()=>{var{loading:e,collapseFixed:i}=r;let{initialized:t,menuList:n,collapseStyle:l,isEnterCollapse:o}=p;var s=m.value;let u=_.value,a={};return i&&(a={onMouseenter:b,onMouseover:L,onMouseleave:V}),(0,_vue.h)("div",{ref:v,class:["vxe-menu",{["size--"+s]:s,"is--collapsed":u,"is--loading":e}]},[(0,_vue.h)("div",{class:"vxe-menu--item-list"},n.map(e=>(u?(i,t)=>{let{itemKey:e,level:n,hasChild:l,isActive:o,isExactActive:s,routerLink:u,childList:a}=i;return i.permissionCode&&!_ui.permission.checkVisible(i.permissionCode)?(0,_ui.renderEmptyElement)(x):(0,_vue.h)("div",{key:e,class:["vxe-menu--item-wrapper","vxe-menu--item-level"+n,{"is--exact-active":s,"is--active":o}]},[u?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{class:"vxe-menu--item-link",to:u,onContextmenu(e){M(e,i)},onClick(e){U(e,i,t)}},{default:()=>z(i,t)}):(0,_vue.h)("div",{class:"vxe-menu--item-link",onContextmenu(e){M(e,i)},onClick(e){U(e,i,t)}},z(i,t)),l?(0,_vue.h)("div",{class:"vxe-menu--item-group"},a.map(e=>I(e,a))):(0,_ui.renderEmptyElement)(x)])}:I)(e,n))),t?(0,_vue.h)("div",Object.assign({ref:d,class:["vxe-menu--collapse-wrapper",{["size--"+s]:s,"is--collapsed":u,"is--enter":o,"is--loading":e}],style:l},a),[u?(0,_vue.h)("div",{class:"vxe-menu--item-list"},n.map(e=>I(e,n))):(0,_ui.renderEmptyElement)(x)]):(0,_ui.renderEmptyElement)(x),(0,_vue.h)(_loading.default,{class:"vxe-list-view--loading",modelValue:e})])},x},render(){return this.renderVN()}});
1
+ 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"),_loading=_interopRequireDefault(require("../../loading"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let errLog=(0,_log.createComponentLog)("menu").errLog,{menus,getConfig,getIcon}=_ui.VxeUI;function createInternalData(){return{menuEffectMaps:{}}}function createReactData(){return{initialized:!1,isEnterCollapse:!1,collapseStyle:{},collapseZindex:0,activeName:"",menuList:[],itemHeight:1}}let nemuUniqueKey=1e8;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeMenu",props:{modelValue:[String,Number],expandAll:Boolean,accordion:{type:Boolean,default:()=>getConfig().menu.accordion},collapsed:{type:Boolean,default:null},collapseFixed:Boolean,loading:Boolean,options:{type:Array,default:()=>[]},size:{type:String,default:()=>getConfig().menu.size||getConfig().size},menuConfig:Object},emits:["update:modelValue","click","option-menu","menu-click"],setup(c,e){let{emit:n,slots:d}=e;var t=_xeUtils.default.uniqueId();let i=(0,_vue.inject)("$xeLayoutAside",null),m=(0,_vue.ref)(),v=(0,_vue.ref)(),r=(0,_ui.useSize)(c).computeSize,p=(0,_vue.reactive)(createReactData()),_=createInternalData(),l={refElem:m},a=(0,_vue.computed)(()=>Object.assign({},getConfig().menu.menuConfig,c.menuConfig)),x=(0,_vue.computed)(()=>{var e=c.collapsed;return _xeUtils.default.isBoolean(e)?e:!!i&&!!i.props.collapsed}),o=(0,_vue.computed)(()=>{let e="";return e=i?i.props.collapseWidth||"":e}),u=(0,_vue.computed)(()=>{let e="";return e=i?i.props.width||"":e}),s={computeSize:r},h={xID:t,props:c,context:e,reactData:p,getRefMaps:()=>l,getComputeMaps:()=>s},g=e=>""+(e.title||e.name),f=o=>{let u=p.activeName;_xeUtils.default.eachTree(p.menuList,(e,t,i,n,l,a)=>{e.itemKey===u?(a.forEach(e=>{e.isActive=!0,o&&(e.isExpand=!0)}),e.isExactActive=!0):(e.isExactActive=!1,e.isActive=!1)},{children:"childList"})},C=()=>{let{options:e,expandAll:a}=c;p.menuList=_xeUtils.default.mapTree(e,(e,t,i,n,l)=>Object.assign(Object.assign({},e),{parentKey:l?l.name||n.slice(0,n.length-1).join(","):"",level:n.length,itemId:++nemuUniqueKey,itemKey:e.name||n.join(","),isExactActive:!1,isActive:!1,isExpand:_xeUtils.default.isBoolean(e.expanded)?e.expanded:!!a,hasChild:e.children&&0<e.children.length}),{children:"children",mapChildren:"childList"})},E=()=>{var e=c.collapseFixed;e&&(0,_vue.nextTick)(()=>{var e,t=p.isEnterCollapse,i=x.value,n=u.value,l=o.value,a=m.value;a&&(e=a.getBoundingClientRect(),a=a.parentNode,p.collapseStyle=i?{top:(0,_dom.toCssUnit)(e.top),left:(0,_dom.toCssUnit)(e.left),height:(0,_dom.toCssUnit)(a.clientHeight),width:t?n?(0,_dom.toCssUnit)(n):"":l?(0,_dom.toCssUnit)(l):"",zIndex:p.collapseZindex}:{})})},y=()=>{var e=c.collapseFixed;e&&(e=p.initialized,x.value&&!e&&(p.initialized=!0,(0,_vue.nextTick)(()=>{var e=v.value;e&&document.body.appendChild(e)})),p.isEnterCollapse=!1,p.collapseZindex<(0,_utils.getLastZIndex)()&&(p.collapseZindex=(0,_utils.nextZIndex)()),E())},k=(t,i,e)=>{var n=c.accordion;let l=_.menuEffectMaps,{itemId:a,hasChild:o,isExpand:u}=i;var s=x.value,r=!u;if(o){t.stopPropagation(),t.preventDefault(),l[a]&&clearTimeout(l[a]),n&&e.forEach(e=>{e!==i&&(e.isExpand=!1)}),i.isExpand=r;t=(s?v:m).value;if(t){n=t.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${a}"]`);let e=n?n.querySelector(".vxe-menu--item-group"):null;e&&(r?(e.style.height="0",e.setAttribute("data-effect","y"),requestAnimationFrame(()=>{e.style.height=e.scrollHeight+"px"})):(e.style.height=e.scrollHeight+"px",e.setAttribute("data-effect","y"),requestAnimationFrame(()=>{e.style.height="0"})),l[a]=setTimeout(()=>{delete l[a],e.removeAttribute("data-effect"),e.style.height=""},350))}}},M=e=>{p.activeName=e,n("update:modelValue",e)},U=(n,l)=>{var e=c.menuConfig,t=a.value;(e?(0,_utils.isEnableConf)(t):t.enabled)&&({options:e,visibleMethod:t}=t,t&&!t({$menu:h,options:e,currentMenu:l})||_ui.VxeUI.contextMenu&&_ui.VxeUI.contextMenu.openByEvent(n,{options:e,events:{optionClick(e){var t=e.option,i=menus.get(t.code),i=i?i.menuMenuMethod:null,t={menu:t,currentMenu:l,$event:n,$menu:h};i&&i(t,n),V("menu-click",t,e.$event)}}})),V("option-menu",{currentMenu:l},n)},I=(e,t,i)=>{var{itemKey:n,routerLink:l,hasChild:a}=t,l=(!l&&a?k(e,t,i):(M(n),q()),{currentMenu:t,menu:t});V("click",l,e)},b=()=>{var e=p.collapseStyle,t=u.value;p.collapseStyle=Object.assign({},e,{width:t?(0,_dom.toCssUnit)(t):""}),p.isEnterCollapse=!0},A=()=>{var e=p.isEnterCollapse;e||b()},q=()=>{var e=p.collapseStyle,t=m.value;p.collapseStyle=Object.assign({},e,{width:t?(0,_dom.toCssUnit)(t.offsetWidth):""}),p.isEnterCollapse=!1},L=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=d[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],V=(e,t,i)=>{n(e,(0,_ui.createEvent)(i,{$menu:h},t))};t={dispatchEvent:V};Object.assign(h,t,{});let N=(t,i)=>{var{icon:e,isExpand:n,hasChild:l}=t,a=t.slots||{},o=a.default||d.option,u=a.title||d.optionTitle||d["option-title"],a=a.icon||d.optionIcon||d["option-icon"],s=g(t),r=x.value,r={currentMenu:t,collapsed:r,option:t};return[o?(0,_ui.renderEmptyElement)(h):(0,_vue.h)("div",{class:"vxe-menu--item-link-icon"},a?L(a,r):e?[(0,_vue.h)("i",{class:e})]:[]),o?(0,_vue.h)("div",{class:"vxe-menu--item-custom-title"},L(o,r)):(0,_vue.h)("div",{class:"vxe-menu--item-link-title",title:s},u?L(u,r):s),l?(0,_vue.h)("div",{class:"vxe-menu--item-link-collapse",onClick(e){k(e,t,i)}},[(0,_vue.h)("i",{class:n?getIcon().MENU_ITEM_EXPAND_OPEN:getIcon().MENU_ITEM_EXPAND_CLOSE})]):(0,_ui.renderEmptyElement)(h)]},S=(t,i)=>{let{itemId:e,itemKey:n,level:l,hasChild:a,isActive:o,isExactActive:u,isExpand:s,routerLink:r,childList:c}=t;var d=p.isEnterCollapse,m=x.value;return t.permissionCode&&!_ui.permission.checkVisible(t.permissionCode)?(0,_ui.renderEmptyElement)(h):(0,_vue.h)("div",{key:n,class:["vxe-menu--item-wrapper","vxe-menu--item-level"+l,{"is--exact-active":u,"is--active":o,"is--expand":(!m||d)&&s}],"data-menu-id":e},[r?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{class:"vxe-menu--item-link",to:r,onContextmenu(e){U(e,t)},onClick(e){I(e,t,i)}},{default:()=>N(t,i)}):(0,_vue.h)("div",{class:"vxe-menu--item-link",onContextmenu(e){U(e,t)},onClick(e){I(e,t,i)}},N(t,i)),a?(0,_vue.h)("div",{class:"vxe-menu--item-group"},c.map(e=>S(e,c))):(0,_ui.renderEmptyElement)(h)])};let z=(0,_vue.ref)(0);return(0,_vue.watch)(()=>c.options?c.options.length:-1,()=>{z.value++}),(0,_vue.watch)(()=>c.options,()=>{z.value++}),(0,_vue.watch)(z,()=>{C(),f(!0)}),(0,_vue.watch)(()=>c.modelValue,e=>{p.activeName=e}),(0,_vue.watch)(()=>p.activeName,()=>{f(!0)}),(0,_vue.watch)(x,()=>{y()}),(0,_vue.onMounted)(()=>{var e=c.menuConfig,t=_ui.VxeUI.getComponent("VxeContextMenu");e&&!t&&errLog("vxe.error.reqComp",["vxe-context-menu"]),_ui.globalEvents.on(h,"resize",E),E()}),(0,_vue.onBeforeUnmount)(()=>{var e,t=v.value;t&&(e=t.parentNode)&&e.removeChild(t),_ui.globalEvents.off(h,"resize"),_xeUtils.default.assign(p,createReactData()),_xeUtils.default.assign(_,createInternalData())}),p.initialized=!!c.collapsed,p.activeName=c.modelValue,C(),f(!0),h.renderVN=()=>{var{loading:e,collapseFixed:t}=c;let{initialized:i,menuList:n,collapseStyle:l,isEnterCollapse:a}=p;var o=r.value;let u=x.value,s={};return t&&(s={onMouseenter:b,onMouseover:A,onMouseleave:q}),(0,_vue.h)("div",{ref:m,class:["vxe-menu",{["size--"+o]:o,"is--collapsed":u,"is--loading":e}]},[(0,_vue.h)("div",{class:"vxe-menu--item-list"},n.map(e=>(u?(t,i)=>{let{itemId:e,itemKey:n,level:l,hasChild:a,isActive:o,isExactActive:u,routerLink:s,childList:r}=t;return t.permissionCode&&!_ui.permission.checkVisible(t.permissionCode)?(0,_ui.renderEmptyElement)(h):(0,_vue.h)("div",{key:n,class:["vxe-menu--item-wrapper","vxe-menu--item-level"+l,{"is--exact-active":u,"is--active":o}],"data-menu-id":e},[s?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{class:"vxe-menu--item-link",to:s,onContextmenu(e){U(e,t)},onClick(e){I(e,t,i)}},{default:()=>N(t,i)}):(0,_vue.h)("div",{class:"vxe-menu--item-link",onContextmenu(e){U(e,t)},onClick(e){I(e,t,i)}},N(t,i)),a?(0,_vue.h)("div",{class:"vxe-menu--item-group"},r.map(e=>S(e,r))):(0,_ui.renderEmptyElement)(h)])}:S)(e,n))),i?(0,_vue.h)("div",Object.assign({ref:v,class:["vxe-menu--collapse-wrapper",{["size--"+o]:o,"is--collapsed":u,"is--enter":a,"is--loading":e}],style:l},s),[u?(0,_vue.h)("div",{class:"vxe-menu--item-list"},n.map(e=>S(e,n))):(0,_ui.renderEmptyElement)(h)]):(0,_ui.renderEmptyElement)(h),(0,_vue.h)(_loading.default,{class:"vxe-list-view--loading",modelValue:e})])},h},render(){return this.renderVN()}});
@@ -1,16 +1,20 @@
1
- .vxe-menu {
1
+ .vxe-menu,
2
+ .vxe-menu--collapse-wrapper {
2
3
  --vxe-ui-menu-current-font-size: var(--vxe-ui-font-size-default);
3
4
  --vxe-ui-menu-current-item-height: var(--vxe-ui-menu-item-height-default);
4
5
  }
5
- .vxe-menu.size--medium {
6
+ .vxe-menu.size--medium,
7
+ .vxe-menu--collapse-wrapper.size--medium {
6
8
  --vxe-ui-menu-current-font-size: var(--vxe-ui-font-size-medium);
7
9
  --vxe-ui-menu-current-item-height: var(--vxe-ui-menu-item-height-medium);
8
10
  }
9
- .vxe-menu.size--small {
11
+ .vxe-menu.size--small,
12
+ .vxe-menu--collapse-wrapper.size--small {
10
13
  --vxe-ui-menu-current-font-size: var(--vxe-ui-font-size-small);
11
14
  --vxe-ui-menu-current-item-height: var(--vxe-ui-menu-item-height-small);
12
15
  }
13
- .vxe-menu.size--mini {
16
+ .vxe-menu.size--mini,
17
+ .vxe-menu--collapse-wrapper.size--mini {
14
18
  --vxe-ui-menu-current-font-size: var(--vxe-ui-font-size-mini);
15
19
  --vxe-ui-menu-current-item-height: var(--vxe-ui-menu-item-height-mini);
16
20
  }
@@ -27,7 +31,8 @@
27
31
  min-height: 4em;
28
32
  }
29
33
 
30
- .vxe-menu {
34
+ .vxe-menu,
35
+ .vxe-menu--collapse-wrapper {
31
36
  font-size: var(--vxe-ui-menu-current-font-size);
32
37
  color: var(--vxe-ui-font-color);
33
38
  font-family: var(--vxe-ui-font-family);
@@ -124,9 +129,11 @@
124
129
  }
125
130
 
126
131
  .vxe-menu--item-group {
127
- max-height: 0;
132
+ height: 0;
128
133
  overflow: hidden;
129
- transition: max-height 0.3s ease-in-out;
134
+ }
135
+ .vxe-menu--item-group[data-effect] {
136
+ transition: height 0.3s ease-in-out;
130
137
  }
131
138
 
132
139
  .vxe-menu--item-wrapper.is--active > .vxe-menu--item-link {
@@ -137,5 +144,5 @@
137
144
  background-color: var(--vxe-ui-base-active-background-color);
138
145
  }
139
146
  .vxe-menu--item-wrapper.is--expand > .vxe-menu--item-group {
140
- max-height: 1000px;
147
+ height: auto;
141
148
  }
@@ -1 +1 @@
1
- .vxe-menu{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-default)}.vxe-menu.size--medium{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-medium)}.vxe-menu.size--small{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-small)}.vxe-menu.size--mini{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-mini)}.vxe-menu{position:relative}.vxe-menu.is--collapsed .vxe-menu--item-custom-title,.vxe-menu.is--collapsed .vxe-menu--item-link-collapse,.vxe-menu.is--collapsed .vxe-menu--item-link-title{display:none}.vxe-menu.is--loading{min-height:4em}.vxe-menu{font-size:var(--vxe-ui-menu-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);background-color:var(--vxe-ui-layout-background-color)}.vxe-menu--collapse-wrapper{display:none;position:absolute;overflow:auto;background-color:var(--vxe-ui-layout-background-color)}.vxe-menu--collapse-wrapper.is--collapsed{display:block;transition:all .25s ease-in-out}.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-custom-title,.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-link-collapse,.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-link-title{display:none}.vxe-menu--collapse-wrapper.is--enter{box-shadow:var(--vxe-ui-menu-collapse-wrapper-box-shadow)}.vxe-menu--item-link{display:flex;flex-direction:row;align-items:center;height:var(--vxe-ui-menu-current-item-height);color:var(--vxe-ui-font-color);text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-menu--item-link:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-menu--item-custom-title,.vxe-menu--item-link,.vxe-menu--item-link-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-menu--item-link-icon{flex-shrink:0;width:var(--vxe-ui-menu-icon-width);text-align:center}.vxe-menu--item-custom-title,.vxe-menu--item-link-title{flex-grow:1;padding-left:.2em}.vxe-menu--item-link-collapse{flex-shrink:0;padding:.5em}.vxe-menu--item-link-collapse i{display:inline-block;font-size:.8em;transition:transform .25s ease-in-out}.vxe-menu--item-wrapper.vxe-menu--item-level1>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double)}.vxe-menu--item-wrapper.vxe-menu--item-level1>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 1)}.vxe-menu--item-wrapper.vxe-menu--item-level2>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 2)}.vxe-menu--item-wrapper.vxe-menu--item-level3>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 3)}.vxe-menu--item-wrapper.vxe-menu--item-level4>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 4)}.vxe-menu--item-wrapper.vxe-menu--item-level5>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 5)}.vxe-menu--item-wrapper.vxe-menu--item-level6>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 6)}.vxe-menu--item-wrapper.vxe-menu--item-level7>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 7)}.vxe-menu--item-group{max-height:0;overflow:hidden;transition:max-height .3s ease-in-out}.vxe-menu--item-wrapper.is--active>.vxe-menu--item-link{font-weight:700}.vxe-menu--item-wrapper.is--exact-active>.vxe-menu--item-link{color:var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-menu--item-wrapper.is--expand>.vxe-menu--item-group{max-height:1000px}
1
+ .vxe-menu,.vxe-menu--collapse-wrapper{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-default)}.vxe-menu--collapse-wrapper.size--medium,.vxe-menu.size--medium{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-medium)}.vxe-menu--collapse-wrapper.size--small,.vxe-menu.size--small{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-small)}.vxe-menu--collapse-wrapper.size--mini,.vxe-menu.size--mini{--vxe-ui-menu-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-menu-current-item-height:var(--vxe-ui-menu-item-height-mini)}.vxe-menu{position:relative}.vxe-menu.is--collapsed .vxe-menu--item-custom-title,.vxe-menu.is--collapsed .vxe-menu--item-link-collapse,.vxe-menu.is--collapsed .vxe-menu--item-link-title{display:none}.vxe-menu.is--loading{min-height:4em}.vxe-menu,.vxe-menu--collapse-wrapper{font-size:var(--vxe-ui-menu-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);background-color:var(--vxe-ui-layout-background-color)}.vxe-menu--collapse-wrapper{display:none;position:absolute;overflow:auto;background-color:var(--vxe-ui-layout-background-color)}.vxe-menu--collapse-wrapper.is--collapsed{display:block;transition:all .25s ease-in-out}.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-custom-title,.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-link-collapse,.vxe-menu--collapse-wrapper:not(.is--enter) .vxe-menu--item-link-title{display:none}.vxe-menu--collapse-wrapper.is--enter{box-shadow:var(--vxe-ui-menu-collapse-wrapper-box-shadow)}.vxe-menu--item-link{display:flex;flex-direction:row;align-items:center;height:var(--vxe-ui-menu-current-item-height);color:var(--vxe-ui-font-color);text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-menu--item-link:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-menu--item-custom-title,.vxe-menu--item-link,.vxe-menu--item-link-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-menu--item-link-icon{flex-shrink:0;width:var(--vxe-ui-menu-icon-width);text-align:center}.vxe-menu--item-custom-title,.vxe-menu--item-link-title{flex-grow:1;padding-left:.2em}.vxe-menu--item-link-collapse{flex-shrink:0;padding:.5em}.vxe-menu--item-link-collapse i{display:inline-block;font-size:.8em;transition:transform .25s ease-in-out}.vxe-menu--item-wrapper.vxe-menu--item-level1>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double)}.vxe-menu--item-wrapper.vxe-menu--item-level1>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 1)}.vxe-menu--item-wrapper.vxe-menu--item-level2>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 2)}.vxe-menu--item-wrapper.vxe-menu--item-level3>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 3)}.vxe-menu--item-wrapper.vxe-menu--item-level4>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 4)}.vxe-menu--item-wrapper.vxe-menu--item-level5>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 5)}.vxe-menu--item-wrapper.vxe-menu--item-level6>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 6)}.vxe-menu--item-wrapper.vxe-menu--item-level7>.vxe-menu--item-link{padding:0 var(--vxe-ui-layout-padding-double) 0 calc(var(--vxe-ui-layout-padding-double) * 7)}.vxe-menu--item-group{height:0;overflow:hidden}.vxe-menu--item-group[data-effect]{transition:height .3s ease-in-out}.vxe-menu--item-wrapper.is--active>.vxe-menu--item-link{font-weight:700}.vxe-menu--item-wrapper.is--exact-active>.vxe-menu--item-link{color:var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-menu--item-wrapper.is--expand>.vxe-menu--item-group{height:auto}