quasar 2.4.3 → 2.4.7

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 (135) hide show
  1. package/dist/api/BottomSheet.json +5 -1
  2. package/dist/api/LoadingBar.json +1 -1
  3. package/dist/api/Notify.json +20 -20
  4. package/dist/api/QAjaxBar.json +23 -4
  5. package/dist/api/QCarouselSlide.json +2 -2
  6. package/dist/api/QChatMessage.json +1 -1
  7. package/dist/api/QImg.json +2 -2
  8. package/dist/api/QParallax.json +1 -1
  9. package/dist/api/QRadio.json +3 -1
  10. package/dist/api/QSelect.json +1 -1
  11. package/dist/api/QTimelineEntry.json +1 -1
  12. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  15. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  16. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  17. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  18. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  19. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-mdi-v5.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.umd.prod.js +1 -1
  43. package/dist/lang/az-Latn.umd.prod.js +1 -1
  44. package/dist/lang/bg.umd.prod.js +1 -1
  45. package/dist/lang/bn.umd.prod.js +1 -1
  46. package/dist/lang/ca.umd.prod.js +1 -1
  47. package/dist/lang/cs.umd.prod.js +1 -1
  48. package/dist/lang/da.umd.prod.js +1 -1
  49. package/dist/lang/de.umd.prod.js +1 -1
  50. package/dist/lang/el.umd.prod.js +1 -1
  51. package/dist/lang/en-GB.umd.prod.js +1 -1
  52. package/dist/lang/en-US.umd.prod.js +1 -1
  53. package/dist/lang/eo.umd.prod.js +1 -1
  54. package/dist/lang/es.umd.prod.js +1 -1
  55. package/dist/lang/et.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/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +1 -1
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/lt.umd.prod.js +1 -1
  72. package/dist/lang/lu.umd.prod.js +1 -1
  73. package/dist/lang/lv.umd.prod.js +1 -1
  74. package/dist/lang/ml.umd.prod.js +1 -1
  75. package/dist/lang/ms.umd.prod.js +1 -1
  76. package/dist/lang/nb-NO.umd.prod.js +1 -1
  77. package/dist/lang/nl.umd.prod.js +1 -1
  78. package/dist/lang/pl.umd.prod.js +1 -1
  79. package/dist/lang/pt-BR.umd.prod.js +1 -1
  80. package/dist/lang/pt.umd.prod.js +1 -1
  81. package/dist/lang/ro.umd.prod.js +1 -1
  82. package/dist/lang/ru.umd.prod.js +1 -1
  83. package/dist/lang/sk.umd.prod.js +1 -1
  84. package/dist/lang/sl.umd.prod.js +1 -1
  85. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  86. package/dist/lang/sr.umd.prod.js +1 -1
  87. package/dist/lang/sv.umd.prod.js +1 -1
  88. package/dist/lang/ta.umd.prod.js +1 -1
  89. package/dist/lang/th.umd.prod.js +1 -1
  90. package/dist/lang/tr.umd.prod.js +1 -1
  91. package/dist/lang/ug.umd.prod.js +1 -1
  92. package/dist/lang/uk.umd.prod.js +1 -1
  93. package/dist/lang/vi.umd.prod.js +1 -1
  94. package/dist/lang/zh-CN.umd.prod.js +1 -1
  95. package/dist/lang/zh-TW.umd.prod.js +1 -1
  96. package/dist/quasar.cjs.prod.js +2 -2
  97. package/dist/quasar.css +2 -1
  98. package/dist/quasar.esm.prod.js +2 -2
  99. package/dist/quasar.prod.css +1 -1
  100. package/dist/quasar.rtl.css +2 -1
  101. package/dist/quasar.rtl.prod.css +1 -1
  102. package/dist/quasar.sass +3 -2
  103. package/dist/quasar.umd.js +156 -81
  104. package/dist/quasar.umd.prod.js +2 -2
  105. package/dist/ssr-directives/Morph.js +1 -1
  106. package/dist/types/index.d.ts +24 -10
  107. package/dist/vetur/quasar-attributes.json +9 -5
  108. package/dist/vetur/quasar-tags.json +2 -1
  109. package/dist/web-types/web-types.json +22 -13
  110. package/package.json +1 -1
  111. package/src/components/ajax-bar/QAjaxBar.js +47 -26
  112. package/src/components/ajax-bar/QAjaxBar.json +22 -4
  113. package/src/components/breadcrumbs/QBreadcrumbs.js +3 -3
  114. package/src/components/breadcrumbs/QBreadcrumbsEl.js +2 -2
  115. package/src/components/btn/use-btn.js +4 -1
  116. package/src/components/btn-toggle/QBtnToggle.js +2 -0
  117. package/src/components/carousel/QCarouselSlide.json +2 -2
  118. package/src/components/chat/QChatMessage.json +1 -1
  119. package/src/components/icon/QIcon.js +36 -32
  120. package/src/components/icon/QIcon.sass +0 -1
  121. package/src/components/img/QImg.json +2 -2
  122. package/src/components/layout/QLayout.js +50 -1
  123. package/src/components/pagination/QPagination.js +4 -4
  124. package/src/components/parallax/QParallax.json +1 -1
  125. package/src/components/radio/QRadio.js +2 -6
  126. package/src/components/radio/QRadio.json +1 -1
  127. package/src/components/scroll-area/QScrollArea.sass +1 -0
  128. package/src/components/select/QSelect.json +1 -1
  129. package/src/components/timeline/QTimeline.sass +1 -2
  130. package/src/components/timeline/QTimelineEntry.json +1 -1
  131. package/src/css/core/visibility.sass +0 -1
  132. package/src/plugins/BottomSheet.json +7 -1
  133. package/src/plugins/LoadingBar.json +1 -1
  134. package/src/plugins/Notify.json +22 -22
  135. package/src/utils/private/global-dialog.js +4 -4
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.3
2
+ * Quasar Framework v2.4.7
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -3222,6 +3222,7 @@ body.desktop
3222
3222
  max-width: 100% !important
3223
3223
  .q-scrollarea
3224
3224
  position: relative
3225
+ contain: strict
3225
3226
  &__bar,
3226
3227
  &__thumb
3227
3228
  opacity: .2
@@ -4518,7 +4519,7 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4518
4519
  &__subtitle
4519
4520
  font-size: 12px
4520
4521
  margin-bottom: 8px
4521
- opacity: .4
4522
+ opacity: .6
4522
4523
  text-transform: uppercase
4523
4524
  letter-spacing: 1px
4524
4525
  font-weight: 700
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.3
2
+ * Quasar Framework v2.4.7
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1447,7 +1447,7 @@
1447
1447
  }
1448
1448
 
1449
1449
  var installQuasar = function (parentApp, opts = {}) {
1450
- const $q = { version: '2.4.3' };
1450
+ const $q = { version: '2.4.7' };
1451
1451
 
1452
1452
  if (globalConfigIsFrozen === false) {
1453
1453
  if (opts.config !== void 0) {
@@ -1532,22 +1532,22 @@
1532
1532
 
1533
1533
  const
1534
1534
  xhr = XMLHttpRequest,
1535
- send = xhr.prototype.send,
1536
- stackStart = [],
1537
- stackStop = [];
1535
+ open = xhr.prototype.open,
1536
+ positionValues = [ 'top', 'right', 'bottom', 'left' ];
1538
1537
 
1538
+ let stack = [];
1539
1539
  let highjackCount = 0;
1540
1540
 
1541
1541
  function translate ({ p, pos, active, horiz, reverse, dir }) {
1542
1542
  let x = 1, y = 1;
1543
1543
 
1544
- if (horiz) {
1545
- if (reverse) { x = -1; }
1544
+ if (horiz === true) {
1545
+ if (reverse === true) { x = -1; }
1546
1546
  if (pos === 'bottom') { y = -1; }
1547
1547
  return { transform: `translate3d(${ x * (p - 100) }%,${ active ? 0 : y * -200 }%,0)` }
1548
1548
  }
1549
1549
 
1550
- if (reverse) { y = -1; }
1550
+ if (reverse === true) { y = -1; }
1551
1551
  if (pos === 'right') { x = -1; }
1552
1552
  return { transform: `translate3d(${ active ? 0 : dir * x * -200 }%,${ y * (p - 100) }%,0)` }
1553
1553
  }
@@ -1573,32 +1573,45 @@
1573
1573
  return between(p + amount, 0, 100)
1574
1574
  }
1575
1575
 
1576
- function highjackAjax (start, stop) {
1577
- stackStart.push(start);
1578
- stackStop.push(stop);
1579
-
1576
+ function highjackAjax (stackEntry) {
1580
1577
  highjackCount++;
1581
1578
 
1579
+ stack.push(stackEntry);
1580
+
1582
1581
  if (highjackCount > 1) { return }
1583
1582
 
1584
- function endHandler () {
1585
- stackStop.forEach(fn => { fn(); });
1586
- }
1583
+ xhr.prototype.open = function (_, url) {
1584
+ const stopStack = [];
1585
+
1586
+ const loadStart = () => {
1587
+ stack.forEach(entry => {
1588
+ if (
1589
+ entry.hijackFilter.value === null
1590
+ || (entry.hijackFilter.value(url) === true)
1591
+ ) {
1592
+ entry.start();
1593
+ stopStack.push(entry.stop);
1594
+ }
1595
+ });
1596
+ };
1587
1597
 
1588
- xhr.prototype.send = function (/* ...args */) {
1589
- stackStart.forEach(fn => { fn(); });
1590
- this.addEventListener('loadend', endHandler, false);
1591
- send.apply(this, arguments);
1598
+ const loadEnd = () => {
1599
+ stopStack.forEach(stop => { stop(); });
1600
+ };
1601
+
1602
+ this.addEventListener('loadstart', loadStart, { once: true });
1603
+ this.addEventListener('loadend', loadEnd, { once: true });
1604
+
1605
+ open.apply(this, arguments);
1592
1606
  };
1593
1607
  }
1594
1608
 
1595
- function restoreAjax (start, stop) {
1596
- stackStart.splice(stackStart.indexOf(start), 1);
1597
- stackStop.splice(stackStop.indexOf(stop), 1);
1609
+ function restoreAjax (start) {
1610
+ stack = stack.filter(entry => entry.start !== start);
1598
1611
 
1599
1612
  highjackCount = Math.max(0, highjackCount - 1);
1600
1613
  if (highjackCount === 0) {
1601
- xhr.prototype.send = send;
1614
+ xhr.prototype.open = open;
1602
1615
  }
1603
1616
  }
1604
1617
 
@@ -1609,15 +1622,19 @@
1609
1622
  position: {
1610
1623
  type: String,
1611
1624
  default: 'top',
1612
- validator: val => [ 'top', 'right', 'bottom', 'left' ].includes(val)
1625
+ validator: val => positionValues.includes(val)
1613
1626
  },
1627
+
1614
1628
  size: {
1615
1629
  type: String,
1616
1630
  default: '2px'
1617
1631
  },
1632
+
1618
1633
  color: String,
1619
1634
  skipHijack: Boolean,
1620
- reverse: Boolean
1635
+ reverse: Boolean,
1636
+
1637
+ hijackFilter: Function
1621
1638
  },
1622
1639
 
1623
1640
  emits: [ 'start', 'stop' ],
@@ -1649,7 +1666,7 @@
1649
1666
  active,
1650
1667
  horiz: horizontal.value,
1651
1668
  reverse: proxy.$q.lang.rtl === true && [ 'top', 'bottom' ].includes(props.position)
1652
- ? !props.reverse
1669
+ ? props.reverse === false
1653
1670
  : props.reverse,
1654
1671
  dir: proxy.$q.lang.rtl === true ? -1 : 1
1655
1672
  });
@@ -1745,13 +1762,17 @@
1745
1762
  vue.onMounted(() => {
1746
1763
  if (props.skipHijack !== true) {
1747
1764
  hijacked = true;
1748
- highjackAjax(start, stop);
1765
+ highjackAjax({
1766
+ start,
1767
+ stop,
1768
+ hijackFilter: vue.computed(() => props.hijackFilter || null)
1769
+ });
1749
1770
  }
1750
1771
  });
1751
1772
 
1752
1773
  vue.onBeforeUnmount(() => {
1753
1774
  clearTimeout(timer);
1754
- hijacked === true && restoreAjax(start, stop);
1775
+ hijacked === true && restoreAjax(start);
1755
1776
  });
1756
1777
 
1757
1778
  // expose public methods
@@ -1848,6 +1869,8 @@
1848
1869
  : vnode
1849
1870
  }
1850
1871
 
1872
+ const defaultViewBox = '0 0 24 24';
1873
+
1851
1874
  const sameFn = i => i;
1852
1875
  const ionFn = i => `ionicons ${ i }`;
1853
1876
 
@@ -1901,7 +1924,7 @@
1901
1924
 
1902
1925
  const classes = vue.computed(() =>
1903
1926
  'q-icon'
1904
- + (props.left === true ? ' on-left' : '')
1927
+ + (props.left === true ? ' on-left' : '') // TODO Qv3: drop this
1905
1928
  + (props.right === true ? ' on-right' : '')
1906
1929
  + (props.color !== void 0 ? ` text-${ props.color }` : '')
1907
1930
  );
@@ -1911,10 +1934,7 @@
1911
1934
  let icon = props.name;
1912
1935
 
1913
1936
  if (!icon) {
1914
- return {
1915
- none: true,
1916
- cls: classes.value
1917
- }
1937
+ return { none: true }
1918
1938
  }
1919
1939
 
1920
1940
  if ($q.iconMapFn !== null) {
@@ -1925,7 +1945,7 @@
1925
1945
  }
1926
1946
  else {
1927
1947
  return {
1928
- cls: res.cls + ' ' + classes.value,
1948
+ cls: res.cls,
1929
1949
  content: res.content !== void 0
1930
1950
  ? res.content
1931
1951
  : ' '
@@ -1935,39 +1955,32 @@
1935
1955
  }
1936
1956
 
1937
1957
  if (mRE.test(icon) === true) {
1938
- const [ def, viewBox ] = icon.split('|');
1958
+ const [ def, viewBox = defaultViewBox ] = icon.split('|');
1939
1959
 
1940
1960
  return {
1941
1961
  svg: true,
1942
- cls: classes.value,
1962
+ viewBox,
1943
1963
  nodes: def.split('&&').map(path => {
1944
1964
  const [ d, style, transform ] = path.split('@@');
1945
- return vue.h('path', {
1946
- style,
1947
- d,
1948
- transform
1949
- })
1950
- }),
1951
- viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'
1965
+ return vue.h('path', { style, d, transform })
1966
+ })
1952
1967
  }
1953
1968
  }
1954
1969
 
1955
1970
  if (imgRE.test(icon) === true) {
1956
1971
  return {
1957
1972
  img: true,
1958
- cls: classes.value,
1959
1973
  src: icon.substring(4)
1960
1974
  }
1961
1975
  }
1962
1976
 
1963
1977
  if (svgUseRE.test(icon) === true) {
1964
- const [ def, viewBox ] = icon.split('|');
1978
+ const [ def, viewBox = defaultViewBox ] = icon.split('|');
1965
1979
 
1966
1980
  return {
1967
1981
  svguse: true,
1968
- cls: classes.value,
1969
1982
  src: def.substring(7),
1970
- viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'
1983
+ viewBox
1971
1984
  }
1972
1985
  }
1973
1986
 
@@ -2001,14 +2014,14 @@
2001
2014
  }
2002
2015
 
2003
2016
  return {
2004
- cls: cls + ' ' + classes.value,
2017
+ cls,
2005
2018
  content
2006
2019
  }
2007
2020
  });
2008
2021
 
2009
2022
  return () => {
2010
2023
  const data = {
2011
- class: type.value.cls,
2024
+ class: classes.value,
2012
2025
  style: sizeStyle.value,
2013
2026
  'aria-hidden': 'true',
2014
2027
  role: 'presentation'
@@ -2019,24 +2032,36 @@
2019
2032
  }
2020
2033
 
2021
2034
  if (type.value.img === true) {
2022
- data.src = type.value.src;
2023
- return vue.h('img', data)
2035
+ return vue.h('div', data, hMergeSlot(slots.default, [
2036
+ vue.h('img', {
2037
+ class: type.value.cls,
2038
+ src: type.value.src
2039
+ })
2040
+ ]))
2024
2041
  }
2025
2042
 
2026
2043
  if (type.value.svg === true) {
2027
- data.viewBox = type.value.viewBox;
2028
-
2029
- return vue.h('svg', data, hMergeSlot(slots.default, type.value.nodes))
2044
+ return vue.h('div', data, hMergeSlot(slots.default, [
2045
+ vue.h('svg', {
2046
+ class: type.value.cls,
2047
+ viewBox: type.value.viewBox
2048
+ }, type.value.nodes)
2049
+ ]))
2030
2050
  }
2031
2051
 
2032
2052
  if (type.value.svguse === true) {
2033
- data.viewBox = type.value.viewBox;
2053
+ return vue.h('div', data, hMergeSlot(slots.default, [
2054
+ vue.h('svg', {
2055
+ class: type.value.cls,
2056
+ viewBox: type.value.viewBox
2057
+ }, [
2058
+ vue.h('use', { 'xlink:href': type.value.src })
2059
+ ])
2060
+ ]))
2061
+ }
2034
2062
 
2035
- return vue.h(
2036
- 'svg',
2037
- data,
2038
- hMergeSlot(slots.default, [ vue.h('use', { 'xlink:href': type.value.src }) ])
2039
- )
2063
+ if (type.value.cls !== void 0) {
2064
+ data.class += ' ' + type.value.cls;
2040
2065
  }
2041
2066
 
2042
2067
  return vue.h(props.tag, data, hMergeSlot(slots.default, [
@@ -2352,7 +2377,7 @@
2352
2377
  );
2353
2378
 
2354
2379
  const sepClass = vue.computed(() => (props.separatorColor ? ` text-${ props.separatorColor }` : ''));
2355
- const activeClass = vue.computed(() => `text-${ props.activeColor }`);
2380
+ const activeClass = vue.computed(() => ` text-${ props.activeColor }`);
2356
2381
 
2357
2382
  return () => {
2358
2383
  const vnodes = getNormalizedVNodes(
@@ -2374,8 +2399,8 @@
2374
2399
  if (comp.type !== void 0 && comp.type.name === 'QBreadcrumbsEl') {
2375
2400
  const middle = els < len;
2376
2401
  const disabled = comp.props !== null && disabledValues.includes(comp.props.disable);
2377
- const cls = (middle === true ? ' q-breadcrumbs--last' : '')
2378
- + (disabled !== true && middle === true ? ' ' + activeClass.value : '');
2402
+ const cls = (middle === true ? '' : ' q-breadcrumbs--last')
2403
+ + (disabled !== true && middle === true ? activeClass.value : '');
2379
2404
 
2380
2405
  els++;
2381
2406
 
@@ -2687,13 +2712,13 @@
2687
2712
  },
2688
2713
 
2689
2714
  setup (props, { slots }) {
2690
- const { linkTag, linkProps, hasRouterLink, navigateToRouterLink } = useRouterLink();
2715
+ const { linkTag, linkProps, linkClass, hasRouterLink, navigateToRouterLink } = useRouterLink();
2691
2716
 
2692
2717
  const data = vue.computed(() => {
2693
2718
  const acc = {
2694
2719
  class: 'q-breadcrumbs__el q-link '
2695
2720
  + 'flex inline items-center relative-position '
2696
- + (props.disable !== true ? 'q-link--focusable' : 'q-breadcrumbs__el--disable'),
2721
+ + (props.disable !== true ? 'q-link--focusable' + linkClass.value : 'q-breadcrumbs__el--disable'),
2697
2722
  ...linkProps.value
2698
2723
  };
2699
2724
  if (hasRouterLink.value === true) {
@@ -3156,7 +3181,10 @@
3156
3181
  }
3157
3182
 
3158
3183
  if (linkTag.value === 'a') {
3159
- if (acc.href === void 0) {
3184
+ if (props.disable === true) {
3185
+ acc[ 'aria-disabled' ] = 'true';
3186
+ }
3187
+ else if (acc.href === void 0) {
3160
3188
  acc.role = 'button';
3161
3189
  }
3162
3190
  if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {
@@ -5595,6 +5623,8 @@
5595
5623
  key: i,
5596
5624
  onClick (e) { set(value, item, e); },
5597
5625
 
5626
+ 'aria-pressed': value === props.modelValue ? 'true' : 'false',
5627
+
5598
5628
  ...attrs,
5599
5629
  ...opt,
5600
5630
 
@@ -24134,6 +24164,55 @@
24134
24164
 
24135
24165
  vue.provide(layoutKey, $layout);
24136
24166
 
24167
+ // prevent scrollbar flicker while resizing window height
24168
+ // if no page scrollbar is already present
24169
+ if (getScrollbarWidth() > 0) {
24170
+ let timer = null;
24171
+ const el = document.body;
24172
+
24173
+ function restoreScrollbar () {
24174
+ timer = null;
24175
+ el.classList.remove('hide-scrollbar');
24176
+ }
24177
+
24178
+ function hideScrollbar () {
24179
+ if (timer === null) {
24180
+ // if it has no scrollbar then there's nothing to do
24181
+
24182
+ if (el.scrollHeight > $q.screen.height) {
24183
+ return
24184
+ }
24185
+
24186
+ el.classList.add('hide-scrollbar');
24187
+ }
24188
+ else {
24189
+ clearTimeout(timer);
24190
+ }
24191
+
24192
+ timer = setTimeout(restoreScrollbar, 300);
24193
+ }
24194
+
24195
+ function updateScrollEvent (action) {
24196
+ if (timer !== null && action === 'remove') {
24197
+ clearTimeout(timer);
24198
+ restoreScrollbar();
24199
+ }
24200
+
24201
+ window[ `${ action }EventListener` ]('resize', hideScrollbar);
24202
+ }
24203
+
24204
+ vue.watch(
24205
+ () => (props.container !== true ? 'add' : 'remove'),
24206
+ updateScrollEvent
24207
+ );
24208
+
24209
+ props.container !== true && updateScrollEvent('add');
24210
+
24211
+ vue.onUnmounted(() => {
24212
+ updateScrollEvent('remove');
24213
+ });
24214
+ }
24215
+
24137
24216
  return () => {
24138
24217
  const content = hMergeSlot(slots.default, [
24139
24218
  vue.h(QScrollObserver, { onScroll: onPageScroll }),
@@ -24277,12 +24356,8 @@
24277
24356
  ...useSizeProps,
24278
24357
  ...useFormProps,
24279
24358
 
24280
- modelValue: {
24281
- required: true
24282
- },
24283
- val: {
24284
- required: true
24285
- },
24359
+ modelValue: { required: true },
24360
+ val: { required: true },
24286
24361
 
24287
24362
  label: String,
24288
24363
  leftLabel: Boolean,
@@ -25215,8 +25290,8 @@
25215
25290
  style,
25216
25291
  disable: props.disable,
25217
25292
  flat: !active,
25218
- textColor: active ? props.textColor : void 0,
25219
- label: props.min
25293
+ label: props.min,
25294
+ ...(active ? activeBtnProps.value : {})
25220
25295
  }, props.min));
25221
25296
  }
25222
25297
  if (boundaryEnd) {
@@ -25226,8 +25301,8 @@
25226
25301
  style,
25227
25302
  disable: props.disable,
25228
25303
  flat: !active,
25229
- textColor: active ? props.textColor : void 0,
25230
- label: props.max
25304
+ label: props.max,
25305
+ ...(active ? activeBtnProps.value : {})
25231
25306
  }, props.max));
25232
25307
  }
25233
25308
  if (ellipsesStart) {
@@ -37678,14 +37753,14 @@
37678
37753
  applyState('show');
37679
37754
  }
37680
37755
 
37681
- if (dialogRef.value !== null) {
37682
- show();
37683
- }
37684
- else if (typeof DialogComponent.__asyncLoader === 'function') {
37756
+ if (typeof DialogComponent.__asyncLoader === 'function') {
37685
37757
  DialogComponent.__asyncLoader().then(() => {
37686
37758
  vue.nextTick(show);
37687
37759
  });
37688
37760
  }
37761
+ else {
37762
+ vue.nextTick(show);
37763
+ }
37689
37764
 
37690
37765
  return API
37691
37766
  }
@@ -39189,7 +39264,7 @@
39189
39264
  });
39190
39265
 
39191
39266
  var index_umd = {
39192
- version: '2.4.3',
39267
+ version: '2.4.7',
39193
39268
  install (app, opts) {
39194
39269
  installQuasar(app, {
39195
39270
  components,