quasar 2.6.3 → 2.6.6

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 (143) hide show
  1. package/dist/api/Notify.json +1 -1
  2. package/dist/api/QBreadcrumbsEl.json +1 -1
  3. package/dist/api/QBtn.json +1 -1
  4. package/dist/api/QBtnDropdown.json +1 -1
  5. package/dist/api/QDialog.json +12 -1
  6. package/dist/api/QExpansionItem.json +1 -1
  7. package/dist/api/QImg.json +23 -0
  8. package/dist/api/QItem.json +1 -1
  9. package/dist/api/QRouteTab.json +1 -1
  10. package/dist/api/QVideo.json +43 -0
  11. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  12. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  15. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  16. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  17. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  19. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  22. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  26. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  41. package/dist/icon-set/themify.umd.prod.js +1 -1
  42. package/dist/lang/ar-TN.umd.prod.js +1 -1
  43. package/dist/lang/ar.umd.prod.js +1 -1
  44. package/dist/lang/az-Latn.umd.prod.js +1 -1
  45. package/dist/lang/bg.umd.prod.js +1 -1
  46. package/dist/lang/bn.umd.prod.js +1 -1
  47. package/dist/lang/ca.umd.prod.js +1 -1
  48. package/dist/lang/cs.umd.prod.js +1 -1
  49. package/dist/lang/da.umd.prod.js +1 -1
  50. package/dist/lang/de.umd.prod.js +1 -1
  51. package/dist/lang/el.umd.prod.js +1 -1
  52. package/dist/lang/en-GB.umd.prod.js +1 -1
  53. package/dist/lang/en-US.umd.prod.js +1 -1
  54. package/dist/lang/eo.umd.prod.js +1 -1
  55. package/dist/lang/es.umd.prod.js +1 -1
  56. package/dist/lang/et.umd.prod.js +1 -1
  57. package/dist/lang/eu.umd.prod.js +1 -1
  58. package/dist/lang/fa-IR.umd.prod.js +1 -1
  59. package/dist/lang/fa.umd.prod.js +1 -1
  60. package/dist/lang/fi.umd.prod.js +1 -1
  61. package/dist/lang/fr.umd.prod.js +1 -1
  62. package/dist/lang/gn.umd.prod.js +1 -1
  63. package/dist/lang/he.umd.prod.js +1 -1
  64. package/dist/lang/hr.umd.prod.js +1 -1
  65. package/dist/lang/hu.umd.prod.js +1 -1
  66. package/dist/lang/id.umd.prod.js +1 -1
  67. package/dist/lang/is.umd.prod.js +1 -1
  68. package/dist/lang/it.umd.prod.js +1 -1
  69. package/dist/lang/ja.umd.prod.js +1 -1
  70. package/dist/lang/km.umd.prod.js +1 -1
  71. package/dist/lang/ko-KR.umd.prod.js +1 -1
  72. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  73. package/dist/lang/kz.umd.prod.js +1 -1
  74. package/dist/lang/lt.umd.prod.js +1 -1
  75. package/dist/lang/lu.umd.prod.js +1 -1
  76. package/dist/lang/lv.umd.prod.js +1 -1
  77. package/dist/lang/ml.umd.prod.js +1 -1
  78. package/dist/lang/ms.umd.prod.js +1 -1
  79. package/dist/lang/my.umd.prod.js +1 -1
  80. package/dist/lang/nb-NO.umd.prod.js +1 -1
  81. package/dist/lang/nl.umd.prod.js +1 -1
  82. package/dist/lang/pl.umd.prod.js +1 -1
  83. package/dist/lang/pt-BR.umd.prod.js +1 -1
  84. package/dist/lang/pt.umd.prod.js +1 -1
  85. package/dist/lang/ro.umd.prod.js +1 -1
  86. package/dist/lang/ru.umd.prod.js +1 -1
  87. package/dist/lang/sk.umd.prod.js +1 -1
  88. package/dist/lang/sl.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/vi.umd.prod.js +1 -1
  98. package/dist/lang/zh-CN.umd.prod.js +1 -1
  99. package/dist/lang/zh-TW.umd.prod.js +1 -1
  100. package/dist/quasar.cjs.prod.js +2 -2
  101. package/dist/quasar.css +7 -4
  102. package/dist/quasar.esm.prod.js +2 -2
  103. package/dist/quasar.prod.css +1 -1
  104. package/dist/quasar.rtl.css +13 -10
  105. package/dist/quasar.rtl.prod.css +1 -1
  106. package/dist/quasar.sass +7 -5
  107. package/dist/quasar.umd.js +100 -53
  108. package/dist/quasar.umd.prod.js +2 -2
  109. package/dist/types/api/qnotify.d.ts +0 -1
  110. package/dist/types/api/validation.d.ts +1 -1
  111. package/dist/types/index.d.ts +43 -4
  112. package/dist/vetur/quasar-attributes.json +16 -0
  113. package/dist/vetur/quasar-tags.json +5 -1
  114. package/dist/web-types/web-types.json +48 -8
  115. package/package.json +1 -3
  116. package/src/components/btn/use-btn.json +1 -1
  117. package/src/components/dialog/QDialog.js +7 -7
  118. package/src/components/dialog/QDialog.json +10 -1
  119. package/src/components/dialog/QDialog.sass +2 -2
  120. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  121. package/src/components/editor/QEditor.js +10 -4
  122. package/src/components/icon/QIcon.js +1 -1
  123. package/src/components/img/QImg.js +5 -0
  124. package/src/components/img/QImg.json +19 -1
  125. package/src/components/menu/QMenu.js +2 -1
  126. package/src/components/table/QTable.js +1 -1
  127. package/src/components/tooltip/QTooltip.js +2 -1
  128. package/src/components/tree/QTree.sass +1 -1
  129. package/src/components/video/QVideo.js +17 -1
  130. package/src/components/video/QVideo.json +36 -0
  131. package/src/components/virtual-scroll/QVirtualScroll.sass +4 -1
  132. package/src/components/virtual-scroll/use-virtual-scroll.js +19 -21
  133. package/src/composables/private/use-portal.js +15 -2
  134. package/src/composables/private/use-router-link.json +1 -1
  135. package/src/history.js +2 -2
  136. package/src/plugins/Notify.json +1 -1
  137. package/src/utils/copy-to-clipboard.js +1 -1
  138. package/src/utils/patterns.js +8 -0
  139. package/src/utils/private/date-persian.js +0 -9
  140. package/src/utils/private/position-engine.js +0 -5
  141. package/src/utils/private/sort.js +0 -11
  142. package/src/utils/private/web-storage.js +1 -1
  143. package/src/utils/uid.js +1 -1
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.6.3
2
+ * Quasar Framework v2.6.6
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1851,8 +1851,8 @@ body.desktop .q-chip--clickable:focus
1851
1851
  max-height: 100vh
1852
1852
  max-width: 100vw
1853
1853
  border-radius: 0 !important
1854
- top: 0px !important
1855
- left: 0px !important
1854
+ top: 0 !important
1855
+ left: 0 !important
1856
1856
  &--top, &--bottom
1857
1857
  padding-top: 0 !important
1858
1858
  padding-bottom: 0 !important
@@ -4953,9 +4953,9 @@ body.desktop
4953
4953
  &__arrow,
4954
4954
  &__spinner
4955
4955
  font-size: 16px
4956
+ margin-right: 4px
4956
4957
  &__arrow
4957
4958
  transition: transform .3s
4958
- margin-right: 4px
4959
4959
  &--rotate
4960
4960
  transform: rotate3d(0, 0, 1, 90deg)
4961
4961
  &__tickbox
@@ -5151,8 +5151,10 @@ img.responsive
5151
5151
  &__content
5152
5152
  outline: none
5153
5153
  contain: content
5154
- *
5154
+ > *
5155
5155
  overflow-anchor: none
5156
+ > [data-q-vs-anchor]
5157
+ overflow-anchor: auto
5156
5158
  &__padding
5157
5159
  background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0) 20%, rgba(128, 128, 128, .03) 20%, rgba(128, 128, 128, .08) 50%, rgba(128, 128, 128, .03) 80%, rgba(255,255,255,0) 80%, rgba(255,255,255,0)) #{"/* rtl:ignore */"}
5158
5160
  background-size: var(--q-virtual-scroll-item-width, 100%) var(--q-virtual-scroll-item-height, 50px) #{"/* rtl:ignore */"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.6.3
2
+ * Quasar Framework v2.6.6
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -837,9 +837,9 @@
837
837
  }
838
838
 
839
839
  function normalizeExitPath (path) {
840
- path.startsWith('#') === true && (path = path.substr(1));
840
+ path.startsWith('#') === true && (path = path.substring(1));
841
841
  path.startsWith('/') === false && (path = '/' + path);
842
- path.endsWith('/') === true && (path = path.substr(0, path.length - 1));
842
+ path.endsWith('/') === true && (path = path.substring(0, path.length - 1));
843
843
  return '#' + path
844
844
  }
845
845
 
@@ -1603,7 +1603,7 @@
1603
1603
  }
1604
1604
 
1605
1605
  var installQuasar = function (parentApp, opts = {}) {
1606
- const $q = { version: '2.6.3' };
1606
+ const $q = { version: '2.6.6' };
1607
1607
 
1608
1608
  if (globalConfigIsFrozen === false) {
1609
1609
  if (opts.config !== void 0) {
@@ -2163,7 +2163,7 @@
2163
2163
  cls = icon;
2164
2164
  }
2165
2165
  else if (ionRE.test(icon) === true) {
2166
- cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substr(3) }`;
2166
+ cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`;
2167
2167
  }
2168
2168
  else {
2169
2169
  // "notranslate" class is for Google Translate
@@ -4386,8 +4386,12 @@
4386
4386
  // You MUST specify "inheritAttrs: false" in your component
4387
4387
 
4388
4388
  function usePortal (vm, innerRef, renderPortalContent, checkGlobalDialog) {
4389
+ // showing, including while in show/hide transition
4389
4390
  const portalIsActive = vue.ref(false);
4390
4391
 
4392
+ // showing & not in any show/hide transition
4393
+ const portalIsAccessible = vue.ref(false);
4394
+
4391
4395
  let portalEl = null;
4392
4396
  const focusObj = {};
4393
4397
  const onGlobalDialog = checkGlobalDialog === true && isOnGlobalDialog(vm);
@@ -4395,9 +4399,12 @@
4395
4399
  function showPortal (isReady) {
4396
4400
  if (isReady === true) {
4397
4401
  removeFocusWaitFlag(focusObj);
4402
+ portalIsAccessible.value = true;
4398
4403
  return
4399
4404
  }
4400
4405
 
4406
+ portalIsAccessible.value = false;
4407
+
4401
4408
  if (portalIsActive.value === false) {
4402
4409
  if (onGlobalDialog === false && portalEl === null) {
4403
4410
  portalEl = createGlobalNode();
@@ -4412,7 +4419,11 @@
4412
4419
  }
4413
4420
  }
4414
4421
 
4415
- function hidePortal () {
4422
+ function hidePortal (isReady) {
4423
+ portalIsAccessible.value = false;
4424
+
4425
+ if (isReady !== true) { return }
4426
+
4416
4427
  removeFocusWaitFlag(focusObj);
4417
4428
  portalIsActive.value = false;
4418
4429
 
@@ -4428,7 +4439,7 @@
4428
4439
  }
4429
4440
  }
4430
4441
 
4431
- vue.onUnmounted(hidePortal);
4442
+ vue.onUnmounted(() => { hidePortal(true); });
4432
4443
 
4433
4444
  // expose publicly needed stuff for portal utils
4434
4445
  Object.assign(vm.proxy, { __qPortalInnerRef: innerRef });
@@ -4438,6 +4449,7 @@
4438
4449
  hidePortal,
4439
4450
 
4440
4451
  portalIsActive,
4452
+ portalIsAccessible,
4441
4453
 
4442
4454
  renderPortal: () => (
4443
4455
  onGlobalDialog === true
@@ -5352,6 +5364,7 @@
5352
5364
  function handleHide (evt) {
5353
5365
  removeTick();
5354
5366
  removeTimeout();
5367
+ hidePortal();
5355
5368
 
5356
5369
  anchorCleanup(true);
5357
5370
 
@@ -5369,7 +5382,7 @@
5369
5382
  }
5370
5383
 
5371
5384
  registerTimeout(() => {
5372
- hidePortal();
5385
+ hidePortal(true); // done hiding, now destroy
5373
5386
  emit('hide', evt);
5374
5387
  }, props.transitionDuration);
5375
5388
  }
@@ -10126,6 +10139,14 @@
10126
10139
  fulltime: v => /^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(v),
10127
10140
  timeOrFulltime: v => /^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/.test(v),
10128
10141
 
10142
+ // -- RFC 5322 --
10143
+ // -- Added in v2.6.6 --
10144
+ // This is a basic helper validation.
10145
+ // For something more complex (like RFC 822) you should write and use your own rule.
10146
+ // We won't be accepting PRs to enhance the one below because of the reason above.
10147
+ // eslint-disable-next-line
10148
+ email: v => /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(v),
10149
+
10129
10150
  hexColor: v => hex.test(v),
10130
10151
  hexaColor: v => hexa.test(v),
10131
10152
  hexOrHexaColor: v => hexOrHexa.test(v),
@@ -14398,7 +14419,7 @@
14398
14419
  const { registerTimeout, removeTimeout } = useTimeout();
14399
14420
  const { registerTick, removeTick } = useTick();
14400
14421
 
14401
- const { showPortal, hidePortal, portalIsActive, renderPortal } = usePortal(
14422
+ const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(
14402
14423
  vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true
14403
14424
  );
14404
14425
 
@@ -14537,6 +14558,7 @@
14537
14558
  removeFromHistory();
14538
14559
  cleanup(true);
14539
14560
  animating.value = true;
14561
+ hidePortal();
14540
14562
 
14541
14563
  if (refocusTarget !== null) {
14542
14564
  refocusTarget.focus();
@@ -14544,13 +14566,13 @@
14544
14566
  }
14545
14567
 
14546
14568
  registerTimeout(() => {
14547
- hidePortal();
14569
+ hidePortal(true); // done hiding, now destroy
14548
14570
  animating.value = false;
14549
14571
  emit('hide', evt);
14550
14572
  }, props.transitionDuration);
14551
14573
  }
14552
14574
 
14553
- function focus () {
14575
+ function focus (selector) {
14554
14576
  addFocusFn(() => {
14555
14577
  let node = innerRef.value;
14556
14578
 
@@ -14558,7 +14580,7 @@
14558
14580
  return
14559
14581
  }
14560
14582
 
14561
- node = node.querySelector('[autofocus], [data-autofocus]') || node;
14583
+ node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node;
14562
14584
  node.focus({ preventScroll: true });
14563
14585
  });
14564
14586
  }
@@ -14652,11 +14674,10 @@
14652
14674
  function onFocusChange (evt) {
14653
14675
  // the focus is not in a vue child component
14654
14676
  if (
14655
- showing.value === true
14656
- && portalIsActive.value === true
14677
+ portalIsAccessible.value === true
14657
14678
  && childHasFocus(innerRef.value, evt.target) !== true
14658
14679
  ) {
14659
- focus();
14680
+ focus('[tabindex]:not([tabindex="-1"])');
14660
14681
  }
14661
14682
  }
14662
14683
 
@@ -15918,11 +15939,12 @@
15918
15939
  function handleHide (evt) {
15919
15940
  removeTick();
15920
15941
  removeTimeout();
15942
+ hidePortal();
15921
15943
 
15922
15944
  anchorCleanup();
15923
15945
 
15924
15946
  registerTimeout(() => {
15925
- hidePortal();
15947
+ hidePortal(true); // done hiding, now destroy
15926
15948
  emit('hide', evt);
15927
15949
  }, props.transitionDuration);
15928
15950
  }
@@ -16975,11 +16997,14 @@
16975
16997
  }
16976
16998
 
16977
16999
  function onFocusin (e) {
17000
+ const root = rootRef.value;
17001
+
16978
17002
  if (
16979
- rootRef.value.contains(e.target) === true
17003
+ root !== null
17004
+ && root.contains(e.target) === true
16980
17005
  && (
16981
17006
  e.relatedTarget === null
16982
- || rootRef.value.contains(e.relatedTarget) !== true
17007
+ || root.contains(e.relatedTarget) !== true
16983
17008
  )
16984
17009
  ) {
16985
17010
  const prop = `inner${ isViewingSource.value === true ? 'Text' : 'HTML' }`;
@@ -16989,11 +17014,14 @@
16989
17014
  }
16990
17015
 
16991
17016
  function onFocusout (e) {
17017
+ const root = rootRef.value;
17018
+
16992
17019
  if (
16993
- rootRef.value.contains(e.target) === true
17020
+ root !== null
17021
+ && root.contains(e.target) === true
16994
17022
  && (
16995
17023
  e.relatedTarget === null
16996
- || rootRef.value.contains(e.relatedTarget) !== true
17024
+ || root.contains(e.relatedTarget) !== true
16997
17025
  )
16998
17026
  ) {
16999
17027
  eVm.caret.savePosition();
@@ -17387,7 +17415,7 @@
17387
17415
 
17388
17416
  // Pre-calculate toString(16) for speed
17389
17417
  for (let i = 0; i < 256; i++) {
17390
- hexBytes[ i ] = (i + 0x100).toString(16).substr(1);
17418
+ hexBytes[ i ] = (i + 0x100).toString(16).substring(1);
17391
17419
  }
17392
17420
 
17393
17421
  // Use best available PRNG
@@ -18178,7 +18206,7 @@
18178
18206
  function fallback (text) {
18179
18207
  const area = document.createElement('textarea');
18180
18208
  area.value = text;
18181
- area.contentEditable = true;
18209
+ area.contentEditable = 'true';
18182
18210
  area.style.position = 'fixed'; // avoid scrolling to bottom
18183
18211
 
18184
18212
  document.body.appendChild(area);
@@ -19258,7 +19286,7 @@
19258
19286
  return getComputedStyle(element).getPropertyValue(`--q-${ propName }`).trim() || null
19259
19287
  }
19260
19288
 
19261
- let id$1 = 0;
19289
+ let id = 0;
19262
19290
  let offsetBase = void 0;
19263
19291
 
19264
19292
  function getAbsolutePosition (el, resize) {
@@ -19986,7 +20014,7 @@
19986
20014
  };
19987
20015
  }
19988
20016
  else {
19989
- const qAnimId = `q-morph-anim-${ ++id$1 }`;
20017
+ const qAnimId = `q-morph-anim-${ ++id }`;
19990
20018
  const style = document.createElement('style');
19991
20019
  const resizeFrom = options.resize === true
19992
20020
  ? `
@@ -22092,6 +22120,10 @@
22092
22120
  type: String,
22093
22121
  default: 'lazy'
22094
22122
  },
22123
+ fetchpriority: {
22124
+ type: String,
22125
+ default: 'auto'
22126
+ },
22095
22127
  width: String,
22096
22128
  height: String,
22097
22129
  initialRatio: {
@@ -22254,6 +22286,7 @@
22254
22286
  height: props.height,
22255
22287
  width: props.width,
22256
22288
  loading: props.loading,
22289
+ fetchpriority: props.fetchpriority,
22257
22290
  'aria-hidden': 'true',
22258
22291
  draggable: props.draggable,
22259
22292
  ...img
@@ -27452,27 +27485,30 @@
27452
27485
  'end-force'
27453
27486
  ];
27454
27487
 
27455
- let id = 1;
27456
27488
  const filterProto = Array.prototype.filter;
27457
27489
 
27458
27490
  const setOverflowAnchor = window.getComputedStyle(document.body).overflowAnchor === void 0
27459
27491
  ? noop
27460
- : function (id, index) {
27461
- const ssId = id + '_ss';
27492
+ : function (contentEl, index) {
27493
+ requestAnimationFrame(() => {
27494
+ if (contentEl === void 0) {
27495
+ return
27496
+ }
27462
27497
 
27463
- let styleSheet = document.getElementById(ssId);
27498
+ const children = contentEl.children || [];
27464
27499
 
27465
- if (styleSheet === null) {
27466
- styleSheet = document.createElement('style');
27467
- styleSheet.type = 'text/css';
27468
- styleSheet.id = ssId;
27469
- document.head.appendChild(styleSheet);
27470
- }
27500
+ filterProto
27501
+ .call(children, el => el.dataset && el.dataset.qVsAnchor !== void 0)
27502
+ .forEach(el => {
27503
+ delete el.dataset.qVsAnchor;
27504
+ });
27471
27505
 
27472
- if (styleSheet.qChildIndex !== index) {
27473
- styleSheet.qChildIndex = index;
27474
- styleSheet.innerHTML = `#${ id } > *:nth-child(${ index }) { overflow-anchor: auto }`;
27475
- }
27506
+ const el = children[ index ];
27507
+
27508
+ if (el && el.dataset) {
27509
+ el.dataset.qVsAnchor = '';
27510
+ }
27511
+ });
27476
27512
  };
27477
27513
 
27478
27514
  function sumFn (acc, h) {
@@ -27668,8 +27704,6 @@
27668
27704
 
27669
27705
  let prevScrollStart, prevToIndex, localScrollViewSize, virtualScrollSizesAgg = [], virtualScrollSizes;
27670
27706
 
27671
- const vsId = 'qvs_' + id++;
27672
-
27673
27707
  const virtualScrollPaddingBefore = vue.ref(0);
27674
27708
  const virtualScrollPaddingAfter = vue.ref(0);
27675
27709
  const virtualScrollSliceSizeComputed = vue.ref({});
@@ -27855,7 +27889,7 @@
27855
27889
  });
27856
27890
  }
27857
27891
 
27858
- setOverflowAnchor(vsId, toIndex - from + 1);
27892
+ setOverflowAnchor(contentEl, toIndex - from);
27859
27893
 
27860
27894
  const sizeBefore = alignEnd !== void 0 ? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0;
27861
27895
 
@@ -28081,7 +28115,6 @@
28081
28115
  class: 'q-virtual-scroll__content',
28082
28116
  key: 'content',
28083
28117
  ref: contentRef,
28084
- id: vsId,
28085
28118
  tabindex: -1
28086
28119
  }, content.flat()),
28087
28120
 
@@ -28155,9 +28188,7 @@
28155
28188
  }
28156
28189
  });
28157
28190
 
28158
- setOverflowAnchor !== noop && vue.onBeforeUnmount(() => {
28159
- const styleSheet = document.getElementById(vsId + '_ss');
28160
- styleSheet !== null && styleSheet.remove();
28191
+ vue.onBeforeUnmount(() => {
28161
28192
  onVirtualScrollEvt.cancel();
28162
28193
  });
28163
28194
 
@@ -34374,7 +34405,7 @@
34374
34405
 
34375
34406
  return vue.h('div', {
34376
34407
  class: 'q-table__grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3'
34377
- + (scope.selected === true ? 'q-table__grid-item--selected' : '')
34408
+ + (scope.selected === true ? ' q-table__grid-item--selected' : '')
34378
34409
  }, [
34379
34410
  vue.h('div', data, child)
34380
34411
  ])
@@ -36594,7 +36625,20 @@
36594
36625
  required: true
36595
36626
  },
36596
36627
 
36597
- title: String
36628
+ title: String,
36629
+
36630
+ fetchpriority: {
36631
+ type: String,
36632
+ default: 'auto'
36633
+ },
36634
+ loading: {
36635
+ type: String,
36636
+ default: 'eager'
36637
+ },
36638
+ referrerpolicy: {
36639
+ type: String,
36640
+ default: 'strict-origin-when-cross-origin'
36641
+ }
36598
36642
  },
36599
36643
 
36600
36644
  setup (props) {
@@ -36612,6 +36656,9 @@
36612
36656
  vue.h('iframe', {
36613
36657
  src: props.src,
36614
36658
  title: props.title,
36659
+ fetchpriority: props.fetchpriority,
36660
+ loading: props.loading,
36661
+ referrerpolicy: props.referrerpolicy,
36615
36662
  frameborder: '0',
36616
36663
  allowfullscreen: true
36617
36664
  })
@@ -38540,14 +38587,14 @@
38540
38587
  function getButtons () {
38541
38588
  const child = [];
38542
38589
 
38543
- props.ok && child.push(
38544
- vue.h(QBtn, okProps.value)
38545
- );
38546
-
38547
38590
  props.cancel && child.push(
38548
38591
  vue.h(QBtn, cancelProps.value)
38549
38592
  );
38550
38593
 
38594
+ props.ok && child.push(
38595
+ vue.h(QBtn, okProps.value)
38596
+ );
38597
+
38551
38598
  return vue.h(QCardActions, {
38552
38599
  class: props.stackButtons === true ? 'items-end' : '',
38553
38600
  vertical: props.stackButtons,
@@ -39392,7 +39439,7 @@
39392
39439
  return value
39393
39440
  }
39394
39441
 
39395
- const type = value.substr(0, 8);
39442
+ const type = value.substring(0, 8);
39396
39443
  const source = value.substring(9);
39397
39444
 
39398
39445
  switch (type) {
@@ -39628,7 +39675,7 @@
39628
39675
  });
39629
39676
 
39630
39677
  var index_umd = {
39631
- version: '2.6.3',
39678
+ version: '2.6.6',
39632
39679
  install (app, opts) {
39633
39680
  installQuasar(app, {
39634
39681
  components,