quasar 2.4.4 → 2.4.8

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 (116) hide show
  1. package/dist/api/LoadingBar.json +1 -1
  2. package/dist/api/QAjaxBar.json +23 -4
  3. package/dist/api/QRadio.json +3 -1
  4. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  8. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  9. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  14. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  15. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  18. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  33. package/dist/icon-set/themify.umd.prod.js +1 -1
  34. package/dist/lang/ar.umd.prod.js +1 -1
  35. package/dist/lang/az-Latn.umd.prod.js +1 -1
  36. package/dist/lang/bg.umd.prod.js +1 -1
  37. package/dist/lang/bn.umd.prod.js +1 -1
  38. package/dist/lang/ca.umd.prod.js +1 -1
  39. package/dist/lang/cs.umd.prod.js +1 -1
  40. package/dist/lang/da.umd.prod.js +1 -1
  41. package/dist/lang/de.umd.prod.js +1 -1
  42. package/dist/lang/el.umd.prod.js +1 -1
  43. package/dist/lang/en-GB.umd.prod.js +1 -1
  44. package/dist/lang/en-US.umd.prod.js +1 -1
  45. package/dist/lang/eo.umd.prod.js +1 -1
  46. package/dist/lang/es.umd.prod.js +1 -1
  47. package/dist/lang/et.umd.prod.js +1 -1
  48. package/dist/lang/fa-IR.umd.prod.js +1 -1
  49. package/dist/lang/fa.umd.prod.js +1 -1
  50. package/dist/lang/fi.umd.prod.js +1 -1
  51. package/dist/lang/fr.umd.prod.js +1 -1
  52. package/dist/lang/gn.umd.prod.js +1 -1
  53. package/dist/lang/he.umd.prod.js +1 -1
  54. package/dist/lang/hr.umd.prod.js +1 -1
  55. package/dist/lang/hu.umd.prod.js +1 -1
  56. package/dist/lang/id.umd.prod.js +1 -1
  57. package/dist/lang/is.umd.prod.js +1 -1
  58. package/dist/lang/it.umd.prod.js +1 -1
  59. package/dist/lang/ja.umd.prod.js +1 -1
  60. package/dist/lang/km.umd.prod.js +1 -1
  61. package/dist/lang/ko-KR.umd.prod.js +1 -1
  62. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  63. package/dist/lang/lt.umd.prod.js +1 -1
  64. package/dist/lang/lu.umd.prod.js +1 -1
  65. package/dist/lang/lv.umd.prod.js +1 -1
  66. package/dist/lang/ml.umd.prod.js +1 -1
  67. package/dist/lang/ms.umd.prod.js +1 -1
  68. package/dist/lang/nb-NO.umd.prod.js +1 -1
  69. package/dist/lang/nl.umd.prod.js +1 -1
  70. package/dist/lang/pl.umd.prod.js +1 -1
  71. package/dist/lang/pt-BR.umd.prod.js +1 -1
  72. package/dist/lang/pt.umd.prod.js +1 -1
  73. package/dist/lang/ro.umd.prod.js +1 -1
  74. package/dist/lang/ru.umd.prod.js +1 -1
  75. package/dist/lang/sk.umd.prod.js +1 -1
  76. package/dist/lang/sl.umd.prod.js +1 -1
  77. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  78. package/dist/lang/sr.umd.prod.js +1 -1
  79. package/dist/lang/sv.umd.prod.js +1 -1
  80. package/dist/lang/ta.umd.prod.js +1 -1
  81. package/dist/lang/th.umd.prod.js +1 -1
  82. package/dist/lang/tr.umd.prod.js +1 -1
  83. package/dist/lang/ug.umd.prod.js +1 -1
  84. package/dist/lang/uk.umd.prod.js +1 -1
  85. package/dist/lang/vi.umd.prod.js +1 -1
  86. package/dist/lang/zh-CN.umd.prod.js +1 -1
  87. package/dist/lang/zh-TW.umd.prod.js +1 -1
  88. package/dist/quasar.cjs.prod.js +2 -2
  89. package/dist/quasar.css +2 -1
  90. package/dist/quasar.esm.prod.js +2 -2
  91. package/dist/quasar.prod.css +1 -1
  92. package/dist/quasar.rtl.css +2 -1
  93. package/dist/quasar.rtl.prod.css +1 -1
  94. package/dist/quasar.sass +3 -2
  95. package/dist/quasar.umd.js +157 -90
  96. package/dist/quasar.umd.prod.js +2 -2
  97. package/dist/ssr-directives/Morph.js +1 -1
  98. package/dist/types/index.d.ts +9 -3
  99. package/dist/vetur/quasar-attributes.json +8 -4
  100. package/dist/vetur/quasar-tags.json +2 -1
  101. package/dist/web-types/web-types.json +15 -6
  102. package/package.json +1 -1
  103. package/src/components/ajax-bar/QAjaxBar.js +47 -26
  104. package/src/components/ajax-bar/QAjaxBar.json +22 -4
  105. package/src/components/breadcrumbs/QBreadcrumbs.js +3 -3
  106. package/src/components/breadcrumbs/QBreadcrumbsEl.js +2 -2
  107. package/src/components/icon/QIcon.js +31 -32
  108. package/src/components/icon/QIcon.sass +2 -2
  109. package/src/components/layout/QLayout.js +50 -1
  110. package/src/components/pagination/QPagination.js +4 -4
  111. package/src/components/radio/QRadio.js +2 -6
  112. package/src/components/radio/QRadio.json +1 -1
  113. package/src/components/scroll-observer/QScrollObserver.js +12 -10
  114. package/src/css/core/visibility.sass +0 -1
  115. package/src/plugins/LoadingBar.json +1 -1
  116. 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.4
2
+ * Quasar Framework v2.4.8
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -661,7 +661,8 @@ input[type='search']::-webkit-search-decoration
661
661
  display: flex !important
662
662
  align-items: center
663
663
  justify-content: center
664
- > svg
664
+ > svg,
665
+ > img
665
666
  width: 100%
666
667
  height: 100%
667
668
  .q-icon,
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.4
2
+ * Quasar Framework v2.4.8
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.4' };
1450
+ const $q = { version: '2.4.8' };
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,31 @@
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', { src: type.value.src })
2037
+ ]))
2024
2038
  }
2025
2039
 
2026
2040
  if (type.value.svg === true) {
2027
- data.viewBox = type.value.viewBox;
2028
-
2029
- return vue.h('svg', data, hMergeSlot(slots.default, type.value.nodes))
2041
+ return vue.h('div', data, hMergeSlot(slots.default, [
2042
+ vue.h('svg', {
2043
+ viewBox: type.value.viewBox
2044
+ }, type.value.nodes)
2045
+ ]))
2030
2046
  }
2031
2047
 
2032
2048
  if (type.value.svguse === true) {
2033
- data.viewBox = type.value.viewBox;
2049
+ return vue.h('div', data, hMergeSlot(slots.default, [
2050
+ vue.h('svg', {
2051
+ viewBox: type.value.viewBox
2052
+ }, [
2053
+ vue.h('use', { 'xlink:href': type.value.src })
2054
+ ])
2055
+ ]))
2056
+ }
2034
2057
 
2035
- return vue.h(
2036
- 'svg',
2037
- data,
2038
- hMergeSlot(slots.default, [ vue.h('use', { 'xlink:href': type.value.src }) ])
2039
- )
2058
+ if (type.value.cls !== void 0) {
2059
+ data.class += ' ' + type.value.cls;
2040
2060
  }
2041
2061
 
2042
2062
  return vue.h(props.tag, data, hMergeSlot(slots.default, [
@@ -2352,7 +2372,7 @@
2352
2372
  );
2353
2373
 
2354
2374
  const sepClass = vue.computed(() => (props.separatorColor ? ` text-${ props.separatorColor }` : ''));
2355
- const activeClass = vue.computed(() => `text-${ props.activeColor }`);
2375
+ const activeClass = vue.computed(() => ` text-${ props.activeColor }`);
2356
2376
 
2357
2377
  return () => {
2358
2378
  const vnodes = getNormalizedVNodes(
@@ -2374,8 +2394,8 @@
2374
2394
  if (comp.type !== void 0 && comp.type.name === 'QBreadcrumbsEl') {
2375
2395
  const middle = els < len;
2376
2396
  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 : '');
2397
+ const cls = (middle === true ? '' : ' q-breadcrumbs--last')
2398
+ + (disabled !== true && middle === true ? activeClass.value : '');
2379
2399
 
2380
2400
  els++;
2381
2401
 
@@ -2687,13 +2707,13 @@
2687
2707
  },
2688
2708
 
2689
2709
  setup (props, { slots }) {
2690
- const { linkTag, linkProps, hasRouterLink, navigateToRouterLink } = useRouterLink();
2710
+ const { linkTag, linkProps, linkClass, hasRouterLink, navigateToRouterLink } = useRouterLink();
2691
2711
 
2692
2712
  const data = vue.computed(() => {
2693
2713
  const acc = {
2694
2714
  class: 'q-breadcrumbs__el q-link '
2695
2715
  + 'flex inline items-center relative-position '
2696
- + (props.disable !== true ? 'q-link--focusable' : 'q-breadcrumbs__el--disable'),
2716
+ + (props.disable !== true ? 'q-link--focusable' + linkClass.value : 'q-breadcrumbs__el--disable'),
2697
2717
  ...linkProps.value
2698
2718
  };
2699
2719
  if (hasRouterLink.value === true) {
@@ -23886,7 +23906,7 @@
23886
23906
  }
23887
23907
  };
23888
23908
 
23889
- let timer = null, localScrollTarget, parentEl;
23909
+ let clearTimer = null, localScrollTarget, parentEl;
23890
23910
 
23891
23911
  vue.watch(() => props.scrollTarget, () => {
23892
23912
  unconfigureScrollTarget();
@@ -23894,9 +23914,7 @@
23894
23914
  });
23895
23915
 
23896
23916
  function emitEvent () {
23897
- clearTimeout(timer);
23898
- cancelAnimationFrame(timer);
23899
- timer = null;
23917
+ clearTimer !== null && clearTimer();
23900
23918
 
23901
23919
  const top = Math.max(0, getVerticalScrollPosition(localScrollTarget));
23902
23920
  const left = getHorizontalScrollPosition(localScrollTarget);
@@ -23946,10 +23964,15 @@
23946
23964
  if (immediately === true || props.debounce === 0 || props.debounce === '0') {
23947
23965
  emitEvent();
23948
23966
  }
23949
- else if (timer === null) {
23950
- timer = props.debounce
23951
- ? setTimeout(emitEvent, props.debounce)
23952
- : requestAnimationFrame(emitEvent);
23967
+ else if (clearTimer === null) {
23968
+ const [ timer, fn ] = props.debounce
23969
+ ? [ setTimeout(emitEvent, props.debounce), clearTimeout ]
23970
+ : [ requestAnimationFrame(emitEvent), cancelAnimationFrame ];
23971
+
23972
+ clearTimer = () => {
23973
+ fn(timer);
23974
+ clearTimer = null;
23975
+ };
23953
23976
  }
23954
23977
  }
23955
23978
 
@@ -23961,8 +23984,7 @@
23961
23984
  });
23962
23985
 
23963
23986
  vue.onBeforeUnmount(() => {
23964
- clearTimeout(timer);
23965
- cancelAnimationFrame(timer);
23987
+ clearTimer !== null && clearTimer();
23966
23988
  unconfigureScrollTarget();
23967
23989
  });
23968
23990
 
@@ -24139,6 +24161,55 @@
24139
24161
 
24140
24162
  vue.provide(layoutKey, $layout);
24141
24163
 
24164
+ // prevent scrollbar flicker while resizing window height
24165
+ // if no page scrollbar is already present
24166
+ if (getScrollbarWidth() > 0) {
24167
+ let timer = null;
24168
+ const el = document.body;
24169
+
24170
+ function restoreScrollbar () {
24171
+ timer = null;
24172
+ el.classList.remove('hide-scrollbar');
24173
+ }
24174
+
24175
+ function hideScrollbar () {
24176
+ if (timer === null) {
24177
+ // if it has no scrollbar then there's nothing to do
24178
+
24179
+ if (el.scrollHeight > $q.screen.height) {
24180
+ return
24181
+ }
24182
+
24183
+ el.classList.add('hide-scrollbar');
24184
+ }
24185
+ else {
24186
+ clearTimeout(timer);
24187
+ }
24188
+
24189
+ timer = setTimeout(restoreScrollbar, 300);
24190
+ }
24191
+
24192
+ function updateScrollEvent (action) {
24193
+ if (timer !== null && action === 'remove') {
24194
+ clearTimeout(timer);
24195
+ restoreScrollbar();
24196
+ }
24197
+
24198
+ window[ `${ action }EventListener` ]('resize', hideScrollbar);
24199
+ }
24200
+
24201
+ vue.watch(
24202
+ () => (props.container !== true ? 'add' : 'remove'),
24203
+ updateScrollEvent
24204
+ );
24205
+
24206
+ props.container !== true && updateScrollEvent('add');
24207
+
24208
+ vue.onUnmounted(() => {
24209
+ updateScrollEvent('remove');
24210
+ });
24211
+ }
24212
+
24142
24213
  return () => {
24143
24214
  const content = hMergeSlot(slots.default, [
24144
24215
  vue.h(QScrollObserver, { onScroll: onPageScroll }),
@@ -24282,12 +24353,8 @@
24282
24353
  ...useSizeProps,
24283
24354
  ...useFormProps,
24284
24355
 
24285
- modelValue: {
24286
- required: true
24287
- },
24288
- val: {
24289
- required: true
24290
- },
24356
+ modelValue: { required: true },
24357
+ val: { required: true },
24291
24358
 
24292
24359
  label: String,
24293
24360
  leftLabel: Boolean,
@@ -25220,8 +25287,8 @@
25220
25287
  style,
25221
25288
  disable: props.disable,
25222
25289
  flat: !active,
25223
- textColor: active ? props.textColor : void 0,
25224
- label: props.min
25290
+ label: props.min,
25291
+ ...(active ? activeBtnProps.value : {})
25225
25292
  }, props.min));
25226
25293
  }
25227
25294
  if (boundaryEnd) {
@@ -25231,8 +25298,8 @@
25231
25298
  style,
25232
25299
  disable: props.disable,
25233
25300
  flat: !active,
25234
- textColor: active ? props.textColor : void 0,
25235
- label: props.max
25301
+ label: props.max,
25302
+ ...(active ? activeBtnProps.value : {})
25236
25303
  }, props.max));
25237
25304
  }
25238
25305
  if (ellipsesStart) {
@@ -37683,14 +37750,14 @@
37683
37750
  applyState('show');
37684
37751
  }
37685
37752
 
37686
- if (dialogRef.value !== null) {
37687
- show();
37688
- }
37689
- else if (typeof DialogComponent.__asyncLoader === 'function') {
37753
+ if (typeof DialogComponent.__asyncLoader === 'function') {
37690
37754
  DialogComponent.__asyncLoader().then(() => {
37691
37755
  vue.nextTick(show);
37692
37756
  });
37693
37757
  }
37758
+ else {
37759
+ vue.nextTick(show);
37760
+ }
37694
37761
 
37695
37762
  return API
37696
37763
  }
@@ -39194,7 +39261,7 @@
39194
39261
  });
39195
39262
 
39196
39263
  var index_umd = {
39197
- version: '2.4.4',
39264
+ version: '2.4.8',
39198
39265
  install (app, opts) {
39199
39266
  installQuasar(app, {
39200
39267
  components,