quasar 2.14.1 → 2.14.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 (126) hide show
  1. package/dist/api/Notify.json +2 -2
  2. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6.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/material-symbols-outlined.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  16. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +2 -2
  23. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  40. package/dist/icon-set/themify.umd.prod.js +1 -1
  41. package/dist/lang/ar-TN.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-CH.umd.prod.js +1 -1
  50. package/dist/lang/de-DE.umd.prod.js +1 -1
  51. package/dist/lang/de.umd.prod.js +1 -1
  52. package/dist/lang/el.umd.prod.js +1 -1
  53. package/dist/lang/en-GB.umd.prod.js +1 -1
  54. package/dist/lang/en-US.umd.prod.js +1 -1
  55. package/dist/lang/eo.umd.prod.js +1 -1
  56. package/dist/lang/es.umd.prod.js +1 -1
  57. package/dist/lang/et.umd.prod.js +1 -1
  58. package/dist/lang/eu.umd.prod.js +1 -1
  59. package/dist/lang/fa-IR.umd.prod.js +1 -1
  60. package/dist/lang/fa.umd.prod.js +1 -1
  61. package/dist/lang/fi.umd.prod.js +1 -1
  62. package/dist/lang/fr.umd.prod.js +1 -1
  63. package/dist/lang/gn.umd.prod.js +1 -1
  64. package/dist/lang/he.umd.prod.js +1 -1
  65. package/dist/lang/hi.umd.prod.js +1 -1
  66. package/dist/lang/hr.umd.prod.js +1 -1
  67. package/dist/lang/hu.umd.prod.js +1 -1
  68. package/dist/lang/id.umd.prod.js +1 -1
  69. package/dist/lang/is.umd.prod.js +1 -1
  70. package/dist/lang/it.umd.prod.js +1 -1
  71. package/dist/lang/ja.umd.prod.js +1 -1
  72. package/dist/lang/kk.umd.prod.js +1 -1
  73. package/dist/lang/km.umd.prod.js +1 -1
  74. package/dist/lang/ko-KR.umd.prod.js +1 -1
  75. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  76. package/dist/lang/lt.umd.prod.js +1 -1
  77. package/dist/lang/lu.umd.prod.js +1 -1
  78. package/dist/lang/lv.umd.prod.js +1 -1
  79. package/dist/lang/mk.umd.prod.js +1 -1
  80. package/dist/lang/ml.umd.prod.js +1 -1
  81. package/dist/lang/mm.umd.prod.js +1 -1
  82. package/dist/lang/ms.umd.prod.js +1 -1
  83. package/dist/lang/my.umd.prod.js +1 -1
  84. package/dist/lang/nb-NO.umd.prod.js +1 -1
  85. package/dist/lang/nl.umd.prod.js +1 -1
  86. package/dist/lang/pl.umd.prod.js +1 -1
  87. package/dist/lang/pt-BR.umd.prod.js +1 -1
  88. package/dist/lang/pt.umd.prod.js +1 -1
  89. package/dist/lang/ro.umd.prod.js +1 -1
  90. package/dist/lang/ru.umd.prod.js +1 -1
  91. package/dist/lang/sk.umd.prod.js +1 -1
  92. package/dist/lang/sl.umd.prod.js +1 -1
  93. package/dist/lang/sm.umd.prod.js +1 -1
  94. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  95. package/dist/lang/sr.umd.prod.js +1 -1
  96. package/dist/lang/sv.umd.prod.js +1 -1
  97. package/dist/lang/ta.umd.prod.js +1 -1
  98. package/dist/lang/th.umd.prod.js +1 -1
  99. package/dist/lang/tr.umd.prod.js +1 -1
  100. package/dist/lang/ug.umd.prod.js +1 -1
  101. package/dist/lang/uk.umd.prod.js +1 -1
  102. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  103. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  104. package/dist/lang/vi.umd.prod.js +1 -1
  105. package/dist/lang/zh-CN.umd.prod.js +1 -1
  106. package/dist/lang/zh-TW.umd.prod.js +1 -1
  107. package/dist/quasar.cjs.prod.js +2 -2
  108. package/dist/quasar.esm.js +90 -71
  109. package/dist/quasar.esm.prod.js +2 -2
  110. package/dist/quasar.sass +1 -1
  111. package/dist/quasar.umd.js +90 -71
  112. package/dist/quasar.umd.prod.js +2 -2
  113. package/dist/types/index.d.ts +2 -2
  114. package/dist/web-types/web-types.json +1 -1
  115. package/package.json +1 -1
  116. package/src/components/color/QColor.js +5 -9
  117. package/src/components/date/QDate.js +1 -1
  118. package/src/components/editor/QEditor.js +1 -1
  119. package/src/components/range/QRange.js +8 -8
  120. package/src/components/resize-observer/QResizeObserver.js +3 -3
  121. package/src/components/slider/QSlider.js +2 -2
  122. package/src/components/slider/use-slider.js +14 -8
  123. package/src/composables/private/use-field.js +0 -3
  124. package/src/composables/private/use-validate.js +49 -30
  125. package/src/plugins/Notify.js +4 -3
  126. package/src/plugins/Notify.json +2 -2
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.14.1
2
+ * Quasar Framework v2.14.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.14.1
2
+ * Quasar Framework v2.14.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1653,7 +1653,7 @@
1653
1653
  }
1654
1654
 
1655
1655
  var installQuasar = function (parentApp, opts = {}) {
1656
- const $q = { version: '2.14.1' };
1656
+ const $q = { version: '2.14.2' };
1657
1657
 
1658
1658
  if (globalConfigIsFrozen === false) {
1659
1659
  if (opts.config !== void 0) {
@@ -8837,8 +8837,16 @@
8837
8837
  && innerMin.value < innerMax.value
8838
8838
  ));
8839
8839
 
8840
- const decimals = vue.computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length);
8841
- const step = vue.computed(() => (props.step === 0 ? 1 : props.step));
8840
+ const roundValueFn = vue.computed(() => {
8841
+ if (props.step === 0) {
8842
+ return v => v
8843
+ }
8844
+
8845
+ const decimals = (String(props.step).trim().split('.')[ 1 ] || '').length;
8846
+ return v => parseFloat(v.toFixed(decimals))
8847
+ });
8848
+
8849
+ const keyStep = vue.computed(() => (props.step === 0 ? 1 : props.step));
8842
8850
  const tabindex = vue.computed(() => (editable.value === true ? props.tabindex || 0 : -1));
8843
8851
 
8844
8852
  const trackLen = vue.computed(() => props.max - props.min);
@@ -8950,9 +8958,7 @@
8950
8958
  model += (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0) - modulo;
8951
8959
  }
8952
8960
 
8953
- if (decimals.value > 0) {
8954
- model = parseFloat(model.toFixed(decimals.value));
8955
- }
8961
+ model = roundValueFn.value(model);
8956
8962
 
8957
8963
  return between(model, innerMin.value, innerMax.value)
8958
8964
  }
@@ -8978,7 +8984,7 @@
8978
8984
  }
8979
8985
 
8980
8986
  const markerStep = vue.computed(() => (
8981
- isNumber(props.markers) === true ? props.markers : step.value)
8987
+ isNumber(props.markers) === true ? props.markers : keyStep.value)
8982
8988
  );
8983
8989
 
8984
8990
  const markerTicks = vue.computed(() => {
@@ -9338,8 +9344,8 @@
9338
9344
  tabindex,
9339
9345
  attributes,
9340
9346
 
9341
- step,
9342
- decimals,
9347
+ roundValueFn,
9348
+ keyStep,
9343
9349
  trackLen,
9344
9350
  innerMin,
9345
9351
  innerMinRatio,
@@ -9485,7 +9491,7 @@
9485
9491
  stopAndPrevent(evt);
9486
9492
 
9487
9493
  const
9488
- stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.step.value,
9494
+ stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.keyStep.value,
9489
9495
  offset = (
9490
9496
  ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1)
9491
9497
  * (state.isReversed.value === true ? -1 : 1)
@@ -9493,7 +9499,7 @@
9493
9499
  );
9494
9500
 
9495
9501
  model.value = between(
9496
- parseFloat((model.value + offset).toFixed(state.decimals.value)),
9502
+ state.roundValueFn.value(model.value + offset),
9497
9503
  state.innerMin.value,
9498
9504
  state.innerMax.value
9499
9505
  );
@@ -9582,6 +9588,9 @@
9582
9588
 
9583
9589
  const { proxy } = vue.getCurrentInstance();
9584
9590
 
9591
+ // expose public method
9592
+ proxy.trigger = trigger;
9593
+
9585
9594
  if (hasObserver === true) {
9586
9595
  let observer;
9587
9596
 
@@ -9655,9 +9664,6 @@
9655
9664
 
9656
9665
  vue.onBeforeUnmount(cleanup);
9657
9666
 
9658
- // expose public method
9659
- proxy.trigger = trigger;
9660
-
9661
9667
  return () => {
9662
9668
  if (canRender.value === true) {
9663
9669
  return vue.h('object', {
@@ -11179,15 +11185,11 @@
11179
11185
  + (isDark.value === true ? ' q-color-picker--dark q-dark' : '')
11180
11186
  );
11181
11187
 
11182
- const attributes = vue.computed(() => {
11183
- if (props.disable === true) {
11184
- return { 'aria-disabled': 'true' }
11185
- }
11186
- if (props.readonly === true) {
11187
- return { 'aria-readonly': 'true' }
11188
- }
11189
- return {}
11190
- });
11188
+ const attributes = vue.computed(() => (
11189
+ props.disable === true
11190
+ ? { 'aria-disabled': 'true' }
11191
+ : {}
11192
+ ));
11191
11193
 
11192
11194
  const spectrumDirective = vue.computed(() => {
11193
11195
  // if editable.value === true
@@ -13897,7 +13899,7 @@
13897
13899
  const attributes = vue.computed(() => (
13898
13900
  props.disable === true
13899
13901
  ? { 'aria-disabled': 'true' }
13900
- : (props.readonly === true ? { 'aria-readonly': 'true' } : {})
13902
+ : {}
13901
13903
  ));
13902
13904
 
13903
13905
  vue.watch(() => props.modelValue, v => {
@@ -17545,7 +17547,7 @@
17545
17547
  const attributes = vue.computed(() => (
17546
17548
  props.disable === true
17547
17549
  ? { 'aria-disabled': 'true' }
17548
- : (props.readonly === true ? { 'aria-readonly': 'true' } : {})
17550
+ : {}
17549
17551
  ));
17550
17552
 
17551
17553
  function onInput () {
@@ -18744,6 +18746,7 @@
18744
18746
  reactiveRules: Boolean,
18745
18747
  lazyRules: {
18746
18748
  type: [ Boolean, String ],
18749
+ default: false, // statement unneeded but avoids future vue implementation changes
18747
18750
  validator: v => lazyRulesValues.includes(v)
18748
18751
  }
18749
18752
  };
@@ -18765,10 +18768,14 @@
18765
18768
  && props.rules.length !== 0
18766
18769
  );
18767
18770
 
18768
- const hasActiveRules = vue.computed(() =>
18771
+ const canDebounceValidate = vue.computed(() => (
18769
18772
  props.disable !== true
18770
18773
  && hasRules.value === true
18771
- );
18774
+ // Should not have a validation in progress already;
18775
+ // It might mean that focus switched to submit btn and
18776
+ // QForm's submit() has been called already (ENTER key)
18777
+ && innerLoading.value === false
18778
+ ));
18772
18779
 
18773
18780
  const hasError = vue.computed(() =>
18774
18781
  props.error === true || innerError.value === true
@@ -18781,15 +18788,29 @@
18781
18788
  ));
18782
18789
 
18783
18790
  vue.watch(() => props.modelValue, () => {
18784
- validateIfNeeded();
18791
+ isDirtyModel.value = true;
18792
+
18793
+ if (
18794
+ canDebounceValidate.value === true
18795
+ // trigger validation if not using any kind of lazy-rules
18796
+ && props.lazyRules === false
18797
+ ) {
18798
+ debouncedValidate();
18799
+ }
18785
18800
  });
18786
18801
 
18787
18802
  vue.watch(() => props.reactiveRules, val => {
18788
18803
  if (val === true) {
18789
18804
  if (unwatchRules === void 0) {
18790
18805
  unwatchRules = vue.watch(() => props.rules, () => {
18791
- validateIfNeeded(true);
18792
- });
18806
+ if (
18807
+ canDebounceValidate.value === true
18808
+ && isDirtyModel.value === true
18809
+ && props.lazyRules !== 'ondemand'
18810
+ ) {
18811
+ debouncedValidate();
18812
+ }
18813
+ }, { immediate: true });
18793
18814
  }
18794
18815
  }
18795
18816
  else if (unwatchRules !== void 0) {
@@ -18798,25 +18819,32 @@
18798
18819
  }
18799
18820
  }, { immediate: true });
18800
18821
 
18822
+ vue.watch(() => props.lazyRules, val => {
18823
+ if (
18824
+ val === false
18825
+ && canDebounceValidate.value === true
18826
+ && isDirtyModel.value === true
18827
+ ) {
18828
+ debouncedValidate();
18829
+ }
18830
+ });
18831
+
18801
18832
  vue.watch(focused, val => {
18802
18833
  if (val === true) {
18803
18834
  if (isDirtyModel.value === null) {
18804
- isDirtyModel.value = false;
18835
+ isDirtyModel.value = props.lazyRules === true;
18805
18836
  }
18806
18837
  }
18807
- else if (isDirtyModel.value === false) {
18808
- isDirtyModel.value = true;
18809
-
18810
- if (
18811
- hasActiveRules.value === true
18812
- && props.lazyRules !== 'ondemand'
18813
- // Don't re-trigger if it's already in progress;
18814
- // It might mean that focus switched to submit btn and
18815
- // QForm's submit() has been called already (ENTER key)
18816
- && innerLoading.value === false
18817
- ) {
18818
- debouncedValidate();
18819
- }
18838
+ else if (
18839
+ canDebounceValidate.value === true
18840
+ && (
18841
+ // props.lazyRules can also be 'ondemand',
18842
+ // hence the following form:
18843
+ props.lazyRules === false
18844
+ || (props.lazyRules === true && isDirtyModel.value === true)
18845
+ )
18846
+ ) {
18847
+ debouncedValidate();
18820
18848
  }
18821
18849
  });
18822
18850
 
@@ -18836,7 +18864,10 @@
18836
18864
  * - Promise (pending async validation)
18837
18865
  */
18838
18866
  function validate (val = props.modelValue) {
18839
- if (hasActiveRules.value !== true) {
18867
+ if (
18868
+ props.disable === true
18869
+ || hasRules.value === false
18870
+ ) {
18840
18871
  return true
18841
18872
  }
18842
18873
 
@@ -18905,16 +18936,6 @@
18905
18936
  )
18906
18937
  }
18907
18938
 
18908
- function validateIfNeeded (changedRules) {
18909
- if (
18910
- hasActiveRules.value === true
18911
- && props.lazyRules !== 'ondemand'
18912
- && (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))
18913
- ) {
18914
- debouncedValidate();
18915
- }
18916
- }
18917
-
18918
18939
  const debouncedValidate = debounce(validate, 0);
18919
18940
 
18920
18941
  vue.onBeforeUnmount(() => {
@@ -19182,9 +19203,6 @@
19182
19203
  if (props.disable === true) {
19183
19204
  acc[ 'aria-disabled' ] = 'true';
19184
19205
  }
19185
- else if (props.readonly === true) {
19186
- acc[ 'aria-readonly' ] = 'true';
19187
- }
19188
19206
 
19189
19207
  return acc
19190
19208
  });
@@ -25613,15 +25631,15 @@
25613
25631
  case dragType.RANGE:
25614
25632
  const
25615
25633
  ratioDelta = ratio - dragging.offsetRatio,
25616
- minR = between(dragging.ratioMin + ratioDelta, 0, 1 - dragging.rangeRatio),
25634
+ minR = between(dragging.ratioMin + ratioDelta, state.innerMinRatio.value, state.innerMaxRatio.value - dragging.rangeRatio),
25617
25635
  modelDelta = localModel - dragging.offsetModel,
25618
- min = between(dragging.valueMin + modelDelta, props.min, props.max - dragging.rangeValue);
25636
+ min = between(dragging.valueMin + modelDelta, state.innerMin.value, state.innerMax.value - dragging.rangeValue);
25619
25637
 
25620
25638
  pos = {
25621
25639
  minR,
25622
25640
  maxR: minR + dragging.rangeRatio,
25623
- min: parseFloat(min.toFixed(state.decimals.value)),
25624
- max: parseFloat((min + dragging.rangeValue).toFixed(state.decimals.value))
25641
+ min: state.roundValueFn.value(min),
25642
+ max: state.roundValueFn.value(min + dragging.rangeValue)
25625
25643
  };
25626
25644
 
25627
25645
  state.focus.value = 'both';
@@ -25651,7 +25669,7 @@
25651
25669
  stopAndPrevent(evt);
25652
25670
 
25653
25671
  const
25654
- stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.step.value,
25672
+ stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.keyStep.value,
25655
25673
  offset = (
25656
25674
  ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1)
25657
25675
  * (state.isReversed.value === true ? -1 : 1)
@@ -25661,14 +25679,14 @@
25661
25679
  if (state.focus.value === 'both') {
25662
25680
  const interval = model.value.max - model.value.min;
25663
25681
  const min = between(
25664
- parseFloat((model.value.min + offset).toFixed(state.decimals.value)),
25682
+ state.roundValueFn.value(model.value.min + offset),
25665
25683
  state.innerMin.value,
25666
25684
  state.innerMax.value - interval
25667
25685
  );
25668
25686
 
25669
25687
  model.value = {
25670
25688
  min,
25671
- max: parseFloat((min + interval).toFixed(state.decimals.value))
25689
+ max: state.roundValueFn.value(min + interval)
25672
25690
  };
25673
25691
  }
25674
25692
  else if (state.focus.value === false) {
@@ -25680,7 +25698,7 @@
25680
25698
  model.value = {
25681
25699
  ...model.value,
25682
25700
  [ which ]: between(
25683
- parseFloat((model.value[ which ] + offset).toFixed(state.decimals.value)),
25701
+ state.roundValueFn.value(model.value[ which ] + offset),
25684
25702
  which === 'min' ? state.innerMin.value : model.value.min,
25685
25703
  which === 'max' ? state.innerMax.value : model.value.max
25686
25704
  )
@@ -39816,6 +39834,7 @@
39816
39834
  const positionClass = {};
39817
39835
  const emptyRE = /^\s*$/;
39818
39836
  const notifRefs = [];
39837
+ const invalidTimeoutValues = [ void 0, null, true, false, '' ];
39819
39838
 
39820
39839
  const positionList = [
39821
39840
  'top-left', 'top-right',
@@ -39909,15 +39928,15 @@
39909
39928
  notif.position = 'bottom';
39910
39929
  }
39911
39930
 
39912
- if (notif.timeout === void 0) {
39931
+ if (invalidTimeoutValues.includes(notif.timeout) === true) {
39913
39932
  notif.timeout = 5000;
39914
39933
  }
39915
39934
  else {
39916
- const t = parseInt(notif.timeout, 10);
39935
+ const t = Number(notif.timeout); // we catch exponential notation too with Number() casting
39917
39936
  if (isNaN(t) || t < 0) {
39918
39937
  return logError('wrong timeout', config)
39919
39938
  }
39920
- notif.timeout = t;
39939
+ notif.timeout = Number.isFinite(t) ? t : 0;
39921
39940
  }
39922
39941
 
39923
39942
  if (notif.timeout === 0) {
@@ -41041,7 +41060,7 @@
41041
41060
  */
41042
41061
 
41043
41062
  var index_umd = {
41044
- version: '2.14.1',
41063
+ version: '2.14.2',
41045
41064
  install (app, opts) {
41046
41065
  installQuasar(app, {
41047
41066
  components,