quasar 2.7.1 → 2.7.4

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 (159) hide show
  1. package/dist/api/QDialog.json +6 -0
  2. package/dist/api/QPagination.json +1 -1
  3. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-outlined.umd.prod.js +2 -2
  16. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  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 +2 -2
  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 +2 -2
  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-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 +2 -2
  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/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +2 -2
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/kz.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 +6 -0
  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 +6 -0
  98. package/dist/lang/uz-Latn.umd.prod.js +6 -0
  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 +10 -3
  104. package/dist/quasar.esm.prod.js +2 -2
  105. package/dist/quasar.prod.css +1 -1
  106. package/dist/quasar.rtl.css +11 -3
  107. package/dist/quasar.rtl.prod.css +1 -1
  108. package/dist/quasar.sass +10 -4
  109. package/dist/quasar.umd.js +77 -55
  110. package/dist/quasar.umd.prod.js +2 -2
  111. package/dist/types/index.d.ts +8 -1
  112. package/dist/vetur/quasar-attributes.json +4 -0
  113. package/dist/vetur/quasar-tags.json +2 -1
  114. package/dist/web-types/web-types.json +12 -2
  115. package/icon-set/material-symbols-outlined.js +87 -87
  116. package/icon-set/material-symbols-outlined.mjs +87 -87
  117. package/icon-set/svg-ionicons-v6.js +14 -15
  118. package/icon-set/svg-ionicons-v6.mjs +14 -15
  119. package/icon-set/svg-material-symbols-outlined.js +151 -151
  120. package/icon-set/svg-material-symbols-outlined.mjs +151 -151
  121. package/lang/ca.js +31 -31
  122. package/lang/ca.mjs +31 -31
  123. package/lang/index.json +12 -0
  124. package/lang/ko-KR.js +21 -21
  125. package/lang/ko-KR.mjs +21 -21
  126. package/lang/sm.js +96 -0
  127. package/lang/sm.mjs +91 -0
  128. package/lang/uz-Cyrl.js +98 -0
  129. package/lang/uz-Cyrl.mjs +93 -0
  130. package/lang/uz-Latn.js +102 -0
  131. package/lang/uz-Latn.mjs +97 -0
  132. package/package.json +11 -11
  133. package/src/components/dialog/QDialog.js +3 -1
  134. package/src/components/dialog/QDialog.json +7 -0
  135. package/src/components/file/QFile.js +6 -1
  136. package/src/components/icon/QIcon.sass +3 -2
  137. package/src/components/img/QImg.sass +1 -0
  138. package/src/components/input/QInput.js +7 -1
  139. package/src/components/menu/__tests__/QMenu.spec.js +23 -23
  140. package/src/components/pagination/QPagination.json +1 -1
  141. package/src/components/scroll-area/QScrollArea.js +4 -2
  142. package/src/components/select/QSelect.js +28 -18
  143. package/src/components/select/__tests__/QSelect.spec.js +427 -451
  144. package/src/components/table/QTable.js +0 -1
  145. package/src/components/table/QTable.sass +1 -1
  146. package/src/components/timeline/QTimeline.sass +4 -0
  147. package/src/components/uploader/uploader-core.js +1 -0
  148. package/src/components/virtual-scroll/use-virtual-scroll.js +6 -1
  149. package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
  150. package/src/composables/private/__tests__/use-field.spec.js +7 -7
  151. package/src/composables/private/__tests__/use-model-toggle.spec.js +18 -17
  152. package/src/composables/private/__tests__/use-transition.spec.js +5 -5
  153. package/src/composables/private/__tests__/use-validate.spec.js +4 -4
  154. package/src/composables/private/use-anchor.js +1 -1
  155. package/src/composables/private/use-field.js +1 -1
  156. package/src/composables/private/use-key-composition.js +10 -14
  157. package/src/directives/Ripple.js +5 -9
  158. package/src/utils/date.js +2 -2
  159. package/src/components/select/__tests__/WrapperOne.vue +0 -28
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.7.1
2
+ * Quasar Framework v2.7.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -646,6 +646,7 @@ input[type='search']::-webkit-search-decoration
646
646
  line-height: 1
647
647
  width: 1em
648
648
  height: 1em
649
+ flex-shrink: 0
649
650
  letter-spacing: normal
650
651
  text-transform: none
651
652
  white-space: nowrap
@@ -663,8 +664,8 @@ input[type='search']::-webkit-search-decoration
663
664
  justify-content: center
664
665
  > svg,
665
666
  > img
666
- width: 1em
667
- height: 1em
667
+ width: 100%
668
+ height: 100%
668
669
  .q-icon,
669
670
  .material-icons,
670
671
  .material-icons-outlined,
@@ -2656,6 +2657,7 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
2656
2657
  font-size: $img-loading-font-size
2657
2658
  &__container
2658
2659
  border-radius: inherit
2660
+ font-size: 0
2659
2661
  &__image
2660
2662
  border-radius: inherit
2661
2663
  width: 100%
@@ -4160,7 +4162,7 @@ body.platform-ios
4160
4162
  &--selected
4161
4163
  transform: scale(.95)
4162
4164
  .q-table--horizontal-separator, .q-table--cell-separator
4163
- thead th, tbody tr:not(:last-child) td
4165
+ thead th, tbody tr:not(:last-child) > td
4164
4166
  border-bottom-width: 1px
4165
4167
  .q-table--vertical-separator, .q-table--cell-separator
4166
4168
  td, th
@@ -4579,6 +4581,10 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4579
4581
  line-height: 38px
4580
4582
  width: 100%
4581
4583
  color: #fff
4584
+ > svg,
4585
+ > img
4586
+ width: 1em
4587
+ height: 1em
4582
4588
  &__dot-img
4583
4589
  position: absolute
4584
4590
  top: 4px
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.7.1
2
+ * Quasar Framework v2.7.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1603,7 +1603,7 @@
1603
1603
  }
1604
1604
 
1605
1605
  var installQuasar = function (parentApp, opts = {}) {
1606
- const $q = { version: '2.7.1' };
1606
+ const $q = { version: '2.7.4' };
1607
1607
 
1608
1608
  if (globalConfigIsFrozen === false) {
1609
1609
  if (opts.config !== void 0) {
@@ -3170,8 +3170,8 @@
3170
3170
  }, 50);
3171
3171
  }
3172
3172
 
3173
- function updateModifiers$1 (ctx, { modifiers, value, arg, instance }) {
3174
- const cfg = Object.assign({}, instance.$q.config.ripple, modifiers, value);
3173
+ function updateModifiers$1 (ctx, { modifiers, value, arg }) {
3174
+ const cfg = Object.assign({}, ctx.cfg.ripple, modifiers, value);
3175
3175
  ctx.modifiers = {
3176
3176
  early: cfg.early === true,
3177
3177
  stop: cfg.stop === true,
@@ -3186,6 +3186,7 @@
3186
3186
 
3187
3187
  beforeMount (el, binding) {
3188
3188
  const ctx = {
3189
+ cfg: binding.instance.$.appContext.config.globalProperties.$q.config,
3189
3190
  enabled: binding.value !== false,
3190
3191
  modifiers: {},
3191
3192
  abort: [],
@@ -3194,11 +3195,7 @@
3194
3195
  if (
3195
3196
  ctx.enabled === true
3196
3197
  && evt.qSkipRipple !== true
3197
- && (
3198
- ctx.modifiers.early === true
3199
- ? [ 'mousedown', 'touchstart' ].includes(evt.type) === true
3200
- : evt.type === 'click'
3201
- )
3198
+ && evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
3202
3199
  ) {
3203
3200
  showRipple(evt, el, ctx, evt.qKeyEvent === true);
3204
3201
  }
@@ -3221,8 +3218,7 @@
3221
3218
  el.__qripple = ctx;
3222
3219
 
3223
3220
  addEvt(ctx, 'main', [
3224
- [ el, 'mousedown', 'start', 'passive' ],
3225
- [ el, 'touchstart', 'start', 'passive' ],
3221
+ [ el, 'pointerdown', 'start', 'passive' ],
3226
3222
  [ el, 'click', 'start', 'passive' ],
3227
3223
  [ el, 'keydown', 'keystart', 'passive' ],
3228
3224
  [ el, 'keyup', 'keystart', 'passive' ]
@@ -3988,7 +3984,7 @@
3988
3984
  }
3989
3985
 
3990
3986
  function pickAnchorEl () {
3991
- if (props.target === false || props.target === '') {
3987
+ if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {
3992
3988
  anchorEl.value = null;
3993
3989
  }
3994
3990
  else if (props.target === true) {
@@ -11982,7 +11978,7 @@
11982
11978
  const date = new Date(
11983
11979
  d.year,
11984
11980
  d.month === null ? null : d.month - 1,
11985
- d.day,
11981
+ d.day === null ? 1 : d.day,
11986
11982
  d.hour,
11987
11983
  d.minute,
11988
11984
  d.second,
@@ -12411,7 +12407,7 @@
12411
12407
  YY (date, dateLocale, forcedYear) {
12412
12408
  // workaround for < 1900 with new Date()
12413
12409
  const y = this.YYYY(date, dateLocale, forcedYear) % 100;
12414
- return y > 0
12410
+ return y >= 0
12415
12411
  ? pad(y)
12416
12412
  : '-' + pad(Math.abs(y))
12417
12413
  },
@@ -14394,6 +14390,7 @@
14394
14390
 
14395
14391
  persistent: Boolean,
14396
14392
  autoClose: Boolean,
14393
+ allowFocusOutside: Boolean,
14397
14394
 
14398
14395
  noEscDismiss: Boolean,
14399
14396
  noBackdropDismiss: Boolean,
@@ -14698,7 +14695,8 @@
14698
14695
  function onFocusChange (evt) {
14699
14696
  // the focus is not in a vue child component
14700
14697
  if (
14701
- portalIsAccessible.value === true
14698
+ props.allowFocusOutside !== true
14699
+ && portalIsAccessible.value === true
14702
14700
  && childHasFocus(innerRef.value, evt.target) !== true
14703
14701
  ) {
14704
14702
  focus('[tabindex]:not([tabindex="-1"])');
@@ -18832,6 +18830,7 @@
18832
18830
  + (props.square === true ? ' q-uploader--square no-border-radius' : '')
18833
18831
  + (props.flat === true ? ' q-uploader--flat no-shadow' : '')
18834
18832
  + (props.disable === true ? ' disabled q-uploader--disable' : '')
18833
+ + (dnd.value === true ? ' q-uploader--dnd' : '')
18835
18834
  );
18836
18835
 
18837
18836
  const colorClass = vue.computed(() =>
@@ -21133,7 +21132,7 @@
21133
21132
  const labelAttrs = state.getControl === void 0 && slots.control === void 0
21134
21133
  ? {
21135
21134
  ...state.splitAttrs.attributes.value,
21136
- 'data-autofocus': props.autofocus,
21135
+ 'data-autofocus': props.autofocus === true || void 0,
21137
21136
  ...attributes.value
21138
21137
  }
21139
21138
  : attributes.value;
@@ -21326,6 +21325,11 @@
21326
21325
  disabled: state.editable.value !== true
21327
21326
  }));
21328
21327
 
21328
+ const fieldClass = vue.computed(() =>
21329
+ 'q-file q-field--auto-height'
21330
+ + (dnd.value === true ? ' q-file--dnd' : '')
21331
+ );
21332
+
21329
21333
  const isAppending = vue.computed(() =>
21330
21334
  props.multiple === true && props.append === true
21331
21335
  );
@@ -21458,7 +21462,7 @@
21458
21462
  }
21459
21463
 
21460
21464
  Object.assign(state, {
21461
- fieldClass: { value: 'q-file q-field--auto-height' },
21465
+ fieldClass,
21462
21466
  emitValue,
21463
21467
  hasValue,
21464
21468
  inputRef,
@@ -23246,23 +23250,19 @@
23246
23250
  e.target.qComposing = false;
23247
23251
  onInput(e);
23248
23252
  }
23249
- else if (e.type === 'compositionupdate') {
23250
- if (
23251
- e.target.qComposing !== true
23252
- && typeof e.data === 'string'
23253
- ) {
23254
- const isComposing = client.is.firefox === true
23255
- ? isPlainText.test(e.data) === false
23256
- : isJapanese.test(e.data) === true && isChinese.test(e.data) === true && isKorean.test(e.data) === true;
23253
+ else if (
23254
+ e.type === 'compositionupdate'
23255
+ && e.target.qComposing !== true
23256
+ && typeof e.data === 'string'
23257
+ ) {
23258
+ const isComposing = client.is.firefox === true
23259
+ ? isPlainText.test(e.data) === false
23260
+ : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true;
23257
23261
 
23258
- if (isComposing === true) {
23259
- e.target.qComposing = true;
23260
- }
23262
+ if (isComposing === true) {
23263
+ e.target.qComposing = true;
23261
23264
  }
23262
23265
  }
23263
- else {
23264
- e.target.qComposing = true;
23265
- }
23266
23266
  }
23267
23267
  }
23268
23268
 
@@ -23464,7 +23464,7 @@
23464
23464
  }
23465
23465
 
23466
23466
  function onInput (e) {
23467
- if (!e || !e.target || e.target.qComposing === true) {
23467
+ if (!e || !e.target) {
23468
23468
  return
23469
23469
  }
23470
23470
 
@@ -23475,6 +23475,12 @@
23475
23475
 
23476
23476
  const val = e.target.value;
23477
23477
 
23478
+ if (e.target.qComposing === true) {
23479
+ temp.value = val;
23480
+
23481
+ return
23482
+ }
23483
+
23478
23484
  if (hasMask.value === true) {
23479
23485
  updateMaskValue(val, false, e.inputType);
23480
23486
  }
@@ -27055,6 +27061,8 @@
27055
27061
  mouseAllDir: true
27056
27062
  };
27057
27063
 
27064
+ const getMinThumbSize = size => (size >= 250 ? 50 : Math.ceil(size / 5));
27065
+
27058
27066
  var QScrollArea = createComponent({
27059
27067
  name: 'QScrollArea',
27060
27068
 
@@ -27146,7 +27154,7 @@
27146
27154
  Math.round(
27147
27155
  between(
27148
27156
  container.vertical.value * container.vertical.value / scroll.vertical.size.value,
27149
- 50,
27157
+ getMinThumbSize(container.vertical.value),
27150
27158
  container.vertical.value
27151
27159
  )
27152
27160
  )
@@ -27188,7 +27196,7 @@
27188
27196
  Math.round(
27189
27197
  between(
27190
27198
  container.horizontal.value * container.horizontal.value / scroll.horizontal.size.value,
27191
- 50,
27199
+ getMinThumbSize(container.horizontal.value),
27192
27200
  container.horizontal.value
27193
27201
  )
27194
27202
  )
@@ -27519,7 +27527,12 @@
27519
27527
  const setOverflowAnchor = window.getComputedStyle(document.body).overflowAnchor === void 0
27520
27528
  ? noop
27521
27529
  : function (contentEl, index) {
27522
- requestAnimationFrame(() => {
27530
+ if (contentEl === null) {
27531
+ return
27532
+ }
27533
+
27534
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
27535
+ contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
27523
27536
  if (contentEl === null) {
27524
27537
  return
27525
27538
  }
@@ -28343,7 +28356,7 @@
28343
28356
 
28344
28357
  emits: [
28345
28358
  ...useFieldEmits,
28346
- 'add', 'remove', 'input-value',
28359
+ 'add', 'remove', 'input-value', 'new-value',
28347
28360
  'keyup', 'keypress', 'keydown',
28348
28361
  'filter-abort'
28349
28362
  ],
@@ -28391,7 +28404,6 @@
28391
28404
  localResetVirtualScroll,
28392
28405
  padVirtualScroll,
28393
28406
  onVirtualScrollEvt,
28394
- reset,
28395
28407
  scrollTo,
28396
28408
  setVirtualScrollSize
28397
28409
  } = useVirtualScroll({
@@ -28485,15 +28497,23 @@
28485
28497
 
28486
28498
  const tabindex = vue.computed(() => (state.focused.value === true ? props.tabindex : -1));
28487
28499
 
28488
- const comboboxAttrs = vue.computed(() => ({
28489
- tabindex: props.tabindex,
28490
- role: 'combobox',
28491
- 'aria-label': props.label,
28492
- 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
28493
- 'aria-expanded': menu.value === true ? 'true' : 'false',
28494
- 'aria-owns': `${ state.targetUid.value }_lb`,
28495
- 'aria-controls': `${ state.targetUid.value }_lb`
28496
- }));
28500
+ const comboboxAttrs = vue.computed(() => {
28501
+ const attrs = {
28502
+ tabindex: props.tabindex,
28503
+ role: 'combobox',
28504
+ 'aria-label': props.label,
28505
+ 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
28506
+ 'aria-expanded': menu.value === true ? 'true' : 'false',
28507
+ 'aria-owns': `${ state.targetUid.value }_lb`,
28508
+ 'aria-controls': `${ state.targetUid.value }_lb`
28509
+ };
28510
+
28511
+ if (optionIndex.value >= 0) {
28512
+ attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`;
28513
+ }
28514
+
28515
+ return attrs
28516
+ });
28497
28517
 
28498
28518
  const listboxAttrs = vue.computed(() => {
28499
28519
  const attrs = {
@@ -29558,13 +29578,18 @@
29558
29578
  setOptionIndex(optionIndex);
29559
29579
  }
29560
29580
 
29561
- function rerenderMenu () {
29581
+ function rerenderMenu (newLength, oldLength) {
29562
29582
  if (menu.value === true && state.innerLoading.value === false) {
29563
- reset();
29583
+ localResetVirtualScroll(-1, true);
29564
29584
 
29565
29585
  vue.nextTick(() => {
29566
29586
  if (menu.value === true && state.innerLoading.value === false) {
29567
- updateMenu(true);
29587
+ if (newLength > oldLength) {
29588
+ localResetVirtualScroll();
29589
+ }
29590
+ else {
29591
+ updateMenu(true);
29592
+ }
29568
29593
  }
29569
29594
  });
29570
29595
  }
@@ -29642,10 +29667,8 @@
29642
29667
  showPopup,
29643
29668
 
29644
29669
  floatingLabel: vue.computed(() =>
29645
- (props.hideSelected === true
29646
- ? inputValue.value.length > 0
29647
- : hasValue.value === true
29648
- )
29670
+ (props.hideSelected !== true && hasValue.value === true)
29671
+ || inputValue.value.length > 0
29649
29672
  || fieldValueIsFilled(props.displayValue)
29650
29673
  ),
29651
29674
 
@@ -33608,7 +33631,6 @@
33608
33631
 
33609
33632
  const __containerClass = vue.computed(() =>
33610
33633
  `q-table__container q-table--${ props.separator }-separator column no-wrap`
33611
- + (props.loading === true ? ' q-table--loading' : '')
33612
33634
  + (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)
33613
33635
  + (isDark.value === true ? ' q-table--dark' : '')
33614
33636
  + (props.dense === true ? ' q-table--dense' : '')
@@ -39716,7 +39738,7 @@
39716
39738
  });
39717
39739
 
39718
39740
  var index_umd = {
39719
- version: '2.7.1',
39741
+ version: '2.7.4',
39720
39742
  install (app, opts) {
39721
39743
  installQuasar(app, {
39722
39744
  components,