quasar 2.11.4 → 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.
Files changed (122) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/kk.umd.prod.js +1 -1
  69. package/dist/lang/km.umd.prod.js +1 -1
  70. package/dist/lang/ko-KR.umd.prod.js +1 -1
  71. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  98. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.css +0 -4
  104. package/dist/quasar.esm.js +73 -24
  105. package/dist/quasar.esm.prod.js +2 -2
  106. package/dist/quasar.prod.css +1 -1
  107. package/dist/quasar.rtl.css +0 -4
  108. package/dist/quasar.rtl.prod.css +1 -1
  109. package/dist/quasar.sass +1 -3
  110. package/dist/quasar.umd.js +73 -24
  111. package/dist/quasar.umd.prod.js +2 -2
  112. package/dist/web-types/web-types.json +1 -1
  113. package/package.json +1 -1
  114. package/src/components/dialog/QDialog.js +2 -1
  115. package/src/components/infinite-scroll/QInfiniteScroll.js +26 -4
  116. package/src/components/rating/QRating.js +3 -3
  117. package/src/components/virtual-scroll/use-virtual-scroll.js +5 -1
  118. package/src/css/core/visibility.sass +0 -2
  119. package/src/plugins/Loading.js +11 -6
  120. package/src/utils/copy-to-clipboard.js +8 -0
  121. package/src/utils/is.js +11 -6
  122. package/src/utils/prevent-scroll.js +9 -1
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.11.4
2
+ * Quasar Framework v2.11.5
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -7460,8 +7460,6 @@ sup
7460
7460
  visibility: hidden !important
7461
7461
  transition: none !important
7462
7462
  animation: none !important
7463
- .invisible svg *
7464
- display: none
7465
7463
  .transparent
7466
7464
  background: transparent !important
7467
7465
  .overflow-auto
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.11.4
2
+ * Quasar Framework v2.11.5
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1476,20 +1476,23 @@
1476
1476
  return false
1477
1477
  }
1478
1478
 
1479
- i = a.entries().next();
1479
+ let iter = a.entries();
1480
+
1481
+ i = iter.next();
1480
1482
  while (i.done !== true) {
1481
1483
  if (b.has(i.value[ 0 ]) !== true) {
1482
1484
  return false
1483
1485
  }
1484
- i = i.next();
1486
+ i = iter.next();
1485
1487
  }
1486
1488
 
1487
- i = a.entries().next();
1489
+ iter = a.entries();
1490
+ i = iter.next();
1488
1491
  while (i.done !== true) {
1489
1492
  if (isDeepEqual(i.value[ 1 ], b.get(i.value[ 0 ])) !== true) {
1490
1493
  return false
1491
1494
  }
1492
- i = i.next();
1495
+ i = iter.next();
1493
1496
  }
1494
1497
 
1495
1498
  return true
@@ -1500,12 +1503,14 @@
1500
1503
  return false
1501
1504
  }
1502
1505
 
1503
- i = a.entries().next();
1506
+ const iter = a.entries();
1507
+
1508
+ i = iter.next();
1504
1509
  while (i.done !== true) {
1505
1510
  if (b.has(i.value[ 0 ]) !== true) {
1506
1511
  return false
1507
1512
  }
1508
- i = i.next();
1513
+ i = iter.next();
1509
1514
  }
1510
1515
 
1511
1516
  return true
@@ -1648,7 +1653,7 @@
1648
1653
  }
1649
1654
 
1650
1655
  var installQuasar = function (parentApp, opts = {}) {
1651
- const $q = { version: '2.11.4' };
1656
+ const $q = { version: '2.11.5' };
1652
1657
 
1653
1658
  if (globalConfigIsFrozen === false) {
1654
1659
  if (opts.config !== void 0) {
@@ -14637,6 +14642,7 @@
14637
14642
  vpPendingUpdate = false,
14638
14643
  bodyLeft,
14639
14644
  bodyTop,
14645
+ href,
14640
14646
  closeTimer = null;
14641
14647
 
14642
14648
  function onWheel (e) {
@@ -14723,6 +14729,8 @@
14723
14729
  bodyLeft = body.style.left;
14724
14730
  bodyTop = body.style.top;
14725
14731
 
14732
+ href = window.location.href;
14733
+
14726
14734
  body.style.left = `-${ scrollPositionX }px`;
14727
14735
  body.style.top = `-${ scrollPositionY }px`;
14728
14736
 
@@ -14735,6 +14743,7 @@
14735
14743
 
14736
14744
  body.classList.add('q-body--prevent-scroll');
14737
14745
  document.qScrollPrevented = true;
14746
+
14738
14747
  if (client.is.ios === true) {
14739
14748
  if (hasViewport === true) {
14740
14749
  window.scrollTo(0, 0);
@@ -14773,7 +14782,11 @@
14773
14782
  body.style.left = bodyLeft;
14774
14783
  body.style.top = bodyTop;
14775
14784
 
14776
- window.scrollTo(scrollPositionX, scrollPositionY);
14785
+ // scroll back only if route has not changed
14786
+ if (window.location.href === href) {
14787
+ window.scrollTo(scrollPositionX, scrollPositionY);
14788
+ }
14789
+
14777
14790
  maxScrollTop = void 0;
14778
14791
  }
14779
14792
  }
@@ -14900,6 +14913,7 @@
14900
14913
 
14901
14914
  setup (props, { slots, emit, attrs }) {
14902
14915
  const vm = vue.getCurrentInstance();
14916
+ const { proxy: { $q } } = vm;
14903
14917
 
14904
14918
  const innerRef = vue.ref(null);
14905
14919
  const showing = vue.ref(false);
@@ -15191,7 +15205,7 @@
15191
15205
 
15192
15206
  vue.onBeforeUnmount(cleanup);
15193
15207
 
15194
- const backdropEvt = vm.proxy.$q.platform.is.ios === true ? 'onClick' : 'onFocusin';
15208
+ const backdropEvt = $q.platform.is.ios === true || $q.platform.is.safari ? 'onClick' : 'onFocusin';
15195
15209
 
15196
15210
  function renderPortalContent () {
15197
15211
  return vue.h('div', {
@@ -20940,6 +20954,7 @@
20940
20954
  const isFetching = vue.ref(false);
20941
20955
  const isWorking = vue.ref(true);
20942
20956
  const rootRef = vue.ref(null);
20957
+ const loadingRef = vue.ref(null);
20943
20958
 
20944
20959
  let index = props.initialIndex || 0;
20945
20960
  let localScrollTarget, poll;
@@ -21071,12 +21086,32 @@
21071
21086
  }
21072
21087
  }
21073
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
+
21074
21109
  vue.watch(() => props.disable, val => {
21075
21110
  if (val === true) { stop(); }
21076
21111
  else { resume(); }
21077
21112
  });
21078
21113
 
21079
- vue.watch(() => props.reverse, val => {
21114
+ vue.watch(() => props.reverse, () => {
21080
21115
  if (isFetching.value === false && isWorking.value === true) {
21081
21116
  immediatePoll();
21082
21117
  }
@@ -21107,8 +21142,9 @@
21107
21142
 
21108
21143
  vue.onMounted(() => {
21109
21144
  setDebounce(props.debounce);
21110
-
21111
21145
  updateScrollTarget();
21146
+
21147
+ isFetching.value === false && updateSvgAnimations();
21112
21148
  });
21113
21149
 
21114
21150
  // expose public methods
@@ -21121,9 +21157,9 @@
21121
21157
  return () => {
21122
21158
  const child = hUniqueSlot(slots.default, []);
21123
21159
 
21124
- if (props.disable !== true && isWorking.value === true) {
21160
+ if (renderLoadingSlot.value === true) {
21125
21161
  child[ props.reverse === false ? 'push' : 'unshift' ](
21126
- vue.h('div', { class: classes.value }, hSlot(slots.loading))
21162
+ vue.h('div', { ref: loadingRef, class: classes.value }, hSlot(slots.loading))
21127
21163
  );
21128
21164
  }
21129
21165
 
@@ -25721,13 +25757,13 @@
25721
25757
  case 37: // LEFT ARROW
25722
25758
  case 40: // DOWN ARROW
25723
25759
  if (iconRefs[ `rt${ i - 1 }` ]) {
25724
- iconRefs[ `rt${ i - 1 }` ].$el.focus();
25760
+ iconRefs[ `rt${ i - 1 }` ].focus();
25725
25761
  }
25726
25762
  return stopAndPrevent(e)
25727
25763
  case 39: // RIGHT ARROW
25728
25764
  case 38: // UP ARROW
25729
25765
  if (iconRefs[ `rt${ i + 1 }` ]) {
25730
- iconRefs[ `rt${ i + 1 }` ].$el.focus();
25766
+ iconRefs[ `rt${ i + 1 }` ].focus();
25731
25767
  }
25732
25768
  return stopAndPrevent(e)
25733
25769
  }
@@ -25750,7 +25786,7 @@
25750
25786
  child.push(
25751
25787
  vue.h('div', {
25752
25788
  key: i,
25753
- ref: vm => { iconRefs[ `rt${ i }` ] = vm; },
25789
+ ref: el => { iconRefs[ `rt${ i }` ] = el; },
25754
25790
  class: 'q-rating__icon-container flex flex-center',
25755
25791
  ...attrs,
25756
25792
  onClick () { set(i); },
@@ -26295,12 +26331,16 @@
26295
26331
  return
26296
26332
  }
26297
26333
 
26298
- cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
26334
+ if (contentEl._qOverflowAnimationFrame !== void 0) {
26335
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
26336
+ }
26337
+
26299
26338
  contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
26300
26339
  if (contentEl === null) {
26301
26340
  return
26302
26341
  }
26303
26342
 
26343
+ contentEl._qOverflowAnimationFrame = void 0;
26304
26344
  const children = contentEl.children || [];
26305
26345
 
26306
26346
  filterProto
@@ -39199,7 +39239,7 @@
39199
39239
 
39200
39240
  const el = createGlobalNode('q-loading');
39201
39241
 
39202
- app = vue.createApp({
39242
+ app = createChildApp({
39203
39243
  name: 'QLoading',
39204
39244
 
39205
39245
  setup () {
@@ -39261,7 +39301,7 @@
39261
39301
  onAfterLeave
39262
39302
  }, getContent)
39263
39303
  }
39264
- });
39304
+ }, Plugin$2.__parentApp);
39265
39305
 
39266
39306
  vm = app.mount(el);
39267
39307
  }, props.delay);
@@ -39320,11 +39360,15 @@
39320
39360
  }
39321
39361
  },
39322
39362
 
39323
- install ({ $q }) {
39363
+ install ({ $q, parentApp }) {
39324
39364
  $q.loading = this;
39325
39365
 
39326
- if ($q.config.loading !== void 0) {
39327
- this.setDefaults($q.config.loading);
39366
+ {
39367
+ Plugin$2.__parentApp = parentApp;
39368
+
39369
+ if ($q.config.loading !== void 0) {
39370
+ this.setDefaults($q.config.loading);
39371
+ }
39328
39372
  }
39329
39373
  }
39330
39374
  });
@@ -40214,6 +40258,9 @@
40214
40258
  area.contentEditable = 'true';
40215
40259
  area.style.position = 'fixed'; // avoid scrolling to bottom
40216
40260
 
40261
+ const fn = () => {};
40262
+ addFocusout(fn);
40263
+
40217
40264
  document.body.appendChild(area);
40218
40265
  area.focus();
40219
40266
  area.select();
@@ -40221,6 +40268,8 @@
40221
40268
  const res = document.execCommand('copy');
40222
40269
 
40223
40270
  area.remove();
40271
+ removeFocusout(fn);
40272
+
40224
40273
  return res
40225
40274
  }
40226
40275
 
@@ -40727,7 +40776,7 @@
40727
40776
  */
40728
40777
 
40729
40778
  var index_umd = {
40730
- version: '2.11.4',
40779
+ version: '2.11.5',
40731
40780
  install (app, opts) {
40732
40781
  installQuasar(app, {
40733
40782
  components,