vgapp 1.5.8 → 1.5.9
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/app/modules/vgalert/js/vgalert.js +7 -4
- package/app/modules/vgalert/scss/vgalert.scss +13 -6
- package/app/modules/vgnav/js/vgnav.js +75 -22
- package/app/modules/vgtable/scss/_fixed-columns.scss +23 -25
- package/build/vgapp.css +1 -1
- package/build/vgapp.css.map +1 -1
- package/build/vgapp.js +1 -1
- package/build/vgapp.js.map +1 -1
- package/package.json +1 -1
|
@@ -456,10 +456,13 @@ class VGAlert {
|
|
|
456
456
|
: VGModal.getOrCreateInstance(containerWrap);
|
|
457
457
|
const container = Selectors.find('.vg-modal-content', containerWrap) || containerWrap;
|
|
458
458
|
|
|
459
|
-
const overlay = document.createElement('div');
|
|
460
|
-
|
|
461
|
-
overlay.className = `${CLASS_NAME_ALERT}-overlay`;
|
|
462
|
-
|
|
459
|
+
const overlay = document.createElement('div');
|
|
460
|
+
|
|
461
|
+
overlay.className = `${CLASS_NAME_ALERT}-overlay`;
|
|
462
|
+
if (containerWrap.classList.contains('vg-modal')) {
|
|
463
|
+
overlay.classList.add(`${CLASS_NAME_ALERT}-overlay--modal`);
|
|
464
|
+
}
|
|
465
|
+
this._applySizeClass(overlay);
|
|
463
466
|
overlay.append(this._buildContent());
|
|
464
467
|
|
|
465
468
|
container.append(overlay);
|
|
@@ -55,17 +55,24 @@
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
.vg-alert-wrapper {
|
|
59
|
-
background-color: var(--vg-alert-overlay-wrapper-bg);
|
|
60
|
-
width: var(--vg-alert-overlay-wrapper-width);
|
|
58
|
+
.vg-alert-wrapper {
|
|
59
|
+
background-color: var(--vg-alert-overlay-wrapper-bg);
|
|
60
|
+
width: var(--vg-alert-overlay-wrapper-width);
|
|
61
61
|
position: absolute;
|
|
62
62
|
left: var(--vg-alert-overlay-wrapper-start);
|
|
63
63
|
z-index: 1;
|
|
64
64
|
transform: var(--vg-alert-overlay-wrapper-transform);
|
|
65
65
|
top: var(--vg-alert-overlay-wrapper-top);
|
|
66
|
-
transition: var(--vg-alert-overlay-wrapper-transition);
|
|
67
|
-
}
|
|
68
|
-
|
|
66
|
+
transition: var(--vg-alert-overlay-wrapper-transition);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&--modal {
|
|
70
|
+
.vg-alert-wrapper {
|
|
71
|
+
position: sticky;
|
|
72
|
+
top: calc(var(--vg-alert-overlay-wrapper-top) + 1rem);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
69
76
|
|
|
70
77
|
&-dropdown {
|
|
71
78
|
width: 360px;
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import BaseModule from "../../base-module";
|
|
6
6
|
import Selectors from "../../../utils/js/dom/selectors";
|
|
7
7
|
import {
|
|
8
|
-
execute,
|
|
9
|
-
|
|
8
|
+
execute,
|
|
9
|
+
getTransitionDurationFromElement,
|
|
10
|
+
isDisabled,
|
|
10
11
|
isMobileDevice,
|
|
11
12
|
isVisible,
|
|
12
13
|
mergeDeepObject,
|
|
@@ -127,8 +128,9 @@ class VGNav extends BaseModule {
|
|
|
127
128
|
this._params.animation.timeout = 10;
|
|
128
129
|
}
|
|
129
130
|
|
|
130
|
-
this._openDrops = new Map();
|
|
131
|
-
this._pointerPosition = null;
|
|
131
|
+
this._openDrops = new Map();
|
|
132
|
+
this._pointerPosition = null;
|
|
133
|
+
this._smoothSwitch = null;
|
|
132
134
|
this._handleScroll = this._handleScroll.bind(this);
|
|
133
135
|
this._handleResize = this._handleResize.bind(this);
|
|
134
136
|
}
|
|
@@ -397,7 +399,7 @@ class VGNav extends BaseModule {
|
|
|
397
399
|
return drop.previousElementSibling === relatedDrop || drop.nextElementSibling === relatedDrop;
|
|
398
400
|
}
|
|
399
401
|
|
|
400
|
-
_canSmoothSwitchFirstLevel(event, currentDrop, relatedDrop) {
|
|
402
|
+
_canSmoothSwitchFirstLevel(event, currentDrop, relatedDrop) {
|
|
401
403
|
const smoothParams = this._params.hoversmoothfirstlevel || {};
|
|
402
404
|
if (!smoothParams.enable) return false;
|
|
403
405
|
if (!currentDrop || !relatedDrop || currentDrop === relatedDrop) return false;
|
|
@@ -406,8 +408,52 @@ class VGNav extends BaseModule {
|
|
|
406
408
|
if (!this._isAdjacentDropdown(currentDrop, relatedDrop)) return false;
|
|
407
409
|
if (smoothParams.horizontalOnly && !this._isHorizontalPointerMove(event)) return false;
|
|
408
410
|
|
|
409
|
-
return true;
|
|
410
|
-
}
|
|
411
|
+
return true;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
_scheduleSmoothSwitchCompletion(dropContent, callback) {
|
|
415
|
+
const duration = getTransitionDurationFromElement(dropContent);
|
|
416
|
+
if (!duration) {
|
|
417
|
+
callback();
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
window.setTimeout(callback, duration);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
_startSmoothSwitch(currentDrop, previousDrop, dropContent) {
|
|
425
|
+
const staleSwitch = this._smoothSwitch;
|
|
426
|
+
const transfer = { currentDrop, previousDrop };
|
|
427
|
+
this._smoothSwitch = transfer;
|
|
428
|
+
|
|
429
|
+
if (
|
|
430
|
+
staleSwitch?.previousDrop
|
|
431
|
+
&& staleSwitch.previousDrop !== currentDrop
|
|
432
|
+
&& staleSwitch.previousDrop !== previousDrop
|
|
433
|
+
&& staleSwitch.previousDrop.classList.contains(CLASS_NAME_ACTIVE)
|
|
434
|
+
) {
|
|
435
|
+
this.hide({ relatedTarget: staleSwitch.previousDrop });
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
this._scheduleSmoothSwitchCompletion(dropContent, () => {
|
|
439
|
+
if (this._smoothSwitch !== transfer) return;
|
|
440
|
+
this._smoothSwitch = null;
|
|
441
|
+
if (!currentDrop.isConnected || !previousDrop.isConnected) return;
|
|
442
|
+
if (!currentDrop.classList.contains(CLASS_NAME_ACTIVE)) return;
|
|
443
|
+
if (previousDrop.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
444
|
+
this.hide({ relatedTarget: previousDrop });
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
_cancelSmoothSwitch(exceptDrop = null) {
|
|
450
|
+
const transfer = this._smoothSwitch;
|
|
451
|
+
this._smoothSwitch = null;
|
|
452
|
+
if (!transfer?.previousDrop || transfer.previousDrop === exceptDrop) return;
|
|
453
|
+
if (transfer.previousDrop.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
454
|
+
this.hide({ relatedTarget: transfer.previousDrop });
|
|
455
|
+
}
|
|
456
|
+
}
|
|
411
457
|
|
|
412
458
|
static init(element, params = {}) {
|
|
413
459
|
const instance = VGNav.getOrCreateInstance(element, params);
|
|
@@ -435,19 +481,24 @@ class VGNav extends BaseModule {
|
|
|
435
481
|
const previousDrop = event.relatedTarget?.closest('.dropdown');
|
|
436
482
|
const useSmoothSwitch = instance._canSmoothSwitchFirstLevel(event, target, previousDrop);
|
|
437
483
|
|
|
438
|
-
if (!useSmoothSwitch) {
|
|
439
|
-
|
|
484
|
+
if (!useSmoothSwitch) {
|
|
485
|
+
instance._cancelSmoothSwitch(target);
|
|
486
|
+
VGNav.hideOpenDrops(event);
|
|
440
487
|
}
|
|
441
488
|
|
|
442
489
|
let relatedTarget = {
|
|
443
490
|
relatedTarget: target
|
|
444
491
|
};
|
|
445
492
|
|
|
446
|
-
instance.show(relatedTarget);
|
|
447
|
-
|
|
448
|
-
if (useSmoothSwitch && previousDrop && previousDrop.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
449
|
-
|
|
450
|
-
|
|
493
|
+
instance.show(relatedTarget);
|
|
494
|
+
|
|
495
|
+
if (useSmoothSwitch && previousDrop && previousDrop.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
496
|
+
const nextDropContent = Selectors.find(':scope > .dropdown-content', target);
|
|
497
|
+
if (nextDropContent) {
|
|
498
|
+
nextDropContent.classList.add(CLASS_NAME_FADE);
|
|
499
|
+
instance._startSmoothSwitch(target, previousDrop, nextDropContent);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
451
502
|
|
|
452
503
|
instance._updatePointerPosition(event);
|
|
453
504
|
});
|
|
@@ -464,14 +515,16 @@ class VGNav extends BaseModule {
|
|
|
464
515
|
relatedTarget = relatedTarget.parentNode;
|
|
465
516
|
}
|
|
466
517
|
|
|
467
|
-
if (instance._canSmoothSwitchFirstLevel(event, elm, nextDrop)) {
|
|
468
|
-
currentElem = null;
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
518
|
+
if (instance._canSmoothSwitchFirstLevel(event, elm, nextDrop)) {
|
|
519
|
+
currentElem = null;
|
|
520
|
+
// Сохраняем предыдущую точку до mouseover соседнего пункта:
|
|
521
|
+
// она нужна повторной проверке направления и передаче открытого состояния.
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
currentElem = null;
|
|
526
|
+
instance._cancelSmoothSwitch(elm);
|
|
527
|
+
instance.hide({ relatedTarget: relatedTarget, elm: elm });
|
|
475
528
|
instance._updatePointerPosition(event);
|
|
476
529
|
});
|
|
477
530
|
});
|
|
@@ -54,31 +54,29 @@
|
|
|
54
54
|
inset-inline-end: var(--vg-table-fixed-offset);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
tbody tr > [data-vg-table-fixed-side],
|
|
58
|
-
tfoot tr > [data-vg-table-fixed-side] {
|
|
59
|
-
background-color: var(--vg-table-fixed-cell-bg);
|
|
60
|
-
background-image: none;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
tbody tr.vg-table-row-selected > [data-vg-table-fixed-side] {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
background-image: linear-gradient(var(--vg-table-selection-row-background-hovered), var(--vg-table-selection-row-background-hovered));
|
|
81
|
-
}
|
|
57
|
+
tbody tr > [data-vg-table-fixed-side],
|
|
58
|
+
tfoot tr > [data-vg-table-fixed-side] {
|
|
59
|
+
background-color: var(--vg-table-fixed-cell-bg);
|
|
60
|
+
background-image: none;
|
|
61
|
+
box-shadow: inset 0 0 0 100vmax transparent;
|
|
62
|
+
transition: box-shadow var(--vg-table-transition);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.vg-table-striped tbody tr:nth-child(even) > [data-vg-table-fixed-side] {
|
|
66
|
+
box-shadow: inset 0 0 0 100vmax var(--vg-table-tbody-bg-striped);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.vg-table-hovered tbody tr:hover > [data-vg-table-fixed-side] {
|
|
70
|
+
box-shadow: inset 0 0 0 100vmax var(--vg-table-tbody-bg-hovered);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
tbody tr.vg-table-row-selected > [data-vg-table-fixed-side] {
|
|
74
|
+
box-shadow: inset 0 0 0 100vmax var(--vg-table-selection-row-background);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
tbody tr.vg-table-row-selected:hover > [data-vg-table-fixed-side] {
|
|
78
|
+
box-shadow: inset 0 0 0 100vmax var(--vg-table-selection-row-background-hovered);
|
|
79
|
+
}
|
|
82
80
|
|
|
83
81
|
[data-vg-table-fixed-edge]::after {
|
|
84
82
|
content: "";
|