vxe-pc-ui 3.17.7 → 3.17.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.
- package/es/button/src/button.js +2 -2
- package/es/button-group/style.css +1 -1
- package/es/button-group/style.min.css +1 -1
- package/es/color-picker/src/color-picker.js +2 -2
- package/es/date-picker/src/date-picker.js +2 -2
- package/es/date-range-picker/src/date-range-picker.js +2 -2
- package/es/drawer/src/drawer.js +2 -2
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +2 -2
- package/es/menu/src/menu.js +2 -2
- package/es/modal/src/modal.js +2 -2
- package/es/select/src/select.js +2 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/src/table-select.js +2 -2
- package/es/tooltip/src/tooltip.js +72 -127
- package/es/tree/src/tree.js +2 -2
- package/es/tree-select/src/tree-select.js +2 -2
- package/es/ui/index.js +4 -4
- package/es/ui/src/dom.js +114 -81
- package/es/ui/src/log.js +1 -1
- package/es/vxe-button-group/style.css +1 -1
- package/es/vxe-button-group/style.min.css +1 -1
- package/lib/button/src/button.js +1 -1
- package/lib/button/src/button.min.js +1 -1
- package/lib/button-group/style/style.css +1 -1
- package/lib/button-group/style/style.min.css +1 -1
- package/lib/color-picker/src/color-picker.js +1 -1
- package/lib/color-picker/src/color-picker.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +1 -1
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/drawer/src/drawer.js +1 -1
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +1 -1
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/index.umd.js +204 -222
- package/lib/index.umd.min.js +1 -1
- package/lib/menu/src/menu.js +1 -1
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +1 -1
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/select/src/select.js +1 -1
- package/lib/select/src/select.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/src/table-select.js +1 -1
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +78 -126
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tree/src/tree.js +3 -2
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +1 -1
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +4 -4
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +109 -79
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-button-group/style/style.css +1 -1
- package/lib/vxe-button-group/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/button/src/button.ts +2 -2
- package/packages/color-picker/src/color-picker.ts +2 -2
- package/packages/date-picker/src/date-picker.ts +2 -2
- package/packages/date-range-picker/src/date-range-picker.ts +2 -2
- package/packages/drawer/src/drawer.ts +2 -2
- package/packages/icon-picker/src/icon-picker.ts +2 -2
- package/packages/menu/src/menu.ts +2 -2
- package/packages/modal/src/modal.ts +2 -2
- package/packages/select/src/select.ts +2 -2
- package/packages/table-select/src/table-select.ts +2 -2
- package/packages/tooltip/src/tooltip.ts +74 -126
- package/packages/tree/src/tree.ts +2 -2
- package/packages/tree-select/src/tree-select.ts +2 -2
- package/packages/ui/index.ts +3 -3
- package/packages/ui/src/dom.ts +125 -84
- package/styles/components/button-group.scss +4 -2
- package/types/components/table.d.ts +6 -0
- package/types/components/tooltip.d.ts +4 -0
- /package/es/icon/{iconfont.1787197085834.ttf → iconfont.1787216119203.ttf} +0 -0
- /package/es/icon/{iconfont.1787197085834.woff → iconfont.1787216119203.woff} +0 -0
- /package/es/icon/{iconfont.1787197085834.woff2 → iconfont.1787216119203.woff2} +0 -0
- /package/es/{iconfont.1787197085834.ttf → iconfont.1787216119203.ttf} +0 -0
- /package/es/{iconfont.1787197085834.woff → iconfont.1787216119203.woff} +0 -0
- /package/es/{iconfont.1787197085834.woff2 → iconfont.1787216119203.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1787197085834.ttf → iconfont.1787216119203.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1787197085834.woff → iconfont.1787216119203.woff} +0 -0
- /package/lib/icon/style/{iconfont.1787197085834.woff2 → iconfont.1787216119203.woff2} +0 -0
- /package/lib/{iconfont.1787197085834.ttf → iconfont.1787216119203.ttf} +0 -0
- /package/lib/{iconfont.1787197085834.woff → iconfont.1787216119203.woff} +0 -0
- /package/lib/{iconfont.1787197085834.woff2 → iconfont.1787216119203.woff2} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import { VxeUI, getConfig, getIcon, globalEvents, getI18n, createEvent, renderEmptyElement, globalMixins } from '../../ui';
|
|
4
|
-
import { getEventTargetNode, updatePanelPlacement, toCssUnit,
|
|
4
|
+
import { getEventTargetNode, updatePanelPlacement, toCssUnit, getPopupAppendElement } from '../../ui/src/dom';
|
|
5
5
|
import { getOnName } from '../../ui/src/vn';
|
|
6
6
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
|
|
7
7
|
import { createComponentLog } from '../../ui/src/log';
|
|
@@ -464,7 +464,7 @@ export default {
|
|
|
464
464
|
if (btnTransfer) {
|
|
465
465
|
if (panelElem) {
|
|
466
466
|
const { appendTo } = popupOpts;
|
|
467
|
-
|
|
467
|
+
getPopupAppendElement(appendTo).appendChild(panelElem);
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
}
|
|
@@ -2,7 +2,7 @@ import { defineVxeComponent } from '../../ui/src/comp';
|
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import { getConfig, createEvent, globalMixins } from '../../ui';
|
|
4
4
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
|
|
5
|
-
import { toCssUnit } from '../../ui/src/dom';
|
|
5
|
+
import { getPopupAppendElement, toCssUnit, updatePanelPlacement } from '../../ui/src/dom';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
7
|
function createReactData() {
|
|
8
8
|
return {
|
|
@@ -108,6 +108,10 @@ export default {
|
|
|
108
108
|
leaveDelay: {
|
|
109
109
|
type: Number,
|
|
110
110
|
default: () => getConfig().tooltip.leaveDelay
|
|
111
|
+
},
|
|
112
|
+
appendTo: {
|
|
113
|
+
type: [String, Function],
|
|
114
|
+
default: () => getConfig().tooltip.appendTo
|
|
111
115
|
}
|
|
112
116
|
},
|
|
113
117
|
data() {
|
|
@@ -202,24 +206,55 @@ export default {
|
|
|
202
206
|
const $xeTooltip = this;
|
|
203
207
|
return $xeTooltip.handleVisible(target, content);
|
|
204
208
|
},
|
|
205
|
-
|
|
209
|
+
updateTipStyle() {
|
|
206
210
|
const $xeTooltip = this;
|
|
211
|
+
const props = $xeTooltip;
|
|
207
212
|
const reactData = $xeTooltip.reactData;
|
|
208
|
-
const {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
213
|
+
const { placement, defaultPlacement, isArrow } = props;
|
|
214
|
+
const { tipTarget: targetElem, tipStore, tipPos, tipZindex } = reactData;
|
|
215
|
+
const panelElem = $xeTooltip.$refs.refElem;
|
|
216
|
+
if (!targetElem || !panelElem) {
|
|
217
|
+
return;
|
|
212
218
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
const targetRect = targetElem.getBoundingClientRect();
|
|
220
|
+
const targetWidth = targetElem.offsetWidth;
|
|
221
|
+
const targetHeight = targetElem.offsetHeight;
|
|
222
|
+
const panelWidth = panelElem.offsetWidth;
|
|
223
|
+
const targetLeft = targetRect.left;
|
|
224
|
+
const targetTop = targetRect.top;
|
|
225
|
+
// 支持特殊定位逻辑
|
|
226
|
+
let left = targetLeft;
|
|
227
|
+
let top = targetTop + targetHeight;
|
|
228
|
+
if (tipPos && (tipPos.oLeft || tipPos.oTop)) {
|
|
229
|
+
if (isArrow) {
|
|
230
|
+
left = left + Math.max(8, Math.min(targetWidth - 8, tipPos.oLeft)) - panelWidth / 2;
|
|
221
231
|
}
|
|
232
|
+
else {
|
|
233
|
+
left = tipPos.x + 1;
|
|
234
|
+
top = tipPos.y + 1;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
left = targetLeft + (targetWidth - panelWidth) / 2;
|
|
239
|
+
}
|
|
240
|
+
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
241
|
+
defaultTop: top,
|
|
242
|
+
defaultLeft: left,
|
|
243
|
+
placement: placement,
|
|
244
|
+
defaultPlacement: defaultPlacement,
|
|
245
|
+
teleportTo: true
|
|
246
|
+
});
|
|
247
|
+
const panelStyle = Object.assign(ppObj.style, {
|
|
248
|
+
zIndex: tipZindex
|
|
222
249
|
});
|
|
250
|
+
tipStore.placement = ppObj.placement;
|
|
251
|
+
tipStore.style = panelStyle;
|
|
252
|
+
tipStore.arrowStyle.left = `${ppObj.arrowLeft}px`;
|
|
253
|
+
},
|
|
254
|
+
updatePlacement() {
|
|
255
|
+
const $xeTooltip = this;
|
|
256
|
+
$xeTooltip.updateTipStyle();
|
|
257
|
+
return $xeTooltip.$nextTick().then(() => $xeTooltip.updateTipStyle());
|
|
223
258
|
},
|
|
224
259
|
isActived() {
|
|
225
260
|
const $xeTooltip = this;
|
|
@@ -231,102 +266,6 @@ export default {
|
|
|
231
266
|
const reactData = $xeTooltip.reactData;
|
|
232
267
|
reactData.tipActive = !!active;
|
|
233
268
|
},
|
|
234
|
-
updateTipStyle() {
|
|
235
|
-
const $xeTooltip = this;
|
|
236
|
-
const props = $xeTooltip;
|
|
237
|
-
const reactData = $xeTooltip.reactData;
|
|
238
|
-
const { isArrow, placement, defaultPlacement } = props;
|
|
239
|
-
const { tipTarget: targetElem, tipStore, tipPos } = reactData;
|
|
240
|
-
let top = '';
|
|
241
|
-
let left = '';
|
|
242
|
-
let panelPlacement = 'bottom';
|
|
243
|
-
let arrowLeft = '';
|
|
244
|
-
const panelElem = $xeTooltip.$refs.refElem;
|
|
245
|
-
if (panelElem && targetElem) {
|
|
246
|
-
const documentElement = document.documentElement;
|
|
247
|
-
const bodyElem = document.body;
|
|
248
|
-
const targetWidth = targetElem.offsetWidth;
|
|
249
|
-
const targetHeight = targetElem.offsetHeight;
|
|
250
|
-
const panelHeight = panelElem.offsetHeight;
|
|
251
|
-
const panelWidth = panelElem.offsetWidth;
|
|
252
|
-
const targetRect = targetElem.getBoundingClientRect();
|
|
253
|
-
const visibleHeight = documentElement.clientHeight || bodyElem.clientHeight;
|
|
254
|
-
const visibleWidth = documentElement.clientWidth || bodyElem.clientWidth;
|
|
255
|
-
const marginSize = 6;
|
|
256
|
-
left = targetRect.left;
|
|
257
|
-
top = targetRect.top + targetHeight;
|
|
258
|
-
if (tipPos && (tipPos.oLeft || tipPos.oTop)) {
|
|
259
|
-
if (isArrow) {
|
|
260
|
-
left = left + Math.max(8, Math.min(targetWidth - 8, tipPos.oLeft)) - panelWidth / 2;
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
left = tipPos.x + 1;
|
|
264
|
-
top = tipPos.y + 1;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
left = targetRect.left + (targetWidth - panelWidth) / 2;
|
|
269
|
-
}
|
|
270
|
-
if (placement === 'top') {
|
|
271
|
-
panelPlacement = 'top';
|
|
272
|
-
top = targetRect.top - panelHeight;
|
|
273
|
-
}
|
|
274
|
-
else if (!placement) {
|
|
275
|
-
if (defaultPlacement === 'top') {
|
|
276
|
-
panelPlacement = 'top';
|
|
277
|
-
top = targetRect.top - panelHeight;
|
|
278
|
-
// 如果上面不够放,则向下
|
|
279
|
-
if (top < marginSize) {
|
|
280
|
-
panelPlacement = 'bottom';
|
|
281
|
-
top = targetRect.top + targetHeight;
|
|
282
|
-
}
|
|
283
|
-
// 如果下面不够放,则向上(优先)
|
|
284
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
285
|
-
panelPlacement = 'top';
|
|
286
|
-
top = targetRect.top - panelHeight;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
// 如果下面不够放,则向上
|
|
291
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
292
|
-
panelPlacement = 'top';
|
|
293
|
-
top = targetRect.top - panelHeight;
|
|
294
|
-
}
|
|
295
|
-
// 如果上面不够放,则向下(优先)
|
|
296
|
-
if (top < marginSize) {
|
|
297
|
-
panelPlacement = 'bottom';
|
|
298
|
-
top = targetRect.top + targetHeight;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
// 如果溢出右边
|
|
303
|
-
if (left + panelWidth + marginSize > visibleWidth) {
|
|
304
|
-
left -= left + panelWidth + marginSize - visibleWidth;
|
|
305
|
-
}
|
|
306
|
-
// 如果溢出左边
|
|
307
|
-
if (left < marginSize) {
|
|
308
|
-
left = marginSize;
|
|
309
|
-
}
|
|
310
|
-
// 箭头
|
|
311
|
-
if (left === targetRect.left) {
|
|
312
|
-
if (targetWidth <= panelWidth) {
|
|
313
|
-
arrowLeft = targetWidth / 2;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
else if (left < targetRect.left) {
|
|
317
|
-
if (left + panelWidth > targetRect.left + targetWidth) {
|
|
318
|
-
arrowLeft = (targetRect.left - left) + targetWidth / 2;
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
arrowLeft = (targetRect.left - left) + (panelWidth - (targetRect.left - left)) / 2;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
tipStore.placement = panelPlacement;
|
|
325
|
-
tipStore.style.top = `${top}px`;
|
|
326
|
-
tipStore.style.left = `${left}px`;
|
|
327
|
-
tipStore.arrowStyle.left = `${arrowLeft}px`;
|
|
328
|
-
}
|
|
329
|
-
},
|
|
330
269
|
updateValue(value) {
|
|
331
270
|
const $xeTooltip = this;
|
|
332
271
|
const reactData = $xeTooltip.reactData;
|
|
@@ -336,10 +275,15 @@ export default {
|
|
|
336
275
|
$xeTooltip.emitModel(value);
|
|
337
276
|
}
|
|
338
277
|
},
|
|
339
|
-
|
|
278
|
+
updateZIndex() {
|
|
340
279
|
const $xeTooltip = this;
|
|
280
|
+
const props = $xeTooltip;
|
|
341
281
|
const reactData = $xeTooltip.reactData;
|
|
342
|
-
|
|
282
|
+
const { zIndex } = props;
|
|
283
|
+
if (zIndex) {
|
|
284
|
+
reactData.tipZindex = XEUtils.toNumber(zIndex);
|
|
285
|
+
}
|
|
286
|
+
else if (reactData.tipZindex < getLastZIndex()) {
|
|
343
287
|
reactData.tipZindex = nextZIndex();
|
|
344
288
|
}
|
|
345
289
|
},
|
|
@@ -400,16 +344,17 @@ export default {
|
|
|
400
344
|
const $xeTooltip = this;
|
|
401
345
|
const props = $xeTooltip;
|
|
402
346
|
const reactData = $xeTooltip.reactData;
|
|
347
|
+
const { appendTo } = props;
|
|
403
348
|
const { tipStore } = reactData;
|
|
404
|
-
const
|
|
405
|
-
if (
|
|
406
|
-
const parentNode =
|
|
349
|
+
const panelElem = $xeTooltip.$refs.refElem;
|
|
350
|
+
if (panelElem) {
|
|
351
|
+
const parentNode = panelElem.parentNode;
|
|
407
352
|
if (!parentNode) {
|
|
408
|
-
|
|
353
|
+
getPopupAppendElement(appendTo).appendChild(panelElem);
|
|
409
354
|
}
|
|
410
355
|
}
|
|
411
356
|
$xeTooltip.updateValue(true);
|
|
412
|
-
$xeTooltip.
|
|
357
|
+
$xeTooltip.updateZIndex();
|
|
413
358
|
tipStore.placement = 'top';
|
|
414
359
|
tipStore.style = { width: 'auto', left: 0, top: 0, zIndex: props.zIndex || reactData.tipZindex };
|
|
415
360
|
tipStore.arrowStyle = { left: '50%' };
|
|
@@ -591,21 +536,21 @@ export default {
|
|
|
591
536
|
}
|
|
592
537
|
$xeTooltip.$nextTick(() => {
|
|
593
538
|
const { trigger, content } = props;
|
|
594
|
-
const
|
|
595
|
-
if (
|
|
596
|
-
const parentNode =
|
|
539
|
+
const panelElem = $xeTooltip.$refs.refElem;
|
|
540
|
+
if (panelElem) {
|
|
541
|
+
const parentNode = panelElem.parentNode;
|
|
597
542
|
if (parentNode) {
|
|
598
543
|
reactData.tipContent = content;
|
|
599
544
|
reactData.tipZindex = nextZIndex();
|
|
600
|
-
XEUtils.arrayEach(
|
|
545
|
+
XEUtils.arrayEach(panelElem.children, (elem, index) => {
|
|
601
546
|
if (index) {
|
|
602
|
-
parentNode.insertBefore(elem,
|
|
547
|
+
parentNode.insertBefore(elem, panelElem);
|
|
603
548
|
if (!reactData.target) {
|
|
604
549
|
reactData.target = elem;
|
|
605
550
|
}
|
|
606
551
|
}
|
|
607
552
|
});
|
|
608
|
-
parentNode.removeChild(
|
|
553
|
+
parentNode.removeChild(panelElem);
|
|
609
554
|
const { target } = reactData;
|
|
610
555
|
if (target) {
|
|
611
556
|
if (trigger === 'hover') {
|
|
@@ -627,7 +572,7 @@ export default {
|
|
|
627
572
|
const $xeTooltip = this;
|
|
628
573
|
const reactData = $xeTooltip.reactData;
|
|
629
574
|
const { target } = reactData;
|
|
630
|
-
const
|
|
575
|
+
const panelElem = $xeTooltip.$refs.refElem;
|
|
631
576
|
if (target) {
|
|
632
577
|
target.onmouseenter = null;
|
|
633
578
|
target.onmouseleave = null;
|
|
@@ -637,10 +582,10 @@ export default {
|
|
|
637
582
|
if (contentWrapperfEl) {
|
|
638
583
|
contentWrapperfEl.removeEventListener('wheel', $xeTooltip.wheelEvent);
|
|
639
584
|
}
|
|
640
|
-
if (
|
|
641
|
-
const parentNode =
|
|
585
|
+
if (panelElem) {
|
|
586
|
+
const parentNode = panelElem.parentNode;
|
|
642
587
|
if (parentNode) {
|
|
643
|
-
parentNode.removeChild(
|
|
588
|
+
parentNode.removeChild(panelElem);
|
|
644
589
|
}
|
|
645
590
|
}
|
|
646
591
|
},
|
package/es/tree/src/tree.js
CHANGED
|
@@ -3413,11 +3413,11 @@ export default {
|
|
|
3413
3413
|
const props = $xeTree;
|
|
3414
3414
|
const slots = $xeTree.$scopedSlots;
|
|
3415
3415
|
const internalData = $xeTree.internalData;
|
|
3416
|
-
const { transform, emptyText } = props;
|
|
3416
|
+
const { loading, transform, emptyText } = props;
|
|
3417
3417
|
const { treeExpandedMaps } = internalData;
|
|
3418
3418
|
const childrenField = $xeTree.computeChildrenField;
|
|
3419
3419
|
const emptySlot = slots.empty;
|
|
3420
|
-
if (!treeList.length) {
|
|
3420
|
+
if (!loading && !treeList.length) {
|
|
3421
3421
|
return [
|
|
3422
3422
|
h('div', {
|
|
3423
3423
|
class: 'vxe-tree--empty-placeholder'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import { getConfig, getI18n, getIcon, globalEvents, createEvent, globalMixins, renderEmptyElement } from '../../ui';
|
|
4
|
-
import { getEventTargetNode, updatePanelPlacement, toCssUnit,
|
|
4
|
+
import { getEventTargetNode, updatePanelPlacement, toCssUnit, getPopupAppendElement } from '../../ui/src/dom';
|
|
5
5
|
import { getLastZIndex, nextZIndex, deModelValue } from '../../ui/src/utils';
|
|
6
6
|
import { createComponentLog } from '../../ui/src/log';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
@@ -548,7 +548,7 @@ export default {
|
|
|
548
548
|
if (btnTransfer) {
|
|
549
549
|
if (panelElem) {
|
|
550
550
|
const { appendTo } = popupOpts;
|
|
551
|
-
|
|
551
|
+
getPopupAppendElement(appendTo).appendChild(panelElem);
|
|
552
552
|
}
|
|
553
553
|
}
|
|
554
554
|
}
|
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 = "3.17.
|
|
4
|
+
export const version = "3.17.8";
|
|
5
5
|
VxeUI.uiVersion = version;
|
|
6
6
|
VxeUI.dynamicApp = dynamicApp;
|
|
7
7
|
export function config(options) {
|
|
@@ -418,7 +418,8 @@ setConfig({
|
|
|
418
418
|
theme: 'dark',
|
|
419
419
|
enterDelay: 500,
|
|
420
420
|
leaveDelay: 300,
|
|
421
|
-
isArrow: true
|
|
421
|
+
isArrow: true,
|
|
422
|
+
defaultPlacement: 'top'
|
|
422
423
|
},
|
|
423
424
|
transfer: {},
|
|
424
425
|
tree: {
|
|
@@ -432,8 +433,7 @@ setConfig({
|
|
|
432
433
|
tooltipConfig: {
|
|
433
434
|
mode: 'tooltip',
|
|
434
435
|
enterable: true,
|
|
435
|
-
leaveDelay: 300
|
|
436
|
-
defaultPlacement: 'top'
|
|
436
|
+
leaveDelay: 300
|
|
437
437
|
},
|
|
438
438
|
dragConfig: {
|
|
439
439
|
showIcon: true,
|
package/es/ui/src/dom.js
CHANGED
|
@@ -148,121 +148,154 @@ export function triggerEvent(targetElem, type) {
|
|
|
148
148
|
export function isNodeElement(elem) {
|
|
149
149
|
return elem && elem.nodeType === 1;
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* 通用定位计算
|
|
153
|
+
*/
|
|
151
154
|
export function updatePanelPlacement(targetElem, panelElem, options) {
|
|
152
|
-
const { placement, defaultPlacement, teleportTo, marginSize, isMinWidth } = Object.assign({
|
|
155
|
+
const { defaultTop, defaultLeft, placement, defaultPlacement, teleportTo, marginSize, isMinWidth } = Object.assign({
|
|
156
|
+
teleportTo: false,
|
|
157
|
+
marginSize: 18,
|
|
158
|
+
isMinWidth: true
|
|
159
|
+
}, options);
|
|
153
160
|
let panelPlacement = 'bottom';
|
|
154
161
|
let top = '';
|
|
155
162
|
let bottom = '';
|
|
156
|
-
let left =
|
|
157
|
-
const right = '';
|
|
163
|
+
let left = 0;
|
|
158
164
|
let minWidth = '';
|
|
165
|
+
let arrowLeft = '';
|
|
159
166
|
const stys = {};
|
|
160
167
|
if (panelElem && targetElem) {
|
|
161
|
-
const
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
168
|
+
const parentEl = panelElem.parentElement;
|
|
169
|
+
const parentWrapperEl = parentEl === document.body ? document.documentElement : parentEl;
|
|
170
|
+
if (parentWrapperEl) {
|
|
171
|
+
const targetWidth = targetElem.offsetWidth;
|
|
172
|
+
const targetHeight = targetElem.offsetHeight;
|
|
173
|
+
const panelHeight = panelElem.offsetHeight;
|
|
174
|
+
const panelWidth = panelElem.offsetWidth;
|
|
175
|
+
const parentWrapperRect = parentWrapperEl.getBoundingClientRect();
|
|
176
|
+
const panelRect = panelElem.getBoundingClientRect();
|
|
177
|
+
const targetRect = targetElem.getBoundingClientRect();
|
|
178
|
+
const visibleHeight = parentWrapperEl.clientHeight;
|
|
179
|
+
const visibleWidth = parentWrapperEl.clientWidth;
|
|
180
|
+
const offsetLeft = parentWrapperRect.left;
|
|
181
|
+
const offsetTop = parentWrapperRect.top;
|
|
182
|
+
const targetLeft = targetRect.left;
|
|
183
|
+
const targetTop = targetRect.top;
|
|
184
|
+
minWidth = targetElem.offsetWidth;
|
|
185
|
+
if (teleportTo) {
|
|
186
|
+
left = defaultLeft || (targetLeft);
|
|
187
|
+
top = defaultTop || (targetTop + targetHeight);
|
|
188
|
+
if (placement === 'top') {
|
|
180
189
|
panelPlacement = 'top';
|
|
181
|
-
top =
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
top = targetRect.top + targetHeight;
|
|
186
|
-
}
|
|
187
|
-
// 如果下面不够放,则向上(优先)
|
|
188
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
190
|
+
top = targetTop - panelHeight;
|
|
191
|
+
}
|
|
192
|
+
else if (!placement) {
|
|
193
|
+
if (defaultPlacement === 'top') {
|
|
189
194
|
panelPlacement = 'top';
|
|
190
|
-
top =
|
|
195
|
+
top = targetTop - panelHeight;
|
|
196
|
+
// 如果上面不够放,则向下
|
|
197
|
+
if (top < marginSize) {
|
|
198
|
+
panelPlacement = 'bottom';
|
|
199
|
+
top = targetTop + targetHeight;
|
|
200
|
+
}
|
|
201
|
+
// 如果下面不够放,则向上(优先)
|
|
202
|
+
if (top + panelHeight + marginSize > visibleHeight) {
|
|
203
|
+
panelPlacement = 'top';
|
|
204
|
+
top = targetTop - panelHeight;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// 如果下面不够放,则向上
|
|
209
|
+
if (top + panelHeight + marginSize > visibleHeight) {
|
|
210
|
+
panelPlacement = 'top';
|
|
211
|
+
top = targetTop - panelHeight;
|
|
212
|
+
}
|
|
213
|
+
// 如果上面不够放,则向下(优先)
|
|
214
|
+
if (top < marginSize) {
|
|
215
|
+
panelPlacement = 'bottom';
|
|
216
|
+
top = targetTop + targetHeight;
|
|
217
|
+
}
|
|
191
218
|
}
|
|
192
219
|
}
|
|
193
|
-
|
|
220
|
+
// 如果溢出右边
|
|
221
|
+
if (left + panelWidth + marginSize > visibleWidth) {
|
|
222
|
+
left -= left + panelWidth + marginSize - visibleWidth;
|
|
223
|
+
}
|
|
224
|
+
// 如果溢出左边
|
|
225
|
+
if (left < marginSize) {
|
|
226
|
+
left = marginSize;
|
|
227
|
+
}
|
|
228
|
+
// 偏移
|
|
229
|
+
top -= offsetTop;
|
|
230
|
+
left -= offsetLeft;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
if (placement === 'top') {
|
|
234
|
+
panelPlacement = 'top';
|
|
235
|
+
bottom = targetHeight;
|
|
236
|
+
}
|
|
237
|
+
else if (!placement) {
|
|
194
238
|
// 如果下面不够放,则向上
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
239
|
+
top = targetHeight;
|
|
240
|
+
if (targetTop + targetHeight + panelHeight + marginSize > visibleHeight) {
|
|
241
|
+
// 如果上面不够放,则向下(优先)
|
|
242
|
+
if (targetTop - targetHeight - panelHeight > marginSize) {
|
|
243
|
+
panelPlacement = 'top';
|
|
244
|
+
top = '';
|
|
245
|
+
bottom = targetHeight;
|
|
246
|
+
}
|
|
203
247
|
}
|
|
204
248
|
}
|
|
249
|
+
// 是否超出右侧
|
|
250
|
+
if (panelRect.left + panelRect.width + marginSize > visibleWidth) {
|
|
251
|
+
left = -(panelRect.left + panelRect.width + marginSize - visibleWidth);
|
|
252
|
+
}
|
|
205
253
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
left -= left + panelWidth + marginSize - visibleWidth;
|
|
254
|
+
if (XEUtils.isNumber(top)) {
|
|
255
|
+
stys.top = toCssUnit(top);
|
|
209
256
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
left = marginSize;
|
|
257
|
+
if (XEUtils.isNumber(bottom)) {
|
|
258
|
+
stys.bottom = toCssUnit(bottom);
|
|
213
259
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (placement === 'top') {
|
|
217
|
-
panelPlacement = 'top';
|
|
218
|
-
bottom = targetHeight;
|
|
260
|
+
if (XEUtils.isNumber(left)) {
|
|
261
|
+
stys.left = toCssUnit(left);
|
|
219
262
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
top = '';
|
|
228
|
-
bottom = targetHeight;
|
|
229
|
-
}
|
|
263
|
+
if (isMinWidth && XEUtils.isNumber(minWidth)) {
|
|
264
|
+
stys.minWidth = toCssUnit(minWidth);
|
|
265
|
+
}
|
|
266
|
+
// 箭头
|
|
267
|
+
if (left === targetLeft) {
|
|
268
|
+
if (targetWidth <= panelWidth) {
|
|
269
|
+
arrowLeft = targetWidth / 2;
|
|
230
270
|
}
|
|
231
271
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
272
|
+
else if (left < targetLeft) {
|
|
273
|
+
if (left + panelWidth > targetLeft + targetWidth) {
|
|
274
|
+
arrowLeft = (targetLeft - left) + targetWidth / 2;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
arrowLeft = (targetLeft - left) + (panelWidth - (targetLeft - left)) / 2;
|
|
278
|
+
}
|
|
235
279
|
}
|
|
236
280
|
}
|
|
237
|
-
if (XEUtils.isNumber(top)) {
|
|
238
|
-
stys.top = toCssUnit(top);
|
|
239
|
-
}
|
|
240
|
-
if (XEUtils.isNumber(bottom)) {
|
|
241
|
-
stys.bottom = toCssUnit(bottom);
|
|
242
|
-
}
|
|
243
|
-
if (XEUtils.isNumber(left)) {
|
|
244
|
-
stys.left = toCssUnit(left);
|
|
245
|
-
}
|
|
246
|
-
if (XEUtils.isNumber(right)) {
|
|
247
|
-
stys.right = toCssUnit(right);
|
|
248
|
-
}
|
|
249
|
-
if (isMinWidth && XEUtils.isNumber(minWidth)) {
|
|
250
|
-
stys.minWidth = toCssUnit(minWidth);
|
|
251
|
-
}
|
|
252
281
|
}
|
|
253
282
|
return {
|
|
254
283
|
top: top || 0,
|
|
255
284
|
bottom: bottom || 0,
|
|
256
285
|
left: left || 0,
|
|
257
|
-
|
|
286
|
+
arrowLeft: arrowLeft || 0,
|
|
258
287
|
style: stys,
|
|
259
288
|
placement: panelPlacement
|
|
260
289
|
};
|
|
261
290
|
}
|
|
262
291
|
export function getPopupContainer(appendTo) {
|
|
263
292
|
const selectElem = appendTo && XEUtils.isFunction(appendTo) ? appendTo({}) : appendTo;
|
|
293
|
+
return selectElem || 'body';
|
|
294
|
+
}
|
|
295
|
+
export function getPopupAppendElement(appendTo) {
|
|
296
|
+
const selectElem = getPopupContainer(appendTo);
|
|
264
297
|
if (XEUtils.isString(selectElem)) {
|
|
265
298
|
return document.querySelector(selectElem) || document.body;
|
|
266
299
|
}
|
|
267
|
-
return selectElem
|
|
300
|
+
return selectElem;
|
|
268
301
|
}
|
package/es/ui/src/log.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VxeUI } from '@vxe-ui/core';
|
|
2
2
|
const { log } = VxeUI;
|
|
3
|
-
const uiVersion = `ui v${"3.17.
|
|
3
|
+
const uiVersion = `ui v${"3.17.8"}`;
|
|
4
4
|
export function createComponentLog(name) {
|
|
5
5
|
const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
|
|
6
6
|
const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
.vxe-button-group.is--vertical > .vxe-button.type--button, .vxe-button-group.is--vertical > .vxe-button--dropdown {
|
|
23
23
|
margin-right: 0;
|
|
24
24
|
}
|
|
25
|
-
.vxe-button-group.is--vertical > .vxe-button + .vxe-button--dropdown, .vxe-button-group.is--vertical > .vxe-button--dropdown + .vxe-button {
|
|
25
|
+
.vxe-button-group.is--vertical > .vxe-button.type--button + .vxe-button.type--button, .vxe-button-group.is--vertical > .vxe-button.type--button + .vxe-button--dropdown, .vxe-button-group.is--vertical > .vxe-button--dropdown + .vxe-button.type--button, .vxe-button-group.is--vertical > .vxe-button--dropdown + .vxe-button--dropdown {
|
|
26
26
|
margin-left: 0;
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-button-group{display:inline-flex}.vxe-button-group.is--vertical{flex-direction:column}.vxe-button-group.is--vertical>.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button.type--button{margin-top:var(--vxe-ui-base-margin-gap-default)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--medium,.vxe-button-group.is--vertical>.vxe-button.type--button.size--medium{margin-top:var(--vxe-ui-base-margin-gap-medium)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--small,.vxe-button-group.is--vertical>.vxe-button.type--button.size--small{margin-top:var(--vxe-ui-base-margin-gap-small)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--mini,.vxe-button-group.is--vertical>.vxe-button.type--button.size--mini{margin-top:var(--vxe-ui-base-margin-gap-mini)}.vxe-button-group.is--vertical>.vxe-button--dropdown:first-of-type,.vxe-button-group.is--vertical>.vxe-button.type--button:first-of-type{margin-top:0}.vxe-button-group.is--vertical>.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button.type--button{margin-right:0}.vxe-button-group.is--vertical>.vxe-button+.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button--dropdown+.vxe-button{margin-left:0}
|
|
1
|
+
.vxe-button-group{display:inline-flex}.vxe-button-group.is--vertical{flex-direction:column}.vxe-button-group.is--vertical>.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button.type--button{margin-top:var(--vxe-ui-base-margin-gap-default)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--medium,.vxe-button-group.is--vertical>.vxe-button.type--button.size--medium{margin-top:var(--vxe-ui-base-margin-gap-medium)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--small,.vxe-button-group.is--vertical>.vxe-button.type--button.size--small{margin-top:var(--vxe-ui-base-margin-gap-small)}.vxe-button-group.is--vertical>.vxe-button--dropdown.size--mini,.vxe-button-group.is--vertical>.vxe-button.type--button.size--mini{margin-top:var(--vxe-ui-base-margin-gap-mini)}.vxe-button-group.is--vertical>.vxe-button--dropdown:first-of-type,.vxe-button-group.is--vertical>.vxe-button.type--button:first-of-type{margin-top:0}.vxe-button-group.is--vertical>.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button.type--button{margin-right:0}.vxe-button-group.is--vertical>.vxe-button--dropdown+.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button--dropdown+.vxe-button.type--button,.vxe-button-group.is--vertical>.vxe-button.type--button+.vxe-button--dropdown,.vxe-button-group.is--vertical>.vxe-button.type--button+.vxe-button.type--button{margin-left:0}
|
package/lib/button/src/button.js
CHANGED
|
@@ -327,7 +327,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
327
327
|
reactData.initialized = true;
|
|
328
328
|
if (btnTransfer) {
|
|
329
329
|
var appendTo = popupOpts.appendTo;
|
|
330
|
-
(0, _dom.
|
|
330
|
+
(0, _dom.getPopupAppendElement)(appendTo).appendChild(panelElem);
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
333
|
internalData.showTime = setTimeout(function () {
|