quasar 2.7.0 → 2.7.3

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 (154) 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 +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 +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/vi.umd.prod.js +1 -1
  98. package/dist/lang/zh-CN.umd.prod.js +1 -1
  99. package/dist/lang/zh-TW.umd.prod.js +1 -1
  100. package/dist/quasar.cjs.prod.js +2 -2
  101. package/dist/quasar.css +5 -8
  102. package/dist/quasar.esm.prod.js +2 -2
  103. package/dist/quasar.prod.css +1 -1
  104. package/dist/quasar.rtl.css +5 -9
  105. package/dist/quasar.rtl.prod.css +1 -1
  106. package/dist/quasar.sass +6 -8
  107. package/dist/quasar.umd.js +100 -66
  108. package/dist/quasar.umd.prod.js +2 -2
  109. package/dist/types/index.d.ts +6 -1
  110. package/dist/vetur/quasar-attributes.json +4 -0
  111. package/dist/vetur/quasar-tags.json +2 -1
  112. package/dist/web-types/web-types.json +12 -2
  113. package/icon-set/material-symbols-outlined.js +87 -87
  114. package/icon-set/material-symbols-outlined.mjs +87 -87
  115. package/icon-set/svg-material-symbols-outlined.js +151 -151
  116. package/icon-set/svg-material-symbols-outlined.mjs +151 -151
  117. package/lang/ca.js +31 -31
  118. package/lang/ca.mjs +31 -31
  119. package/lang/index.json +4 -0
  120. package/lang/ko-KR.js +21 -21
  121. package/lang/ko-KR.mjs +21 -21
  122. package/lang/sm.js +96 -0
  123. package/lang/sm.mjs +91 -0
  124. package/package.json +13 -12
  125. package/src/components/badge/QBadge.js +2 -2
  126. package/src/components/checkbox/use-checkbox.js +8 -7
  127. package/src/components/dialog/QDialog.js +3 -1
  128. package/src/components/dialog/QDialog.json +7 -0
  129. package/src/components/file/QFile.js +6 -1
  130. package/src/components/icon/QIcon.sass +3 -2
  131. package/src/components/img/QImg.sass +1 -0
  132. package/src/components/input/QInput.js +1 -1
  133. package/src/components/menu/__tests__/QMenu.spec.js +23 -23
  134. package/src/components/pagination/QPagination.json +1 -1
  135. package/src/components/radio/QRadio.js +2 -2
  136. package/src/components/select/QSelect.js +27 -15
  137. package/src/components/select/__tests__/QSelect.spec.js +427 -451
  138. package/src/components/table/QTable.js +0 -1
  139. package/src/components/table/QTable.sass +1 -1
  140. package/src/components/tabs/QTabs.sass +0 -6
  141. package/src/components/uploader/uploader-core.js +1 -0
  142. package/src/components/virtual-scroll/use-virtual-scroll.js +6 -1
  143. package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
  144. package/src/composables/private/__tests__/use-field.spec.js +7 -7
  145. package/src/composables/private/__tests__/use-model-toggle.spec.js +18 -17
  146. package/src/composables/private/__tests__/use-transition.spec.js +5 -5
  147. package/src/composables/private/__tests__/use-validate.spec.js +4 -4
  148. package/src/composables/private/use-anchor.js +1 -1
  149. package/src/composables/private/use-field.js +1 -1
  150. package/src/composables/private/use-key-composition.js +16 -13
  151. package/src/directives/Ripple.js +5 -9
  152. package/src/utils/date.js +1 -1
  153. package/src/utils/private/global-dialog.js +22 -10
  154. 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.0
2
+ * Quasar Framework v2.7.3
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
@@ -4373,10 +4375,6 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4373
4375
  min-height: 36px
4374
4376
  &--full
4375
4377
  min-height: 52px
4376
- @media (min-width: $breakpoint-lg-min)
4377
- .q-header, .q-footer
4378
- .q-tab__content
4379
- min-width: 128px
4380
4378
  .q-time
4381
4379
  box-shadow: $shadow-2
4382
4380
  border-radius: $generic-border-radius
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.7.0
2
+ * Quasar Framework v2.7.3
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.0' };
1606
+ const $q = { version: '2.7.3' };
1607
1607
 
1608
1608
  if (globalConfigIsFrozen === false) {
1609
1609
  if (opts.config !== void 0) {
@@ -2364,7 +2364,7 @@
2364
2364
  style: style.value,
2365
2365
  role: 'alert',
2366
2366
  'aria-label': props.label
2367
- }, props.label !== void 0 ? props.label : hSlot(slots.default))
2367
+ }, hMergeSlot(slots.default, props.label !== void 0 ? [ props.label ] : []))
2368
2368
  }
2369
2369
  });
2370
2370
 
@@ -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) {
@@ -7272,22 +7268,23 @@
7272
7268
  props.val !== void 0 && Array.isArray(props.modelValue)
7273
7269
  );
7274
7270
 
7275
- const index = vue.computed(() => (
7276
- modelIsArray.value === true
7277
- ? props.modelValue.indexOf(props.val)
7271
+ const index = vue.computed(() => {
7272
+ const val = vue.toRaw(props.val);
7273
+ return modelIsArray.value === true
7274
+ ? props.modelValue.findIndex(opt => vue.toRaw(opt) === val)
7278
7275
  : -1
7279
- ));
7276
+ });
7280
7277
 
7281
7278
  const isTrue = vue.computed(() => (
7282
7279
  modelIsArray.value === true
7283
7280
  ? index.value > -1
7284
- : props.modelValue === props.trueValue
7281
+ : vue.toRaw(props.modelValue) === vue.toRaw(props.trueValue)
7285
7282
  ));
7286
7283
 
7287
7284
  const isFalse = vue.computed(() => (
7288
7285
  modelIsArray.value === true
7289
7286
  ? index.value === -1
7290
- : props.modelValue === props.falseValue
7287
+ : vue.toRaw(props.modelValue) === vue.toRaw(props.falseValue)
7291
7288
  ));
7292
7289
 
7293
7290
  const isIndeterminate = vue.computed(() =>
@@ -11981,7 +11978,7 @@
11981
11978
  const date = new Date(
11982
11979
  d.year,
11983
11980
  d.month === null ? null : d.month - 1,
11984
- d.day,
11981
+ d.day === null ? 1 : d.day,
11985
11982
  d.hour,
11986
11983
  d.minute,
11987
11984
  d.second,
@@ -14393,6 +14390,7 @@
14393
14390
 
14394
14391
  persistent: Boolean,
14395
14392
  autoClose: Boolean,
14393
+ allowFocusOutside: Boolean,
14396
14394
 
14397
14395
  noEscDismiss: Boolean,
14398
14396
  noBackdropDismiss: Boolean,
@@ -14697,7 +14695,8 @@
14697
14695
  function onFocusChange (evt) {
14698
14696
  // the focus is not in a vue child component
14699
14697
  if (
14700
- portalIsAccessible.value === true
14698
+ props.allowFocusOutside !== true
14699
+ && portalIsAccessible.value === true
14701
14700
  && childHasFocus(innerRef.value, evt.target) !== true
14702
14701
  ) {
14703
14702
  focus('[tabindex]:not([tabindex="-1"])');
@@ -18831,6 +18830,7 @@
18831
18830
  + (props.square === true ? ' q-uploader--square no-border-radius' : '')
18832
18831
  + (props.flat === true ? ' q-uploader--flat no-shadow' : '')
18833
18832
  + (props.disable === true ? ' disabled q-uploader--disable' : '')
18833
+ + (dnd.value === true ? ' q-uploader--dnd' : '')
18834
18834
  );
18835
18835
 
18836
18836
  const colorClass = vue.computed(() =>
@@ -21132,7 +21132,7 @@
21132
21132
  const labelAttrs = state.getControl === void 0 && slots.control === void 0
21133
21133
  ? {
21134
21134
  ...state.splitAttrs.attributes.value,
21135
- 'data-autofocus': props.autofocus,
21135
+ 'data-autofocus': props.autofocus === true || void 0,
21136
21136
  ...attributes.value
21137
21137
  }
21138
21138
  : attributes.value;
@@ -21325,6 +21325,11 @@
21325
21325
  disabled: state.editable.value !== true
21326
21326
  }));
21327
21327
 
21328
+ const fieldClass = vue.computed(() =>
21329
+ 'q-file q-field--auto-height'
21330
+ + (dnd.value === true ? ' q-file--dnd' : '')
21331
+ );
21332
+
21328
21333
  const isAppending = vue.computed(() =>
21329
21334
  props.multiple === true && props.append === true
21330
21335
  );
@@ -21457,7 +21462,7 @@
21457
21462
  }
21458
21463
 
21459
21464
  Object.assign(state, {
21460
- fieldClass: { value: 'q-file q-field--auto-height' },
21465
+ fieldClass,
21461
21466
  emitValue,
21462
21467
  hasValue,
21463
21468
  inputRef,
@@ -23236,27 +23241,28 @@
23236
23241
  const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/;
23237
23242
  const isChinese = /[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u;
23238
23243
  const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/;
23244
+ const isPlainText = /[a-z0-9_ -]$/i;
23239
23245
 
23240
23246
  function useKeyComposition (onInput) {
23241
23247
  return function onComposition (e) {
23242
23248
  if (e.type === 'compositionend' || e.type === 'change') {
23243
- if (e.target.composing !== true) { return }
23244
- e.target.composing = false;
23249
+ if (e.target.qComposing !== true) { return }
23250
+ e.target.qComposing = false;
23245
23251
  onInput(e);
23246
23252
  }
23247
- else if (e.type === 'compositionupdate') {
23248
- if (
23249
- typeof e.data === 'string'
23250
- && isJapanese.test(e.data) === false
23251
- && isChinese.test(e.data) === false
23252
- && isKorean.test(e.data) === false
23253
- ) {
23254
- e.target.composing = false;
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;
23261
+
23262
+ if (isComposing === true) {
23263
+ e.target.qComposing = true;
23255
23264
  }
23256
23265
  }
23257
- else {
23258
- e.target.composing = true;
23259
- }
23260
23266
  }
23261
23267
  }
23262
23268
 
@@ -23458,7 +23464,7 @@
23458
23464
  }
23459
23465
 
23460
23466
  function onInput (e) {
23461
- if (!e || !e.target || e.target.composing === true) {
23467
+ if (!e || !e.target || e.target.qComposing === true) {
23462
23468
  return
23463
23469
  }
23464
23470
 
@@ -24671,7 +24677,7 @@
24671
24677
  const rootRef = vue.ref(null);
24672
24678
  const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef);
24673
24679
 
24674
- const isTrue = vue.computed(() => props.modelValue === props.val);
24680
+ const isTrue = vue.computed(() => vue.toRaw(props.modelValue) === vue.toRaw(props.val));
24675
24681
 
24676
24682
  const classes = vue.computed(() =>
24677
24683
  'q-radio cursor-pointer no-outline row inline no-wrap items-center'
@@ -27513,7 +27519,12 @@
27513
27519
  const setOverflowAnchor = window.getComputedStyle(document.body).overflowAnchor === void 0
27514
27520
  ? noop
27515
27521
  : function (contentEl, index) {
27516
- requestAnimationFrame(() => {
27522
+ if (contentEl === null) {
27523
+ return
27524
+ }
27525
+
27526
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
27527
+ contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
27517
27528
  if (contentEl === null) {
27518
27529
  return
27519
27530
  }
@@ -28337,7 +28348,7 @@
28337
28348
 
28338
28349
  emits: [
28339
28350
  ...useFieldEmits,
28340
- 'add', 'remove', 'input-value',
28351
+ 'add', 'remove', 'input-value', 'new-value',
28341
28352
  'keyup', 'keypress', 'keydown',
28342
28353
  'filter-abort'
28343
28354
  ],
@@ -28385,7 +28396,6 @@
28385
28396
  localResetVirtualScroll,
28386
28397
  padVirtualScroll,
28387
28398
  onVirtualScrollEvt,
28388
- reset,
28389
28399
  scrollTo,
28390
28400
  setVirtualScrollSize
28391
28401
  } = useVirtualScroll({
@@ -28479,15 +28489,23 @@
28479
28489
 
28480
28490
  const tabindex = vue.computed(() => (state.focused.value === true ? props.tabindex : -1));
28481
28491
 
28482
- const comboboxAttrs = vue.computed(() => ({
28483
- tabindex: props.tabindex,
28484
- role: 'combobox',
28485
- 'aria-label': props.label,
28486
- 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
28487
- 'aria-expanded': menu.value === true ? 'true' : 'false',
28488
- 'aria-owns': `${ state.targetUid.value }_lb`,
28489
- 'aria-controls': `${ state.targetUid.value }_lb`
28490
- }));
28492
+ const comboboxAttrs = vue.computed(() => {
28493
+ const attrs = {
28494
+ tabindex: props.tabindex,
28495
+ role: 'combobox',
28496
+ 'aria-label': props.label,
28497
+ 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
28498
+ 'aria-expanded': menu.value === true ? 'true' : 'false',
28499
+ 'aria-owns': `${ state.targetUid.value }_lb`,
28500
+ 'aria-controls': `${ state.targetUid.value }_lb`
28501
+ };
28502
+
28503
+ if (optionIndex.value >= 0) {
28504
+ attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`;
28505
+ }
28506
+
28507
+ return attrs
28508
+ });
28491
28509
 
28492
28510
  const listboxAttrs = vue.computed(() => {
28493
28511
  const attrs = {
@@ -29223,7 +29241,7 @@
29223
29241
  function onInput (e) {
29224
29242
  clearTimeout(inputTimer);
29225
29243
 
29226
- if (e && e.target && e.target.composing === true) {
29244
+ if (e && e.target && e.target.qComposing === true) {
29227
29245
  return
29228
29246
  }
29229
29247
 
@@ -29552,13 +29570,18 @@
29552
29570
  setOptionIndex(optionIndex);
29553
29571
  }
29554
29572
 
29555
- function rerenderMenu () {
29573
+ function rerenderMenu (newLength, oldLength) {
29556
29574
  if (menu.value === true && state.innerLoading.value === false) {
29557
- reset();
29575
+ localResetVirtualScroll(-1, true);
29558
29576
 
29559
29577
  vue.nextTick(() => {
29560
29578
  if (menu.value === true && state.innerLoading.value === false) {
29561
- updateMenu(true);
29579
+ if (newLength > oldLength) {
29580
+ localResetVirtualScroll();
29581
+ }
29582
+ else {
29583
+ updateMenu(true);
29584
+ }
29562
29585
  }
29563
29586
  });
29564
29587
  }
@@ -33602,7 +33625,6 @@
33602
33625
 
33603
33626
  const __containerClass = vue.computed(() =>
33604
33627
  `q-table__container q-table--${ props.separator }-separator column no-wrap`
33605
- + (props.loading === true ? ' q-table--loading' : '')
33606
33628
  + (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)
33607
33629
  + (isDark.value === true ? ' q-table--dark' : '')
33608
33630
  + (props.dense === true ? ' q-table--dense' : '')
@@ -38083,19 +38105,31 @@
38083
38105
  const applyState = cmd => {
38084
38106
  if (dialogRef.value !== null && dialogRef.value[ cmd ] !== void 0) {
38085
38107
  dialogRef.value[ cmd ]();
38108
+ return
38086
38109
  }
38087
- else if (
38110
+
38111
+ const target = vm.$.subTree;
38112
+
38113
+ if (target && target.component) {
38088
38114
  // account for "script setup" way of declaring component
38089
- vm.$.subTree
38090
- && vm.$.subTree.component
38091
- && vm.$.subTree.component.proxy
38092
- && vm.$.subTree.component.proxy[ cmd ]
38093
- ) {
38094
- vm.$.subTree.component.proxy[ cmd ]();
38095
- }
38096
- else {
38097
- console.error('[Quasar] Incorrectly defined Dialog component');
38115
+ if (target.component.proxy && target.component.proxy[ cmd ]) {
38116
+ target.component.proxy[ cmd ]();
38117
+ return
38118
+ }
38119
+
38120
+ // account for "script setup" + async component way of declaring component
38121
+ if (
38122
+ target.component.subTree &&
38123
+ target.component.subTree.component &&
38124
+ target.component.subTree.component.proxy &&
38125
+ target.component.subTree.component.proxy[ cmd ]
38126
+ ) {
38127
+ target.component.subTree.component.proxy[ cmd ]();
38128
+ return
38129
+ }
38098
38130
  }
38131
+
38132
+ console.error('[Quasar] Incorrectly defined Dialog component');
38099
38133
  };
38100
38134
 
38101
38135
  const
@@ -39698,7 +39732,7 @@
39698
39732
  });
39699
39733
 
39700
39734
  var index_umd = {
39701
- version: '2.7.0',
39735
+ version: '2.7.3',
39702
39736
  install (app, opts) {
39703
39737
  installQuasar(app, {
39704
39738
  components,