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.css CHANGED
@@ -4898,10 +4898,14 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4898
4898
  .q-tabs--scrollable.q-tabs__arrows--inside .q-tabs__arrow--faded {
4899
4899
  display: none;
4900
4900
  }
4901
- .q-tabs--not-scrollable .q-tabs__arrow {
4901
+ .q-tabs--not-scrollable.q-tabs__arrows--outside, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows.q-tabs__arrows--outside {
4902
+ padding-left: 0;
4903
+ padding-right: 0;
4904
+ }
4905
+ .q-tabs--not-scrollable .q-tabs__arrow, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__arrow {
4902
4906
  display: none;
4903
4907
  }
4904
- .q-tabs--not-scrollable .q-tabs__content {
4908
+ .q-tabs--not-scrollable .q-tabs__content, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__content {
4905
4909
  border-radius: inherit;
4906
4910
  }
4907
4911
  .q-tabs__arrow {
@@ -10500,7 +10504,8 @@ img.responsive {
10500
10504
  user-select: none !important;
10501
10505
  }
10502
10506
 
10503
- .scroll {
10507
+ .scroll,
10508
+ body.mobile .scroll--mobile {
10504
10509
  overflow: auto;
10505
10510
  }
10506
10511
 
@@ -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
  */
@@ -316,8 +316,8 @@ const Platform = {
316
316
  // the rest of the props; we also avoid
317
317
  // hydration errors
318
318
  opts.onSSRHydrated.push(() => {
319
- isRuntimeSsrPreHydration.value = false;
320
319
  Object.assign($q.platform, client);
320
+ isRuntimeSsrPreHydration.value = false;
321
321
  iosCorrection = void 0;
322
322
  });
323
323
 
@@ -1172,21 +1172,51 @@ function getBodyClasses ({ is, has, within }, cfg) {
1172
1172
  }
1173
1173
 
1174
1174
  function applyClientSsrCorrections () {
1175
+ const { is } = client;
1175
1176
  const classes = document.body.className;
1176
- let newCls = classes;
1177
+
1178
+ const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '));
1177
1179
 
1178
1180
  if (iosCorrection !== void 0) {
1179
- newCls = newCls.replace('desktop', 'platform-ios mobile');
1181
+ classList.delete('desktop');
1182
+ classList.add('platform-ios');
1183
+ classList.add('mobile');
1184
+ }
1185
+ // else: is it SSG?
1186
+ else if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {
1187
+ if (is.desktop === true) {
1188
+ classList.delete('mobile');
1189
+ classList.delete('platform-ios');
1190
+ classList.delete('platform-android');
1191
+ classList.add('desktop');
1192
+ }
1193
+ else if (is.mobile === true) {
1194
+ classList.delete('desktop');
1195
+ classList.add('mobile');
1196
+
1197
+ const mobile = getMobilePlatform(is);
1198
+ if (mobile !== void 0) {
1199
+ classList.add(`platform-${ mobile }`);
1200
+ classList.delete(`platform-${ mobile === 'ios' ? 'android' : 'ios' }`);
1201
+ }
1202
+ else {
1203
+ classList.delete('platform-ios');
1204
+ classList.delete('platform-android');
1205
+ }
1206
+ }
1180
1207
  }
1181
1208
 
1182
1209
  if (client.has.touch === true) {
1183
- newCls = newCls.replace('no-touch', 'touch');
1210
+ classList.delete('no-touch');
1211
+ classList.add('touch');
1184
1212
  }
1185
1213
 
1186
1214
  if (client.within.iframe === true) {
1187
- newCls += ' within-iframe';
1215
+ classList.add('within-iframe');
1188
1216
  }
1189
1217
 
1218
+ const newCls = Array.from(classList).join(' ');
1219
+
1190
1220
  if (classes !== newCls) {
1191
1221
  document.body.className = newCls;
1192
1222
  }
@@ -1610,7 +1640,7 @@ function prepareApp (app, uiOpts, pluginOpts) {
1610
1640
  }
1611
1641
 
1612
1642
  var installQuasar = function (parentApp, opts = {}) {
1613
- const $q = { version: '2.11.1' };
1643
+ const $q = { version: '2.11.2' };
1614
1644
 
1615
1645
  if (globalConfigIsFrozen === false) {
1616
1646
  if (opts.config !== void 0) {
@@ -9568,18 +9598,11 @@ var QTabs = createComponent({
9568
9598
  const rightArrow = ref(false);
9569
9599
  const justify = ref(false);
9570
9600
 
9571
- const arrowsEnabled = computed(() =>
9572
- $q.platform.is.desktop === true || props.mobileArrows === true
9573
- );
9574
-
9575
9601
  const tabDataList = [];
9576
9602
  const tabDataListLen = ref(0);
9577
9603
  const hasFocus = ref(false);
9578
9604
 
9579
9605
  let animateTimer, scrollTimer, unwatchRoute;
9580
- let localUpdateArrows = arrowsEnabled.value === true
9581
- ? updateArrowsFn
9582
- : noop;
9583
9606
 
9584
9607
  const tabProps = computed(() => ({
9585
9608
  activeClass: props.activeClass,
@@ -9620,17 +9643,17 @@ var QTabs = createComponent({
9620
9643
  'q-tabs row no-wrap items-center'
9621
9644
  + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`
9622
9645
  + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`
9623
- + ` q-tabs__arrows--${ arrowsEnabled.value === true && props.outsideArrows === true ? 'outside' : 'inside' }`
9646
+ + ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`
9647
+ + ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`
9624
9648
  + (props.dense === true ? ' q-tabs--dense' : '')
9625
9649
  + (props.shrink === true ? ' col-shrink' : '')
9626
9650
  + (props.stretch === true ? ' self-stretch' : '')
9627
9651
  );
9628
9652
 
9629
9653
  const innerClass = computed(() =>
9630
- 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position '
9654
+ 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '
9631
9655
  + alignClass.value
9632
9656
  + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')
9633
- + ($q.platform.is.mobile === true ? ' scroll' : '')
9634
9657
  );
9635
9658
 
9636
9659
  const domProps = computed(() => (
@@ -9642,25 +9665,15 @@ var QTabs = createComponent({
9642
9665
  const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true);
9643
9666
  const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true);
9644
9667
 
9645
- watch(isRTL, localUpdateArrows);
9668
+ watch(isRTL, updateArrows);
9646
9669
 
9647
9670
  watch(() => props.modelValue, name => {
9648
9671
  updateModel({ name, setCurrent: true, skipEmit: true });
9649
9672
  });
9650
9673
 
9651
- watch(() => props.outsideArrows, () => {
9652
- recalculateScroll();
9653
- });
9674
+ watch(() => props.outsideArrows, recalculateScroll);
9654
9675
 
9655
- watch(arrowsEnabled, v => {
9656
- localUpdateArrows = v === true
9657
- ? updateArrowsFn
9658
- : noop;
9659
-
9660
- recalculateScroll();
9661
- });
9662
-
9663
- function updateModel ({ name, setCurrent, skipEmit, fromRoute }) {
9676
+ function updateModel ({ name, setCurrent, skipEmit }) {
9664
9677
  if (currentModel.value !== name) {
9665
9678
  if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
9666
9679
  emit('update:modelValue', name);
@@ -9706,7 +9719,7 @@ var QTabs = createComponent({
9706
9719
  scrollable.value = scroll;
9707
9720
 
9708
9721
  // Arrows need to be updated even if the scroll status was already true
9709
- scroll === true && registerUpdateArrowsTick(localUpdateArrows);
9722
+ scroll === true && registerUpdateArrowsTick(updateArrows);
9710
9723
 
9711
9724
  justify.value = size < parseInt(props.breakpoint, 10);
9712
9725
  }
@@ -9763,34 +9776,34 @@ var QTabs = createComponent({
9763
9776
 
9764
9777
  if (offset < 0) {
9765
9778
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset);
9766
- localUpdateArrows();
9779
+ updateArrows();
9767
9780
  return
9768
9781
  }
9769
9782
 
9770
9783
  offset += props.vertical === true ? newPos.height - height : newPos.width - width;
9771
9784
  if (offset > 0) {
9772
9785
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset);
9773
- localUpdateArrows();
9786
+ updateArrows();
9774
9787
  }
9775
9788
  }
9776
9789
 
9777
- function updateArrowsFn () {
9790
+ function updateArrows () {
9778
9791
  const content = contentRef.value;
9779
- if (content !== null) {
9780
- const
9781
- rect = content.getBoundingClientRect(),
9782
- pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9792
+ if (content === null) { return }
9783
9793
 
9784
- if (isRTL.value === true) {
9785
- leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9786
- rightArrow.value = pos > 0;
9787
- }
9788
- else {
9789
- leftArrow.value = pos > 0;
9790
- rightArrow.value = props.vertical === true
9791
- ? Math.ceil(pos + rect.height) < content.scrollHeight
9792
- : Math.ceil(pos + rect.width) < content.scrollWidth;
9793
- }
9794
+ const
9795
+ rect = content.getBoundingClientRect(),
9796
+ pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9797
+
9798
+ if (isRTL.value === true) {
9799
+ leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9800
+ rightArrow.value = pos > 0;
9801
+ }
9802
+ else {
9803
+ leftArrow.value = pos > 0;
9804
+ rightArrow.value = props.vertical === true
9805
+ ? Math.ceil(pos + rect.height) < content.scrollHeight
9806
+ : Math.ceil(pos + rect.width) < content.scrollWidth;
9794
9807
  }
9795
9808
  }
9796
9809
 
@@ -9892,7 +9905,7 @@ var QTabs = createComponent({
9892
9905
  }
9893
9906
 
9894
9907
  set(content, pos);
9895
- localUpdateArrows();
9908
+ updateArrows();
9896
9909
 
9897
9910
  return done
9898
9911
  }
@@ -10136,17 +10149,21 @@ var QTabs = createComponent({
10136
10149
  });
10137
10150
 
10138
10151
  return () => {
10139
- const child = [
10152
+ return h('div', {
10153
+ ref: rootRef,
10154
+ class: classes.value,
10155
+ role: 'tablist',
10156
+ onFocusin,
10157
+ onFocusout
10158
+ }, [
10140
10159
  h(QResizeObserver, { onResize: updateContainer }),
10141
10160
 
10142
10161
  h('div', {
10143
10162
  ref: contentRef,
10144
10163
  class: innerClass.value,
10145
- onScroll: localUpdateArrows
10146
- }, hSlot(slots.default))
10147
- ];
10164
+ onScroll: updateArrows
10165
+ }, hSlot(slots.default)),
10148
10166
 
10149
- arrowsEnabled.value === true && child.push(
10150
10167
  h(QIcon, {
10151
10168
  class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'
10152
10169
  + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
@@ -10168,15 +10185,7 @@ var QTabs = createComponent({
10168
10185
  onMouseleavePassive: stopAnimScroll,
10169
10186
  onTouchendPassive: stopAnimScroll
10170
10187
  })
10171
- );
10172
-
10173
- return h('div', {
10174
- ref: rootRef,
10175
- class: classes.value,
10176
- role: 'tablist',
10177
- onFocusin,
10178
- onFocusout
10179
- }, child)
10188
+ ])
10180
10189
  }
10181
10190
  }
10182
10191
  });
@@ -40324,7 +40333,7 @@ function runSequentialPromises (
40324
40333
  */
40325
40334
 
40326
40335
  const Quasar = {
40327
- version: '2.11.1',
40336
+ version: '2.11.2',
40328
40337
  install: installQuasar,
40329
40338
  lang: Plugin$8,
40330
40339
  iconSet: Plugin$7