quasar 2.11.1 → 2.11.2

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 (118) 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 +2 -2
  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 +2 -2
  31. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +2 -2
  32. package/dist/icon-set/svg-material-icons.umd.prod.js +2 -2
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  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 +2 -2
  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 +8 -3
  104. package/dist/quasar.esm.js +73 -64
  105. package/dist/quasar.esm.prod.js +2 -2
  106. package/dist/quasar.prod.css +1 -1
  107. package/dist/quasar.rtl.css +9 -3
  108. package/dist/quasar.rtl.prod.css +1 -1
  109. package/dist/quasar.sass +8 -3
  110. package/dist/quasar.umd.js +73 -64
  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/body.js +34 -4
  115. package/src/components/tabs/QTabs.js +35 -57
  116. package/src/components/tabs/QTabs.sass +5 -1
  117. package/src/css/core/mouse.sass +3 -1
  118. package/src/plugins/Platform.js +1 -1
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.11.1
2
+ * Quasar Framework v2.11.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -4406,7 +4406,11 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4406
4406
  &.q-tabs__arrows--inside
4407
4407
  .q-tabs__arrow--faded
4408
4408
  display: none
4409
- &--not-scrollable
4409
+ &--not-scrollable,
4410
+ body.mobile &--scrollable.q-tabs--mobile-without-arrows
4411
+ &.q-tabs__arrows--outside
4412
+ padding-left: 0
4413
+ padding-right: 0
4410
4414
  .q-tabs__arrow
4411
4415
  display: none
4412
4416
  .q-tabs__content
@@ -7003,7 +7007,8 @@ img.responsive
7003
7007
  height: auto
7004
7008
  .non-selectable
7005
7009
  user-select: none !important
7006
- .scroll
7010
+ .scroll,
7011
+ body.mobile .scroll--mobile
7007
7012
  overflow: auto
7008
7013
  .scroll, .scroll-x, .scroll-y
7009
7014
  -webkit-overflow-scrolling: touch
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.11.1
2
+ * Quasar Framework v2.11.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -318,8 +318,8 @@
318
318
  // the rest of the props; we also avoid
319
319
  // hydration errors
320
320
  opts.onSSRHydrated.push(() => {
321
- isRuntimeSsrPreHydration.value = false;
322
321
  Object.assign($q.platform, client);
322
+ isRuntimeSsrPreHydration.value = false;
323
323
  iosCorrection = void 0;
324
324
  });
325
325
 
@@ -1174,21 +1174,51 @@
1174
1174
  }
1175
1175
 
1176
1176
  function applyClientSsrCorrections () {
1177
+ const { is } = client;
1177
1178
  const classes = document.body.className;
1178
- let newCls = classes;
1179
+
1180
+ const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '));
1179
1181
 
1180
1182
  if (iosCorrection !== void 0) {
1181
- newCls = newCls.replace('desktop', 'platform-ios mobile');
1183
+ classList.delete('desktop');
1184
+ classList.add('platform-ios');
1185
+ classList.add('mobile');
1186
+ }
1187
+ // else: is it SSG?
1188
+ else if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {
1189
+ if (is.desktop === true) {
1190
+ classList.delete('mobile');
1191
+ classList.delete('platform-ios');
1192
+ classList.delete('platform-android');
1193
+ classList.add('desktop');
1194
+ }
1195
+ else if (is.mobile === true) {
1196
+ classList.delete('desktop');
1197
+ classList.add('mobile');
1198
+
1199
+ const mobile = getMobilePlatform(is);
1200
+ if (mobile !== void 0) {
1201
+ classList.add(`platform-${ mobile }`);
1202
+ classList.delete(`platform-${ mobile === 'ios' ? 'android' : 'ios' }`);
1203
+ }
1204
+ else {
1205
+ classList.delete('platform-ios');
1206
+ classList.delete('platform-android');
1207
+ }
1208
+ }
1182
1209
  }
1183
1210
 
1184
1211
  if (client.has.touch === true) {
1185
- newCls = newCls.replace('no-touch', 'touch');
1212
+ classList.delete('no-touch');
1213
+ classList.add('touch');
1186
1214
  }
1187
1215
 
1188
1216
  if (client.within.iframe === true) {
1189
- newCls += ' within-iframe';
1217
+ classList.add('within-iframe');
1190
1218
  }
1191
1219
 
1220
+ const newCls = Array.from(classList).join(' ');
1221
+
1192
1222
  if (classes !== newCls) {
1193
1223
  document.body.className = newCls;
1194
1224
  }
@@ -1612,7 +1642,7 @@
1612
1642
  }
1613
1643
 
1614
1644
  var installQuasar = function (parentApp, opts = {}) {
1615
- const $q = { version: '2.11.1' };
1645
+ const $q = { version: '2.11.2' };
1616
1646
 
1617
1647
  if (globalConfigIsFrozen === false) {
1618
1648
  if (opts.config !== void 0) {
@@ -9570,18 +9600,11 @@
9570
9600
  const rightArrow = vue.ref(false);
9571
9601
  const justify = vue.ref(false);
9572
9602
 
9573
- const arrowsEnabled = vue.computed(() =>
9574
- $q.platform.is.desktop === true || props.mobileArrows === true
9575
- );
9576
-
9577
9603
  const tabDataList = [];
9578
9604
  const tabDataListLen = vue.ref(0);
9579
9605
  const hasFocus = vue.ref(false);
9580
9606
 
9581
9607
  let animateTimer, scrollTimer, unwatchRoute;
9582
- let localUpdateArrows = arrowsEnabled.value === true
9583
- ? updateArrowsFn
9584
- : noop;
9585
9608
 
9586
9609
  const tabProps = vue.computed(() => ({
9587
9610
  activeClass: props.activeClass,
@@ -9622,17 +9645,17 @@
9622
9645
  'q-tabs row no-wrap items-center'
9623
9646
  + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`
9624
9647
  + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`
9625
- + ` q-tabs__arrows--${ arrowsEnabled.value === true && props.outsideArrows === true ? 'outside' : 'inside' }`
9648
+ + ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`
9649
+ + ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`
9626
9650
  + (props.dense === true ? ' q-tabs--dense' : '')
9627
9651
  + (props.shrink === true ? ' col-shrink' : '')
9628
9652
  + (props.stretch === true ? ' self-stretch' : '')
9629
9653
  );
9630
9654
 
9631
9655
  const innerClass = vue.computed(() =>
9632
- 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position '
9656
+ 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '
9633
9657
  + alignClass.value
9634
9658
  + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')
9635
- + ($q.platform.is.mobile === true ? ' scroll' : '')
9636
9659
  );
9637
9660
 
9638
9661
  const domProps = vue.computed(() => (
@@ -9644,25 +9667,15 @@
9644
9667
  const isRTL = vue.computed(() => props.vertical !== true && $q.lang.rtl === true);
9645
9668
  const rtlPosCorrection = vue.computed(() => rtlHasScrollBug === false && isRTL.value === true);
9646
9669
 
9647
- vue.watch(isRTL, localUpdateArrows);
9670
+ vue.watch(isRTL, updateArrows);
9648
9671
 
9649
9672
  vue.watch(() => props.modelValue, name => {
9650
9673
  updateModel({ name, setCurrent: true, skipEmit: true });
9651
9674
  });
9652
9675
 
9653
- vue.watch(() => props.outsideArrows, () => {
9654
- recalculateScroll();
9655
- });
9676
+ vue.watch(() => props.outsideArrows, recalculateScroll);
9656
9677
 
9657
- vue.watch(arrowsEnabled, v => {
9658
- localUpdateArrows = v === true
9659
- ? updateArrowsFn
9660
- : noop;
9661
-
9662
- recalculateScroll();
9663
- });
9664
-
9665
- function updateModel ({ name, setCurrent, skipEmit, fromRoute }) {
9678
+ function updateModel ({ name, setCurrent, skipEmit }) {
9666
9679
  if (currentModel.value !== name) {
9667
9680
  if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
9668
9681
  emit('update:modelValue', name);
@@ -9708,7 +9721,7 @@
9708
9721
  scrollable.value = scroll;
9709
9722
 
9710
9723
  // Arrows need to be updated even if the scroll status was already true
9711
- scroll === true && registerUpdateArrowsTick(localUpdateArrows);
9724
+ scroll === true && registerUpdateArrowsTick(updateArrows);
9712
9725
 
9713
9726
  justify.value = size < parseInt(props.breakpoint, 10);
9714
9727
  }
@@ -9765,34 +9778,34 @@
9765
9778
 
9766
9779
  if (offset < 0) {
9767
9780
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset);
9768
- localUpdateArrows();
9781
+ updateArrows();
9769
9782
  return
9770
9783
  }
9771
9784
 
9772
9785
  offset += props.vertical === true ? newPos.height - height : newPos.width - width;
9773
9786
  if (offset > 0) {
9774
9787
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset);
9775
- localUpdateArrows();
9788
+ updateArrows();
9776
9789
  }
9777
9790
  }
9778
9791
 
9779
- function updateArrowsFn () {
9792
+ function updateArrows () {
9780
9793
  const content = contentRef.value;
9781
- if (content !== null) {
9782
- const
9783
- rect = content.getBoundingClientRect(),
9784
- pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9794
+ if (content === null) { return }
9785
9795
 
9786
- if (isRTL.value === true) {
9787
- leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9788
- rightArrow.value = pos > 0;
9789
- }
9790
- else {
9791
- leftArrow.value = pos > 0;
9792
- rightArrow.value = props.vertical === true
9793
- ? Math.ceil(pos + rect.height) < content.scrollHeight
9794
- : Math.ceil(pos + rect.width) < content.scrollWidth;
9795
- }
9796
+ const
9797
+ rect = content.getBoundingClientRect(),
9798
+ pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9799
+
9800
+ if (isRTL.value === true) {
9801
+ leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9802
+ rightArrow.value = pos > 0;
9803
+ }
9804
+ else {
9805
+ leftArrow.value = pos > 0;
9806
+ rightArrow.value = props.vertical === true
9807
+ ? Math.ceil(pos + rect.height) < content.scrollHeight
9808
+ : Math.ceil(pos + rect.width) < content.scrollWidth;
9796
9809
  }
9797
9810
  }
9798
9811
 
@@ -9894,7 +9907,7 @@
9894
9907
  }
9895
9908
 
9896
9909
  set(content, pos);
9897
- localUpdateArrows();
9910
+ updateArrows();
9898
9911
 
9899
9912
  return done
9900
9913
  }
@@ -10138,17 +10151,21 @@
10138
10151
  });
10139
10152
 
10140
10153
  return () => {
10141
- const child = [
10154
+ return vue.h('div', {
10155
+ ref: rootRef,
10156
+ class: classes.value,
10157
+ role: 'tablist',
10158
+ onFocusin,
10159
+ onFocusout
10160
+ }, [
10142
10161
  vue.h(QResizeObserver, { onResize: updateContainer }),
10143
10162
 
10144
10163
  vue.h('div', {
10145
10164
  ref: contentRef,
10146
10165
  class: innerClass.value,
10147
- onScroll: localUpdateArrows
10148
- }, hSlot(slots.default))
10149
- ];
10166
+ onScroll: updateArrows
10167
+ }, hSlot(slots.default)),
10150
10168
 
10151
- arrowsEnabled.value === true && child.push(
10152
10169
  vue.h(QIcon, {
10153
10170
  class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'
10154
10171
  + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
@@ -10170,15 +10187,7 @@
10170
10187
  onMouseleavePassive: stopAnimScroll,
10171
10188
  onTouchendPassive: stopAnimScroll
10172
10189
  })
10173
- );
10174
-
10175
- return vue.h('div', {
10176
- ref: rootRef,
10177
- class: classes.value,
10178
- role: 'tablist',
10179
- onFocusin,
10180
- onFocusout
10181
- }, child)
10190
+ ])
10182
10191
  }
10183
10192
  }
10184
10193
  });
@@ -40511,7 +40520,7 @@
40511
40520
  */
40512
40521
 
40513
40522
  var index_umd = {
40514
- version: '2.11.1',
40523
+ version: '2.11.2',
40515
40524
  install (app, opts) {
40516
40525
  installQuasar(app, {
40517
40526
  components,