quasar 2.11.3 → 2.11.5
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/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar-TN.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +1 -1
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +1 -1
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/kk.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/mm.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sm.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
- package/dist/lang/uz-Latn.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.esm.js +445 -196
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.sass +1 -1
- package/dist/quasar.umd.js +445 -196
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/web-types/web-types.json +1 -1
- package/package.json +1 -1
- package/src/components/ajax-bar/QAjaxBar.js +13 -5
- package/src/components/btn/QBtn.js +3 -2
- package/src/components/carousel/QCarousel.js +17 -10
- package/src/components/dialog/QDialog.js +10 -5
- package/src/components/drawer/QDrawer.js +8 -3
- package/src/components/img/QImg.js +25 -11
- package/src/components/infinite-scroll/QInfiniteScroll.js +26 -4
- package/src/components/input/QInput.js +14 -4
- package/src/components/layout/QLayout.js +5 -5
- package/src/components/menu/QMenu.js +1 -1
- package/src/components/pull-to-refresh/QPullToRefresh.js +5 -4
- package/src/components/rating/QRating.js +3 -3
- package/src/components/resize-observer/QResizeObserver.js +9 -4
- package/src/components/scroll-area/QScrollArea.js +8 -8
- package/src/components/select/QSelect.js +19 -8
- package/src/components/slide-item/QSlideItem.js +4 -2
- package/src/components/slide-transition/QSlideTransition.js +17 -3
- package/src/components/tabs/QTabs.js +12 -5
- package/src/components/tooltip/QTooltip.js +1 -1
- package/src/components/virtual-scroll/use-virtual-scroll.js +5 -1
- package/src/composables/private/use-anchor.js +8 -3
- package/src/composables/private/use-field.js +10 -4
- package/src/composables/private/use-portal.js +3 -3
- package/src/composables/private/use-timeout.js +6 -3
- package/src/directives/TouchHold.js +9 -4
- package/src/directives/TouchRepeat.js +10 -3
- package/src/plugins/Loading.js +16 -11
- package/src/plugins/Meta.js +4 -2
- package/src/plugins/Notify.js +13 -3
- package/src/utils/copy-to-clipboard.js +8 -0
- package/src/utils/debounce.js +9 -6
- package/src/utils/is.js +11 -6
- package/src/utils/morph.js +7 -6
- package/src/utils/prevent-scroll.js +14 -7
- package/src/utils/private/click-outside.js +10 -3
- package/src/utils/private/global-dialog.js +1 -1
- package/src/utils/private/global-nodes.js +44 -13
- package/src/utils/private/position-engine.js +67 -25
package/dist/quasar.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Quasar Framework v2.11.
|
|
2
|
+
* Quasar Framework v2.11.5
|
|
3
3
|
* (c) 2015-present Razvan Stoenescu
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -557,27 +557,30 @@
|
|
|
557
557
|
};
|
|
558
558
|
|
|
559
559
|
function debounce (fn, wait = 250, immediate) {
|
|
560
|
-
let
|
|
560
|
+
let timer = null;
|
|
561
561
|
|
|
562
562
|
function debounced (/* ...args */) {
|
|
563
563
|
const args = arguments;
|
|
564
564
|
|
|
565
565
|
const later = () => {
|
|
566
|
-
|
|
566
|
+
timer = null;
|
|
567
567
|
if (immediate !== true) {
|
|
568
568
|
fn.apply(this, args);
|
|
569
569
|
}
|
|
570
570
|
};
|
|
571
571
|
|
|
572
|
-
|
|
573
|
-
|
|
572
|
+
if (timer !== null) {
|
|
573
|
+
clearTimeout(timer);
|
|
574
|
+
}
|
|
575
|
+
else if (immediate === true) {
|
|
574
576
|
fn.apply(this, args);
|
|
575
577
|
}
|
|
576
|
-
|
|
578
|
+
|
|
579
|
+
timer = setTimeout(later, wait);
|
|
577
580
|
}
|
|
578
581
|
|
|
579
582
|
debounced.cancel = () => {
|
|
580
|
-
clearTimeout(
|
|
583
|
+
timer !== null && clearTimeout(timer);
|
|
581
584
|
};
|
|
582
585
|
|
|
583
586
|
return debounced
|
|
@@ -1473,20 +1476,23 @@
|
|
|
1473
1476
|
return false
|
|
1474
1477
|
}
|
|
1475
1478
|
|
|
1476
|
-
|
|
1479
|
+
let iter = a.entries();
|
|
1480
|
+
|
|
1481
|
+
i = iter.next();
|
|
1477
1482
|
while (i.done !== true) {
|
|
1478
1483
|
if (b.has(i.value[ 0 ]) !== true) {
|
|
1479
1484
|
return false
|
|
1480
1485
|
}
|
|
1481
|
-
i =
|
|
1486
|
+
i = iter.next();
|
|
1482
1487
|
}
|
|
1483
1488
|
|
|
1484
|
-
|
|
1489
|
+
iter = a.entries();
|
|
1490
|
+
i = iter.next();
|
|
1485
1491
|
while (i.done !== true) {
|
|
1486
1492
|
if (isDeepEqual(i.value[ 1 ], b.get(i.value[ 0 ])) !== true) {
|
|
1487
1493
|
return false
|
|
1488
1494
|
}
|
|
1489
|
-
i =
|
|
1495
|
+
i = iter.next();
|
|
1490
1496
|
}
|
|
1491
1497
|
|
|
1492
1498
|
return true
|
|
@@ -1497,12 +1503,14 @@
|
|
|
1497
1503
|
return false
|
|
1498
1504
|
}
|
|
1499
1505
|
|
|
1500
|
-
|
|
1506
|
+
const iter = a.entries();
|
|
1507
|
+
|
|
1508
|
+
i = iter.next();
|
|
1501
1509
|
while (i.done !== true) {
|
|
1502
1510
|
if (b.has(i.value[ 0 ]) !== true) {
|
|
1503
1511
|
return false
|
|
1504
1512
|
}
|
|
1505
|
-
i =
|
|
1513
|
+
i = iter.next();
|
|
1506
1514
|
}
|
|
1507
1515
|
|
|
1508
1516
|
return true
|
|
@@ -1645,7 +1653,7 @@
|
|
|
1645
1653
|
}
|
|
1646
1654
|
|
|
1647
1655
|
var installQuasar = function (parentApp, opts = {}) {
|
|
1648
|
-
const $q = { version: '2.11.
|
|
1656
|
+
const $q = { version: '2.11.5' };
|
|
1649
1657
|
|
|
1650
1658
|
if (globalConfigIsFrozen === false) {
|
|
1651
1659
|
if (opts.config !== void 0) {
|
|
@@ -1844,7 +1852,7 @@
|
|
|
1844
1852
|
const onScreen = vue.ref(false);
|
|
1845
1853
|
const animate = vue.ref(true);
|
|
1846
1854
|
|
|
1847
|
-
let sessions = 0, timer, speed;
|
|
1855
|
+
let sessions = 0, timer = null, speed;
|
|
1848
1856
|
|
|
1849
1857
|
const classes = vue.computed(() =>
|
|
1850
1858
|
`q-loading-bar q-loading-bar--${ props.position }`
|
|
@@ -1896,19 +1904,21 @@
|
|
|
1896
1904
|
if (oldSpeed === 0 && newSpeed > 0) {
|
|
1897
1905
|
planNextStep();
|
|
1898
1906
|
}
|
|
1899
|
-
else if (oldSpeed > 0 && newSpeed <= 0) {
|
|
1907
|
+
else if (timer !== null && oldSpeed > 0 && newSpeed <= 0) {
|
|
1900
1908
|
clearTimeout(timer);
|
|
1909
|
+
timer = null;
|
|
1901
1910
|
}
|
|
1902
1911
|
|
|
1903
1912
|
return sessions
|
|
1904
1913
|
}
|
|
1905
1914
|
|
|
1906
|
-
clearTimeout(timer);
|
|
1915
|
+
timer !== null && clearTimeout(timer);
|
|
1907
1916
|
emit('start');
|
|
1908
1917
|
|
|
1909
1918
|
progress.value = 0;
|
|
1910
1919
|
|
|
1911
1920
|
timer = setTimeout(() => {
|
|
1921
|
+
timer = null;
|
|
1912
1922
|
animate.value = true;
|
|
1913
1923
|
newSpeed > 0 && planNextStep();
|
|
1914
1924
|
}, onScreen.value === true ? 500 : 1);
|
|
@@ -1935,13 +1945,18 @@
|
|
|
1935
1945
|
return sessions
|
|
1936
1946
|
}
|
|
1937
1947
|
|
|
1938
|
-
|
|
1948
|
+
if (timer !== null) {
|
|
1949
|
+
clearTimeout(timer);
|
|
1950
|
+
timer = null;
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1939
1953
|
emit('stop');
|
|
1940
1954
|
|
|
1941
1955
|
const end = () => {
|
|
1942
1956
|
animate.value = true;
|
|
1943
1957
|
progress.value = 100;
|
|
1944
1958
|
timer = setTimeout(() => {
|
|
1959
|
+
timer = null;
|
|
1945
1960
|
onScreen.value = false;
|
|
1946
1961
|
}, 1000);
|
|
1947
1962
|
};
|
|
@@ -1959,6 +1974,7 @@
|
|
|
1959
1974
|
function planNextStep () {
|
|
1960
1975
|
if (progress.value < 100) {
|
|
1961
1976
|
timer = setTimeout(() => {
|
|
1977
|
+
timer = null;
|
|
1962
1978
|
increment();
|
|
1963
1979
|
planNextStep();
|
|
1964
1980
|
}, speed);
|
|
@@ -1979,7 +1995,7 @@
|
|
|
1979
1995
|
});
|
|
1980
1996
|
|
|
1981
1997
|
vue.onBeforeUnmount(() => {
|
|
1982
|
-
clearTimeout(timer);
|
|
1998
|
+
timer !== null && clearTimeout(timer);
|
|
1983
1999
|
hijacked === true && restoreAjax(start);
|
|
1984
2000
|
});
|
|
1985
2001
|
|
|
@@ -3583,7 +3599,7 @@
|
|
|
3583
3599
|
const rootRef = vue.ref(null);
|
|
3584
3600
|
const blurTargetRef = vue.ref(null);
|
|
3585
3601
|
|
|
3586
|
-
let localTouchTargetEl = null, avoidMouseRipple, mouseTimer;
|
|
3602
|
+
let localTouchTargetEl = null, avoidMouseRipple, mouseTimer = null;
|
|
3587
3603
|
|
|
3588
3604
|
const hasLabel = vue.computed(() =>
|
|
3589
3605
|
props.label !== void 0 && props.label !== null && props.label !== ''
|
|
@@ -3729,8 +3745,9 @@
|
|
|
3729
3745
|
// avoid duplicated mousedown event
|
|
3730
3746
|
// triggering another early ripple
|
|
3731
3747
|
avoidMouseRipple = true;
|
|
3732
|
-
clearTimeout(mouseTimer);
|
|
3748
|
+
mouseTimer !== null && clearTimeout(mouseTimer);
|
|
3733
3749
|
mouseTimer = setTimeout(() => {
|
|
3750
|
+
mouseTimer = null;
|
|
3734
3751
|
avoidMouseRipple = false;
|
|
3735
3752
|
}, 200);
|
|
3736
3753
|
}
|
|
@@ -3976,7 +3993,7 @@
|
|
|
3976
3993
|
|
|
3977
3994
|
const anchorEl = vue.ref(null);
|
|
3978
3995
|
|
|
3979
|
-
let touchTimer;
|
|
3996
|
+
let touchTimer = null;
|
|
3980
3997
|
|
|
3981
3998
|
function canShow (evt) {
|
|
3982
3999
|
// abort with no parent configured or on multi-touch
|
|
@@ -4035,6 +4052,7 @@
|
|
|
4035
4052
|
]);
|
|
4036
4053
|
|
|
4037
4054
|
touchTimer = setTimeout(() => {
|
|
4055
|
+
touchTimer = null;
|
|
4038
4056
|
proxy.show(evt);
|
|
4039
4057
|
evt.qAnchorHandled = true;
|
|
4040
4058
|
}, 300);
|
|
@@ -4042,7 +4060,11 @@
|
|
|
4042
4060
|
|
|
4043
4061
|
mobileCleanup (evt) {
|
|
4044
4062
|
anchorEl.value.classList.remove('non-selectable');
|
|
4045
|
-
|
|
4063
|
+
|
|
4064
|
+
if (touchTimer !== null) {
|
|
4065
|
+
clearTimeout(touchTimer);
|
|
4066
|
+
touchTimer = null;
|
|
4067
|
+
}
|
|
4046
4068
|
|
|
4047
4069
|
if (showing.value === true && evt !== void 0) {
|
|
4048
4070
|
clearSelection();
|
|
@@ -4156,7 +4178,7 @@
|
|
|
4156
4178
|
});
|
|
4157
4179
|
|
|
4158
4180
|
vue.onBeforeUnmount(() => {
|
|
4159
|
-
clearTimeout(touchTimer);
|
|
4181
|
+
touchTimer !== null && clearTimeout(touchTimer);
|
|
4160
4182
|
unconfigureAnchorEl();
|
|
4161
4183
|
});
|
|
4162
4184
|
|
|
@@ -4397,15 +4419,18 @@
|
|
|
4397
4419
|
queue = queue.filter(entry => entry !== fn);
|
|
4398
4420
|
}
|
|
4399
4421
|
|
|
4400
|
-
const
|
|
4422
|
+
const nodesList = [];
|
|
4423
|
+
const portalTypeList = [];
|
|
4424
|
+
|
|
4425
|
+
let portalIndex = 1;
|
|
4401
4426
|
let target = document.body;
|
|
4402
4427
|
|
|
4403
|
-
function createGlobalNode (id) {
|
|
4428
|
+
function createGlobalNode (id, portalType) {
|
|
4404
4429
|
const el = document.createElement('div');
|
|
4405
4430
|
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4431
|
+
el.id = portalType !== void 0
|
|
4432
|
+
? `q-portal--${ portalType }--${ portalIndex++ }`
|
|
4433
|
+
: id;
|
|
4409
4434
|
|
|
4410
4435
|
if (globalConfig.globalNodes !== void 0) {
|
|
4411
4436
|
const cls = globalConfig.globalNodes.class;
|
|
@@ -4415,25 +4440,53 @@
|
|
|
4415
4440
|
}
|
|
4416
4441
|
|
|
4417
4442
|
target.appendChild(el);
|
|
4418
|
-
|
|
4443
|
+
nodesList.push(el);
|
|
4444
|
+
portalTypeList.push(portalType);
|
|
4419
4445
|
|
|
4420
4446
|
return el
|
|
4421
4447
|
}
|
|
4422
4448
|
|
|
4423
4449
|
function removeGlobalNode (el) {
|
|
4424
|
-
|
|
4450
|
+
const nodeIndex = nodesList.indexOf(el);
|
|
4451
|
+
|
|
4452
|
+
nodesList.splice(nodeIndex, 1);
|
|
4453
|
+
portalTypeList.splice(nodeIndex, 1);
|
|
4454
|
+
|
|
4425
4455
|
el.remove();
|
|
4426
4456
|
}
|
|
4427
4457
|
|
|
4428
|
-
function changeGlobalNodesTarget (
|
|
4429
|
-
if (
|
|
4430
|
-
|
|
4458
|
+
function changeGlobalNodesTarget (newTarget) {
|
|
4459
|
+
if (newTarget === target) {
|
|
4460
|
+
return
|
|
4461
|
+
}
|
|
4462
|
+
|
|
4463
|
+
target = newTarget;
|
|
4431
4464
|
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4465
|
+
if (
|
|
4466
|
+
target === document.body
|
|
4467
|
+
// or we have less than 2 dialogs:
|
|
4468
|
+
|| portalTypeList.reduce((acc, type) => (type === 'dialog' ? acc + 1 : acc), 0) < 2
|
|
4469
|
+
) {
|
|
4470
|
+
nodesList.forEach(node => {
|
|
4471
|
+
if (node.contains(target) === false) {
|
|
4472
|
+
target.appendChild(node);
|
|
4435
4473
|
}
|
|
4436
4474
|
});
|
|
4475
|
+
|
|
4476
|
+
return
|
|
4477
|
+
}
|
|
4478
|
+
|
|
4479
|
+
const lastDialogIndex = portalTypeList.lastIndexOf('dialog');
|
|
4480
|
+
|
|
4481
|
+
for (let i = 0; i < nodesList.length; i++) {
|
|
4482
|
+
const el = nodesList[ i ];
|
|
4483
|
+
|
|
4484
|
+
if (
|
|
4485
|
+
(i === lastDialogIndex || portalTypeList[ i ] !== 'dialog')
|
|
4486
|
+
&& el.contains(target) === false
|
|
4487
|
+
) {
|
|
4488
|
+
target.appendChild(el);
|
|
4489
|
+
}
|
|
4437
4490
|
}
|
|
4438
4491
|
}
|
|
4439
4492
|
|
|
@@ -4512,7 +4565,7 @@
|
|
|
4512
4565
|
// Warning!
|
|
4513
4566
|
// You MUST specify "inheritAttrs: false" in your component
|
|
4514
4567
|
|
|
4515
|
-
function usePortal (vm, innerRef, renderPortalContent,
|
|
4568
|
+
function usePortal (vm, innerRef, renderPortalContent, type) {
|
|
4516
4569
|
// showing, including while in show/hide transition
|
|
4517
4570
|
const portalIsActive = vue.ref(false);
|
|
4518
4571
|
|
|
@@ -4521,7 +4574,7 @@
|
|
|
4521
4574
|
|
|
4522
4575
|
let portalEl = null;
|
|
4523
4576
|
const focusObj = {};
|
|
4524
|
-
const onGlobalDialog =
|
|
4577
|
+
const onGlobalDialog = type === 'dialog' && isOnGlobalDialog(vm);
|
|
4525
4578
|
|
|
4526
4579
|
function showPortal (isReady) {
|
|
4527
4580
|
if (isReady === true) {
|
|
@@ -4534,7 +4587,7 @@
|
|
|
4534
4587
|
|
|
4535
4588
|
if (portalIsActive.value === false) {
|
|
4536
4589
|
if (onGlobalDialog === false && portalEl === null) {
|
|
4537
|
-
portalEl = createGlobalNode();
|
|
4590
|
+
portalEl = createGlobalNode(false, type);
|
|
4538
4591
|
}
|
|
4539
4592
|
|
|
4540
4593
|
portalIsActive.value = true;
|
|
@@ -4675,11 +4728,14 @@
|
|
|
4675
4728
|
*/
|
|
4676
4729
|
|
|
4677
4730
|
function useTimeout () {
|
|
4678
|
-
let timer;
|
|
4731
|
+
let timer = null;
|
|
4679
4732
|
const vm = vue.getCurrentInstance();
|
|
4680
4733
|
|
|
4681
4734
|
function removeTimeout () {
|
|
4682
|
-
|
|
4735
|
+
if (timer !== null) {
|
|
4736
|
+
clearTimeout(timer);
|
|
4737
|
+
timer = null;
|
|
4738
|
+
}
|
|
4683
4739
|
}
|
|
4684
4740
|
|
|
4685
4741
|
vue.onDeactivated(removeTimeout);
|
|
@@ -4689,7 +4745,7 @@
|
|
|
4689
4745
|
removeTimeout,
|
|
4690
4746
|
|
|
4691
4747
|
registerTimeout (fn, delay) {
|
|
4692
|
-
|
|
4748
|
+
removeTimeout();
|
|
4693
4749
|
|
|
4694
4750
|
if (vmIsDestroyed(vm) === false) {
|
|
4695
4751
|
timer = setTimeout(fn, delay);
|
|
@@ -4971,14 +5027,11 @@
|
|
|
4971
5027
|
}
|
|
4972
5028
|
}
|
|
4973
5029
|
|
|
4974
|
-
let timer;
|
|
4975
|
-
|
|
4976
5030
|
const
|
|
4977
5031
|
{ notPassiveCapture } = listenOpts,
|
|
4978
5032
|
registeredList = [];
|
|
4979
5033
|
|
|
4980
5034
|
function globalHandler (evt) {
|
|
4981
|
-
clearTimeout(timer);
|
|
4982
5035
|
|
|
4983
5036
|
const target = evt.target;
|
|
4984
5037
|
|
|
@@ -5051,7 +5104,7 @@
|
|
|
5051
5104
|
registeredList.splice(index, 1);
|
|
5052
5105
|
|
|
5053
5106
|
if (registeredList.length === 0) {
|
|
5054
|
-
|
|
5107
|
+
|
|
5055
5108
|
document.removeEventListener('mousedown', globalHandler, notPassiveCapture);
|
|
5056
5109
|
document.removeEventListener('touchstart', globalHandler, notPassiveCapture);
|
|
5057
5110
|
}
|
|
@@ -5119,17 +5172,32 @@
|
|
|
5119
5172
|
}
|
|
5120
5173
|
|
|
5121
5174
|
return {
|
|
5122
|
-
top,
|
|
5123
|
-
left,
|
|
5124
|
-
right,
|
|
5125
|
-
bottom,
|
|
5126
|
-
width,
|
|
5127
|
-
height,
|
|
5175
|
+
top, bottom, height,
|
|
5176
|
+
left, right, width,
|
|
5128
5177
|
middle: left + (right - left) / 2,
|
|
5129
5178
|
center: top + (bottom - top) / 2
|
|
5130
5179
|
}
|
|
5131
5180
|
}
|
|
5132
5181
|
|
|
5182
|
+
function getAbsoluteAnchorProps (el, absoluteOffset, offset) {
|
|
5183
|
+
let { top, left } = el.getBoundingClientRect();
|
|
5184
|
+
|
|
5185
|
+
top += absoluteOffset.top;
|
|
5186
|
+
left += absoluteOffset.left;
|
|
5187
|
+
|
|
5188
|
+
if (offset !== void 0) {
|
|
5189
|
+
top += offset[ 1 ];
|
|
5190
|
+
left += offset[ 0 ];
|
|
5191
|
+
}
|
|
5192
|
+
|
|
5193
|
+
return {
|
|
5194
|
+
top, bottom: top + 1, height: 1,
|
|
5195
|
+
left, right: left + 1, width: 1,
|
|
5196
|
+
middle: left,
|
|
5197
|
+
center: top
|
|
5198
|
+
}
|
|
5199
|
+
}
|
|
5200
|
+
|
|
5133
5201
|
function getTargetProps (el) {
|
|
5134
5202
|
return {
|
|
5135
5203
|
top: 0,
|
|
@@ -5141,6 +5209,13 @@
|
|
|
5141
5209
|
}
|
|
5142
5210
|
}
|
|
5143
5211
|
|
|
5212
|
+
function getTopLeftProps (anchorProps, targetProps, cfg) {
|
|
5213
|
+
return {
|
|
5214
|
+
top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],
|
|
5215
|
+
left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]
|
|
5216
|
+
}
|
|
5217
|
+
}
|
|
5218
|
+
|
|
5144
5219
|
// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }
|
|
5145
5220
|
function setPosition (cfg) {
|
|
5146
5221
|
if (client.is.ios === true && window.visualViewport !== void 0) {
|
|
@@ -5159,25 +5234,15 @@
|
|
|
5159
5234
|
}
|
|
5160
5235
|
}
|
|
5161
5236
|
|
|
5162
|
-
let anchorProps;
|
|
5163
|
-
|
|
5164
5237
|
// scroll position might change
|
|
5165
5238
|
// if max-height/-width changes, so we
|
|
5166
5239
|
// need to restore it after we calculate
|
|
5167
5240
|
// the new positioning
|
|
5168
5241
|
const { scrollLeft, scrollTop } = cfg.el;
|
|
5169
5242
|
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
else {
|
|
5174
|
-
const
|
|
5175
|
-
{ top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),
|
|
5176
|
-
top = anchorTop + cfg.absoluteOffset.top,
|
|
5177
|
-
left = anchorLeft + cfg.absoluteOffset.left;
|
|
5178
|
-
|
|
5179
|
-
anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 };
|
|
5180
|
-
}
|
|
5243
|
+
const anchorProps = cfg.absoluteOffset === void 0
|
|
5244
|
+
? getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)
|
|
5245
|
+
: getAbsoluteAnchorProps(cfg.anchorEl, cfg.absoluteOffset, cfg.offset);
|
|
5181
5246
|
|
|
5182
5247
|
let elStyle = {
|
|
5183
5248
|
maxHeight: cfg.maxHeight,
|
|
@@ -5194,14 +5259,44 @@
|
|
|
5194
5259
|
|
|
5195
5260
|
Object.assign(cfg.el.style, elStyle);
|
|
5196
5261
|
|
|
5197
|
-
const
|
|
5198
|
-
|
|
5199
|
-
props = {
|
|
5200
|
-
top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],
|
|
5201
|
-
left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]
|
|
5202
|
-
};
|
|
5262
|
+
const targetProps = getTargetProps(cfg.el);
|
|
5263
|
+
let props = getTopLeftProps(anchorProps, targetProps, cfg);
|
|
5203
5264
|
|
|
5204
|
-
|
|
5265
|
+
if (cfg.absoluteOffset === void 0 || cfg.offset === void 0) {
|
|
5266
|
+
applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin);
|
|
5267
|
+
}
|
|
5268
|
+
else { // we have touch position or context menu with offset
|
|
5269
|
+
const { top, left } = props; // cache initial values
|
|
5270
|
+
|
|
5271
|
+
// apply initial boundaries
|
|
5272
|
+
applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin);
|
|
5273
|
+
|
|
5274
|
+
let hasChanged = false;
|
|
5275
|
+
|
|
5276
|
+
// did it flip vertically?
|
|
5277
|
+
if (props.top !== top) {
|
|
5278
|
+
hasChanged = true;
|
|
5279
|
+
const offsetY = 2 * cfg.offset[ 1 ];
|
|
5280
|
+
anchorProps.center = anchorProps.top -= offsetY;
|
|
5281
|
+
anchorProps.bottom -= offsetY + 2;
|
|
5282
|
+
}
|
|
5283
|
+
|
|
5284
|
+
// did it flip horizontally?
|
|
5285
|
+
if (props.left !== left) {
|
|
5286
|
+
hasChanged = true;
|
|
5287
|
+
const offsetX = 2 * cfg.offset[ 0 ];
|
|
5288
|
+
anchorProps.middle = anchorProps.left -= offsetX;
|
|
5289
|
+
anchorProps.right -= offsetX + 2;
|
|
5290
|
+
}
|
|
5291
|
+
|
|
5292
|
+
if (hasChanged === true) {
|
|
5293
|
+
// re-calculate props with the new anchor
|
|
5294
|
+
props = getTopLeftProps(anchorProps, targetProps, cfg);
|
|
5295
|
+
|
|
5296
|
+
// and re-apply boundaries
|
|
5297
|
+
applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin);
|
|
5298
|
+
}
|
|
5299
|
+
}
|
|
5205
5300
|
|
|
5206
5301
|
elStyle = {
|
|
5207
5302
|
top: props.top + 'px',
|
|
@@ -5382,7 +5477,7 @@
|
|
|
5382
5477
|
processOnMount: true
|
|
5383
5478
|
});
|
|
5384
5479
|
|
|
5385
|
-
const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent);
|
|
5480
|
+
const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, 'menu');
|
|
5386
5481
|
|
|
5387
5482
|
const clickOutsideProps = {
|
|
5388
5483
|
anchorEl,
|
|
@@ -6999,7 +7094,7 @@
|
|
|
6999
7094
|
|
|
7000
7095
|
const isDark = useDark(props, $q);
|
|
7001
7096
|
|
|
7002
|
-
let timer, panelsLen;
|
|
7097
|
+
let timer = null, panelsLen;
|
|
7003
7098
|
|
|
7004
7099
|
const {
|
|
7005
7100
|
updatePanelsList, getPanelContent,
|
|
@@ -7053,7 +7148,6 @@
|
|
|
7053
7148
|
|
|
7054
7149
|
vue.watch(() => props.modelValue, () => {
|
|
7055
7150
|
if (props.autoplay) {
|
|
7056
|
-
clearInterval(timer);
|
|
7057
7151
|
startTimer();
|
|
7058
7152
|
}
|
|
7059
7153
|
});
|
|
@@ -7062,20 +7156,28 @@
|
|
|
7062
7156
|
if (val) {
|
|
7063
7157
|
startTimer();
|
|
7064
7158
|
}
|
|
7065
|
-
else {
|
|
7066
|
-
|
|
7159
|
+
else if (timer !== null) {
|
|
7160
|
+
clearTimeout(timer);
|
|
7161
|
+
timer = null;
|
|
7067
7162
|
}
|
|
7068
7163
|
});
|
|
7069
7164
|
|
|
7070
7165
|
function startTimer () {
|
|
7071
7166
|
const duration = isNumber(props.autoplay) === true
|
|
7072
|
-
? props.autoplay
|
|
7167
|
+
? Math.abs(props.autoplay)
|
|
7073
7168
|
: 5000;
|
|
7074
7169
|
|
|
7075
|
-
timer
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
|
|
7170
|
+
timer !== null && clearTimeout(timer);
|
|
7171
|
+
timer = setTimeout(() => {
|
|
7172
|
+
timer = null;
|
|
7173
|
+
|
|
7174
|
+
if (duration >= 0) {
|
|
7175
|
+
nextPanel();
|
|
7176
|
+
}
|
|
7177
|
+
else {
|
|
7178
|
+
previousPanel();
|
|
7179
|
+
}
|
|
7180
|
+
}, duration);
|
|
7079
7181
|
}
|
|
7080
7182
|
|
|
7081
7183
|
vue.onMounted(() => {
|
|
@@ -7083,7 +7185,7 @@
|
|
|
7083
7185
|
});
|
|
7084
7186
|
|
|
7085
7187
|
vue.onBeforeUnmount(() => {
|
|
7086
|
-
|
|
7188
|
+
timer !== null && clearTimeout(timer);
|
|
7087
7189
|
});
|
|
7088
7190
|
|
|
7089
7191
|
function getNavigationContainer (type, mapping) {
|
|
@@ -9401,8 +9503,10 @@
|
|
|
9401
9503
|
}
|
|
9402
9504
|
|
|
9403
9505
|
function emitEvent () {
|
|
9404
|
-
|
|
9405
|
-
|
|
9506
|
+
if (timer !== null) {
|
|
9507
|
+
clearTimeout(timer);
|
|
9508
|
+
timer = null;
|
|
9509
|
+
}
|
|
9406
9510
|
|
|
9407
9511
|
if (targetEl) {
|
|
9408
9512
|
const { offsetWidth: width, offsetHeight: height } = targetEl;
|
|
@@ -9436,7 +9540,7 @@
|
|
|
9436
9540
|
vue.onMounted(() => { init(); });
|
|
9437
9541
|
|
|
9438
9542
|
vue.onBeforeUnmount(() => {
|
|
9439
|
-
clearTimeout(timer);
|
|
9543
|
+
timer !== null && clearTimeout(timer);
|
|
9440
9544
|
|
|
9441
9545
|
if (observer !== void 0) {
|
|
9442
9546
|
if (observer.disconnect !== void 0) {
|
|
@@ -9456,7 +9560,10 @@
|
|
|
9456
9560
|
let curDocView;
|
|
9457
9561
|
|
|
9458
9562
|
function cleanup () {
|
|
9459
|
-
|
|
9563
|
+
if (timer !== null) {
|
|
9564
|
+
clearTimeout(timer);
|
|
9565
|
+
timer = null;
|
|
9566
|
+
}
|
|
9460
9567
|
|
|
9461
9568
|
if (curDocView !== void 0) {
|
|
9462
9569
|
// iOS is fuzzy, need to check it first
|
|
@@ -9609,7 +9716,7 @@
|
|
|
9609
9716
|
const tabDataListLen = vue.ref(0);
|
|
9610
9717
|
const hasFocus = vue.ref(false);
|
|
9611
9718
|
|
|
9612
|
-
let animateTimer, scrollTimer, unwatchRoute;
|
|
9719
|
+
let animateTimer = null, scrollTimer = null, unwatchRoute;
|
|
9613
9720
|
|
|
9614
9721
|
const tabProps = vue.computed(() => ({
|
|
9615
9722
|
activeClass: props.activeClass,
|
|
@@ -9745,7 +9852,10 @@
|
|
|
9745
9852
|
oldEl = oldTab.tabIndicatorRef.value,
|
|
9746
9853
|
newEl = newTab.tabIndicatorRef.value;
|
|
9747
9854
|
|
|
9748
|
-
|
|
9855
|
+
if (animateTimer !== null) {
|
|
9856
|
+
clearTimeout(animateTimer);
|
|
9857
|
+
animateTimer = null;
|
|
9858
|
+
}
|
|
9749
9859
|
|
|
9750
9860
|
oldEl.style.transition = 'none';
|
|
9751
9861
|
oldEl.style.transform = 'none';
|
|
@@ -9763,6 +9873,7 @@
|
|
|
9763
9873
|
// allow scope updates to kick in (QRouteTab needs more time)
|
|
9764
9874
|
registerAnimateTick(() => {
|
|
9765
9875
|
animateTimer = setTimeout(() => {
|
|
9876
|
+
animateTimer = null;
|
|
9766
9877
|
newEl.style.transition = 'transform .25s cubic-bezier(.4, 0, .2, 1)';
|
|
9767
9878
|
newEl.style.transform = 'none';
|
|
9768
9879
|
}, 70);
|
|
@@ -9815,7 +9926,7 @@
|
|
|
9815
9926
|
}
|
|
9816
9927
|
|
|
9817
9928
|
function animScrollTo (value) {
|
|
9818
|
-
|
|
9929
|
+
scrollTimer !== null && clearInterval(scrollTimer);
|
|
9819
9930
|
scrollTimer = setInterval(() => {
|
|
9820
9931
|
if (scrollTowards(value) === true) {
|
|
9821
9932
|
stopAnimScroll();
|
|
@@ -9832,7 +9943,10 @@
|
|
|
9832
9943
|
}
|
|
9833
9944
|
|
|
9834
9945
|
function stopAnimScroll () {
|
|
9835
|
-
|
|
9946
|
+
if (scrollTimer !== null) {
|
|
9947
|
+
clearInterval(scrollTimer);
|
|
9948
|
+
scrollTimer = null;
|
|
9949
|
+
}
|
|
9836
9950
|
}
|
|
9837
9951
|
|
|
9838
9952
|
function onKbdNavigate (keyCode, fromEl) {
|
|
@@ -10136,7 +10250,7 @@
|
|
|
10136
10250
|
vue.provide(tabsKey, $tabs);
|
|
10137
10251
|
|
|
10138
10252
|
function cleanup () {
|
|
10139
|
-
clearTimeout(animateTimer);
|
|
10253
|
+
animateTimer !== null && clearTimeout(animateTimer);
|
|
10140
10254
|
stopAnimScroll();
|
|
10141
10255
|
unwatchRoute !== void 0 && unwatchRoute();
|
|
10142
10256
|
}
|
|
@@ -14528,7 +14642,8 @@
|
|
|
14528
14642
|
vpPendingUpdate = false,
|
|
14529
14643
|
bodyLeft,
|
|
14530
14644
|
bodyTop,
|
|
14531
|
-
|
|
14645
|
+
href,
|
|
14646
|
+
closeTimer = null;
|
|
14532
14647
|
|
|
14533
14648
|
function onWheel (e) {
|
|
14534
14649
|
if (shouldPreventScroll(e)) {
|
|
@@ -14614,6 +14729,8 @@
|
|
|
14614
14729
|
bodyLeft = body.style.left;
|
|
14615
14730
|
bodyTop = body.style.top;
|
|
14616
14731
|
|
|
14732
|
+
href = window.location.href;
|
|
14733
|
+
|
|
14617
14734
|
body.style.left = `-${ scrollPositionX }px`;
|
|
14618
14735
|
body.style.top = `-${ scrollPositionY }px`;
|
|
14619
14736
|
|
|
@@ -14626,6 +14743,7 @@
|
|
|
14626
14743
|
|
|
14627
14744
|
body.classList.add('q-body--prevent-scroll');
|
|
14628
14745
|
document.qScrollPrevented = true;
|
|
14746
|
+
|
|
14629
14747
|
if (client.is.ios === true) {
|
|
14630
14748
|
if (hasViewport === true) {
|
|
14631
14749
|
window.scrollTo(0, 0);
|
|
@@ -14664,7 +14782,11 @@
|
|
|
14664
14782
|
body.style.left = bodyLeft;
|
|
14665
14783
|
body.style.top = bodyTop;
|
|
14666
14784
|
|
|
14667
|
-
|
|
14785
|
+
// scroll back only if route has not changed
|
|
14786
|
+
if (window.location.href === href) {
|
|
14787
|
+
window.scrollTo(scrollPositionX, scrollPositionY);
|
|
14788
|
+
}
|
|
14789
|
+
|
|
14668
14790
|
maxScrollTop = void 0;
|
|
14669
14791
|
}
|
|
14670
14792
|
}
|
|
@@ -14675,9 +14797,9 @@
|
|
|
14675
14797
|
if (state === true) {
|
|
14676
14798
|
registered++;
|
|
14677
14799
|
|
|
14678
|
-
if (closeTimer !==
|
|
14800
|
+
if (closeTimer !== null) {
|
|
14679
14801
|
clearTimeout(closeTimer);
|
|
14680
|
-
closeTimer =
|
|
14802
|
+
closeTimer = null;
|
|
14681
14803
|
return
|
|
14682
14804
|
}
|
|
14683
14805
|
|
|
@@ -14699,11 +14821,10 @@
|
|
|
14699
14821
|
action = 'remove';
|
|
14700
14822
|
|
|
14701
14823
|
if (client.is.ios === true && client.is.nativeMobile === true) {
|
|
14702
|
-
clearTimeout(closeTimer);
|
|
14703
|
-
|
|
14824
|
+
closeTimer !== null && clearTimeout(closeTimer);
|
|
14704
14825
|
closeTimer = setTimeout(() => {
|
|
14705
14826
|
apply$1(action);
|
|
14706
|
-
closeTimer =
|
|
14827
|
+
closeTimer = null;
|
|
14707
14828
|
}, 100);
|
|
14708
14829
|
return
|
|
14709
14830
|
}
|
|
@@ -14792,12 +14913,13 @@
|
|
|
14792
14913
|
|
|
14793
14914
|
setup (props, { slots, emit, attrs }) {
|
|
14794
14915
|
const vm = vue.getCurrentInstance();
|
|
14916
|
+
const { proxy: { $q } } = vm;
|
|
14795
14917
|
|
|
14796
14918
|
const innerRef = vue.ref(null);
|
|
14797
14919
|
const showing = vue.ref(false);
|
|
14798
14920
|
const animating = vue.ref(false);
|
|
14799
14921
|
|
|
14800
|
-
let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose;
|
|
14922
|
+
let shakeTimeout = null, refocusTarget = null, isMaximized, avoidAutoClose;
|
|
14801
14923
|
|
|
14802
14924
|
const hideOnRouteChange = vue.computed(() =>
|
|
14803
14925
|
props.persistent !== true
|
|
@@ -14816,7 +14938,7 @@
|
|
|
14816
14938
|
);
|
|
14817
14939
|
|
|
14818
14940
|
const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(
|
|
14819
|
-
vm, innerRef, renderPortalContent,
|
|
14941
|
+
vm, innerRef, renderPortalContent, 'dialog'
|
|
14820
14942
|
);
|
|
14821
14943
|
|
|
14822
14944
|
const { hide } = useModelToggle({
|
|
@@ -14979,8 +15101,9 @@
|
|
|
14979
15101
|
if (node !== null) {
|
|
14980
15102
|
node.classList.remove('q-animate--scale');
|
|
14981
15103
|
node.classList.add('q-animate--scale');
|
|
14982
|
-
clearTimeout(shakeTimeout);
|
|
15104
|
+
shakeTimeout !== null && clearTimeout(shakeTimeout);
|
|
14983
15105
|
shakeTimeout = setTimeout(() => {
|
|
15106
|
+
shakeTimeout = null;
|
|
14984
15107
|
if (innerRef.value !== null) {
|
|
14985
15108
|
node.classList.remove('q-animate--scale');
|
|
14986
15109
|
// some platforms (like desktop Chrome)
|
|
@@ -15004,7 +15127,10 @@
|
|
|
15004
15127
|
}
|
|
15005
15128
|
|
|
15006
15129
|
function cleanup (hiding) {
|
|
15007
|
-
|
|
15130
|
+
if (shakeTimeout !== null) {
|
|
15131
|
+
clearTimeout(shakeTimeout);
|
|
15132
|
+
shakeTimeout = null;
|
|
15133
|
+
}
|
|
15008
15134
|
|
|
15009
15135
|
if (hiding === true || showing.value === true) {
|
|
15010
15136
|
updateMaximized(false);
|
|
@@ -15079,7 +15205,7 @@
|
|
|
15079
15205
|
|
|
15080
15206
|
vue.onBeforeUnmount(cleanup);
|
|
15081
15207
|
|
|
15082
|
-
const backdropEvt =
|
|
15208
|
+
const backdropEvt = $q.platform.is.ios === true || $q.platform.is.safari ? 'onClick' : 'onFocusin';
|
|
15083
15209
|
|
|
15084
15210
|
function renderPortalContent () {
|
|
15085
15211
|
return vue.h('div', {
|
|
@@ -15195,7 +15321,7 @@
|
|
|
15195
15321
|
return emptyRenderFn
|
|
15196
15322
|
}
|
|
15197
15323
|
|
|
15198
|
-
let lastDesktopState, timerMini, layoutTotalWidthWatcher;
|
|
15324
|
+
let lastDesktopState, timerMini = null, layoutTotalWidthWatcher;
|
|
15199
15325
|
|
|
15200
15326
|
const belowBreakpoint = vue.ref(
|
|
15201
15327
|
props.behavior === 'mobile'
|
|
@@ -15570,7 +15696,7 @@
|
|
|
15570
15696
|
}
|
|
15571
15697
|
|
|
15572
15698
|
function animateMini () {
|
|
15573
|
-
clearTimeout(timerMini);
|
|
15699
|
+
timerMini !== null && clearTimeout(timerMini);
|
|
15574
15700
|
|
|
15575
15701
|
if (vm.proxy && vm.proxy.$el) {
|
|
15576
15702
|
// need to speed it up and apply it immediately,
|
|
@@ -15580,6 +15706,7 @@
|
|
|
15580
15706
|
|
|
15581
15707
|
flagMiniAnimate.value = true;
|
|
15582
15708
|
timerMini = setTimeout(() => {
|
|
15709
|
+
timerMini = null;
|
|
15583
15710
|
flagMiniAnimate.value = false;
|
|
15584
15711
|
if (vm && vm.proxy && vm.proxy.$el) {
|
|
15585
15712
|
vm.proxy.$el.classList.remove('q-drawer--mini-animate');
|
|
@@ -15732,7 +15859,11 @@
|
|
|
15732
15859
|
|
|
15733
15860
|
vue.onBeforeUnmount(() => {
|
|
15734
15861
|
layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher();
|
|
15735
|
-
|
|
15862
|
+
|
|
15863
|
+
if (timerMini !== null) {
|
|
15864
|
+
clearTimeout(timerMini);
|
|
15865
|
+
timerMini = null;
|
|
15866
|
+
}
|
|
15736
15867
|
|
|
15737
15868
|
showing.value === true && cleanup();
|
|
15738
15869
|
|
|
@@ -16267,7 +16398,7 @@
|
|
|
16267
16398
|
|
|
16268
16399
|
Object.assign(anchorEvents, { delayShow, delayHide });
|
|
16269
16400
|
|
|
16270
|
-
const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent);
|
|
16401
|
+
const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, 'tooltip');
|
|
16271
16402
|
|
|
16272
16403
|
// if we're on mobile, let's improve the experience
|
|
16273
16404
|
// by closing it when user taps outside of it
|
|
@@ -17602,15 +17733,23 @@
|
|
|
17602
17733
|
|
|
17603
17734
|
setup (props, { slots, emit }) {
|
|
17604
17735
|
let animating = false, doneFn, element;
|
|
17605
|
-
let timer, timerFallback, animListener, lastEvent;
|
|
17736
|
+
let timer = null, timerFallback = null, animListener, lastEvent;
|
|
17606
17737
|
|
|
17607
17738
|
function cleanup () {
|
|
17608
17739
|
doneFn && doneFn();
|
|
17609
17740
|
doneFn = null;
|
|
17610
17741
|
animating = false;
|
|
17611
17742
|
|
|
17612
|
-
|
|
17613
|
-
|
|
17743
|
+
if (timer !== null) {
|
|
17744
|
+
clearTimeout(timer);
|
|
17745
|
+
timer = null;
|
|
17746
|
+
}
|
|
17747
|
+
|
|
17748
|
+
if (timerFallback !== null) {
|
|
17749
|
+
clearTimeout(timerFallback);
|
|
17750
|
+
timerFallback = null;
|
|
17751
|
+
}
|
|
17752
|
+
|
|
17614
17753
|
element !== void 0 && element.removeEventListener('transitionend', animListener);
|
|
17615
17754
|
animListener = null;
|
|
17616
17755
|
}
|
|
@@ -17649,8 +17788,11 @@
|
|
|
17649
17788
|
begin(el, pos, done);
|
|
17650
17789
|
|
|
17651
17790
|
timer = setTimeout(() => {
|
|
17791
|
+
timer = null;
|
|
17652
17792
|
el.style.height = `${ el.scrollHeight }px`;
|
|
17653
17793
|
animListener = evt => {
|
|
17794
|
+
timerFallback = null;
|
|
17795
|
+
|
|
17654
17796
|
if (Object(evt) !== evt || evt.target === el) {
|
|
17655
17797
|
end(el, 'show');
|
|
17656
17798
|
}
|
|
@@ -17675,8 +17817,11 @@
|
|
|
17675
17817
|
begin(el, pos, done);
|
|
17676
17818
|
|
|
17677
17819
|
timer = setTimeout(() => {
|
|
17820
|
+
timer = null;
|
|
17678
17821
|
el.style.height = 0;
|
|
17679
17822
|
animListener = evt => {
|
|
17823
|
+
timerFallback = null;
|
|
17824
|
+
|
|
17680
17825
|
if (Object(evt) !== evt || evt.target === el) {
|
|
17681
17826
|
end(el, 'hide');
|
|
17682
17827
|
}
|
|
@@ -18812,7 +18957,7 @@
|
|
|
18812
18957
|
const { props, emit, slots, attrs, proxy } = vue.getCurrentInstance();
|
|
18813
18958
|
const { $q } = proxy;
|
|
18814
18959
|
|
|
18815
|
-
let focusoutTimer;
|
|
18960
|
+
let focusoutTimer = null;
|
|
18816
18961
|
|
|
18817
18962
|
if (state.hasValue === void 0) {
|
|
18818
18963
|
state.hasValue = vue.computed(() => fieldValueIsFilled(props.modelValue));
|
|
@@ -18978,7 +19123,11 @@
|
|
|
18978
19123
|
}
|
|
18979
19124
|
|
|
18980
19125
|
function onControlFocusin (e) {
|
|
18981
|
-
|
|
19126
|
+
if (focusoutTimer !== null) {
|
|
19127
|
+
clearTimeout(focusoutTimer);
|
|
19128
|
+
focusoutTimer = null;
|
|
19129
|
+
}
|
|
19130
|
+
|
|
18982
19131
|
if (state.editable.value === true && state.focused.value === false) {
|
|
18983
19132
|
state.focused.value = true;
|
|
18984
19133
|
emit('focus', e);
|
|
@@ -18986,8 +19135,10 @@
|
|
|
18986
19135
|
}
|
|
18987
19136
|
|
|
18988
19137
|
function onControlFocusout (e, then) {
|
|
18989
|
-
clearTimeout(focusoutTimer);
|
|
19138
|
+
focusoutTimer !== null && clearTimeout(focusoutTimer);
|
|
18990
19139
|
focusoutTimer = setTimeout(() => {
|
|
19140
|
+
focusoutTimer = null;
|
|
19141
|
+
|
|
18991
19142
|
if (
|
|
18992
19143
|
document.hasFocus() === true && (
|
|
18993
19144
|
state.hasPopupOpen === true
|
|
@@ -19237,7 +19388,7 @@
|
|
|
19237
19388
|
});
|
|
19238
19389
|
|
|
19239
19390
|
vue.onBeforeUnmount(() => {
|
|
19240
|
-
clearTimeout(focusoutTimer);
|
|
19391
|
+
focusoutTimer !== null && clearTimeout(focusoutTimer);
|
|
19241
19392
|
});
|
|
19242
19393
|
|
|
19243
19394
|
// expose public methods
|
|
@@ -20540,7 +20691,7 @@
|
|
|
20540
20691
|
const naturalRatio = vue.ref(props.initialRatio);
|
|
20541
20692
|
const ratioStyle = useRatio(props, naturalRatio);
|
|
20542
20693
|
|
|
20543
|
-
let loadTimer;
|
|
20694
|
+
let loadTimer = null, isDestroyed = false;
|
|
20544
20695
|
|
|
20545
20696
|
const images = [
|
|
20546
20697
|
vue.ref(null),
|
|
@@ -20591,7 +20742,11 @@
|
|
|
20591
20742
|
}
|
|
20592
20743
|
|
|
20593
20744
|
function addImage (imgProps) {
|
|
20594
|
-
|
|
20745
|
+
if (loadTimer !== null) {
|
|
20746
|
+
clearTimeout(loadTimer);
|
|
20747
|
+
loadTimer = null;
|
|
20748
|
+
}
|
|
20749
|
+
|
|
20595
20750
|
hasError.value = false;
|
|
20596
20751
|
|
|
20597
20752
|
if (imgProps === null) {
|
|
@@ -20606,10 +20761,12 @@
|
|
|
20606
20761
|
}
|
|
20607
20762
|
|
|
20608
20763
|
function onLoad ({ target }) {
|
|
20609
|
-
|
|
20610
|
-
if (loadTimer === null) { return }
|
|
20764
|
+
if (isDestroyed === true) { return }
|
|
20611
20765
|
|
|
20612
|
-
|
|
20766
|
+
if (loadTimer !== null) {
|
|
20767
|
+
clearTimeout(loadTimer);
|
|
20768
|
+
loadTimer = null;
|
|
20769
|
+
}
|
|
20613
20770
|
|
|
20614
20771
|
naturalRatio.value = target.naturalHeight === 0
|
|
20615
20772
|
? 0.5
|
|
@@ -20620,21 +20777,21 @@
|
|
|
20620
20777
|
|
|
20621
20778
|
function waitForCompleteness (target, count) {
|
|
20622
20779
|
// protect against running forever
|
|
20623
|
-
if (
|
|
20780
|
+
if (isDestroyed === true || count === 1000) { return }
|
|
20624
20781
|
|
|
20625
20782
|
if (target.complete === true) {
|
|
20626
20783
|
onReady(target);
|
|
20627
20784
|
}
|
|
20628
20785
|
else {
|
|
20629
20786
|
loadTimer = setTimeout(() => {
|
|
20787
|
+
loadTimer = null;
|
|
20630
20788
|
waitForCompleteness(target, count + 1);
|
|
20631
20789
|
}, 50);
|
|
20632
20790
|
}
|
|
20633
20791
|
}
|
|
20634
20792
|
|
|
20635
20793
|
function onReady (img) {
|
|
20636
|
-
|
|
20637
|
-
if (loadTimer === null) { return }
|
|
20794
|
+
if (isDestroyed === true) { return }
|
|
20638
20795
|
|
|
20639
20796
|
position.value = position.value ^ 1;
|
|
20640
20797
|
images[ position.value ].value = null;
|
|
@@ -20644,7 +20801,11 @@
|
|
|
20644
20801
|
}
|
|
20645
20802
|
|
|
20646
20803
|
function onError (err) {
|
|
20647
|
-
|
|
20804
|
+
if (loadTimer !== null) {
|
|
20805
|
+
clearTimeout(loadTimer);
|
|
20806
|
+
loadTimer = null;
|
|
20807
|
+
}
|
|
20808
|
+
|
|
20648
20809
|
isLoading.value = false;
|
|
20649
20810
|
hasError.value = true;
|
|
20650
20811
|
images[ position.value ].value = null;
|
|
@@ -20719,8 +20880,12 @@
|
|
|
20719
20880
|
}
|
|
20720
20881
|
|
|
20721
20882
|
vue.onBeforeUnmount(() => {
|
|
20722
|
-
|
|
20723
|
-
|
|
20883
|
+
isDestroyed = true;
|
|
20884
|
+
|
|
20885
|
+
if (loadTimer !== null) {
|
|
20886
|
+
clearTimeout(loadTimer);
|
|
20887
|
+
loadTimer = null;
|
|
20888
|
+
}
|
|
20724
20889
|
});
|
|
20725
20890
|
}
|
|
20726
20891
|
|
|
@@ -20789,6 +20954,7 @@
|
|
|
20789
20954
|
const isFetching = vue.ref(false);
|
|
20790
20955
|
const isWorking = vue.ref(true);
|
|
20791
20956
|
const rootRef = vue.ref(null);
|
|
20957
|
+
const loadingRef = vue.ref(null);
|
|
20792
20958
|
|
|
20793
20959
|
let index = props.initialIndex || 0;
|
|
20794
20960
|
let localScrollTarget, poll;
|
|
@@ -20920,12 +21086,32 @@
|
|
|
20920
21086
|
}
|
|
20921
21087
|
}
|
|
20922
21088
|
|
|
21089
|
+
function updateSvgAnimations (isRetry) {
|
|
21090
|
+
if (renderLoadingSlot.value === true) {
|
|
21091
|
+
if (loadingRef.value === null) {
|
|
21092
|
+
isRetry !== true && vue.nextTick(() => { updateSvgAnimations(true); });
|
|
21093
|
+
return
|
|
21094
|
+
}
|
|
21095
|
+
|
|
21096
|
+
// we need to pause svg animations (if any) when hiding
|
|
21097
|
+
// otherwise the browser will keep on recalculating the style
|
|
21098
|
+
const action = `${ isFetching.value === true ? 'un' : '' }pauseAnimations`;
|
|
21099
|
+
Array.from(loadingRef.value.getElementsByTagName('svg')).forEach(el => {
|
|
21100
|
+
el[ action ]();
|
|
21101
|
+
});
|
|
21102
|
+
}
|
|
21103
|
+
}
|
|
21104
|
+
|
|
21105
|
+
const renderLoadingSlot = vue.computed(() => props.disable !== true && isWorking.value === true);
|
|
21106
|
+
|
|
21107
|
+
vue.watch([ isFetching, renderLoadingSlot ], () => { updateSvgAnimations(); });
|
|
21108
|
+
|
|
20923
21109
|
vue.watch(() => props.disable, val => {
|
|
20924
21110
|
if (val === true) { stop(); }
|
|
20925
21111
|
else { resume(); }
|
|
20926
21112
|
});
|
|
20927
21113
|
|
|
20928
|
-
vue.watch(() => props.reverse,
|
|
21114
|
+
vue.watch(() => props.reverse, () => {
|
|
20929
21115
|
if (isFetching.value === false && isWorking.value === true) {
|
|
20930
21116
|
immediatePoll();
|
|
20931
21117
|
}
|
|
@@ -20956,8 +21142,9 @@
|
|
|
20956
21142
|
|
|
20957
21143
|
vue.onMounted(() => {
|
|
20958
21144
|
setDebounce(props.debounce);
|
|
20959
|
-
|
|
20960
21145
|
updateScrollTarget();
|
|
21146
|
+
|
|
21147
|
+
isFetching.value === false && updateSvgAnimations();
|
|
20961
21148
|
});
|
|
20962
21149
|
|
|
20963
21150
|
// expose public methods
|
|
@@ -20970,9 +21157,9 @@
|
|
|
20970
21157
|
return () => {
|
|
20971
21158
|
const child = hUniqueSlot(slots.default, []);
|
|
20972
21159
|
|
|
20973
|
-
if (
|
|
21160
|
+
if (renderLoadingSlot.value === true) {
|
|
20974
21161
|
child[ props.reverse === false ? 'push' : 'unshift' ](
|
|
20975
|
-
vue.h('div', { class: classes.value }, hSlot(slots.loading))
|
|
21162
|
+
vue.h('div', { ref: loadingRef, class: classes.value }, hSlot(slots.loading))
|
|
20976
21163
|
);
|
|
20977
21164
|
}
|
|
20978
21165
|
|
|
@@ -21664,7 +21851,7 @@
|
|
|
21664
21851
|
const { $q } = proxy;
|
|
21665
21852
|
|
|
21666
21853
|
const temp = {};
|
|
21667
|
-
let emitCachedValue = NaN, typedNumber, stopValueWatcher, emitTimer, emitValueFn;
|
|
21854
|
+
let emitCachedValue = NaN, typedNumber, stopValueWatcher, emitTimer = null, emitValueFn;
|
|
21668
21855
|
|
|
21669
21856
|
const inputRef = vue.ref(null);
|
|
21670
21857
|
const nameProp = useFormInputNameAttr(props);
|
|
@@ -21876,6 +22063,8 @@
|
|
|
21876
22063
|
|
|
21877
22064
|
function emitValue (val, stopWatcher) {
|
|
21878
22065
|
emitValueFn = () => {
|
|
22066
|
+
emitTimer = null;
|
|
22067
|
+
|
|
21879
22068
|
if (
|
|
21880
22069
|
props.type !== 'number'
|
|
21881
22070
|
&& temp.hasOwnProperty('value') === true
|
|
@@ -21903,7 +22092,7 @@
|
|
|
21903
22092
|
}
|
|
21904
22093
|
|
|
21905
22094
|
if (props.debounce !== void 0) {
|
|
21906
|
-
clearTimeout(emitTimer);
|
|
22095
|
+
emitTimer !== null && clearTimeout(emitTimer);
|
|
21907
22096
|
temp.value = val;
|
|
21908
22097
|
emitTimer = setTimeout(emitValueFn, props.debounce);
|
|
21909
22098
|
}
|
|
@@ -21937,7 +22126,11 @@
|
|
|
21937
22126
|
function onChange (e) {
|
|
21938
22127
|
onComposition(e);
|
|
21939
22128
|
|
|
21940
|
-
|
|
22129
|
+
if (emitTimer !== null) {
|
|
22130
|
+
clearTimeout(emitTimer);
|
|
22131
|
+
emitTimer = null;
|
|
22132
|
+
}
|
|
22133
|
+
|
|
21941
22134
|
emitValueFn !== void 0 && emitValueFn();
|
|
21942
22135
|
|
|
21943
22136
|
emit('change', e.target.value);
|
|
@@ -21946,7 +22139,11 @@
|
|
|
21946
22139
|
function onFinishEditing (e) {
|
|
21947
22140
|
e !== void 0 && stop(e);
|
|
21948
22141
|
|
|
21949
|
-
|
|
22142
|
+
if (emitTimer !== null) {
|
|
22143
|
+
clearTimeout(emitTimer);
|
|
22144
|
+
emitTimer = null;
|
|
22145
|
+
}
|
|
22146
|
+
|
|
21950
22147
|
emitValueFn !== void 0 && emitValueFn();
|
|
21951
22148
|
|
|
21952
22149
|
typedNumber = false;
|
|
@@ -22790,7 +22987,7 @@
|
|
|
22790
22987
|
}
|
|
22791
22988
|
}
|
|
22792
22989
|
|
|
22793
|
-
let
|
|
22990
|
+
let animateTimer = null;
|
|
22794
22991
|
|
|
22795
22992
|
const $layout = {
|
|
22796
22993
|
instances: {},
|
|
@@ -22821,16 +23018,16 @@
|
|
|
22821
23018
|
scroll,
|
|
22822
23019
|
|
|
22823
23020
|
animate () {
|
|
22824
|
-
if (
|
|
22825
|
-
clearTimeout(
|
|
23021
|
+
if (animateTimer !== null) {
|
|
23022
|
+
clearTimeout(animateTimer);
|
|
22826
23023
|
}
|
|
22827
23024
|
else {
|
|
22828
23025
|
document.body.classList.add('q-body--layout-animate');
|
|
22829
23026
|
}
|
|
22830
23027
|
|
|
22831
|
-
|
|
23028
|
+
animateTimer = setTimeout(() => {
|
|
23029
|
+
animateTimer = null;
|
|
22832
23030
|
document.body.classList.remove('q-body--layout-animate');
|
|
22833
|
-
timer = void 0;
|
|
22834
23031
|
}, 155);
|
|
22835
23032
|
},
|
|
22836
23033
|
|
|
@@ -24898,6 +25095,8 @@
|
|
|
24898
25095
|
});
|
|
24899
25096
|
}
|
|
24900
25097
|
|
|
25098
|
+
let $el, localScrollTarget, timer = null;
|
|
25099
|
+
|
|
24901
25100
|
function animateTo ({ pos, ratio }, done) {
|
|
24902
25101
|
animating.value = true;
|
|
24903
25102
|
pullPosition.value = pos;
|
|
@@ -24906,15 +25105,14 @@
|
|
|
24906
25105
|
pullRatio.value = ratio;
|
|
24907
25106
|
}
|
|
24908
25107
|
|
|
24909
|
-
clearTimeout(timer);
|
|
25108
|
+
timer !== null && clearTimeout(timer);
|
|
24910
25109
|
timer = setTimeout(() => {
|
|
25110
|
+
timer = null;
|
|
24911
25111
|
animating.value = false;
|
|
24912
25112
|
done && done();
|
|
24913
25113
|
}, 300);
|
|
24914
25114
|
}
|
|
24915
25115
|
|
|
24916
|
-
let $el, localScrollTarget, timer;
|
|
24917
|
-
|
|
24918
25116
|
function updateScrollTarget () {
|
|
24919
25117
|
localScrollTarget = getScrollTarget($el, props.scrollTarget);
|
|
24920
25118
|
}
|
|
@@ -24927,7 +25125,7 @@
|
|
|
24927
25125
|
});
|
|
24928
25126
|
|
|
24929
25127
|
vue.onBeforeUnmount(() => {
|
|
24930
|
-
clearTimeout(timer);
|
|
25128
|
+
timer !== null && clearTimeout(timer);
|
|
24931
25129
|
});
|
|
24932
25130
|
|
|
24933
25131
|
// expose public methods
|
|
@@ -25559,13 +25757,13 @@
|
|
|
25559
25757
|
case 37: // LEFT ARROW
|
|
25560
25758
|
case 40: // DOWN ARROW
|
|
25561
25759
|
if (iconRefs[ `rt${ i - 1 }` ]) {
|
|
25562
|
-
iconRefs[ `rt${ i - 1 }` ]
|
|
25760
|
+
iconRefs[ `rt${ i - 1 }` ].focus();
|
|
25563
25761
|
}
|
|
25564
25762
|
return stopAndPrevent(e)
|
|
25565
25763
|
case 39: // RIGHT ARROW
|
|
25566
25764
|
case 38: // UP ARROW
|
|
25567
25765
|
if (iconRefs[ `rt${ i + 1 }` ]) {
|
|
25568
|
-
iconRefs[ `rt${ i + 1 }` ]
|
|
25766
|
+
iconRefs[ `rt${ i + 1 }` ].focus();
|
|
25569
25767
|
}
|
|
25570
25768
|
return stopAndPrevent(e)
|
|
25571
25769
|
}
|
|
@@ -25588,7 +25786,7 @@
|
|
|
25588
25786
|
child.push(
|
|
25589
25787
|
vue.h('div', {
|
|
25590
25788
|
key: i,
|
|
25591
|
-
ref:
|
|
25789
|
+
ref: el => { iconRefs[ `rt${ i }` ] = el; },
|
|
25592
25790
|
class: 'q-rating__icon-container flex flex-center',
|
|
25593
25791
|
...attrs,
|
|
25594
25792
|
onClick () { set(i); },
|
|
@@ -25716,7 +25914,7 @@
|
|
|
25716
25914
|
|
|
25717
25915
|
const isDark = useDark(props, proxy.$q);
|
|
25718
25916
|
|
|
25719
|
-
let timer, panRefPos;
|
|
25917
|
+
let timer = null, panRefPos;
|
|
25720
25918
|
|
|
25721
25919
|
const targetRef = vue.ref(null);
|
|
25722
25920
|
|
|
@@ -25965,14 +26163,14 @@
|
|
|
25965
26163
|
}
|
|
25966
26164
|
|
|
25967
26165
|
function startTimer () {
|
|
25968
|
-
|
|
25969
|
-
|
|
25970
|
-
|
|
25971
|
-
|
|
25972
|
-
|
|
25973
|
-
|
|
26166
|
+
tempShowing.value = true;
|
|
26167
|
+
|
|
26168
|
+
timer !== null && clearTimeout(timer);
|
|
26169
|
+
timer = setTimeout(() => {
|
|
26170
|
+
timer = null;
|
|
26171
|
+
tempShowing.value = false;
|
|
26172
|
+
}, props.delay);
|
|
25974
26173
|
|
|
25975
|
-
timer = setTimeout(() => { tempShowing.value = false; }, props.delay);
|
|
25976
26174
|
props.onScroll !== void 0 && emitScroll();
|
|
25977
26175
|
}
|
|
25978
26176
|
|
|
@@ -26133,12 +26331,16 @@
|
|
|
26133
26331
|
return
|
|
26134
26332
|
}
|
|
26135
26333
|
|
|
26136
|
-
|
|
26334
|
+
if (contentEl._qOverflowAnimationFrame !== void 0) {
|
|
26335
|
+
cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
|
|
26336
|
+
}
|
|
26337
|
+
|
|
26137
26338
|
contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
|
|
26138
26339
|
if (contentEl === null) {
|
|
26139
26340
|
return
|
|
26140
26341
|
}
|
|
26141
26342
|
|
|
26343
|
+
contentEl._qOverflowAnimationFrame = void 0;
|
|
26142
26344
|
const children = contentEl.children || [];
|
|
26143
26345
|
|
|
26144
26346
|
filterProto
|
|
@@ -26974,8 +27176,8 @@
|
|
|
26974
27176
|
const dialogFieldFocused = vue.ref(false);
|
|
26975
27177
|
const innerLoadingIndicator = vue.ref(false);
|
|
26976
27178
|
|
|
26977
|
-
let inputTimer, innerValueCache,
|
|
26978
|
-
hasDialog, userInputValue, filterId, defaultInputValue,
|
|
27179
|
+
let inputTimer = null, innerValueCache,
|
|
27180
|
+
hasDialog, userInputValue, filterId = null, defaultInputValue,
|
|
26979
27181
|
transitionShowComputed, searchBuffer, searchBufferExp;
|
|
26980
27182
|
|
|
26981
27183
|
const inputRef = vue.ref(null);
|
|
@@ -27481,7 +27683,12 @@
|
|
|
27481
27683
|
}
|
|
27482
27684
|
|
|
27483
27685
|
e.target.value = '';
|
|
27484
|
-
|
|
27686
|
+
|
|
27687
|
+
if (inputTimer !== null) {
|
|
27688
|
+
clearTimeout(inputTimer);
|
|
27689
|
+
inputTimer = null;
|
|
27690
|
+
}
|
|
27691
|
+
|
|
27485
27692
|
resetInputValue();
|
|
27486
27693
|
|
|
27487
27694
|
if (typeof value === 'string' && value.length > 0) {
|
|
@@ -27846,7 +28053,10 @@
|
|
|
27846
28053
|
}
|
|
27847
28054
|
|
|
27848
28055
|
function onInput (e) {
|
|
27849
|
-
|
|
28056
|
+
if (inputTimer !== null) {
|
|
28057
|
+
clearTimeout(inputTimer);
|
|
28058
|
+
inputTimer = null;
|
|
28059
|
+
}
|
|
27850
28060
|
|
|
27851
28061
|
if (e && e.target && e.target.qComposing === true) {
|
|
27852
28062
|
return
|
|
@@ -27867,6 +28077,7 @@
|
|
|
27867
28077
|
|
|
27868
28078
|
if (props.onFilter !== void 0) {
|
|
27869
28079
|
inputTimer = setTimeout(() => {
|
|
28080
|
+
inputTimer = null;
|
|
27870
28081
|
filter(inputValue.value);
|
|
27871
28082
|
}, props.inputDebounce);
|
|
27872
28083
|
}
|
|
@@ -27920,7 +28131,7 @@
|
|
|
27920
28131
|
menu.value === true && (menu.value = false);
|
|
27921
28132
|
}, 10);
|
|
27922
28133
|
|
|
27923
|
-
clearTimeout(filterId);
|
|
28134
|
+
filterId !== null && clearTimeout(filterId);
|
|
27924
28135
|
filterId = localFilterId;
|
|
27925
28136
|
|
|
27926
28137
|
emit(
|
|
@@ -28112,8 +28323,10 @@
|
|
|
28112
28323
|
}
|
|
28113
28324
|
|
|
28114
28325
|
if (state.focused.value === false) {
|
|
28115
|
-
|
|
28116
|
-
|
|
28326
|
+
if (filterId !== null) {
|
|
28327
|
+
clearTimeout(filterId);
|
|
28328
|
+
filterId = null;
|
|
28329
|
+
}
|
|
28117
28330
|
|
|
28118
28331
|
if (state.innerLoading.value === true) {
|
|
28119
28332
|
emit('filterAbort');
|
|
@@ -28234,7 +28447,7 @@
|
|
|
28234
28447
|
updatePreState();
|
|
28235
28448
|
|
|
28236
28449
|
vue.onBeforeUnmount(() => {
|
|
28237
|
-
clearTimeout(inputTimer);
|
|
28450
|
+
inputTimer !== null && clearTimeout(inputTimer);
|
|
28238
28451
|
});
|
|
28239
28452
|
|
|
28240
28453
|
// expose public methods
|
|
@@ -28494,7 +28707,7 @@
|
|
|
28494
28707
|
|
|
28495
28708
|
const contentRef = vue.ref(null);
|
|
28496
28709
|
|
|
28497
|
-
let timer, pan = {}, dirRefs = {}, dirContentRefs = {};
|
|
28710
|
+
let timer = null, pan = {}, dirRefs = {}, dirContentRefs = {};
|
|
28498
28711
|
|
|
28499
28712
|
const langDir = vue.computed(() => (
|
|
28500
28713
|
$q.lang.rtl === true
|
|
@@ -28545,7 +28758,9 @@
|
|
|
28545
28758
|
if (pan.scale === 1) {
|
|
28546
28759
|
node.style.transform = `translate${ pan.axis }(${ pan.dir * 100 }%)`;
|
|
28547
28760
|
|
|
28761
|
+
timer !== null && clearTimeout(timer);
|
|
28548
28762
|
timer = setTimeout(() => {
|
|
28763
|
+
timer = null;
|
|
28549
28764
|
emit(pan.showing, { reset });
|
|
28550
28765
|
emit('action', { side: pan.showing, reset });
|
|
28551
28766
|
}, 230);
|
|
@@ -28616,7 +28831,7 @@
|
|
|
28616
28831
|
});
|
|
28617
28832
|
|
|
28618
28833
|
vue.onBeforeUnmount(() => {
|
|
28619
|
-
clearTimeout(timer);
|
|
28834
|
+
timer !== null && clearTimeout(timer);
|
|
28620
28835
|
});
|
|
28621
28836
|
|
|
28622
28837
|
// expose public methods
|
|
@@ -36978,12 +37193,11 @@
|
|
|
36978
37193
|
: (
|
|
36979
37194
|
options.waitFor === 'transitionend'
|
|
36980
37195
|
? new Promise(resolve => {
|
|
36981
|
-
const
|
|
36982
|
-
|
|
36983
|
-
|
|
36984
|
-
|
|
36985
|
-
|
|
36986
|
-
clearTimeout(timer);
|
|
37196
|
+
const endFn = () => {
|
|
37197
|
+
if (timer !== null) {
|
|
37198
|
+
clearTimeout(timer);
|
|
37199
|
+
timer = null;
|
|
37200
|
+
}
|
|
36987
37201
|
|
|
36988
37202
|
if (elTo) {
|
|
36989
37203
|
elTo.removeEventListener('transitionend', endFn);
|
|
@@ -36993,6 +37207,8 @@
|
|
|
36993
37207
|
resolve();
|
|
36994
37208
|
};
|
|
36995
37209
|
|
|
37210
|
+
let timer = setTimeout(endFn, 400);
|
|
37211
|
+
|
|
36996
37212
|
elTo.addEventListener('transitionend', endFn);
|
|
36997
37213
|
elTo.addEventListener('transitioncancel', endFn);
|
|
36998
37214
|
})
|
|
@@ -37461,6 +37677,7 @@
|
|
|
37461
37677
|
: ctx.touchSensitivity;
|
|
37462
37678
|
|
|
37463
37679
|
ctx.timer = setTimeout(() => {
|
|
37680
|
+
ctx.timer = void 0;
|
|
37464
37681
|
clearSelection();
|
|
37465
37682
|
ctx.triggered = true;
|
|
37466
37683
|
|
|
@@ -37477,10 +37694,13 @@
|
|
|
37477
37694
|
move (evt) {
|
|
37478
37695
|
const { top, left } = position(evt);
|
|
37479
37696
|
if (
|
|
37480
|
-
|
|
37481
|
-
|
|
37697
|
+
ctx.timer !== void 0 && (
|
|
37698
|
+
Math.abs(left - ctx.origin.left) >= ctx.sensitivity
|
|
37699
|
+
|| Math.abs(top - ctx.origin.top) >= ctx.sensitivity
|
|
37700
|
+
)
|
|
37482
37701
|
) {
|
|
37483
37702
|
clearTimeout(ctx.timer);
|
|
37703
|
+
ctx.timer = void 0;
|
|
37484
37704
|
}
|
|
37485
37705
|
},
|
|
37486
37706
|
|
|
@@ -37493,8 +37713,9 @@
|
|
|
37493
37713
|
if (ctx.triggered === true) {
|
|
37494
37714
|
evt !== void 0 && stopAndPrevent(evt);
|
|
37495
37715
|
}
|
|
37496
|
-
else {
|
|
37716
|
+
else if (ctx.timer !== void 0) {
|
|
37497
37717
|
clearTimeout(ctx.timer);
|
|
37718
|
+
ctx.timer = void 0;
|
|
37498
37719
|
}
|
|
37499
37720
|
}
|
|
37500
37721
|
};
|
|
@@ -37546,7 +37767,7 @@
|
|
|
37546
37767
|
cleanEvt(ctx, 'main');
|
|
37547
37768
|
cleanEvt(ctx, 'temp');
|
|
37548
37769
|
|
|
37549
|
-
clearTimeout(ctx.timer);
|
|
37770
|
+
ctx.timer !== void 0 && clearTimeout(ctx.timer);
|
|
37550
37771
|
ctx.styleCleanup !== void 0 && ctx.styleCleanup();
|
|
37551
37772
|
|
|
37552
37773
|
delete el.__qtouchhold;
|
|
@@ -37685,6 +37906,8 @@
|
|
|
37685
37906
|
};
|
|
37686
37907
|
|
|
37687
37908
|
const fn = () => {
|
|
37909
|
+
ctx.timer = void 0;
|
|
37910
|
+
|
|
37688
37911
|
if (ctx.event === void 0) {
|
|
37689
37912
|
return
|
|
37690
37913
|
}
|
|
@@ -37728,8 +37951,9 @@
|
|
|
37728
37951
|
},
|
|
37729
37952
|
|
|
37730
37953
|
move (evt) {
|
|
37731
|
-
if (ctx.event !== void 0 && shouldEnd(evt, ctx.origin) === true) {
|
|
37954
|
+
if (ctx.event !== void 0 && ctx.timer !== void 0 && shouldEnd(evt, ctx.origin) === true) {
|
|
37732
37955
|
clearTimeout(ctx.timer);
|
|
37956
|
+
ctx.timer = void 0;
|
|
37733
37957
|
}
|
|
37734
37958
|
},
|
|
37735
37959
|
|
|
@@ -37742,7 +37966,11 @@
|
|
|
37742
37966
|
evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt);
|
|
37743
37967
|
|
|
37744
37968
|
cleanEvt(ctx, 'temp');
|
|
37745
|
-
|
|
37969
|
+
|
|
37970
|
+
if (ctx.timer !== void 0) {
|
|
37971
|
+
clearTimeout(ctx.timer);
|
|
37972
|
+
ctx.timer = void 0;
|
|
37973
|
+
}
|
|
37746
37974
|
|
|
37747
37975
|
ctx.event = void 0;
|
|
37748
37976
|
}
|
|
@@ -37791,7 +38019,7 @@
|
|
|
37791
38019
|
const ctx = el.__qtouchrepeat;
|
|
37792
38020
|
|
|
37793
38021
|
if (ctx !== void 0) {
|
|
37794
|
-
clearTimeout(ctx.timer);
|
|
38022
|
+
ctx.timer !== void 0 && clearTimeout(ctx.timer);
|
|
37795
38023
|
|
|
37796
38024
|
cleanEvt(ctx, 'main');
|
|
37797
38025
|
cleanEvt(ctx, 'temp');
|
|
@@ -38255,7 +38483,7 @@
|
|
|
38255
38483
|
|
|
38256
38484
|
let vm, emittedOK = false;
|
|
38257
38485
|
const dialogRef = vue.ref(null);
|
|
38258
|
-
const el = createGlobalNode();
|
|
38486
|
+
const el = createGlobalNode(false, 'dialog');
|
|
38259
38487
|
|
|
38260
38488
|
const applyState = cmd => {
|
|
38261
38489
|
if (dialogRef.value !== null && dialogRef.value[ cmd ] !== void 0) {
|
|
@@ -38955,7 +39183,7 @@
|
|
|
38955
39183
|
app,
|
|
38956
39184
|
vm,
|
|
38957
39185
|
uid$1 = 0,
|
|
38958
|
-
timeout,
|
|
39186
|
+
timeout = null,
|
|
38959
39187
|
props = {},
|
|
38960
39188
|
activeGroups = {};
|
|
38961
39189
|
|
|
@@ -39004,14 +39232,14 @@
|
|
|
39004
39232
|
}
|
|
39005
39233
|
else {
|
|
39006
39234
|
props.uid = ++uid$1;
|
|
39007
|
-
clearTimeout(timeout);
|
|
39235
|
+
timeout !== null && clearTimeout(timeout);
|
|
39008
39236
|
|
|
39009
39237
|
timeout = setTimeout(() => {
|
|
39010
|
-
timeout =
|
|
39238
|
+
timeout = null;
|
|
39011
39239
|
|
|
39012
39240
|
const el = createGlobalNode('q-loading');
|
|
39013
39241
|
|
|
39014
|
-
app =
|
|
39242
|
+
app = createChildApp({
|
|
39015
39243
|
name: 'QLoading',
|
|
39016
39244
|
|
|
39017
39245
|
setup () {
|
|
@@ -39073,7 +39301,7 @@
|
|
|
39073
39301
|
onAfterLeave
|
|
39074
39302
|
}, getContent)
|
|
39075
39303
|
}
|
|
39076
|
-
});
|
|
39304
|
+
}, Plugin$2.__parentApp);
|
|
39077
39305
|
|
|
39078
39306
|
vm = app.mount(el);
|
|
39079
39307
|
}, props.delay);
|
|
@@ -39117,9 +39345,9 @@
|
|
|
39117
39345
|
}
|
|
39118
39346
|
}
|
|
39119
39347
|
|
|
39120
|
-
if (timeout !==
|
|
39348
|
+
if (timeout !== null) {
|
|
39121
39349
|
clearTimeout(timeout);
|
|
39122
|
-
timeout =
|
|
39350
|
+
timeout = null;
|
|
39123
39351
|
}
|
|
39124
39352
|
|
|
39125
39353
|
Plugin$2.isActive = false;
|
|
@@ -39132,16 +39360,20 @@
|
|
|
39132
39360
|
}
|
|
39133
39361
|
},
|
|
39134
39362
|
|
|
39135
|
-
install ({ $q }) {
|
|
39363
|
+
install ({ $q, parentApp }) {
|
|
39136
39364
|
$q.loading = this;
|
|
39137
39365
|
|
|
39138
|
-
|
|
39139
|
-
|
|
39366
|
+
{
|
|
39367
|
+
Plugin$2.__parentApp = parentApp;
|
|
39368
|
+
|
|
39369
|
+
if ($q.config.loading !== void 0) {
|
|
39370
|
+
this.setDefaults($q.config.loading);
|
|
39371
|
+
}
|
|
39140
39372
|
}
|
|
39141
39373
|
}
|
|
39142
39374
|
});
|
|
39143
39375
|
|
|
39144
|
-
let updateId, currentClientMeta;
|
|
39376
|
+
let updateId = null, currentClientMeta;
|
|
39145
39377
|
const clientList = [];
|
|
39146
39378
|
|
|
39147
39379
|
function normalize (meta) {
|
|
@@ -39275,6 +39507,8 @@
|
|
|
39275
39507
|
}
|
|
39276
39508
|
|
|
39277
39509
|
function updateClientMeta () {
|
|
39510
|
+
updateId = null;
|
|
39511
|
+
|
|
39278
39512
|
const data = {
|
|
39279
39513
|
title: '',
|
|
39280
39514
|
titleTemplate: null,
|
|
@@ -39300,7 +39534,7 @@
|
|
|
39300
39534
|
}
|
|
39301
39535
|
|
|
39302
39536
|
function planClientUpdate () {
|
|
39303
|
-
clearTimeout(updateId);
|
|
39537
|
+
updateId !== null && clearTimeout(updateId);
|
|
39304
39538
|
updateId = setTimeout(updateClientMeta, 50);
|
|
39305
39539
|
}
|
|
39306
39540
|
|
|
@@ -39527,7 +39761,10 @@
|
|
|
39527
39761
|
|
|
39528
39762
|
if (originalApi !== void 0) {
|
|
39529
39763
|
// reset timeout if any
|
|
39530
|
-
|
|
39764
|
+
if (originalApi.notif.meta.timer) {
|
|
39765
|
+
clearTimeout(originalApi.notif.meta.timer);
|
|
39766
|
+
originalApi.notif.meta.timer = void 0;
|
|
39767
|
+
}
|
|
39531
39768
|
|
|
39532
39769
|
// retain uid
|
|
39533
39770
|
notif.meta.uid = originalApi.notif.meta.uid;
|
|
@@ -39563,7 +39800,10 @@
|
|
|
39563
39800
|
// ok, so it's NOT a new one
|
|
39564
39801
|
else {
|
|
39565
39802
|
// reset timeout if any
|
|
39566
|
-
|
|
39803
|
+
if (original.meta.timer) {
|
|
39804
|
+
clearTimeout(original.meta.timer);
|
|
39805
|
+
original.meta.timer = void 0;
|
|
39806
|
+
}
|
|
39567
39807
|
|
|
39568
39808
|
if (notif.badgePosition !== void 0) {
|
|
39569
39809
|
if (badgePositions.includes(notif.badgePosition) === false) {
|
|
@@ -39593,6 +39833,7 @@
|
|
|
39593
39833
|
|
|
39594
39834
|
if (notif.timeout > 0) {
|
|
39595
39835
|
notif.meta.timer = setTimeout(() => {
|
|
39836
|
+
notif.meta.timer = void 0;
|
|
39596
39837
|
dismiss();
|
|
39597
39838
|
}, notif.timeout + /* show duration */ 1000);
|
|
39598
39839
|
}
|
|
@@ -39641,7 +39882,10 @@
|
|
|
39641
39882
|
}
|
|
39642
39883
|
|
|
39643
39884
|
function removeNotification (notif) {
|
|
39644
|
-
|
|
39885
|
+
if (notif.meta.timer) {
|
|
39886
|
+
clearTimeout(notif.meta.timer);
|
|
39887
|
+
notif.meta.timer = void 0;
|
|
39888
|
+
}
|
|
39645
39889
|
|
|
39646
39890
|
const index = notificationsList[ notif.position ].value.indexOf(notif);
|
|
39647
39891
|
if (index !== -1) {
|
|
@@ -40014,6 +40258,9 @@
|
|
|
40014
40258
|
area.contentEditable = 'true';
|
|
40015
40259
|
area.style.position = 'fixed'; // avoid scrolling to bottom
|
|
40016
40260
|
|
|
40261
|
+
const fn = () => {};
|
|
40262
|
+
addFocusout(fn);
|
|
40263
|
+
|
|
40017
40264
|
document.body.appendChild(area);
|
|
40018
40265
|
area.focus();
|
|
40019
40266
|
area.select();
|
|
@@ -40021,6 +40268,8 @@
|
|
|
40021
40268
|
const res = document.execCommand('copy');
|
|
40022
40269
|
|
|
40023
40270
|
area.remove();
|
|
40271
|
+
removeFocusout(fn);
|
|
40272
|
+
|
|
40024
40273
|
return res
|
|
40025
40274
|
}
|
|
40026
40275
|
|
|
@@ -40527,7 +40776,7 @@
|
|
|
40527
40776
|
*/
|
|
40528
40777
|
|
|
40529
40778
|
var index_umd = {
|
|
40530
|
-
version: '2.11.
|
|
40779
|
+
version: '2.11.5',
|
|
40531
40780
|
install (app, opts) {
|
|
40532
40781
|
installQuasar(app, {
|
|
40533
40782
|
components,
|