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.css CHANGED
@@ -11561,10 +11561,6 @@ sup {
11561
11561
  animation: none !important;
11562
11562
  }
11563
11563
 
11564
- .invisible svg * {
11565
- display: none;
11566
- }
11567
-
11568
11564
  .transparent {
11569
11565
  background: transparent !important;
11570
11566
  }
@@ -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
  */
@@ -1474,20 +1474,23 @@ function isDeepEqual (a, b) {
1474
1474
  return false
1475
1475
  }
1476
1476
 
1477
- i = a.entries().next();
1477
+ let iter = a.entries();
1478
+
1479
+ i = iter.next();
1478
1480
  while (i.done !== true) {
1479
1481
  if (b.has(i.value[ 0 ]) !== true) {
1480
1482
  return false
1481
1483
  }
1482
- i = i.next();
1484
+ i = iter.next();
1483
1485
  }
1484
1486
 
1485
- i = a.entries().next();
1487
+ iter = a.entries();
1488
+ i = iter.next();
1486
1489
  while (i.done !== true) {
1487
1490
  if (isDeepEqual(i.value[ 1 ], b.get(i.value[ 0 ])) !== true) {
1488
1491
  return false
1489
1492
  }
1490
- i = i.next();
1493
+ i = iter.next();
1491
1494
  }
1492
1495
 
1493
1496
  return true
@@ -1498,12 +1501,14 @@ function isDeepEqual (a, b) {
1498
1501
  return false
1499
1502
  }
1500
1503
 
1501
- i = a.entries().next();
1504
+ const iter = a.entries();
1505
+
1506
+ i = iter.next();
1502
1507
  while (i.done !== true) {
1503
1508
  if (b.has(i.value[ 0 ]) !== true) {
1504
1509
  return false
1505
1510
  }
1506
- i = i.next();
1511
+ i = iter.next();
1507
1512
  }
1508
1513
 
1509
1514
  return true
@@ -1646,7 +1651,7 @@ function prepareApp (app, uiOpts, pluginOpts) {
1646
1651
  }
1647
1652
 
1648
1653
  var installQuasar = function (parentApp, opts = {}) {
1649
- const $q = { version: '2.11.4' };
1654
+ const $q = { version: '2.11.5' };
1650
1655
 
1651
1656
  if (globalConfigIsFrozen === false) {
1652
1657
  if (opts.config !== void 0) {
@@ -14635,6 +14640,7 @@ let
14635
14640
  vpPendingUpdate = false,
14636
14641
  bodyLeft,
14637
14642
  bodyTop,
14643
+ href,
14638
14644
  closeTimer = null;
14639
14645
 
14640
14646
  function onWheel (e) {
@@ -14721,6 +14727,8 @@ function apply$1 (action) {
14721
14727
  bodyLeft = body.style.left;
14722
14728
  bodyTop = body.style.top;
14723
14729
 
14730
+ href = window.location.href;
14731
+
14724
14732
  body.style.left = `-${ scrollPositionX }px`;
14725
14733
  body.style.top = `-${ scrollPositionY }px`;
14726
14734
 
@@ -14733,6 +14741,7 @@ function apply$1 (action) {
14733
14741
 
14734
14742
  body.classList.add('q-body--prevent-scroll');
14735
14743
  document.qScrollPrevented = true;
14744
+
14736
14745
  if (client.is.ios === true) {
14737
14746
  if (hasViewport === true) {
14738
14747
  window.scrollTo(0, 0);
@@ -14771,7 +14780,11 @@ function apply$1 (action) {
14771
14780
  body.style.left = bodyLeft;
14772
14781
  body.style.top = bodyTop;
14773
14782
 
14774
- window.scrollTo(scrollPositionX, scrollPositionY);
14783
+ // scroll back only if route has not changed
14784
+ if (window.location.href === href) {
14785
+ window.scrollTo(scrollPositionX, scrollPositionY);
14786
+ }
14787
+
14775
14788
  maxScrollTop = void 0;
14776
14789
  }
14777
14790
  }
@@ -14898,6 +14911,7 @@ var QDialog = createComponent({
14898
14911
 
14899
14912
  setup (props, { slots, emit, attrs }) {
14900
14913
  const vm = getCurrentInstance();
14914
+ const { proxy: { $q } } = vm;
14901
14915
 
14902
14916
  const innerRef = ref(null);
14903
14917
  const showing = ref(false);
@@ -15189,7 +15203,7 @@ var QDialog = createComponent({
15189
15203
 
15190
15204
  onBeforeUnmount(cleanup);
15191
15205
 
15192
- const backdropEvt = vm.proxy.$q.platform.is.ios === true ? 'onClick' : 'onFocusin';
15206
+ const backdropEvt = $q.platform.is.ios === true || $q.platform.is.safari ? 'onClick' : 'onFocusin';
15193
15207
 
15194
15208
  function renderPortalContent () {
15195
15209
  return h('div', {
@@ -20943,6 +20957,7 @@ var QInfiniteScroll = createComponent({
20943
20957
  const isFetching = ref(false);
20944
20958
  const isWorking = ref(true);
20945
20959
  const rootRef = ref(null);
20960
+ const loadingRef = ref(null);
20946
20961
 
20947
20962
  let index = props.initialIndex || 0;
20948
20963
  let localScrollTarget, poll;
@@ -21074,12 +21089,32 @@ var QInfiniteScroll = createComponent({
21074
21089
  }
21075
21090
  }
21076
21091
 
21092
+ function updateSvgAnimations (isRetry) {
21093
+ if (renderLoadingSlot.value === true) {
21094
+ if (loadingRef.value === null) {
21095
+ isRetry !== true && nextTick(() => { updateSvgAnimations(true); });
21096
+ return
21097
+ }
21098
+
21099
+ // we need to pause svg animations (if any) when hiding
21100
+ // otherwise the browser will keep on recalculating the style
21101
+ const action = `${ isFetching.value === true ? 'un' : '' }pauseAnimations`;
21102
+ Array.from(loadingRef.value.getElementsByTagName('svg')).forEach(el => {
21103
+ el[ action ]();
21104
+ });
21105
+ }
21106
+ }
21107
+
21108
+ const renderLoadingSlot = computed(() => props.disable !== true && isWorking.value === true);
21109
+
21110
+ watch([ isFetching, renderLoadingSlot ], () => { updateSvgAnimations(); });
21111
+
21077
21112
  watch(() => props.disable, val => {
21078
21113
  if (val === true) { stop(); }
21079
21114
  else { resume(); }
21080
21115
  });
21081
21116
 
21082
- watch(() => props.reverse, val => {
21117
+ watch(() => props.reverse, () => {
21083
21118
  if (isFetching.value === false && isWorking.value === true) {
21084
21119
  immediatePoll();
21085
21120
  }
@@ -21110,8 +21145,9 @@ var QInfiniteScroll = createComponent({
21110
21145
 
21111
21146
  onMounted(() => {
21112
21147
  setDebounce(props.debounce);
21113
-
21114
21148
  updateScrollTarget();
21149
+
21150
+ isFetching.value === false && updateSvgAnimations();
21115
21151
  });
21116
21152
 
21117
21153
  // expose public methods
@@ -21124,9 +21160,9 @@ var QInfiniteScroll = createComponent({
21124
21160
  return () => {
21125
21161
  const child = hUniqueSlot(slots.default, []);
21126
21162
 
21127
- if (props.disable !== true && isWorking.value === true) {
21163
+ if (renderLoadingSlot.value === true) {
21128
21164
  child[ props.reverse === false ? 'push' : 'unshift' ](
21129
- h('div', { class: classes.value }, hSlot(slots.loading))
21165
+ h('div', { ref: loadingRef, class: classes.value }, hSlot(slots.loading))
21130
21166
  );
21131
21167
  }
21132
21168
 
@@ -25724,13 +25760,13 @@ var QRating = createComponent({
25724
25760
  case 37: // LEFT ARROW
25725
25761
  case 40: // DOWN ARROW
25726
25762
  if (iconRefs[ `rt${ i - 1 }` ]) {
25727
- iconRefs[ `rt${ i - 1 }` ].$el.focus();
25763
+ iconRefs[ `rt${ i - 1 }` ].focus();
25728
25764
  }
25729
25765
  return stopAndPrevent(e)
25730
25766
  case 39: // RIGHT ARROW
25731
25767
  case 38: // UP ARROW
25732
25768
  if (iconRefs[ `rt${ i + 1 }` ]) {
25733
- iconRefs[ `rt${ i + 1 }` ].$el.focus();
25769
+ iconRefs[ `rt${ i + 1 }` ].focus();
25734
25770
  }
25735
25771
  return stopAndPrevent(e)
25736
25772
  }
@@ -25753,7 +25789,7 @@ var QRating = createComponent({
25753
25789
  child.push(
25754
25790
  h('div', {
25755
25791
  key: i,
25756
- ref: vm => { iconRefs[ `rt${ i }` ] = vm; },
25792
+ ref: el => { iconRefs[ `rt${ i }` ] = el; },
25757
25793
  class: 'q-rating__icon-container flex flex-center',
25758
25794
  ...attrs,
25759
25795
  onClick () { set(i); },
@@ -26298,12 +26334,16 @@ const setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.bod
26298
26334
  return
26299
26335
  }
26300
26336
 
26301
- cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
26337
+ if (contentEl._qOverflowAnimationFrame !== void 0) {
26338
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
26339
+ }
26340
+
26302
26341
  contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
26303
26342
  if (contentEl === null) {
26304
26343
  return
26305
26344
  }
26306
26345
 
26346
+ contentEl._qOverflowAnimationFrame = void 0;
26307
26347
  const children = contentEl.children || [];
26308
26348
 
26309
26349
  filterProto
@@ -39068,7 +39108,7 @@ const Plugin$2 = defineReactivePlugin({
39068
39108
 
39069
39109
  const el = createGlobalNode('q-loading');
39070
39110
 
39071
- app = createApp({
39111
+ app = createChildApp({
39072
39112
  name: 'QLoading',
39073
39113
 
39074
39114
  setup () {
@@ -39130,7 +39170,7 @@ const Plugin$2 = defineReactivePlugin({
39130
39170
  onAfterLeave
39131
39171
  }, getContent)
39132
39172
  }
39133
- });
39173
+ }, Plugin$2.__parentApp);
39134
39174
 
39135
39175
  vm = app.mount(el);
39136
39176
  }, props.delay);
@@ -39189,11 +39229,15 @@ const Plugin$2 = defineReactivePlugin({
39189
39229
  }
39190
39230
  },
39191
39231
 
39192
- install ({ $q }) {
39232
+ install ({ $q, parentApp }) {
39193
39233
  $q.loading = this;
39194
39234
 
39195
- if ($q.config.loading !== void 0) {
39196
- this.setDefaults($q.config.loading);
39235
+ {
39236
+ Plugin$2.__parentApp = parentApp;
39237
+
39238
+ if ($q.config.loading !== void 0) {
39239
+ this.setDefaults($q.config.loading);
39240
+ }
39197
39241
  }
39198
39242
  }
39199
39243
  });
@@ -40149,6 +40193,9 @@ function fallback (text) {
40149
40193
  area.contentEditable = 'true';
40150
40194
  area.style.position = 'fixed'; // avoid scrolling to bottom
40151
40195
 
40196
+ const fn = () => {};
40197
+ addFocusout(fn);
40198
+
40152
40199
  document.body.appendChild(area);
40153
40200
  area.focus();
40154
40201
  area.select();
@@ -40156,6 +40203,8 @@ function fallback (text) {
40156
40203
  const res = document.execCommand('copy');
40157
40204
 
40158
40205
  area.remove();
40206
+ removeFocusout(fn);
40207
+
40159
40208
  return res
40160
40209
  }
40161
40210
 
@@ -40540,7 +40589,7 @@ function runSequentialPromises (
40540
40589
  */
40541
40590
 
40542
40591
  const Quasar = {
40543
- version: '2.11.4',
40592
+ version: '2.11.5',
40544
40593
  install: installQuasar,
40545
40594
  lang: Plugin$8,
40546
40595
  iconSet: Plugin$7