quasar 2.4.10 → 2.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/api/LoadingBar.json +7 -0
  2. package/dist/api/Platform.json +171 -0
  3. package/dist/api/QAjaxBar.json +13 -1
  4. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  8. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  9. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  14. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  15. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  18. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  33. package/dist/icon-set/themify.umd.prod.js +1 -1
  34. package/dist/lang/ar.umd.prod.js +1 -1
  35. package/dist/lang/az-Latn.umd.prod.js +1 -1
  36. package/dist/lang/bg.umd.prod.js +1 -1
  37. package/dist/lang/bn.umd.prod.js +1 -1
  38. package/dist/lang/ca.umd.prod.js +1 -1
  39. package/dist/lang/cs.umd.prod.js +1 -1
  40. package/dist/lang/da.umd.prod.js +1 -1
  41. package/dist/lang/de.umd.prod.js +1 -1
  42. package/dist/lang/el.umd.prod.js +1 -1
  43. package/dist/lang/en-GB.umd.prod.js +1 -1
  44. package/dist/lang/en-US.umd.prod.js +1 -1
  45. package/dist/lang/eo.umd.prod.js +1 -1
  46. package/dist/lang/es.umd.prod.js +1 -1
  47. package/dist/lang/et.umd.prod.js +1 -1
  48. package/dist/lang/fa-IR.umd.prod.js +1 -1
  49. package/dist/lang/fa.umd.prod.js +1 -1
  50. package/dist/lang/fi.umd.prod.js +1 -1
  51. package/dist/lang/fr.umd.prod.js +1 -1
  52. package/dist/lang/gn.umd.prod.js +1 -1
  53. package/dist/lang/he.umd.prod.js +1 -1
  54. package/dist/lang/hr.umd.prod.js +1 -1
  55. package/dist/lang/hu.umd.prod.js +1 -1
  56. package/dist/lang/id.umd.prod.js +1 -1
  57. package/dist/lang/is.umd.prod.js +1 -1
  58. package/dist/lang/it.umd.prod.js +1 -1
  59. package/dist/lang/ja.umd.prod.js +1 -1
  60. package/dist/lang/km.umd.prod.js +1 -1
  61. package/dist/lang/ko-KR.umd.prod.js +1 -1
  62. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  63. package/dist/lang/lt.umd.prod.js +1 -1
  64. package/dist/lang/lu.umd.prod.js +1 -1
  65. package/dist/lang/lv.umd.prod.js +1 -1
  66. package/dist/lang/ml.umd.prod.js +1 -1
  67. package/dist/lang/ms.umd.prod.js +1 -1
  68. package/dist/lang/my.umd.prod.js +1 -1
  69. package/dist/lang/nb-NO.umd.prod.js +1 -1
  70. package/dist/lang/nl.umd.prod.js +1 -1
  71. package/dist/lang/pl.umd.prod.js +1 -1
  72. package/dist/lang/pt-BR.umd.prod.js +1 -1
  73. package/dist/lang/pt.umd.prod.js +1 -1
  74. package/dist/lang/ro.umd.prod.js +1 -1
  75. package/dist/lang/ru.umd.prod.js +1 -1
  76. package/dist/lang/sk.umd.prod.js +1 -1
  77. package/dist/lang/sl.umd.prod.js +1 -1
  78. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  79. package/dist/lang/sr.umd.prod.js +1 -1
  80. package/dist/lang/sv.umd.prod.js +1 -1
  81. package/dist/lang/ta.umd.prod.js +1 -1
  82. package/dist/lang/th.umd.prod.js +1 -1
  83. package/dist/lang/tr.umd.prod.js +1 -1
  84. package/dist/lang/ug.umd.prod.js +1 -1
  85. package/dist/lang/uk.umd.prod.js +1 -1
  86. package/dist/lang/vi.umd.prod.js +1 -1
  87. package/dist/lang/zh-CN.umd.prod.js +1 -1
  88. package/dist/lang/zh-TW.umd.prod.js +1 -1
  89. package/dist/quasar.cjs.prod.js +2 -2
  90. package/dist/quasar.esm.prod.js +2 -2
  91. package/dist/quasar.sass +1 -1
  92. package/dist/quasar.umd.js +110 -32
  93. package/dist/quasar.umd.prod.js +2 -2
  94. package/dist/ssr-directives/Morph.js +1 -1
  95. package/dist/types/api/validation.d.ts +1 -1
  96. package/dist/types/index.d.ts +136 -4
  97. package/dist/web-types/web-types.json +1 -1
  98. package/package.json +1 -1
  99. package/src/components/ajax-bar/QAjaxBar.js +22 -12
  100. package/src/components/ajax-bar/QAjaxBar.json +16 -1
  101. package/src/components/form/QForm.js +11 -1
  102. package/src/components/infinite-scroll/QInfiniteScroll.js +3 -2
  103. package/src/components/scroll-area/QScrollArea.js +21 -1
  104. package/src/components/tabs/QTabs.js +10 -2
  105. package/src/components/tree/QTree.js +5 -3
  106. package/src/components/virtual-scroll/use-virtual-scroll.js +11 -3
  107. package/src/composables/private/use-field.js +11 -1
  108. package/src/plugins/LoadingBar.js +3 -3
  109. package/src/plugins/LoadingBar.json +8 -0
  110. package/src/plugins/Platform.js +15 -8
  111. package/src/plugins/Platform.json +166 -0
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.10
2
+ * Quasar Framework v2.4.11
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.10
2
+ * Quasar Framework v2.4.11
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -40,19 +40,15 @@
40
40
  let iosCorrection;
41
41
 
42
42
  function getMatch (userAgent, platformMatch) {
43
- const match = /(edge|edga|edgios)\/([\w.]+)/.exec(userAgent)
43
+ const match = /(edg|edge|edga|edgios)\/([\w.]+)/.exec(userAgent)
44
44
  || /(opr)[\/]([\w.]+)/.exec(userAgent)
45
45
  || /(vivaldi)[\/]([\w.]+)/.exec(userAgent)
46
46
  || /(chrome|crios)[\/]([\w.]+)/.exec(userAgent)
47
- || /(iemobile)[\/]([\w.]+)/.exec(userAgent)
48
47
  || /(version)(applewebkit)[\/]([\w.]+).*(safari)[\/]([\w.]+)/.exec(userAgent)
49
48
  || /(webkit)[\/]([\w.]+).*(version)[\/]([\w.]+).*(safari)[\/]([\w.]+)/.exec(userAgent)
50
49
  || /(firefox|fxios)[\/]([\w.]+)/.exec(userAgent)
51
50
  || /(webkit)[\/]([\w.]+)/.exec(userAgent)
52
51
  || /(opera)(?:.*version|)[\/]([\w.]+)/.exec(userAgent)
53
- || /(msie) ([\w.]+)/.exec(userAgent)
54
- || (userAgent.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(userAgent))
55
- || (userAgent.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(userAgent))
56
52
  || [];
57
53
 
58
54
  return {
@@ -75,6 +71,8 @@
75
71
  || /(mac)/.exec(userAgent)
76
72
  || /(linux)/.exec(userAgent)
77
73
  || /(cros)/.exec(userAgent)
74
+ // TODO: Remove BlackBerry detection. BlackBerry OS, BlackBerry 10, and BlackBerry PlayBook OS
75
+ // is officially dead as of January 4, 2022 (https://www.blackberry.com/us/en/support/devices/end-of-life)
78
76
  || /(playbook)/.exec(userAgent)
79
77
  || /(bb)/.exec(userAgent)
80
78
  || /(blackberry)/.exec(userAgent)
@@ -164,6 +162,10 @@
164
162
  delete browser[ 'windows phone' ];
165
163
  }
166
164
 
165
+ // TODO: The assumption about WebKit based browsers below is not completely accurate.
166
+ // Google released Blink(a fork of WebKit) engine on April 3, 2013, which is really different than WebKit today.
167
+ // Today, one might want to check for WebKit to deal with its bugs, which is used on all browsers on iOS, and Safari browser on all platforms.
168
+
167
169
  // Chrome, Opera 15+, Vivaldi and Safari are webkit based browsers
168
170
  if (
169
171
  browser.chrome
@@ -180,8 +182,15 @@
180
182
  browser.webkit = true;
181
183
  }
182
184
 
185
+ // TODO: (Qv3) rename the terms 'edge' to 'edge legacy'(or remove it) then 'edge chromium' to 'edge' to match with the known up-to-date terms
186
+ // Microsoft Edge is the new Chromium-based browser. Microsoft Edge Legacy is the old EdgeHTML-based browser (EOL: March 9, 2021).
187
+ if (browser.edg) {
188
+ matched.browser = 'edgechromium';
189
+ browser.edgeChromium = true;
190
+ }
191
+
183
192
  // Blackberry browsers are marked as Safari on BlackBerry
184
- if (browser.safari && browser.blackberry || browser.bb) {
193
+ if ((browser.safari && browser.blackberry) || browser.bb) {
185
194
  matched.browser = 'blackberry';
186
195
  browser.blackberry = true;
187
196
  }
@@ -1447,7 +1456,7 @@
1447
1456
  }
1448
1457
 
1449
1458
  var installQuasar = function (parentApp, opts = {}) {
1450
- const $q = { version: '2.4.10' };
1459
+ const $q = { version: '2.4.11' };
1451
1460
 
1452
1461
  if (globalConfigIsFrozen === false) {
1453
1462
  if (opts.config !== void 0) {
@@ -1646,7 +1655,7 @@
1646
1655
  const onScreen = vue.ref(false);
1647
1656
  const animate = vue.ref(true);
1648
1657
 
1649
- let calls = 0, timer, speed;
1658
+ let sessions = 0, timer, speed;
1650
1659
 
1651
1660
  const classes = vue.computed(() =>
1652
1661
  `q-loading-bar q-loading-bar--${ props.position }`
@@ -1692,16 +1701,17 @@
1692
1701
  const oldSpeed = speed;
1693
1702
  speed = Math.max(0, newSpeed) || 0;
1694
1703
 
1695
- calls++;
1704
+ sessions++;
1696
1705
 
1697
- if (calls > 1) {
1706
+ if (sessions > 1) {
1698
1707
  if (oldSpeed === 0 && newSpeed > 0) {
1699
1708
  planNextStep();
1700
1709
  }
1701
1710
  else if (oldSpeed > 0 && newSpeed <= 0) {
1702
1711
  clearTimeout(timer);
1703
1712
  }
1704
- return
1713
+
1714
+ return sessions
1705
1715
  }
1706
1716
 
1707
1717
  clearTimeout(timer);
@@ -1709,25 +1719,32 @@
1709
1719
 
1710
1720
  progress.value = 0;
1711
1721
 
1712
- if (onScreen.value === true) { return }
1713
-
1714
- onScreen.value = true;
1715
- animate.value = false;
1716
1722
  timer = setTimeout(() => {
1717
1723
  animate.value = true;
1718
1724
  newSpeed > 0 && planNextStep();
1719
- }, 100);
1725
+ }, onScreen.value === true ? 500 : 1);
1726
+
1727
+ if (onScreen.value !== true) {
1728
+ onScreen.value = true;
1729
+ animate.value = false;
1730
+ }
1731
+
1732
+ return sessions
1720
1733
  }
1721
1734
 
1722
1735
  function increment (amount) {
1723
- if (calls > 0) {
1736
+ if (sessions > 0) {
1724
1737
  progress.value = inc(progress.value, amount);
1725
1738
  }
1739
+
1740
+ return sessions
1726
1741
  }
1727
1742
 
1728
1743
  function stop () {
1729
- calls = Math.max(0, calls - 1);
1730
- if (calls > 0) { return }
1744
+ sessions = Math.max(0, sessions - 1);
1745
+ if (sessions > 0) {
1746
+ return sessions
1747
+ }
1731
1748
 
1732
1749
  clearTimeout(timer);
1733
1750
  emit('stop');
@@ -1746,6 +1763,8 @@
1746
1763
  else {
1747
1764
  end();
1748
1765
  }
1766
+
1767
+ return sessions
1749
1768
  }
1750
1769
 
1751
1770
  function planNextStep () {
@@ -9690,7 +9709,15 @@
9690
9709
  unwatchRoute !== void 0 && unwatchRoute();
9691
9710
  });
9692
9711
 
9693
- vue.onActivated(recalculateScroll);
9712
+ let shouldActivate = false;
9713
+
9714
+ vue.onDeactivated(() => {
9715
+ shouldActivate = true;
9716
+ });
9717
+
9718
+ vue.onActivated(() => {
9719
+ shouldActivate === true && recalculateScroll();
9720
+ });
9694
9721
 
9695
9722
  return () => {
9696
9723
  const child = [
@@ -20891,6 +20918,16 @@
20891
20918
  // expose public methods
20892
20919
  Object.assign(proxy, { focus, blur });
20893
20920
 
20921
+ let shouldActivate = false;
20922
+
20923
+ vue.onDeactivated(() => {
20924
+ shouldActivate = true;
20925
+ });
20926
+
20927
+ vue.onActivated(() => {
20928
+ shouldActivate === true && props.autofocus === true && proxy.focus();
20929
+ });
20930
+
20894
20931
  vue.onMounted(() => {
20895
20932
  if (isRuntimeSsrPreHydration.value === true && props.for === void 0) {
20896
20933
  state.targetUid.value = getTargetUid();
@@ -21617,6 +21654,16 @@
21617
21654
  }
21618
21655
  });
21619
21656
 
21657
+ let shouldActivate = false;
21658
+
21659
+ vue.onDeactivated(() => {
21660
+ shouldActivate = true;
21661
+ });
21662
+
21663
+ vue.onActivated(() => {
21664
+ shouldActivate === true && props.autofocus === true && focus();
21665
+ });
21666
+
21620
21667
  vue.onMounted(() => {
21621
21668
  props.autofocus === true && focus();
21622
21669
  });
@@ -22174,7 +22221,6 @@
22174
22221
  const rootRef = vue.ref(null);
22175
22222
 
22176
22223
  let index = props.initialIndex || 0;
22177
- let scrollPos = false;
22178
22224
  let localScrollTarget, poll;
22179
22225
 
22180
22226
  const classes = vue.computed(() =>
@@ -22313,8 +22359,10 @@
22313
22359
  vue.watch(() => props.scrollTarget, updateScrollTarget);
22314
22360
  vue.watch(() => props.debounce, setDebounce);
22315
22361
 
22362
+ let scrollPos = false;
22363
+
22316
22364
  vue.onActivated(() => {
22317
- if (localScrollTarget && scrollPos !== false) {
22365
+ if (scrollPos !== false && localScrollTarget) {
22318
22366
  setVerticalScrollPosition(localScrollTarget, scrollPos);
22319
22367
  }
22320
22368
  });
@@ -27110,6 +27158,26 @@
27110
27158
  }
27111
27159
  });
27112
27160
 
27161
+ let scrollPosition = null;
27162
+
27163
+ vue.onDeactivated(() => {
27164
+ scrollPosition = {
27165
+ top: scroll.vertical.position.value,
27166
+ left: scroll.horizontal.position.value
27167
+ };
27168
+ });
27169
+
27170
+ vue.onActivated(() => {
27171
+ if (scrollPosition === null) { return }
27172
+
27173
+ const scrollTarget = targetRef.value;
27174
+
27175
+ if (scrollTarget !== null) {
27176
+ setHorizontalScrollPosition(scrollTarget, scrollPosition.left);
27177
+ setVerticalScrollPosition(scrollTarget, scrollPosition.top);
27178
+ }
27179
+ });
27180
+
27113
27181
  vue.onBeforeUnmount(emitScroll.cancel);
27114
27182
 
27115
27183
  return () => {
@@ -27774,9 +27842,9 @@
27774
27842
  : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value);
27775
27843
 
27776
27844
  const baseSize = Math.max(
27777
- 10,
27845
+ 1,
27778
27846
  view,
27779
- Math.ceil(props.virtualScrollSliceSize / multiplier)
27847
+ Math.ceil((props.virtualScrollSliceSize > 0 ? props.virtualScrollSliceSize : 10) / multiplier)
27780
27848
  );
27781
27849
 
27782
27850
  virtualScrollSliceSizeComputed.value = {
@@ -27869,7 +27937,15 @@
27869
27937
  setVirtualScrollSize();
27870
27938
  });
27871
27939
 
27940
+ let shouldActivate = false;
27941
+
27942
+ vue.onDeactivated(() => {
27943
+ shouldActivate = true;
27944
+ });
27945
+
27872
27946
  vue.onActivated(() => {
27947
+ if (shouldActivate !== true) { return }
27948
+
27873
27949
  const scrollEl = getVirtualScrollTarget();
27874
27950
 
27875
27951
  if (prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {
@@ -35895,9 +35971,11 @@
35895
35971
 
35896
35972
  if (hasSelection.value) {
35897
35973
  if (meta.selectable) {
35898
- const val = meta.key !== props.selected ? meta.key : null;
35899
- if (props.noSelectionUnset !== true || val !== null) {
35900
- emit('update:selected', val);
35974
+ if (props.noSelectionUnset === false) {
35975
+ emit('update:selected', meta.key !== props.selected ? meta.key : null);
35976
+ }
35977
+ else if (meta.key !== props.selected) {
35978
+ emit('update:selected', meta.key || null);
35901
35979
  }
35902
35980
  }
35903
35981
  }
@@ -38339,11 +38417,11 @@
38339
38417
  Object.assign(this, {
38340
38418
  start (speed) {
38341
38419
  barRef.value.start(speed);
38342
- Plugin$3.isActive = barRef.value.calls > 0;
38420
+ Plugin$3.isActive = true;
38343
38421
  },
38344
38422
  stop () {
38345
- barRef.value.stop();
38346
- Plugin$3.isActive = barRef.value.calls > 0;
38423
+ const sessions = barRef.value.stop();
38424
+ Plugin$3.isActive = sessions > 0;
38347
38425
  },
38348
38426
  increment () {
38349
38427
  barRef.value.increment.apply(null, arguments);
@@ -39281,7 +39359,7 @@
39281
39359
  });
39282
39360
 
39283
39361
  var index_umd = {
39284
- version: '2.4.10',
39362
+ version: '2.4.11',
39285
39363
  install (app, opts) {
39286
39364
  installQuasar(app, {
39287
39365
  components,