quasar 1.17.2 → 1.17.6

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 (131) hide show
  1. package/dist/api/LoadingBar.json +7 -0
  2. package/dist/api/QAjaxBar.json +13 -1
  3. package/dist/api/QTree.json +6 -0
  4. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  5. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  7. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  8. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  9. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  10. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  13. package/dist/icon-set/material-icons.umd.min.js +1 -1
  14. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  15. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  16. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  17. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  18. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  19. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  20. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  21. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  24. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  25. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  26. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  27. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  28. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  29. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  30. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  31. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  32. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  33. package/dist/icon-set/themify.umd.min.js +1 -1
  34. package/dist/lang/ar.umd.min.js +1 -1
  35. package/dist/lang/az-latn.umd.min.js +1 -1
  36. package/dist/lang/bg.umd.min.js +1 -1
  37. package/dist/lang/ca.umd.min.js +1 -1
  38. package/dist/lang/cs.umd.min.js +1 -1
  39. package/dist/lang/da.umd.min.js +1 -1
  40. package/dist/lang/de.umd.min.js +1 -1
  41. package/dist/lang/el.umd.min.js +1 -1
  42. package/dist/lang/en-gb.umd.min.js +1 -1
  43. package/dist/lang/en-us.umd.min.js +1 -1
  44. package/dist/lang/eo.umd.min.js +1 -1
  45. package/dist/lang/es.umd.min.js +1 -1
  46. package/dist/lang/et.umd.min.js +1 -1
  47. package/dist/lang/fa-ir.umd.min.js +1 -1
  48. package/dist/lang/fa.umd.min.js +1 -1
  49. package/dist/lang/fi.umd.min.js +1 -1
  50. package/dist/lang/fr.umd.min.js +1 -1
  51. package/dist/lang/gn.umd.min.js +1 -1
  52. package/dist/lang/he.umd.min.js +1 -1
  53. package/dist/lang/hr.umd.min.js +1 -1
  54. package/dist/lang/hu.umd.min.js +1 -1
  55. package/dist/lang/id.umd.min.js +1 -1
  56. package/dist/lang/is.umd.min.js +1 -1
  57. package/dist/lang/it.umd.min.js +1 -1
  58. package/dist/lang/ja.umd.min.js +1 -1
  59. package/dist/lang/km.umd.min.js +1 -1
  60. package/dist/lang/ko-kr.umd.min.js +1 -1
  61. package/dist/lang/kur-ckb.umd.min.js +1 -1
  62. package/dist/lang/lu.umd.min.js +1 -1
  63. package/dist/lang/lv.umd.min.js +1 -1
  64. package/dist/lang/ml.umd.min.js +1 -1
  65. package/dist/lang/ms.umd.min.js +1 -1
  66. package/dist/lang/my.umd.min.js +6 -0
  67. package/dist/lang/nb-no.umd.min.js +1 -1
  68. package/dist/lang/nl.umd.min.js +1 -1
  69. package/dist/lang/pl.umd.min.js +1 -1
  70. package/dist/lang/pt-br.umd.min.js +1 -1
  71. package/dist/lang/pt.umd.min.js +1 -1
  72. package/dist/lang/ro.umd.min.js +1 -1
  73. package/dist/lang/ru.umd.min.js +1 -1
  74. package/dist/lang/sk.umd.min.js +1 -1
  75. package/dist/lang/sl.umd.min.js +1 -1
  76. package/dist/lang/sr.umd.min.js +1 -1
  77. package/dist/lang/sv.umd.min.js +1 -1
  78. package/dist/lang/ta.umd.min.js +1 -1
  79. package/dist/lang/th.umd.min.js +1 -1
  80. package/dist/lang/tr.umd.min.js +1 -1
  81. package/dist/lang/ug.umd.min.js +1 -1
  82. package/dist/lang/uk.umd.min.js +1 -1
  83. package/dist/lang/vi.umd.min.js +1 -1
  84. package/dist/lang/zh-hans.umd.min.js +1 -1
  85. package/dist/lang/zh-hant.umd.min.js +1 -1
  86. package/dist/quasar.addon.css +1 -1
  87. package/dist/quasar.addon.rtl.css +1 -1
  88. package/dist/quasar.common.js +2 -2
  89. package/dist/quasar.css +8 -4
  90. package/dist/quasar.esm.js +2 -2
  91. package/dist/quasar.ie.polyfills.js +1 -1
  92. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  93. package/dist/quasar.min.css +1 -1
  94. package/dist/quasar.rtl.css +9 -5
  95. package/dist/quasar.rtl.min.css +1 -1
  96. package/dist/quasar.sass +8 -4
  97. package/dist/quasar.styl +8 -4
  98. package/dist/quasar.umd.js +148 -81
  99. package/dist/quasar.umd.min.js +2 -2
  100. package/dist/quasar.umd.modern.js +141 -77
  101. package/dist/quasar.umd.modern.min.js +2 -2
  102. package/dist/types/index.d.ts +15 -3
  103. package/dist/vetur/quasar-attributes.json +4 -0
  104. package/dist/vetur/quasar-tags.json +1 -0
  105. package/dist/web-types/web-types.json +11 -1
  106. package/lang/index.json +4 -0
  107. package/lang/my.js +96 -0
  108. package/package.json +1 -1
  109. package/src/components/ajax-bar/QAjaxBar.js +22 -11
  110. package/src/components/ajax-bar/QAjaxBar.json +16 -1
  111. package/src/components/date/QDate.js +6 -1
  112. package/src/components/dialog-plugin/DialogPlugin.js +2 -2
  113. package/src/components/field/QField.js +11 -2
  114. package/src/components/form/QForm.js +9 -0
  115. package/src/components/icon/QIcon.js +3 -6
  116. package/src/components/icon/QIcon.sass +4 -3
  117. package/src/components/icon/QIcon.styl +4 -3
  118. package/src/components/infinite-scroll/QInfiniteScroll.js +1 -1
  119. package/src/components/scroll-area/QScrollArea.js +20 -7
  120. package/src/components/scroll-observer/QScrollObserver.js +11 -13
  121. package/src/components/select/QSelect.js +20 -19
  122. package/src/components/select/QSelect.sass +3 -0
  123. package/src/components/select/QSelect.styl +3 -0
  124. package/src/components/tabs/QTabs.js +9 -4
  125. package/src/components/tree/QTree.js +8 -1
  126. package/src/components/tree/QTree.json +7 -0
  127. package/src/mixins/attrs.js +2 -0
  128. package/src/mixins/virtual-scroll.js +8 -2
  129. package/src/plugins/LoadingBar.js +6 -5
  130. package/src/plugins/LoadingBar.json +8 -0
  131. package/src/plugins/Notify.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v1.17.2
2
+ * Quasar Framework v1.17.6
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -12,7 +12,7 @@
12
12
 
13
13
  Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue;
14
14
 
15
- var version = "1.17.2";
15
+ var version = "1.17.6";
16
16
 
17
17
  /* eslint-disable no-useless-escape */
18
18
 
@@ -1940,6 +1940,8 @@
1940
1940
 
1941
1941
  const ariaHidden = { 'aria-hidden': 'true' };
1942
1942
 
1943
+ const iconAsButton = { tabindex: 0, type: 'button', 'aria-hidden': false, role: null };
1944
+
1943
1945
  var AttrsMixin = getPropCacheMixin('$attrs', 'qAttrs');
1944
1946
 
1945
1947
  const
@@ -2109,18 +2111,19 @@
2109
2111
  methods: {
2110
2112
  start (speed = 300) {
2111
2113
  const oldSpeed = this.speed;
2112
- this.speed = Math.max(0, speed) || 0;
2114
+ const newSpeed = this.speed = Math.max(0, speed) || 0;
2113
2115
 
2114
2116
  this.calls++;
2115
2117
 
2116
2118
  if (this.calls > 1) {
2117
- if (oldSpeed === 0 && speed > 0) {
2119
+ if (oldSpeed === 0 && newSpeed > 0) {
2118
2120
  this.__work();
2119
2121
  }
2120
- else if (oldSpeed > 0 && speed <= 0) {
2122
+ else if (oldSpeed > 0 && newSpeed <= 0) {
2121
2123
  clearTimeout(this.timer);
2122
2124
  }
2123
- return
2125
+
2126
+ return this.calls
2124
2127
  }
2125
2128
 
2126
2129
  clearTimeout(this.timer);
@@ -2128,25 +2131,33 @@
2128
2131
 
2129
2132
  this.progress = 0;
2130
2133
 
2131
- if (this.onScreen === true) { return }
2132
-
2133
- this.onScreen = true;
2134
- this.animate = false;
2135
2134
  this.timer = setTimeout(() => {
2136
2135
  this.animate = true;
2137
- speed > 0 && this.__work();
2138
- }, 100);
2136
+ newSpeed > 0 && this.__work();
2137
+ }, this.onScreen === true ? 500 : 1);
2138
+
2139
+ if (this.onScreen !== true) {
2140
+ this.onScreen = true;
2141
+ this.animate = false;
2142
+ }
2143
+
2144
+ return this.calls
2139
2145
  },
2140
2146
 
2141
2147
  increment (amount) {
2142
2148
  if (this.calls > 0) {
2143
2149
  this.progress = inc(this.progress, amount);
2144
2150
  }
2151
+
2152
+ return this.calls
2145
2153
  },
2146
2154
 
2147
2155
  stop () {
2148
2156
  this.calls = Math.max(0, this.calls - 1);
2149
- if (this.calls > 0) { return }
2157
+
2158
+ if (this.calls > 0) {
2159
+ return this.calls
2160
+ }
2150
2161
 
2151
2162
  clearTimeout(this.timer);
2152
2163
  this.$emit('stop');
@@ -2165,6 +2176,8 @@
2165
2176
  else {
2166
2177
  end();
2167
2178
  }
2179
+
2180
+ return this.calls
2168
2181
  },
2169
2182
 
2170
2183
  __work () {
@@ -2443,18 +2456,16 @@
2443
2456
  }
2444
2457
 
2445
2458
  if (this.type.img === true) {
2446
- return h('div', data, mergeSlot([
2459
+ return h('span', data, mergeSlot([
2447
2460
  h('img', {
2448
- class: this.type.cls,
2449
2461
  attrs: { src: this.type.src }
2450
2462
  })
2451
2463
  ], this, 'default'))
2452
2464
  }
2453
2465
 
2454
2466
  if (this.type.svg === true) {
2455
- return h('div', data, mergeSlot([
2467
+ return h('span', data, mergeSlot([
2456
2468
  h('svg', {
2457
- class: this.type.cls,
2458
2469
  attrs: {
2459
2470
  viewBox: this.type.viewBox,
2460
2471
  focusable: 'false' /* needed for IE11 */
@@ -2464,9 +2475,8 @@
2464
2475
  }
2465
2476
 
2466
2477
  if (this.type.svguse === true) {
2467
- return h('div', data, mergeSlot([
2478
+ return h('span', data, mergeSlot([
2468
2479
  h('svg', {
2469
- class: this.type.cls,
2470
2480
  attrs: {
2471
2481
  viewBox: this.type.viewBox,
2472
2482
  focusable: 'false' /* needed for IE11 */
@@ -9961,10 +9971,6 @@
9961
9971
  }
9962
9972
  },
9963
9973
 
9964
- activated () {
9965
- this.__recalculateScroll();
9966
- },
9967
-
9968
9974
  created () {
9969
9975
  this.buffer = [];
9970
9976
 
@@ -9977,6 +9983,15 @@
9977
9983
  this.rtlHasScrollBug = rtlHasScrollBug();
9978
9984
  },
9979
9985
 
9986
+ activated () {
9987
+ if (this.shouldActivate !== true) { return }
9988
+ this.__recalculateScroll();
9989
+ },
9990
+
9991
+ deactivated () {
9992
+ this.shouldActivate = true;
9993
+ },
9994
+
9980
9995
  beforeDestroy () {
9981
9996
  clearTimeout(this.bufferTimer);
9982
9997
  clearTimeout(this.animateTimer);
@@ -12643,7 +12658,12 @@
12643
12658
  return this.normalizedModel
12644
12659
  .filter(date => typeof date === 'string')
12645
12660
  .map(date => this.__decodeString(date, this.innerMask, this.innerLocale))
12646
- .filter(date => date.dateHash !== null)
12661
+ .filter(date =>
12662
+ date.dateHash !== null &&
12663
+ date.day !== null &&
12664
+ date.month !== null &&
12665
+ date.year !== null
12666
+ )
12647
12667
  },
12648
12668
 
12649
12669
  rangeModel () {
@@ -18433,7 +18453,7 @@
18433
18453
  h(QIcon, {
18434
18454
  staticClass: 'q-field__focusable-action',
18435
18455
  props: { tag: 'button', name: this.clearIcon || this.$q.iconSet.field.clear },
18436
- attrs: { tabindex: 0, type: 'button' },
18456
+ attrs: iconAsButton,
18437
18457
  on: this.clearableEvents
18438
18458
  })
18439
18459
  ])
@@ -18710,6 +18730,15 @@
18710
18730
  this.autofocus === true && this.focus();
18711
18731
  },
18712
18732
 
18733
+ activated () {
18734
+ if (this.shouldActivate !== true) { return }
18735
+ this.autofocus === true && this.focus();
18736
+ },
18737
+
18738
+ deactivated () {
18739
+ this.shouldActivate = true;
18740
+ },
18741
+
18713
18742
  beforeDestroy () {
18714
18743
  clearTimeout(this.focusoutTimer);
18715
18744
  }
@@ -19460,6 +19489,15 @@
19460
19489
  this.autofocus === true && this.focus();
19461
19490
  },
19462
19491
 
19492
+ activated () {
19493
+ if (this.shouldActivate !== true) { return }
19494
+ this.autofocus === true && this.focus();
19495
+ },
19496
+
19497
+ deactivated () {
19498
+ this.shouldActivate = true;
19499
+ },
19500
+
19463
19501
  methods: {
19464
19502
  validate (shouldFocus) {
19465
19503
  const promises = [];
@@ -20306,7 +20344,7 @@
20306
20344
  },
20307
20345
 
20308
20346
  activated () {
20309
- if (this.__scrollTarget && this.__scrollPosition !== void 0) {
20347
+ if (this.__scrollPosition !== void 0 && this.__scrollTarget) {
20310
20348
  setScrollPosition(this.__scrollTarget, this.__scrollPosition);
20311
20349
  }
20312
20350
  },
@@ -21837,19 +21875,20 @@
21837
21875
  if (immediately === true || this.debounce === 0 || this.debounce === '0') {
21838
21876
  this.__emit();
21839
21877
  }
21840
- else if (this.timer === null) {
21841
- this.timer = this.debounce
21842
- ? setTimeout(this.__emit, this.debounce)
21843
- : requestAnimationFrame(this.__emit);
21878
+ else if (this.clearTimer === void 0) {
21879
+ const [ timer, fn ] = this.debounce
21880
+ ? [ setTimeout(this.__emit, this.debounce), clearTimeout ]
21881
+ : [ requestAnimationFrame(this.__emit), cancelAnimationFrame ];
21882
+
21883
+ this.clearTimer = () => {
21884
+ fn(timer);
21885
+ this.clearTimer = void 0;
21886
+ };
21844
21887
  }
21845
21888
  },
21846
21889
 
21847
21890
  __emit () {
21848
- if (this.timer !== null) {
21849
- clearTimeout(this.timer);
21850
- cancelAnimationFrame(this.timer);
21851
- this.timer = null;
21852
- }
21891
+ this.clearTimer !== void 0 && this.clearTimer();
21853
21892
 
21854
21893
  const fn = this.horizontal === true
21855
21894
  ? getHorizontalScrollPosition
@@ -21888,14 +21927,11 @@
21888
21927
  },
21889
21928
 
21890
21929
  mounted () {
21891
- this.timer = null;
21892
-
21893
21930
  this.__configureScrollTarget();
21894
21931
  },
21895
21932
 
21896
21933
  beforeDestroy () {
21897
- clearTimeout(this.timer);
21898
- cancelAnimationFrame(this.timer);
21934
+ this.clearTimer !== void 0 && this.clearTimer();
21899
21935
  this.__unconfigureScrollTarget();
21900
21936
  }
21901
21937
  });
@@ -25096,6 +25132,14 @@
25096
25132
  ) || this.scroll.horizontal.size <= this.container.horizontal + 1
25097
25133
  },
25098
25134
 
25135
+ verticalThumbStart () {
25136
+ return this.verticalScrollPercentage * (this.container.vertical - this.verticalThumbSize)
25137
+ },
25138
+
25139
+ horizontalThumbStart () {
25140
+ return this.horizontalScrollPercentage * (this.container.horizontal - this.horizontalThumbSize)
25141
+ },
25142
+
25099
25143
  verticalThumbSize () {
25100
25144
  return Math.round(
25101
25145
  between(
@@ -25117,21 +25161,19 @@
25117
25161
  },
25118
25162
 
25119
25163
  verticalStyle () {
25120
- const pos = this.verticalScrollPercentage * (this.container.vertical - this.verticalThumbSize);
25121
25164
  return {
25122
25165
  ...this.thumbStyle,
25123
25166
  ...this.verticalThumbStyle,
25124
- top: `${pos}px`,
25167
+ top: `${this.verticalThumbStart}px`,
25125
25168
  height: `${this.verticalThumbSize}px`
25126
25169
  }
25127
25170
  },
25128
25171
 
25129
25172
  horizontalStyle () {
25130
- const pos = this.horizontalScrollPercentage * (this.container.horizontal - this.horizontalThumbSize);
25131
25173
  return {
25132
25174
  ...this.thumbStyle,
25133
25175
  ...this.horizontalThumbStyle,
25134
- left: `${pos}px`,
25176
+ left: `${this.horizontalThumbStart}px`,
25135
25177
  width: `${this.horizontalThumbSize}px`
25136
25178
  }
25137
25179
  },
@@ -25162,6 +25204,7 @@
25162
25204
  ...this.scroll.vertical,
25163
25205
  percentage: this.verticalScrollPercentage,
25164
25206
  thumbHidden: this.verticalThumbHidden,
25207
+ thumbStart: this.verticalThumbStart,
25165
25208
  thumbSize: this.verticalThumbSize,
25166
25209
  style: this.verticalStyle,
25167
25210
  thumbClass: this.verticalThumbClass,
@@ -25171,6 +25214,7 @@
25171
25214
  ...this.scroll.horizontal,
25172
25215
  percentage: this.horizontalScrollPercentage,
25173
25216
  thumbHidden: this.horizontalThumbHidden,
25217
+ thumbStart: this.horizontalThumbStart,
25174
25218
  thumbSize: this.horizontalThumbSize,
25175
25219
  style: this.horizontalStyle,
25176
25220
  thumbClass: this.horizontalThumbClass,
@@ -25384,8 +25428,11 @@
25384
25428
  const data = this.scrollComputed[ axis ];
25385
25429
 
25386
25430
  if (data.thumbHidden !== true) {
25387
- const pos = evt[ dirProps[ axis ].offset ] - data.thumbSize / 2;
25388
- this.__setScroll(pos / this.container[ axis ] * data.size, axis);
25431
+ const offset = evt[ dirProps[ axis ].offset ];
25432
+ if (offset < data.thumbStart || offset > data.thumbStart + data.thumbSize) {
25433
+ const pos = offset - data.thumbSize / 2;
25434
+ this.__setScroll(pos / this.container[ axis ] * data.size, axis);
25435
+ }
25389
25436
 
25390
25437
  const ref = axis === 'vertical' ? this.$refs.verticalThumb : this.$refs.horizontalThumb;
25391
25438
  // activate thumb pan
@@ -25514,9 +25561,11 @@
25514
25561
  },
25515
25562
 
25516
25563
  activated () {
25564
+ if (this.__scrollPosition === void 0) { return }
25565
+
25517
25566
  const scrollTarget = this.getScrollTarget();
25518
25567
 
25519
- if (scrollTarget !== void 0 && this.__scrollPosition !== void 0) {
25568
+ if (scrollTarget !== void 0) {
25520
25569
  setHorizontalScrollPosition(scrollTarget, this.__scrollPosition.left);
25521
25570
  setVerticalScrollPosition(scrollTarget, this.__scrollPosition.top);
25522
25571
  }
@@ -26127,9 +26176,9 @@
26127
26176
  ? 1
26128
26177
  : Math.ceil(scrollViewSize / this.virtualScrollItemSizeComputed);
26129
26178
  const baseSize = Math.max(
26130
- 10,
26179
+ 1,
26131
26180
  view,
26132
- Math.ceil(this.virtualScrollSliceSize / multiplier)
26181
+ Math.ceil((this.virtualScrollSliceSize > 0 ? this.virtualScrollSliceSize : 10) / multiplier)
26133
26182
  );
26134
26183
 
26135
26184
  this.virtualScrollSliceSizeComputed = {
@@ -26221,6 +26270,8 @@
26221
26270
  },
26222
26271
 
26223
26272
  activated () {
26273
+ if (this.shouldActivate !== true) { return }
26274
+
26224
26275
  const scrollEl = this.__getVirtualScrollTarget();
26225
26276
 
26226
26277
  if (this.prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {
@@ -26236,6 +26287,10 @@
26236
26287
  }
26237
26288
  },
26238
26289
 
26290
+ deactivated () {
26291
+ this.shouldActivate = true;
26292
+ },
26293
+
26239
26294
  beforeMount () {
26240
26295
  this.__onVirtualScrollEvt = debounce(this.__onVirtualScrollEvt, this.$q.platform.is.ios === true ? 120 : 35);
26241
26296
  this.__setVirtualScrollSize();
@@ -26856,34 +26911,34 @@
26856
26911
 
26857
26912
  if (typeof value === 'string' && value.length > 0) {
26858
26913
  const needle = value.toLocaleLowerCase();
26914
+ const findFn = extractFn => {
26915
+ const option = this.options.find(opt => extractFn(opt).toLocaleLowerCase() === needle);
26859
26916
 
26860
- let fn = opt => this.getOptionValue(opt).toLocaleLowerCase() === needle;
26861
- let option = this.options.find(fn);
26917
+ if (option === void 0) {
26918
+ return false
26919
+ }
26862
26920
 
26863
- if (option !== void 0) {
26864
26921
  if (this.innerValue.indexOf(option) === -1) {
26865
26922
  this.toggleOption(option);
26866
26923
  }
26867
26924
  else {
26868
26925
  this.hidePopup();
26869
26926
  }
26870
- }
26871
- else {
26872
- fn = opt => this.getOptionLabel(opt).toLocaleLowerCase() === needle;
26873
- option = this.options.find(fn);
26874
26927
 
26875
- if (option !== void 0) {
26876
- if (this.innerValue.indexOf(option) === -1) {
26877
- this.toggleOption(option);
26878
- }
26879
- else {
26880
- this.hidePopup();
26881
- }
26928
+ return true
26929
+ };
26930
+ const fillFn = afterFilter => {
26931
+ if (findFn(this.getOptionValue) === true) {
26932
+ return
26882
26933
  }
26883
- else {
26884
- this.filter(value, true);
26934
+ if (findFn(this.getOptionLabel) === true || afterFilter === true) {
26935
+ return
26885
26936
  }
26886
- }
26937
+
26938
+ this.filter(value, true, () => fillFn(true));
26939
+ };
26940
+
26941
+ fillFn();
26887
26942
  }
26888
26943
  else {
26889
26944
  this.__clearValue(e);
@@ -27171,7 +27226,7 @@
27171
27226
  h('div', {
27172
27227
  ref: 'target',
27173
27228
  key: 'd_t',
27174
- staticClass: 'no-outline',
27229
+ staticClass: 'q-select__focus-target',
27175
27230
  attrs: {
27176
27231
  id: this.targetUid,
27177
27232
  tabindex: this.tabindex,
@@ -27188,7 +27243,7 @@
27188
27243
  if (typeof this.autocomplete === 'string' && this.autocomplete.length > 0) {
27189
27244
  child.push(
27190
27245
  h('input', {
27191
- staticClass: 'q-select__autocomplete-input no-outline',
27246
+ staticClass: 'q-select__autocomplete-input',
27192
27247
  attrs: { autocomplete: this.autocomplete },
27193
27248
  on: cache(this, 'autoinp', {
27194
27249
  keyup: this.__onTargetAutocomplete
@@ -27358,7 +27413,7 @@
27358
27413
  }
27359
27414
  },
27360
27415
 
27361
- filter (val, keepClosed) {
27416
+ filter (val, keepClosed, afterUpdateFn) {
27362
27417
  if (this.qListeners.filter === void 0 || (keepClosed !== true && this.focused !== true)) {
27363
27418
  return
27364
27419
  }
@@ -27415,6 +27470,7 @@
27415
27470
  }
27416
27471
 
27417
27472
  typeof afterFn === 'function' && this.$nextTick(() => { afterFn(this); });
27473
+ typeof afterUpdateFn === 'function' && this.$nextTick(() => { afterUpdateFn(this); });
27418
27474
  });
27419
27475
  }
27420
27476
  },
@@ -34173,6 +34229,8 @@
34173
34229
  expanded: Array, // sync
34174
34230
  selected: {}, // sync
34175
34231
 
34232
+ noSelectionUnset: Boolean,
34233
+
34176
34234
  defaultExpandAll: Boolean,
34177
34235
  accordion: Boolean,
34178
34236
 
@@ -34724,7 +34782,12 @@
34724
34782
 
34725
34783
  if (this.hasSelection) {
34726
34784
  if (meta.selectable) {
34727
- this.$emit('update:selected', meta.key !== this.selected ? meta.key : null);
34785
+ if (this.noSelectionUnset === false) {
34786
+ this.$emit('update:selected', meta.key !== this.selected ? meta.key : null);
34787
+ }
34788
+ else if (meta.key !== this.selected) {
34789
+ this.$emit('update:selected', meta.key || null);
34790
+ }
34728
34791
  }
34729
34792
  }
34730
34793
  else {
@@ -38500,8 +38563,8 @@
38500
38563
  color: this.vmColor,
38501
38564
  label: this.okLabel,
38502
38565
  ripple: false,
38503
- ...(Object(this.ok) === this.ok ? this.ok : { flat: true }),
38504
- disable: this.okDisabled
38566
+ disable: this.okDisabled,
38567
+ ...(Object(this.ok) === this.ok ? this.ok : { flat: true })
38505
38568
  }
38506
38569
  },
38507
38570
 
@@ -38719,8 +38782,9 @@
38719
38782
  setDefaults: noop,
38720
38783
 
38721
38784
  install ({ $q, cfg }) {
38785
+ $q.loadingBar = this;
38786
+
38722
38787
  if (isSSR === true) {
38723
- $q.loadingBar = this;
38724
38788
  return
38725
38789
  }
38726
38790
 
@@ -38728,7 +38792,7 @@
38728
38792
  ? { ...cfg.loadingBar }
38729
38793
  : {};
38730
38794
 
38731
- const bar = $q.loadingBar = new Vue({
38795
+ const bar = new Vue({
38732
38796
  name: 'LoadingBar',
38733
38797
 
38734
38798
  // hide App from Vue devtools
@@ -38748,11 +38812,11 @@
38748
38812
  Object.assign(this, {
38749
38813
  start: speed => {
38750
38814
  bar.start(speed);
38751
- this.isActive = bar.isActive = bar.calls > 0;
38815
+ this.isActive = bar.isActive = true;
38752
38816
  },
38753
38817
  stop: () => {
38754
- bar.stop();
38755
- this.isActive = bar.isActive = bar.calls > 0;
38818
+ const sessions = bar.stop();
38819
+ this.isActive = bar.isActive = sessions > 0;
38756
38820
  },
38757
38821
  increment: bar.increment,
38758
38822
  setDefaults: opts => {
@@ -39353,7 +39417,7 @@
39353
39417
  closeBtn && actions.push({
39354
39418
  label: typeof closeBtn === 'string'
39355
39419
  ? closeBtn
39356
- : this.$q.lang.label.close
39420
+ : vm.$q.lang.label.close
39357
39421
  });
39358
39422
 
39359
39423
  notif.actions = actions.map(({ handler, noDismiss, style, class: klass, attrs, ...props }) => ({