vxe-pc-ui 4.17.6 → 4.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/dist/all.esm.js +212 -224
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- 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 +7 -2
- package/es/icon/style.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tooltip/src/tooltip.js +80 -134
- package/es/tree/src/tree.js +2 -2
- package/es/ui/index.js +4 -4
- package/es/ui/src/dom.js +118 -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-group/style/style.css +1 -1
- package/lib/button-group/style/style.min.css +1 -1
- package/lib/color-picker/src/color-picker.js +10 -2
- package/lib/color-picker/src/color-picker.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +220 -227
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tooltip/src/tooltip.js +91 -140
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tree/src/tree.js +2 -1
- package/lib/tree/src/tree.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 +113 -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 +3 -2
- package/packages/color-picker/src/color-picker.ts +7 -2
- package/packages/tooltip/src/tooltip.ts +83 -134
- package/packages/tree/src/tree.ts +2 -2
- package/packages/ui/index.ts +3 -3
- package/packages/ui/src/dom.ts +128 -83
- package/styles/components/button-group.scss +4 -2
- package/types/components/color-picker.d.ts +2 -0
- package/types/components/table.d.ts +6 -0
- package/types/components/tooltip.d.ts +4 -0
- /package/es/icon/{iconfont.1787137259915.ttf → iconfont.1787216141017.ttf} +0 -0
- /package/es/icon/{iconfont.1787137259915.woff → iconfont.1787216141017.woff} +0 -0
- /package/es/icon/{iconfont.1787137259915.woff2 → iconfont.1787216141017.woff2} +0 -0
- /package/es/{iconfont.1787137259915.ttf → iconfont.1787216141017.ttf} +0 -0
- /package/es/{iconfont.1787137259915.woff → iconfont.1787216141017.woff} +0 -0
- /package/es/{iconfont.1787137259915.woff2 → iconfont.1787216141017.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1787137259915.ttf → iconfont.1787216141017.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1787137259915.woff → iconfont.1787216141017.woff} +0 -0
- /package/lib/icon/style/{iconfont.1787137259915.woff2 → iconfont.1787216141017.woff2} +0 -0
- /package/lib/{iconfont.1787137259915.ttf → iconfont.1787216141017.ttf} +0 -0
- /package/lib/{iconfont.1787137259915.woff → iconfont.1787216141017.woff} +0 -0
- /package/lib/{iconfont.1787137259915.woff2 → iconfont.1787216141017.woff2} +0 -0
|
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp';
|
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
4
|
import { getConfig, createEvent, useSize } from '../../ui';
|
|
5
5
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
|
|
6
|
-
import { toCssUnit } from '../../ui/src/dom';
|
|
6
|
+
import { getPopupAppendElement, toCssUnit, updatePanelPlacement } from '../../ui/src/dom';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
function createReactData() {
|
|
9
9
|
return {
|
|
@@ -106,6 +106,10 @@ export default defineVxeComponent({
|
|
|
106
106
|
leaveDelay: {
|
|
107
107
|
type: Number,
|
|
108
108
|
default: () => getConfig().tooltip.leaveDelay
|
|
109
|
+
},
|
|
110
|
+
appendTo: {
|
|
111
|
+
type: [String, Function],
|
|
112
|
+
default: () => getConfig().tooltip.appendTo
|
|
109
113
|
}
|
|
110
114
|
},
|
|
111
115
|
emits: [
|
|
@@ -153,99 +157,8 @@ export default defineVxeComponent({
|
|
|
153
157
|
internalData,
|
|
154
158
|
getRefMaps: () => refMaps
|
|
155
159
|
};
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const { isArrow, placement, defaultPlacement } = props;
|
|
159
|
-
const { tipTarget: targetElem, tipStore, tipPos } = reactData;
|
|
160
|
-
let top = '';
|
|
161
|
-
let left = '';
|
|
162
|
-
let panelPlacement = 'bottom';
|
|
163
|
-
let arrowLeft = '';
|
|
164
|
-
const panelElem = refElem.value;
|
|
165
|
-
if (panelElem && targetElem) {
|
|
166
|
-
const documentElement = document.documentElement;
|
|
167
|
-
const bodyElem = document.body;
|
|
168
|
-
const targetWidth = targetElem.offsetWidth;
|
|
169
|
-
const targetHeight = targetElem.offsetHeight;
|
|
170
|
-
const panelHeight = panelElem.offsetHeight;
|
|
171
|
-
const panelWidth = panelElem.offsetWidth;
|
|
172
|
-
const targetRect = targetElem.getBoundingClientRect();
|
|
173
|
-
const visibleHeight = documentElement.clientHeight || bodyElem.clientHeight;
|
|
174
|
-
const visibleWidth = documentElement.clientWidth || bodyElem.clientWidth;
|
|
175
|
-
const marginSize = 6;
|
|
176
|
-
left = targetRect.left;
|
|
177
|
-
top = targetRect.top + targetHeight;
|
|
178
|
-
if (tipPos && (tipPos.oLeft || tipPos.oTop)) {
|
|
179
|
-
if (isArrow) {
|
|
180
|
-
left = left + Math.max(8, Math.min(targetWidth - 8, tipPos.oLeft)) - panelWidth / 2;
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
left = tipPos.x + 1;
|
|
184
|
-
top = tipPos.y + 1;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
left = targetRect.left + (targetWidth - panelWidth) / 2;
|
|
189
|
-
}
|
|
190
|
-
if (placement === 'top') {
|
|
191
|
-
panelPlacement = 'top';
|
|
192
|
-
top = targetRect.top - panelHeight;
|
|
193
|
-
}
|
|
194
|
-
else if (!placement) {
|
|
195
|
-
if (defaultPlacement === 'top') {
|
|
196
|
-
panelPlacement = 'top';
|
|
197
|
-
top = targetRect.top - panelHeight;
|
|
198
|
-
// 如果上面不够放,则向下
|
|
199
|
-
if (top < marginSize) {
|
|
200
|
-
panelPlacement = 'bottom';
|
|
201
|
-
top = targetRect.top + targetHeight;
|
|
202
|
-
}
|
|
203
|
-
// 如果下面不够放,则向上(优先)
|
|
204
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
205
|
-
panelPlacement = 'top';
|
|
206
|
-
top = targetRect.top - panelHeight;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
// 如果下面不够放,则向上
|
|
211
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
212
|
-
panelPlacement = 'top';
|
|
213
|
-
top = targetRect.top - panelHeight;
|
|
214
|
-
}
|
|
215
|
-
// 如果上面不够放,则向下(优先)
|
|
216
|
-
if (top < marginSize) {
|
|
217
|
-
panelPlacement = 'bottom';
|
|
218
|
-
top = targetRect.top + targetHeight;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// 如果溢出右边
|
|
223
|
-
if (left + panelWidth + marginSize > visibleWidth) {
|
|
224
|
-
left -= left + panelWidth + marginSize - visibleWidth;
|
|
225
|
-
}
|
|
226
|
-
// 如果溢出左边
|
|
227
|
-
if (left < marginSize) {
|
|
228
|
-
left = marginSize;
|
|
229
|
-
}
|
|
230
|
-
// 箭头
|
|
231
|
-
if (left === targetRect.left) {
|
|
232
|
-
if (targetWidth <= panelWidth) {
|
|
233
|
-
arrowLeft = targetWidth / 2;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else if (left < targetRect.left) {
|
|
237
|
-
if (left + panelWidth > targetRect.left + targetWidth) {
|
|
238
|
-
arrowLeft = (targetRect.left - left) + targetWidth / 2;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
arrowLeft = (targetRect.left - left) + (panelWidth - (targetRect.left - left)) / 2;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
tipStore.placement = panelPlacement;
|
|
245
|
-
tipStore.style.top = `${top}px`;
|
|
246
|
-
tipStore.style.left = `${left}px`;
|
|
247
|
-
tipStore.arrowStyle.left = `${arrowLeft}px`;
|
|
248
|
-
}
|
|
160
|
+
const dispatchEvent = (type, params, evnt) => {
|
|
161
|
+
emit(type, createEvent(evnt, { $tooltip: $xeTooltip }, params));
|
|
249
162
|
};
|
|
250
163
|
const updateValue = (value) => {
|
|
251
164
|
if (value !== reactData.visible) {
|
|
@@ -254,14 +167,18 @@ export default defineVxeComponent({
|
|
|
254
167
|
emit('update:modelValue', value);
|
|
255
168
|
}
|
|
256
169
|
};
|
|
257
|
-
const
|
|
258
|
-
|
|
170
|
+
const updateZIndex = () => {
|
|
171
|
+
const { zIndex } = props;
|
|
172
|
+
if (zIndex) {
|
|
173
|
+
reactData.tipZindex = XEUtils.toNumber(zIndex);
|
|
174
|
+
}
|
|
175
|
+
else if (reactData.tipZindex < getLastZIndex()) {
|
|
259
176
|
reactData.tipZindex = nextZIndex();
|
|
260
177
|
}
|
|
261
178
|
};
|
|
262
179
|
const clickEvent = () => {
|
|
263
180
|
if (reactData.visible) {
|
|
264
|
-
|
|
181
|
+
$xeTooltip.close();
|
|
265
182
|
}
|
|
266
183
|
else {
|
|
267
184
|
handleVisible(reactData.target || getSelectorEl(), props.content);
|
|
@@ -276,12 +193,12 @@ export default defineVxeComponent({
|
|
|
276
193
|
if (enterable && trigger === 'hover') {
|
|
277
194
|
setTimeout(() => {
|
|
278
195
|
if (!reactData.tipActive) {
|
|
279
|
-
|
|
196
|
+
$xeTooltip.close();
|
|
280
197
|
}
|
|
281
198
|
}, leaveDelay);
|
|
282
199
|
}
|
|
283
200
|
else {
|
|
284
|
-
|
|
201
|
+
$xeTooltip.close();
|
|
285
202
|
}
|
|
286
203
|
};
|
|
287
204
|
const wrapperMouseenterEvent = () => {
|
|
@@ -293,22 +210,23 @@ export default defineVxeComponent({
|
|
|
293
210
|
if (enterable && trigger === 'hover') {
|
|
294
211
|
setTimeout(() => {
|
|
295
212
|
if (!reactData.tipActive) {
|
|
296
|
-
|
|
213
|
+
$xeTooltip.close();
|
|
297
214
|
}
|
|
298
215
|
}, leaveDelay);
|
|
299
216
|
}
|
|
300
217
|
};
|
|
301
218
|
const showTip = () => {
|
|
219
|
+
const { appendTo } = props;
|
|
302
220
|
const { tipStore } = reactData;
|
|
303
|
-
const
|
|
304
|
-
if (
|
|
305
|
-
const parentNode =
|
|
221
|
+
const panelElem = refElem.value;
|
|
222
|
+
if (panelElem) {
|
|
223
|
+
const parentNode = panelElem.parentNode;
|
|
306
224
|
if (!parentNode) {
|
|
307
|
-
|
|
225
|
+
getPopupAppendElement(appendTo).appendChild(panelElem);
|
|
308
226
|
}
|
|
309
227
|
}
|
|
310
228
|
updateValue(true);
|
|
311
|
-
|
|
229
|
+
updateZIndex();
|
|
312
230
|
tipStore.placement = 'top';
|
|
313
231
|
tipStore.style = { width: 'auto', left: 0, top: 0, zIndex: props.zIndex || reactData.tipZindex };
|
|
314
232
|
tipStore.arrowStyle = { left: '50%' };
|
|
@@ -369,10 +287,50 @@ export default defineVxeComponent({
|
|
|
369
287
|
}
|
|
370
288
|
return null;
|
|
371
289
|
};
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
290
|
+
const updateTipStyle = () => {
|
|
291
|
+
const { placement, defaultPlacement, isArrow } = props;
|
|
292
|
+
const { tipTarget: targetElem, tipStore, tipPos, tipZindex } = reactData;
|
|
293
|
+
const panelElem = refElem.value;
|
|
294
|
+
if (!targetElem || !panelElem) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const targetRect = targetElem.getBoundingClientRect();
|
|
298
|
+
const targetWidth = targetElem.offsetWidth;
|
|
299
|
+
const targetHeight = targetElem.offsetHeight;
|
|
300
|
+
const panelWidth = panelElem.offsetWidth;
|
|
301
|
+
const targetLeft = targetRect.left;
|
|
302
|
+
const targetTop = targetRect.top;
|
|
303
|
+
// 支持特殊定位逻辑
|
|
304
|
+
let left = targetLeft;
|
|
305
|
+
let top = targetTop + targetHeight;
|
|
306
|
+
if (tipPos && (tipPos.oLeft || tipPos.oTop)) {
|
|
307
|
+
if (isArrow) {
|
|
308
|
+
left = left + Math.max(8, Math.min(targetWidth - 8, tipPos.oLeft)) - panelWidth / 2;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
left = tipPos.x + 1;
|
|
312
|
+
top = tipPos.y + 1;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
left = targetLeft + (targetWidth - panelWidth) / 2;
|
|
317
|
+
}
|
|
318
|
+
const ppObj = updatePanelPlacement(targetElem, panelElem, {
|
|
319
|
+
defaultTop: top,
|
|
320
|
+
defaultLeft: left,
|
|
321
|
+
placement: placement,
|
|
322
|
+
defaultPlacement: defaultPlacement,
|
|
323
|
+
teleportTo: true
|
|
324
|
+
});
|
|
325
|
+
const panelStyle = Object.assign(ppObj.style, {
|
|
326
|
+
zIndex: tipZindex
|
|
327
|
+
});
|
|
328
|
+
tipStore.placement = ppObj.placement;
|
|
329
|
+
tipStore.style = panelStyle;
|
|
330
|
+
tipStore.arrowStyle.left = `${ppObj.arrowLeft}px`;
|
|
331
|
+
};
|
|
332
|
+
const tooltipMethods = {
|
|
333
|
+
dispatchEvent,
|
|
376
334
|
openByEvent(evnt, target, content) {
|
|
377
335
|
return handleVisible(target || reactData.target || getSelectorEl(), content, evnt);
|
|
378
336
|
},
|
|
@@ -395,20 +353,8 @@ export default defineVxeComponent({
|
|
|
395
353
|
return handleVisible(target, content);
|
|
396
354
|
},
|
|
397
355
|
updatePlacement() {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (visible && tipTarget && el) {
|
|
401
|
-
updateTipStyle();
|
|
402
|
-
}
|
|
403
|
-
return nextTick().then(() => {
|
|
404
|
-
el = refElem.value;
|
|
405
|
-
if (tipTarget && el) {
|
|
406
|
-
updateTipStyle();
|
|
407
|
-
return nextTick().then(() => {
|
|
408
|
-
updateTipStyle();
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
});
|
|
356
|
+
updateTipStyle();
|
|
357
|
+
return nextTick().then(updateTipStyle);
|
|
412
358
|
},
|
|
413
359
|
isActived() {
|
|
414
360
|
return reactData.tipActive;
|
|
@@ -495,7 +441,7 @@ export default defineVxeComponent({
|
|
|
495
441
|
handleVisible(reactData.target || getSelectorEl(), props.content);
|
|
496
442
|
}
|
|
497
443
|
else {
|
|
498
|
-
|
|
444
|
+
$xeTooltip.close();
|
|
499
445
|
}
|
|
500
446
|
}
|
|
501
447
|
reactData.isUpdate = false;
|
|
@@ -508,21 +454,21 @@ export default defineVxeComponent({
|
|
|
508
454
|
}
|
|
509
455
|
nextTick(() => {
|
|
510
456
|
const { trigger, content } = props;
|
|
511
|
-
const
|
|
512
|
-
if (
|
|
513
|
-
const parentNode =
|
|
457
|
+
const panelElem = refElem.value;
|
|
458
|
+
if (panelElem) {
|
|
459
|
+
const parentNode = panelElem.parentNode;
|
|
514
460
|
if (parentNode) {
|
|
515
461
|
reactData.tipContent = content;
|
|
516
462
|
reactData.tipZindex = nextZIndex();
|
|
517
|
-
XEUtils.arrayEach(
|
|
463
|
+
XEUtils.arrayEach(panelElem.children, (elem, index) => {
|
|
518
464
|
if (index) {
|
|
519
|
-
parentNode.insertBefore(elem,
|
|
465
|
+
parentNode.insertBefore(elem, panelElem);
|
|
520
466
|
if (!reactData.target) {
|
|
521
467
|
reactData.target = elem;
|
|
522
468
|
}
|
|
523
469
|
}
|
|
524
470
|
});
|
|
525
|
-
parentNode.removeChild(
|
|
471
|
+
parentNode.removeChild(panelElem);
|
|
526
472
|
const { target } = reactData;
|
|
527
473
|
if (target) {
|
|
528
474
|
if (trigger === 'hover') {
|
|
@@ -542,7 +488,7 @@ export default defineVxeComponent({
|
|
|
542
488
|
});
|
|
543
489
|
onBeforeUnmount(() => {
|
|
544
490
|
const { target } = reactData;
|
|
545
|
-
const
|
|
491
|
+
const panelElem = refElem.value;
|
|
546
492
|
if (target) {
|
|
547
493
|
target.onmouseenter = null;
|
|
548
494
|
target.onmouseleave = null;
|
|
@@ -552,10 +498,10 @@ export default defineVxeComponent({
|
|
|
552
498
|
if (contentWrapperfEl) {
|
|
553
499
|
contentWrapperfEl.removeEventListener('wheel', wheelEvent);
|
|
554
500
|
}
|
|
555
|
-
if (
|
|
556
|
-
const parentNode =
|
|
501
|
+
if (panelElem) {
|
|
502
|
+
const parentNode = panelElem.parentNode;
|
|
557
503
|
if (parentNode) {
|
|
558
|
-
parentNode.removeChild(
|
|
504
|
+
parentNode.removeChild(panelElem);
|
|
559
505
|
}
|
|
560
506
|
}
|
|
561
507
|
});
|
package/es/tree/src/tree.js
CHANGED
|
@@ -3123,11 +3123,11 @@ export default defineVxeComponent({
|
|
|
3123
3123
|
]);
|
|
3124
3124
|
};
|
|
3125
3125
|
const renderList = (treeList) => {
|
|
3126
|
-
const { transform, emptyText } = props;
|
|
3126
|
+
const { loading, transform, emptyText } = props;
|
|
3127
3127
|
const { treeExpandedMaps } = internalData;
|
|
3128
3128
|
const childrenField = computeChildrenField.value;
|
|
3129
3129
|
const emptySlot = slots.empty;
|
|
3130
|
-
if (!treeList.length) {
|
|
3130
|
+
if (!loading && !treeList.length) {
|
|
3131
3131
|
return [
|
|
3132
3132
|
h('div', {
|
|
3133
3133
|
class: 'vxe-tree--empty-placeholder'
|
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.17.
|
|
4
|
+
export const version = "4.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,117 +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);
|
|
297
|
+
if (XEUtils.isString(selectElem)) {
|
|
298
|
+
return document.querySelector(selectElem) || document.body;
|
|
299
|
+
}
|
|
300
|
+
return selectElem;
|
|
264
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${"4.17.
|
|
3
|
+
const uiVersion = `ui v${"4.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}
|
|
@@ -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}
|