vxe-pc-ui 4.11.34 → 4.11.36

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 (56) hide show
  1. package/es/context-menu/index.js +2 -2
  2. package/es/context-menu/src/context-menu.js +96 -38
  3. package/es/context-menu/style.css +1 -7
  4. package/es/context-menu/style.min.css +1 -1
  5. package/es/date-panel/src/util.js +14 -9
  6. package/es/dynamics/index.js +1 -1
  7. package/es/icon/style.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/ui/index.js +4 -2
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-context-menu/style.css +1 -7
  13. package/es/vxe-context-menu/style.min.css +1 -1
  14. package/lib/context-menu/index.js +2 -2
  15. package/lib/context-menu/index.min.js +1 -1
  16. package/lib/context-menu/src/context-menu.js +103 -34
  17. package/lib/context-menu/src/context-menu.min.js +1 -1
  18. package/lib/context-menu/style/style.css +1 -7
  19. package/lib/context-menu/style/style.min.css +1 -1
  20. package/lib/date-panel/src/util.js +15 -10
  21. package/lib/date-panel/src/util.min.js +1 -1
  22. package/lib/dynamics/index.js +2 -0
  23. package/lib/dynamics/index.min.js +1 -1
  24. package/lib/icon/style/style.css +1 -1
  25. package/lib/icon/style/style.min.css +1 -1
  26. package/lib/index.umd.js +128 -50
  27. package/lib/index.umd.min.js +1 -1
  28. package/lib/style.css +1 -1
  29. package/lib/style.min.css +1 -1
  30. package/lib/ui/index.js +4 -2
  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 -7
  35. package/lib/vxe-context-menu/style/style.min.css +1 -1
  36. package/package.json +2 -2
  37. package/packages/context-menu/index.ts +2 -2
  38. package/packages/context-menu/src/context-menu.ts +97 -34
  39. package/packages/date-panel/src/util.ts +15 -9
  40. package/packages/dynamics/index.ts +1 -1
  41. package/packages/ui/index.ts +3 -1
  42. package/styles/components/context-menu.scss +1 -11
  43. package/types/components/context-menu.d.ts +3 -1
  44. package/types/components/table-module/filter.d.ts +4 -0
  45. /package/es/icon/{iconfont.1767662202838.ttf → iconfont.1767850984359.ttf} +0 -0
  46. /package/es/icon/{iconfont.1767662202838.woff → iconfont.1767850984359.woff} +0 -0
  47. /package/es/icon/{iconfont.1767662202838.woff2 → iconfont.1767850984359.woff2} +0 -0
  48. /package/es/{iconfont.1767662202838.ttf → iconfont.1767850984359.ttf} +0 -0
  49. /package/es/{iconfont.1767662202838.woff → iconfont.1767850984359.woff} +0 -0
  50. /package/es/{iconfont.1767662202838.woff2 → iconfont.1767850984359.woff2} +0 -0
  51. /package/lib/icon/style/{iconfont.1767662202838.ttf → iconfont.1767850984359.ttf} +0 -0
  52. /package/lib/icon/style/{iconfont.1767662202838.woff → iconfont.1767850984359.woff} +0 -0
  53. /package/lib/icon/style/{iconfont.1767662202838.woff2 → iconfont.1767850984359.woff2} +0 -0
  54. /package/lib/{iconfont.1767662202838.ttf → iconfont.1767850984359.ttf} +0 -0
  55. /package/lib/{iconfont.1767662202838.woff → iconfont.1767850984359.woff} +0 -0
  56. /package/lib/{iconfont.1767662202838.woff2 → iconfont.1767850984359.woff2} +0 -0
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.34";
4
+ export const version = "4.11.36";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
@@ -71,7 +71,9 @@ setConfig({
71
71
  }
72
72
  },
73
73
  collapsePane: {},
74
- contextMenu: {},
74
+ contextMenu: {
75
+ autoLocate: true
76
+ },
75
77
  countdown: {},
76
78
  colorPicker: {
77
79
  type: 'rgb',
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.34"}`;
2
+ const version = `ui v${"4.11.36"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -15,12 +15,6 @@
15
15
  .vxe-context-menu.is--absolute {
16
16
  position: absolute;
17
17
  }
18
- .vxe-context-menu.cp--left .vxe-context-menu--children-wrapper {
19
- left: calc(-100% + 2px);
20
- }
21
- .vxe-context-menu.cp--right .vxe-context-menu--children-wrapper {
22
- left: calc(100% - 2px);
23
- }
24
18
 
25
19
  .vxe-context-menu--group-wrapper {
26
20
  border-top: 1px solid var(--vxe-ui-base-popup-border-color);
@@ -43,7 +37,7 @@
43
37
  .vxe-context-menu--children-wrapper {
44
38
  display: none;
45
39
  position: absolute;
46
- transform: translateY(-5px);
40
+ transform: translate(0, -5px);
47
41
  }
48
42
 
49
43
  .vxe-context-menu--item-wrapper {
@@ -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--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)}
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--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:translate(0,-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)}
@@ -41,8 +41,8 @@ const ContextMenuController = exports.ContextMenuController = {
41
41
  evnt.preventDefault();
42
42
  evnt.stopPropagation();
43
43
  const opts = Object.assign({}, options);
44
- const x = evnt.clientX;
45
- const y = evnt.clientY;
44
+ const x = evnt.clientX + 1;
45
+ const y = evnt.clientY + 1;
46
46
  openMenu(opts, x, y);
47
47
  },
48
48
  close() {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.VxeContextMenu=exports.ContextMenuController=exports.ContextMenu=void 0;var _core=require("@vxe-ui/core"),_contextMenu=_interopRequireDefault(require("./src/context-menu")),_dynamics=require("../dynamics");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeContextMenu=exports.VxeContextMenu=Object.assign({},_contextMenu.default,{install(e){e.component(_contextMenu.default.name,_contextMenu.default)}});function openMenu(e,n,t){_dynamics.dynamicStore.globalContextMenu={modelValue:!0,options:e.options,className:e.className,size:e.size,zIndex:e.zIndex,x:n,y:t,position:"fixed",destroyOnClose:!0,transfer:!1,events:e.events},(0,_dynamics.checkDynamic)()}const ContextMenuController=exports.ContextMenuController={open(e){e=Object.assign({x:0,y:0},e);openMenu(e,e.x,e.y)},openByEvent(e,n){e.preventDefault(),e.stopPropagation(),openMenu(Object.assign({},n),e.clientX,e.clientY)},close(){_dynamics.dynamicStore.globalContextMenu=null}},ContextMenu=(_dynamics.dynamicApp.use(VxeContextMenu),_core.VxeUI.component(_contextMenu.default),_core.VxeUI.contextMenu=ContextMenuController,exports.ContextMenu=VxeContextMenu);var _default=exports.default=VxeContextMenu;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.VxeContextMenu=exports.ContextMenuController=exports.ContextMenu=void 0;var _core=require("@vxe-ui/core"),_contextMenu=_interopRequireDefault(require("./src/context-menu")),_dynamics=require("../dynamics");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const VxeContextMenu=exports.VxeContextMenu=Object.assign({},_contextMenu.default,{install(e){e.component(_contextMenu.default.name,_contextMenu.default)}});function openMenu(e,n,t){_dynamics.dynamicStore.globalContextMenu={modelValue:!0,options:e.options,className:e.className,size:e.size,zIndex:e.zIndex,x:n,y:t,position:"fixed",destroyOnClose:!0,transfer:!1,events:e.events},(0,_dynamics.checkDynamic)()}const ContextMenuController=exports.ContextMenuController={open(e){e=Object.assign({x:0,y:0},e);openMenu(e,e.x,e.y)},openByEvent(e,n){e.preventDefault(),e.stopPropagation(),openMenu(Object.assign({},n),e.clientX+1,e.clientY+1)},close(){_dynamics.dynamicStore.globalContextMenu=null}},ContextMenu=(_dynamics.dynamicApp.use(VxeContextMenu),_core.VxeUI.component(_contextMenu.default),_core.VxeUI.contextMenu=ContextMenuController,exports.ContextMenu=VxeContextMenu);var _default=exports.default=VxeContextMenu;
@@ -25,7 +25,7 @@ function createReactData() {
25
25
  left: '',
26
26
  zIndex: 0
27
27
  },
28
- childPos: ''
28
+ childOffsetX: 0
29
29
  };
30
30
  }
31
31
  var _default = exports.default = (0, _comp.defineVxeComponent)({
@@ -40,6 +40,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
40
40
  options: Array,
41
41
  x: [Number, String],
42
42
  y: [Number, String],
43
+ autoLocate: {
44
+ type: Boolean,
45
+ default: () => (0, _ui.getConfig)().contextMenu.autoLocate
46
+ },
43
47
  zIndex: [Number, String],
44
48
  position: {
45
49
  type: String,
@@ -122,7 +126,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
122
126
  } = reactData;
123
127
  const value = true;
124
128
  reactData.visible = value;
125
- updateLocate();
129
+ handleLocate();
126
130
  updateZindex();
127
131
  if (modelValue !== value) {
128
132
  emitModel(value);
@@ -135,7 +139,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
135
139
  visible: value
136
140
  }, null);
137
141
  }
138
- return (0, _vue.nextTick)();
142
+ return (0, _vue.nextTick)().then(() => {
143
+ updateLocate();
144
+ });
139
145
  };
140
146
  const close = () => {
141
147
  const {
@@ -159,7 +165,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
159
165
  }
160
166
  return (0, _vue.nextTick)();
161
167
  };
162
- const updateLocate = () => {
168
+ const handleLocate = () => {
163
169
  const {
164
170
  x,
165
171
  y
@@ -169,6 +175,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
169
175
  } = reactData;
170
176
  popupStyle.left = (0, _dom.toCssUnit)(x || 0);
171
177
  popupStyle.top = (0, _dom.toCssUnit)(y || 0);
178
+ updateLocate();
172
179
  };
173
180
  const updateZindex = () => {
174
181
  const {
@@ -187,6 +194,67 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
187
194
  }
188
195
  }
189
196
  };
197
+ const updateLocate = () => {
198
+ const {
199
+ autoLocate,
200
+ position
201
+ } = props;
202
+ const {
203
+ popupStyle
204
+ } = reactData;
205
+ if (autoLocate) {
206
+ const wrapperEl = refElem.value;
207
+ if (wrapperEl) {
208
+ const {
209
+ visibleWidth,
210
+ visibleHeight
211
+ } = (0, _dom.getDomNode)();
212
+ const wrapperStyle = getComputedStyle(wrapperEl);
213
+ const offsetTop = _xeUtils.default.toNumber(wrapperStyle.top);
214
+ const offsetLeft = _xeUtils.default.toNumber(wrapperStyle.left);
215
+ const wrapperWidth = wrapperEl.offsetWidth;
216
+ const wrapperHeight = wrapperEl.offsetHeight;
217
+ if (position === 'absolute') {
218
+ //
219
+ } else {
220
+ if (offsetTop + wrapperHeight > visibleHeight) {
221
+ popupStyle.top = `${Math.max(0, offsetTop - wrapperHeight)}px`;
222
+ }
223
+ if (offsetLeft + wrapperWidth > visibleWidth) {
224
+ popupStyle.left = `${Math.max(0, offsetLeft - wrapperWidth)}px`;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ updateChildLocate();
230
+ };
231
+ const updateChildLocate = () => {
232
+ const wrapperEl = refElem.value;
233
+ if (wrapperEl) {
234
+ const {
235
+ visibleWidth
236
+ } = (0, _dom.getDomNode)();
237
+ const owSize = 2;
238
+ const handleStyle = () => {
239
+ const wrapperStyle = getComputedStyle(wrapperEl);
240
+ const offsetLeft = _xeUtils.default.toNumber(wrapperStyle.left);
241
+ const wrapperWidth = wrapperEl.offsetWidth;
242
+ const childEl = wrapperEl.querySelector('.vxe-context-menu--children-wrapper');
243
+ const childWidth = childEl ? childEl.offsetWidth : wrapperWidth;
244
+ if (offsetLeft + wrapperWidth > visibleWidth - childWidth) {
245
+ // 往左
246
+ reactData.childOffsetX = -childWidth + owSize;
247
+ } else {
248
+ // 往右
249
+ reactData.childOffsetX = wrapperWidth - owSize;
250
+ }
251
+ };
252
+ handleStyle();
253
+ (0, _vue.nextTick)(() => {
254
+ handleStyle();
255
+ });
256
+ }
257
+ };
190
258
  const handleVisible = () => {
191
259
  const {
192
260
  modelValue
@@ -225,6 +293,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
225
293
  reactData.activeOption = item;
226
294
  if (hasChildMenu(item)) {
227
295
  reactData.activeChildOption = findFirstChildItem(item);
296
+ (0, _vue.nextTick)(() => {
297
+ updateChildLocate();
298
+ });
228
299
  } else {
229
300
  reactData.activeChildOption = null;
230
301
  }
@@ -339,17 +410,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
339
410
  const handleGlobalKeydownEvent = evnt => {
340
411
  const {
341
412
  visible,
342
- childPos,
343
413
  activeOption,
344
414
  activeChildOption
345
415
  } = reactData;
346
416
  const allFirstMenuList = computeAllFirstMenuList.value;
347
417
  if (visible) {
348
- const isLeftArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_LEFT);
349
418
  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
419
  const isDwArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_DOWN);
420
+ const isLeftArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_LEFT);
421
+ const isRightArrow = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT);
352
422
  const isEnter = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ENTER);
423
+ const isEsc = _ui.globalEvents.hasKey(evnt, _ui.GLOBAL_EVENT_KEYS.ESCAPE);
424
+ if (isEsc) {
425
+ close();
426
+ return;
427
+ }
353
428
  // 回车选中
354
429
  if (isEnter) {
355
430
  if (activeOption || activeChildOption) {
@@ -357,6 +432,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
357
432
  evnt.stopPropagation();
358
433
  if (!activeChildOption && hasChildMenu(activeOption)) {
359
434
  reactData.activeChildOption = findFirstChildItem(activeOption);
435
+ updateChildLocate();
360
436
  return;
361
437
  }
362
438
  handleItemClickEvent(evnt, activeChildOption || activeOption);
@@ -368,23 +444,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
368
444
  if (isUpArrow) {
369
445
  evnt.preventDefault();
370
446
  reactData.activeChildOption = findPrevChildItem(activeOption, activeChildOption);
447
+ updateChildLocate();
371
448
  } else if (isDwArrow) {
372
449
  evnt.preventDefault();
373
450
  reactData.activeChildOption = findNextChildItem(activeOption, activeChildOption);
451
+ updateChildLocate();
374
452
  } else if (isLeftArrow) {
375
453
  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
- }
454
+ reactData.activeChildOption = null;
388
455
  }
389
456
  } else if (activeOption) {
390
457
  evnt.preventDefault();
@@ -394,14 +461,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
394
461
  reactData.activeOption = findNextFirstItem(allFirstMenuList, activeOption);
395
462
  } else {
396
463
  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
- }
464
+ if (isRightArrow) {
465
+ reactData.activeChildOption = findFirstChildItem(activeOption);
466
+ updateChildLocate();
405
467
  }
406
468
  }
407
469
  }
@@ -493,7 +555,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
493
555
  const renderMenus = () => {
494
556
  const {
495
557
  activeOption,
496
- activeChildOption
558
+ activeChildOption,
559
+ childOffsetX
497
560
  } = reactData;
498
561
  const menuGroups = computeMenuGroups.value;
499
562
  const mgVNs = [];
@@ -505,14 +568,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
505
568
  } = firstItem;
506
569
  const hasChildMenus = children && children.some(child => child.visible !== false);
507
570
  const isActiveFirst = activeOption === firstItem;
571
+ const showChild = isActiveFirst && !!activeChildOption;
508
572
  moVNs.push((0, _vue.h)('div', {
509
573
  key: `${gIndex}_${i}`,
510
574
  class: ['vxe-context-menu--item-wrapper vxe-context-menu--first-item', firstItem.className || '', {
511
575
  'is--active': isActiveFirst,
512
576
  'is--subactive': isActiveFirst && !!activeChildOption
513
577
  }]
514
- }, [hasChildMenus ? (0, _vue.h)('div', {
515
- class: 'vxe-context-menu--children-wrapper'
578
+ }, [hasChildMenus && showChild ? (0, _vue.h)('div', {
579
+ class: 'vxe-context-menu--children-wrapper',
580
+ style: {
581
+ transform: `translate(${childOffsetX}px, -5px)`
582
+ }
516
583
  }, children.map(twoItem => {
517
584
  return (0, _vue.h)('div', {
518
585
  class: ['vxe-context-menu--item-wrapper vxe-context-menu--child-item', twoItem.className || '', {
@@ -536,13 +603,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
536
603
  } = props;
537
604
  const {
538
605
  visible,
539
- popupStyle,
540
- childPos
606
+ popupStyle
541
607
  } = reactData;
542
608
  const vSize = computeSize.value;
543
609
  return (0, _vue.h)('div', {
544
610
  ref: refElem,
545
- class: ['vxe-context-menu vxe-context-menu--wrapper', position === 'absolute' ? 'is--' + position : 'is--fixed', `cp--${childPos === 'left' ? childPos : 'right'}`, className || '', {
611
+ class: ['vxe-context-menu vxe-context-menu--wrapper', position === 'absolute' ? 'is--' + position : 'is--fixed', className || '', {
546
612
  [`size--${vSize}`]: vSize,
547
613
  'is--visible': visible
548
614
  }],
@@ -550,7 +616,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
550
616
  }, (destroyOnClose ? visible : true) ? renderMenus() : []);
551
617
  };
552
618
  (0, _vue.watch)(computeTopAndLeft, () => {
553
- updateLocate();
619
+ handleLocate();
620
+ (0, _vue.nextTick)(() => {
621
+ updateLocate();
622
+ });
554
623
  });
555
624
  (0, _vue.watch)(() => props.modelValue, () => {
556
625
  handleVisible();
@@ -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(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()}});
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},childOffsetX:0}}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],autoLocate:{type:Boolean,default:()=>(0,_ui.getConfig)().contextMenu.autoLocate},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(r,e){const n=e["emit"];var t=_xeUtils.default.uniqueId();const s=(0,_vue.ref)(),a=(0,_ui.useSize)(r)["computeSize"],i=createInternalData(),c=(0,_vue.reactive)(createReactData()),l={refElem:s},o=(0,_vue.computed)(()=>{var e=r["options"];return e||[]}),v=(0,_vue.computed)(()=>{var t=o.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];C(l)&&i.push(l)}}return i});var u=(0,_vue.computed)(()=>{var{x:e,y:t}=r;return""+e+t});const d={},_={xID:t,props:r,context:e,reactData:c,getRefMaps:()=>l,getComputeMaps:()=>d},p=(e,t,i)=>{n(e,(0,_ui.createEvent)(i,{$contextMenu:_},t))},f=e=>{n("update:modelValue",e)},m=()=>{var e=r["modelValue"],t=c["visible"];c.visible=!0,h();{var{zIndex:i,transfer:n}=r,l=c.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)().then(()=>{g()})},x=()=>{var e=r["modelValue"],t=c["visible"];return(c.visible=!1)!==e&&(f(!1),p("change",{value:!1},null)),!1!==t&&p("hide",{visible:!1},null),(0,_vue.nextTick)()},h=()=>{var{x:e,y:t}=r,i=c["popupStyle"];i.left=(0,_dom.toCssUnit)(e||0),i.top=(0,_dom.toCssUnit)(t||0),g()},g=()=>{var e,t,i,n,l,{autoLocate:u,position:a}=r,o=c["popupStyle"];u&&(u=s.value)&&({visibleWidth:e,visibleHeight:t}=(0,_dom.getDomNode)(),n=getComputedStyle(u),i=_xeUtils.default.toNumber(n.top),n=_xeUtils.default.toNumber(n.left),l=u.offsetWidth,u=u.offsetHeight,"absolute"!==a)&&(t<i+u&&(o.top=Math.max(0,i-u)+"px"),e<n+l)&&(o.left=Math.max(0,n-l)+"px"),E()},E=()=>{const n=s.value;if(n){const l=(0,_dom.getDomNode)()["visibleWidth"],e=()=>{var e=getComputedStyle(n),e=_xeUtils.default.toNumber(e.left),t=n.offsetWidth,i=n.querySelector(".vxe-context-menu--children-wrapper"),i=i?i.offsetWidth:t;e+t>l-i?c.childOffsetX=2-i:c.childOffsetX=t-2};e(),(0,_vue.nextTick)(()=>{e()})}},b=()=>{var e=r["modelValue"];(e?m:x)()};t={dispatchEvent:p,open:m,close:x};const O=e=>{e=e.children;return e&&e.some(e=>!1!==e.visible)},y=(e,t)=>{O(t)||(p("option-click",{option:t},e),x())},N=()=>{c.activeOption=null,c.activeChildOption=null},C=e=>!e.loading&&!e.disabled&&!1!==e.visible,S=e=>{var t=e["children"];if(t)for(let e=0;e<t.length;e++){var i=t[e];if(C(i))return i}return null},I=e=>{var t=c["visible"];t&&(t=s.value,(0,_dom.getEventTargetNode)(e,t,"").flag||x())},T=e=>{var{visible:t,activeOption:i,activeChildOption:n}=c,l=v.value;if(t){var t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_LEFT),o=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_RIGHT),r=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER);if(!_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE))return r&&(i||n)?(e.preventDefault(),e.stopPropagation(),!n&&O(i)?(c.activeChildOption=S(i),void E()):void y(e,n||i)):void(n?t?(e.preventDefault(),c.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;C(l)&&(n=l)}if(!n)for(let e=i.length-1;0<=e;e--){var u=i[e];if(C(u))return u}}return n})(i,n),E()):u?(e.preventDefault(),c.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||C(u)&&(l=u),t){if(C(u))return u}else t=i===u}}return l})(i,n),E()):a&&(e.preventDefault(),c.activeChildOption=null):i?(e.preventDefault(),t?c.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)})(l,i):u?c.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)})(l,i):O(i)&&o&&(c.activeChildOption=S(i),E())):(e.preventDefault(),c.activeOption=_xeUtils.default.first(l)));x()}},D=e=>{var t=c["visible"];t&&(t=s.value,(0,_dom.getEventTargetNode)(e,t,"").flag||x())},k=()=>{var e=c["visible"];e&&x()};Object.assign(_,t,{});const L=(n,l,e)=>{var t,i,u,a,{visible:o,disabled:r,loading:s}=n;return!1===o?(0,_ui.renderEmptyElement)(_):(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){y(e,n)},onMouseenter(e){var t,i;t=n,i=l,c.activeOption=i||t,i?(c.activeOption=i,c.activeChildOption=t):(c.activeOption=t,O(t)?(c.activeChildOption=S(t),(0,_vue.nextTick)(()=>{E()})):c.activeChildOption=null)},onMouseleave:N},[(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)(_)]),(0,_vue.h)("div",{class:"vxe-context-menu--item-label"},a),s||!u&&!i.content?(0,_ui.renderEmptyElement)(_):(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)(_)]),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)(_)]))};return(0,_vue.watch)(u,()=>{h(),(0,_vue.nextTick)(()=>{g()})}),(0,_vue.watch)(()=>r.modelValue,()=>{b()}),b(),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(_,"mousewheel",I),_ui.globalEvents.on(_,"keydown",T),_ui.globalEvents.on(_,"mousedown",D),_ui.globalEvents.on(_,"blur",k)}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(_,"mousewheel"),_ui.globalEvents.off(_,"keydown"),_ui.globalEvents.off(_,"mousedown"),_ui.globalEvents.off(_,"blur"),_xeUtils.default.assign(c,createReactData()),_xeUtils.default.assign(i,createInternalData())}),_.renderVN=()=>{var{className:e,position:t,destroyOnClose:i}=r,{visible:n,popupStyle:l}=c,u=a.value;return(0,_vue.h)("div",{ref:s,class:["vxe-context-menu vxe-context-menu--wrapper","absolute"===t?"is--"+t:"is--fixed",e||"",{["size--"+u]:u,"is--visible":n}],style:l},!i||n?(()=>{const{activeOption:r,activeChildOption:s,childOffsetX:v}=c;var e=o.value;const t=[];return e.forEach((e,a)=>{const o=[];e.forEach((t,e)=>{var i=t["children"],n=i&&i.some(e=>!1!==e.visible),l=r===t,u=l&&!!s;o.push((0,_vue.h)("div",{key:a+"_"+e,class:["vxe-context-menu--item-wrapper vxe-context-menu--first-item",t.className||"",{"is--active":l,"is--subactive":l&&!!s}]},[n&&u?(0,_vue.h)("div",{class:"vxe-context-menu--children-wrapper",style:{transform:`translate(${v}px, -5px)`}},i.map(e=>(0,_vue.h)("div",{class:["vxe-context-menu--item-wrapper vxe-context-menu--child-item",e.className||"",{"is--active":s===e}]},[L(e,t)]))):(0,_ui.renderEmptyElement)(_),L(t,null,n)]))}),t.push((0,_vue.h)("div",{key:a,class:"vxe-context-menu--group-wrapper"},o))}),t})():[])},_},render(){return this.renderVN()}});
@@ -15,12 +15,6 @@
15
15
  .vxe-context-menu.is--absolute {
16
16
  position: absolute;
17
17
  }
18
- .vxe-context-menu.cp--left .vxe-context-menu--children-wrapper {
19
- left: calc(-100% + 2px);
20
- }
21
- .vxe-context-menu.cp--right .vxe-context-menu--children-wrapper {
22
- left: calc(100% - 2px);
23
- }
24
18
 
25
19
  .vxe-context-menu--group-wrapper {
26
20
  border-top: 1px solid var(--vxe-ui-base-popup-border-color);
@@ -43,7 +37,7 @@
43
37
  .vxe-context-menu--children-wrapper {
44
38
  display: none;
45
39
  position: absolute;
46
- transform: translateY(-5px);
40
+ transform: translate(0, -5px);
47
41
  }
48
42
 
49
43
  .vxe-context-menu--item-wrapper {
@@ -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--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)}
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--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:translate(0,-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)}
@@ -116,16 +116,15 @@ function parseDateObj(val, type, options) {
116
116
  // '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
117
117
  // '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
118
118
  if (labelFormat && type === 'week') {
119
- const weekNum = _xeUtils.default.getYearWeek(dValue, firstDay);
120
- const weekDate = _xeUtils.default.getWhatWeek(dValue, 0, weekNum === 1 ? (6 + firstDay) % 7 : firstDay, firstDay);
121
- const weekFullYear = weekDate.getFullYear();
122
- if (weekFullYear !== dValue.getFullYear()) {
123
- const yyIndex = labelFormat.indexOf('yyyy');
119
+ const oldYyyy = dValue.getFullYear();
120
+ const M = dValue.getMonth() + 1;
121
+ const W = _xeUtils.default.getYearWeek(dValue, firstDay);
122
+ if (checkWeekOfsetYear(W, M)) {
123
+ const formatY = 'yyyy';
124
+ const newYyyy = oldYyyy + 1;
125
+ const yyIndex = labelFormat.indexOf(formatY);
124
126
  if (yyIndex > -1) {
125
- const yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4));
126
- if (yyNum && !isNaN(yyNum)) {
127
- dLabel = dLabel.replace(`${yyNum}`, `${weekFullYear}`);
128
- }
127
+ dLabel = dLabel.substring(0, yyIndex) + newYyyy + dLabel.substring(yyIndex + formatY.length);
129
128
  }
130
129
  }
131
130
  }
@@ -242,4 +241,10 @@ function getRangeDateByCode(code, val, type, options) {
242
241
  startValue,
243
242
  endValue
244
243
  };
245
- }
244
+ }
245
+ /**
246
+ * 判断周的年份是否跨年
247
+ */
248
+ const checkWeekOfsetYear = (W, M) => {
249
+ return `${W}` === '1' && `${M}` === '12';
250
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDateByCode=getDateByCode,exports.getDateQuarter=getDateQuarter,exports.getRangeDateByCode=getRangeDateByCode,exports.handleValueFormat=handleValueFormat,exports.hasDateValueType=hasDateValueType,exports.hasTimestampValueType=hasTimestampValueType,exports.parseDateObj=parseDateObj,exports.parseDateValue=exports.parseDateString=void 0,exports.toStringTimeDate=toStringTimeDate;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function hasTimestampValueType(e){return"timestamp"===e}function hasDateValueType(e){return"date"===e}function handleValueFormat(e,t){return!t||hasDateValueType(t)||hasTimestampValueType(t)?"time"===e?"HH:mm:ss":"datetime"===e?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd":t}function toStringTimeDate(s){var r=new Date(2e3,0,1);if(s){let e=0,t=0,a=0;(_xeUtils.default.isNumber(s)||/^[0-9]{11,15}$/.test(""+s))&&(s=new Date(Number(s))),_xeUtils.default.isDate(s)?(e=s.getHours(),t=s.getMinutes(),a=s.getSeconds()):(s=(s=_xeUtils.default.toValueString(s)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(e=_xeUtils.default.toNumber(s[1]),t=_xeUtils.default.toNumber(s[3]),a=_xeUtils.default.toNumber(s[5])),r.setHours(e),r.setMinutes(t),r.setSeconds(a)}return r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}const parseDateValue=(e,t,a)=>{a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test(""+e)?new Date(Number(e)):_xeUtils.default.isString(e)?_xeUtils.default.toStringDate(_xeUtils.default.last(e.split(",")),a):_xeUtils.default.toStringDate(e,a):null},parseDateString=(exports.parseDateValue=parseDateValue,(e,t,a)=>{e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""});function parseDateObj(e,t,a){var{labelFormat:s,firstDay:r}=a;let l=null,u="";return e&&(l=parseDateValue(e,t,a)),_xeUtils.default.isValidDate(l)?(u=_xeUtils.default.toDateString(l,s,{firstDay:r}),s&&"week"===t&&(e=_xeUtils.default.getYearWeek(l,r),(a=_xeUtils.default.getWhatWeek(l,0,1===e?(6+r)%7:r,r).getFullYear())!==l.getFullYear())&&-1<(t=s.indexOf("yyyy"))&&(e=Number(u.substring(t,t+4)))&&!isNaN(e)&&(u=u.replace(""+e,""+a))):l=null,{label:u,value:l}}function getDateByCode(e,t,a,s){var{valueFormat:r,firstDay:l}=s;let u=null;var i=("prev"===e||"next"===e?new Date:t?parseDateValue(t,a,s):null)||new Date;switch(e){case"prev":case"next":case"minus":case"plus":var n="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(i,n);break;case"week":u=_xeUtils.default.getWhatWeek(i,n,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(i,n);break;case"quarter":u=_xeUtils.default.getWhatQuarter(i,n);break;case"year":u=_xeUtils.default.getWhatYear(i,n)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}exports.parseDateString=parseDateString;const rangeDateOffsetNumMaps={last180:-180,last90:-90,last60:-60,last30:-30,last7:-7,last3:-3,last1:-1};function getRangeDateOffsetNum(e){return rangeDateOffsetNumMaps[e]||0}function getRangeDateByCode(e,t,a,s){var{valueFormat:r,firstDay:l}=s,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date;let i=null;t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var n=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":i=_xeUtils.default.getWhatDay(u,n);break;case"week":i=_xeUtils.default.getWhatWeek(u,n,l,l);break;case"month":i=_xeUtils.default.getWhatMonth(u,n);break;case"quarter":i=_xeUtils.default.getWhatQuarter(u,n);break;case"year":i=_xeUtils.default.getWhatYear(u,n)}break;default:i=new Date}return{startValue:i?_xeUtils.default.toDateString(i,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDateByCode=getDateByCode,exports.getDateQuarter=getDateQuarter,exports.getRangeDateByCode=getRangeDateByCode,exports.handleValueFormat=handleValueFormat,exports.hasDateValueType=hasDateValueType,exports.hasTimestampValueType=hasTimestampValueType,exports.parseDateObj=parseDateObj,exports.parseDateValue=exports.parseDateString=void 0,exports.toStringTimeDate=toStringTimeDate;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function hasTimestampValueType(e){return"timestamp"===e}function hasDateValueType(e){return"date"===e}function handleValueFormat(e,t){return!t||hasDateValueType(t)||hasTimestampValueType(t)?"time"===e?"HH:mm:ss":"datetime"===e?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd":t}function toStringTimeDate(s){var r=new Date(2e3,0,1);if(s){let e=0,t=0,a=0;(_xeUtils.default.isNumber(s)||/^[0-9]{11,15}$/.test(""+s))&&(s=new Date(Number(s))),_xeUtils.default.isDate(s)?(e=s.getHours(),t=s.getMinutes(),a=s.getSeconds()):(s=(s=_xeUtils.default.toValueString(s)).match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/))&&(e=_xeUtils.default.toNumber(s[1]),t=_xeUtils.default.toNumber(s[3]),a=_xeUtils.default.toNumber(s[5])),r.setHours(e),r.setMinutes(t),r.setSeconds(a)}return r}function getDateQuarter(e){e=e.getMonth();return e<3?1:e<6?2:e<9?3:4}const parseDateValue=(e,t,a)=>{a=a.valueFormat;return e?"time"===t?toStringTimeDate(e):_xeUtils.default.isNumber(e)||/^[0-9]{10,15}$/.test(""+e)?new Date(Number(e)):_xeUtils.default.isString(e)?_xeUtils.default.toStringDate(_xeUtils.default.last(e.split(",")),a):_xeUtils.default.toStringDate(e,a):null},parseDateString=(exports.parseDateValue=parseDateValue,(e,t,a)=>{e=parseDateValue(e,t,a);return e?_xeUtils.default.toDateString(e,a.valueFormat):""});function parseDateObj(e,t,a){var{labelFormat:s,firstDay:r}=a;let l=null,u="";return e&&(l=parseDateValue(e,t,a)),_xeUtils.default.isValidDate(l)?(u=_xeUtils.default.toDateString(l,s,{firstDay:r}),s&&"week"===t&&(e=l.getFullYear(),a=l.getMonth()+1,t=_xeUtils.default.getYearWeek(l,r),checkWeekOfsetYear(t,a))&&(r=e+1,-1<(a=s.indexOf(t="yyyy")))&&(u=u.substring(0,a)+r+u.substring(a+t.length))):l=null,{label:u,value:l}}function getDateByCode(e,t,a,s){var{valueFormat:r,firstDay:l}=s;let u=null;var i=("prev"===e||"next"===e?new Date:t?parseDateValue(t,a,s):null)||new Date;switch(e){case"prev":case"next":case"minus":case"plus":var n="plus"===e||"next"===e?1:-1;switch(a){case"date":case"datetime":u=_xeUtils.default.getWhatDay(i,n);break;case"week":u=_xeUtils.default.getWhatWeek(i,n,l,l);break;case"month":u=_xeUtils.default.getWhatMonth(i,n);break;case"quarter":u=_xeUtils.default.getWhatQuarter(i,n);break;case"year":u=_xeUtils.default.getWhatYear(i,n)}break;default:u=new Date}return{value:u?_xeUtils.default.toDateString(u,r):""}}exports.parseDateString=parseDateString;const rangeDateOffsetNumMaps={last180:-180,last90:-90,last60:-60,last30:-30,last7:-7,last3:-3,last1:-1};function getRangeDateOffsetNum(e){return rangeDateOffsetNumMaps[e]||0}function getRangeDateByCode(e,t,a,s){var{valueFormat:r,firstDay:l}=s,u=((t=_xeUtils.default.isArray(t)?t.join(""):t)?parseDateValue(t,a,s):null)||new Date;let i=null;t=u;switch(e){case"last1":case"last3":case"last7":case"last30":case"last60":case"last90":case"last180":var n=getRangeDateOffsetNum(e);switch(a){case"date":case"datetime":i=_xeUtils.default.getWhatDay(u,n);break;case"week":i=_xeUtils.default.getWhatWeek(u,n,l,l);break;case"month":i=_xeUtils.default.getWhatMonth(u,n);break;case"quarter":i=_xeUtils.default.getWhatQuarter(u,n);break;case"year":i=_xeUtils.default.getWhatYear(u,n)}break;default:i=new Date}return{startValue:i?_xeUtils.default.toDateString(i,r):"",endValue:t?_xeUtils.default.toDateString(t,r):""}}const checkWeekOfsetYear=(e,t)=>""+e=="1"&&""+t=="12";
@@ -59,6 +59,8 @@ const VxeDynamics = (0, _comp.defineVxeComponent)({
59
59
  optionClick(params);
60
60
  }
61
61
  }
62
+ }, {
63
+ events: undefined
62
64
  });
63
65
  }
64
66
  return [modals.length ? (0, _vue.h)('div', {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkDynamic=checkDynamic,exports.dynamicStore=exports.dynamicApp=void 0;var _vue=require("vue"),_comp=require("../ui/src/comp"),_core=require("@vxe-ui/core");let dynamicContainerElem;const dynamicStore=exports.dynamicStore=(0,_vue.reactive)({modals:[],drawers:[],globalLoading:null,globalWatermark:null,globalContextMenu:null}),VxeDynamics=(0,_comp.defineVxeComponent)({setup(){const d=_core.VxeUI.getComponent("vxe-modal"),l=_core.VxeUI.getComponent("vxe-drawer"),u=_core.VxeUI.getComponent("vxe-loading"),v=_core.VxeUI.getComponent("vxe-watermark"),p=_core.VxeUI.getComponent("vxe-context-menu");return()=>{var{modals:e,drawers:n,globalWatermark:o,globalLoading:t,globalContextMenu:a}=dynamicStore;let c=a;if(a){const{optionClick:m,show:r,hide:i}=a.events||{};c=Object.assign({},a,{onShow(e){r&&r(e)},onHide(e){i&&i(e),dynamicStore.globalContextMenu=null},onOptionClick(e){m&&m(e)}})}return[e.length?(0,_vue.h)("div",{key:1,class:"vxe-dynamics--modal"},e.map(e=>(0,_vue.h)(d,e))):(0,_vue.createCommentVNode)(),n.length?(0,_vue.h)("div",{key:2,class:"vxe-dynamics--drawer"},n.map(e=>(0,_vue.h)(l,e))):(0,_vue.createCommentVNode)(),o?(0,_vue.h)(v,o):(0,_vue.createCommentVNode)(),t?(0,_vue.h)(u,t):(0,_vue.createCommentVNode)(),a?(0,_vue.h)(p,c):(0,_vue.createCommentVNode)()]}}}),dynamicApp=exports.dynamicApp=(0,_vue.createApp)(VxeDynamics);function checkDynamic(){dynamicContainerElem||((dynamicContainerElem=document.createElement("div")).className="vxe-dynamics",document.body.appendChild(dynamicContainerElem),dynamicApp.mount(dynamicContainerElem))}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkDynamic=checkDynamic,exports.dynamicStore=exports.dynamicApp=void 0;var _vue=require("vue"),_comp=require("../ui/src/comp"),_core=require("@vxe-ui/core");let dynamicContainerElem;const dynamicStore=exports.dynamicStore=(0,_vue.reactive)({modals:[],drawers:[],globalLoading:null,globalWatermark:null,globalContextMenu:null}),VxeDynamics=(0,_comp.defineVxeComponent)({setup(){const d=_core.VxeUI.getComponent("vxe-modal"),l=_core.VxeUI.getComponent("vxe-drawer"),u=_core.VxeUI.getComponent("vxe-loading"),v=_core.VxeUI.getComponent("vxe-watermark"),s=_core.VxeUI.getComponent("vxe-context-menu");return()=>{var{modals:e,drawers:n,globalWatermark:o,globalLoading:t,globalContextMenu:a}=dynamicStore;let c=a;if(a){const{optionClick:m,show:r,hide:i}=a.events||{};c=Object.assign({},a,{onShow(e){r&&r(e)},onHide(e){i&&i(e),dynamicStore.globalContextMenu=null},onOptionClick(e){m&&m(e)}},{events:void 0})}return[e.length?(0,_vue.h)("div",{key:1,class:"vxe-dynamics--modal"},e.map(e=>(0,_vue.h)(d,e))):(0,_vue.createCommentVNode)(),n.length?(0,_vue.h)("div",{key:2,class:"vxe-dynamics--drawer"},n.map(e=>(0,_vue.h)(l,e))):(0,_vue.createCommentVNode)(),o?(0,_vue.h)(v,o):(0,_vue.createCommentVNode)(),t?(0,_vue.h)(u,t):(0,_vue.createCommentVNode)(),a?(0,_vue.h)(s,c):(0,_vue.createCommentVNode)()]}}}),dynamicApp=exports.dynamicApp=(0,_vue.createApp)(VxeDynamics);function checkDynamic(){dynamicContainerElem||((dynamicContainerElem=document.createElement("div")).className="vxe-dynamics",document.body.appendChild(dynamicContainerElem),dynamicApp.mount(dynamicContainerElem))}