quasar 1.18.10 → 1.19.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 (150) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons.umd.min.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.min.js +6 -0
  14. package/dist/icon-set/material-symbols-rounded.umd.min.js +6 -0
  15. package/dist/icon-set/material-symbols-sharp.umd.min.js +6 -0
  16. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  20. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  21. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  22. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  24. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  27. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  28. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  29. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  30. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +6 -0
  33. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +6 -0
  34. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +6 -0
  35. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  36. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  39. package/dist/icon-set/themify.umd.min.js +1 -1
  40. package/dist/lang/ar.umd.min.js +1 -1
  41. package/dist/lang/az-latn.umd.min.js +1 -1
  42. package/dist/lang/bg.umd.min.js +1 -1
  43. package/dist/lang/ca.umd.min.js +2 -2
  44. package/dist/lang/cs.umd.min.js +1 -1
  45. package/dist/lang/da.umd.min.js +1 -1
  46. package/dist/lang/de.umd.min.js +1 -1
  47. package/dist/lang/el.umd.min.js +1 -1
  48. package/dist/lang/en-gb.umd.min.js +1 -1
  49. package/dist/lang/en-us.umd.min.js +1 -1
  50. package/dist/lang/eo.umd.min.js +1 -1
  51. package/dist/lang/es.umd.min.js +1 -1
  52. package/dist/lang/et.umd.min.js +1 -1
  53. package/dist/lang/eu.umd.min.js +1 -1
  54. package/dist/lang/fa-ir.umd.min.js +1 -1
  55. package/dist/lang/fa.umd.min.js +1 -1
  56. package/dist/lang/fi.umd.min.js +1 -1
  57. package/dist/lang/fr.umd.min.js +1 -1
  58. package/dist/lang/gn.umd.min.js +1 -1
  59. package/dist/lang/he.umd.min.js +1 -1
  60. package/dist/lang/hr.umd.min.js +1 -1
  61. package/dist/lang/hu.umd.min.js +1 -1
  62. package/dist/lang/id.umd.min.js +1 -1
  63. package/dist/lang/is.umd.min.js +1 -1
  64. package/dist/lang/it.umd.min.js +1 -1
  65. package/dist/lang/ja.umd.min.js +1 -1
  66. package/dist/lang/km.umd.min.js +1 -1
  67. package/dist/lang/ko-kr.umd.min.js +2 -2
  68. package/dist/lang/kur-ckb.umd.min.js +1 -1
  69. package/dist/lang/kz.umd.min.js +1 -1
  70. package/dist/lang/lu.umd.min.js +1 -1
  71. package/dist/lang/lv.umd.min.js +1 -1
  72. package/dist/lang/ml.umd.min.js +1 -1
  73. package/dist/lang/mm.umd.min.js +6 -0
  74. package/dist/lang/ms.umd.min.js +1 -1
  75. package/dist/lang/my.umd.min.js +1 -1
  76. package/dist/lang/nb-no.umd.min.js +1 -1
  77. package/dist/lang/nl.umd.min.js +1 -1
  78. package/dist/lang/pl.umd.min.js +1 -1
  79. package/dist/lang/pt-br.umd.min.js +1 -1
  80. package/dist/lang/pt.umd.min.js +1 -1
  81. package/dist/lang/ro.umd.min.js +1 -1
  82. package/dist/lang/ru.umd.min.js +1 -1
  83. package/dist/lang/sk.umd.min.js +1 -1
  84. package/dist/lang/sl.umd.min.js +1 -1
  85. package/dist/lang/sm.umd.min.js +6 -0
  86. package/dist/lang/sr.umd.min.js +1 -1
  87. package/dist/lang/sv.umd.min.js +1 -1
  88. package/dist/lang/ta.umd.min.js +1 -1
  89. package/dist/lang/th.umd.min.js +1 -1
  90. package/dist/lang/tr.umd.min.js +1 -1
  91. package/dist/lang/ug.umd.min.js +1 -1
  92. package/dist/lang/uk.umd.min.js +1 -1
  93. package/dist/lang/vi.umd.min.js +1 -1
  94. package/dist/lang/zh-hans.umd.min.js +1 -1
  95. package/dist/lang/zh-hant.umd.min.js +1 -1
  96. package/dist/quasar.addon.css +1 -1
  97. package/dist/quasar.addon.rtl.css +1 -1
  98. package/dist/quasar.common.js +2 -2
  99. package/dist/quasar.css +12 -6
  100. package/dist/quasar.esm.js +2 -2
  101. package/dist/quasar.ie.polyfills.js +1 -1
  102. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  103. package/dist/quasar.min.css +1 -1
  104. package/dist/quasar.rtl.css +12 -6
  105. package/dist/quasar.rtl.min.css +1 -1
  106. package/dist/quasar.sass +11 -5
  107. package/dist/quasar.styl +11 -5
  108. package/dist/quasar.umd.js +124 -104
  109. package/dist/quasar.umd.min.js +2 -2
  110. package/dist/quasar.umd.modern.js +119 -100
  111. package/dist/quasar.umd.modern.min.js +2 -2
  112. package/dist/types/extras/icon-set.d.ts +6 -0
  113. package/dist/types/index.d.ts +2 -0
  114. package/dist/web-types/web-types.json +1 -1
  115. package/icon-set/material-symbols-outlined.js +128 -0
  116. package/icon-set/material-symbols-rounded.js +128 -0
  117. package/icon-set/material-symbols-sharp.js +128 -0
  118. package/icon-set/svg-material-symbols-outlined.js +202 -0
  119. package/icon-set/svg-material-symbols-rounded.js +202 -0
  120. package/icon-set/svg-material-symbols-sharp.js +202 -0
  121. package/lang/ca.js +31 -31
  122. package/lang/index.json +8 -0
  123. package/lang/ko-kr.js +21 -21
  124. package/lang/mm.js +93 -0
  125. package/lang/sm.js +93 -0
  126. package/package.json +1 -1
  127. package/src/components/btn/QBtn.js +2 -2
  128. package/src/components/editor/QEditor.js +12 -30
  129. package/src/components/editor/editor-caret.js +1 -1
  130. package/src/components/field/QField.js +3 -2
  131. package/src/components/file/QFile.js +4 -2
  132. package/src/components/icon/QIcon.js +24 -1
  133. package/src/components/icon/QIcon.sass +7 -3
  134. package/src/components/icon/QIcon.styl +7 -3
  135. package/src/components/infinite-scroll/QInfiniteScroll.js +10 -10
  136. package/src/components/input/QInput.js +5 -2
  137. package/src/components/layout/QLayout.js +1 -0
  138. package/src/components/select/QSelect.js +11 -6
  139. package/src/components/table/QTable.sass +1 -1
  140. package/src/components/table/QTable.styl +1 -1
  141. package/src/components/uploader/QUploaderBase.js +24 -19
  142. package/src/css/core/colors.sass +1 -0
  143. package/src/css/core/colors.styl +1 -0
  144. package/src/css/core/dark.sass +1 -0
  145. package/src/css/core/dark.styl +1 -0
  146. package/src/directives/Ripple.js +2 -7
  147. package/src/mixins/anchor.js +1 -1
  148. package/src/mixins/composition.js +16 -13
  149. package/src/mixins/virtual-scroll.js +3 -2
  150. package/src/utils/date.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v1.18.10
2
+ * Quasar Framework v1.19.2
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.18.10";
15
+ var version = "1.19.2";
16
16
 
17
17
  /* eslint-disable no-useless-escape */
18
18
 
@@ -2320,8 +2320,15 @@
2320
2320
  s_: '-sharp'
2321
2321
  };
2322
2322
 
2323
+ const symMap = {
2324
+ sym_o_: '-outlined',
2325
+ sym_r_: '-rounded',
2326
+ sym_s_: '-sharp'
2327
+ };
2328
+
2323
2329
  const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')');
2324
2330
  const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')');
2331
+ const symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')');
2325
2332
  const mRE = /^[Mm]\s?[-+]?\.?\d/;
2326
2333
  const imgRE = /^img:/;
2327
2334
  const svgUseRE = /^svguse:/;
@@ -2426,6 +2433,22 @@
2426
2433
  else if (ionRE.test(icon) === true) {
2427
2434
  cls = `ionicons ion-${this.$q.platform.is.ios === true ? 'ios' : 'md'}${icon.substr(3)}`;
2428
2435
  }
2436
+ else if (symRE.test(icon) === true) {
2437
+ // "notranslate" class is for Google Translate
2438
+ // to avoid tampering with Material Symbols ligature font
2439
+ //
2440
+ // Caution: To be able to add suffix to the class name,
2441
+ // keep the 'material-symbols' at the end of the string.
2442
+ cls = 'notranslate material-symbols';
2443
+
2444
+ const matches = icon.match(symRE);
2445
+ if (matches !== null) {
2446
+ icon = icon.substring(6);
2447
+ cls += symMap[ matches[ 1 ] ];
2448
+ }
2449
+
2450
+ content = icon;
2451
+ }
2429
2452
  else {
2430
2453
  // "notranslate" class is for Google Translate
2431
2454
  // to avoid tampering with Material Icons ligature font
@@ -2477,7 +2500,7 @@
2477
2500
  return h('span', data, mergeSlot([
2478
2501
  h('svg', {
2479
2502
  attrs: {
2480
- viewBox: this.type.viewBox,
2503
+ viewBox: this.type.viewBox || '0 0 24 24',
2481
2504
  focusable: 'false' /* needed for IE11 */
2482
2505
  }
2483
2506
  }, this.type.nodes)
@@ -3269,11 +3292,7 @@
3269
3292
  evt.qSkipRipple !== true &&
3270
3293
  // on ENTER in form IE emits a PointerEvent with negative client cordinates
3271
3294
  (client.is.ie !== true || evt.clientX >= 0) &&
3272
- (
3273
- ctx.modifiers.early === true
3274
- ? ['mousedown', 'touchstart'].includes(evt.type) === true
3275
- : evt.type === 'click'
3276
- )
3295
+ evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
3277
3296
  ) {
3278
3297
  showRipple(evt, el, ctx, evt.qKeyEvent === true);
3279
3298
  }
@@ -3296,8 +3315,7 @@
3296
3315
  el.__qripple = ctx;
3297
3316
 
3298
3317
  addEvt(ctx, 'main', [
3299
- [ el, 'mousedown', 'start', 'passive' ],
3300
- [ el, 'touchstart', 'start', 'passive' ],
3318
+ [ el, 'pointerdown', 'start', 'passive' ],
3301
3319
  [ el, 'click', 'start', 'passive' ],
3302
3320
  [ el, 'keydown', 'keystart', 'passive' ],
3303
3321
  [ el, 'keyup', 'keystart', 'passive' ]
@@ -3832,11 +3850,11 @@
3832
3850
  if (this.loading === true && this.percentage !== void 0) {
3833
3851
  child.push(
3834
3852
  h('span', {
3835
- staticClass: 'q-btn__progress absolute-full overflow-hidden'
3853
+ staticClass: 'q-btn__progress absolute-full overflow-hidden',
3854
+ class: this.darkPercentage === true ? 'q-btn__progress--dark' : ''
3836
3855
  }, [
3837
3856
  h('span', {
3838
3857
  staticClass: 'q-btn__progress-indicator fit block',
3839
- class: this.darkPercentage === true ? 'q-btn__progress--dark' : '',
3840
3858
  style: this.percentageStyle
3841
3859
  })
3842
3860
  ])
@@ -4063,7 +4081,7 @@
4063
4081
  },
4064
4082
 
4065
4083
  __pickAnchorEl () {
4066
- if (this.target === false || this.target === '') {
4084
+ if (this.target === false || this.target === '' || this.parentEl === null) {
4067
4085
  this.anchorEl = void 0;
4068
4086
  }
4069
4087
  else if (this.target === true) {
@@ -11949,7 +11967,7 @@
11949
11967
  const date = new Date(
11950
11968
  d.year,
11951
11969
  d.month === null ? null : d.month - 1,
11952
- d.day,
11970
+ d.day === null ? 1 : d.day,
11953
11971
  d.hour,
11954
11972
  d.minute,
11955
11973
  d.second,
@@ -16337,7 +16355,7 @@
16337
16355
  return false
16338
16356
  }
16339
16357
 
16340
- if (el !== null && list.includes(el.nodeName.toLowerCase()) === true) {
16358
+ if (list.includes(el.nodeName.toLowerCase()) === true) {
16341
16359
  return true
16342
16360
  }
16343
16361
 
@@ -16953,33 +16971,14 @@
16953
16971
  }
16954
16972
  },
16955
16973
 
16956
- __onMousedown () {
16957
- this.__offsetBottom = void 0;
16958
- },
16959
-
16960
- __onMouseup (e) {
16961
- this.caret.save();
16962
- if (this.qListeners.mouseup !== void 0) {
16963
- this.$emit('mouseup', e);
16964
- }
16965
- },
16966
-
16967
- __onKeyup (e) {
16968
- this.caret.save();
16969
- if (this.qListeners.keyup !== void 0) {
16970
- this.$emit('keyup', e);
16971
- }
16972
- },
16973
-
16974
- __onTouchstart () {
16974
+ // mousedown, touchstart
16975
+ __onPointerStart (e) {
16975
16976
  this.__offsetBottom = void 0;
16977
+ this.qListeners[e.type] !== void 0 && this.$emit(e.type, e);
16976
16978
  },
16977
16979
 
16978
- __onTouchend (e) {
16980
+ __onSelectionchange () {
16979
16981
  this.caret.save();
16980
- if (this.qListeners.touchend !== void 0) {
16981
- this.$emit('touchend', e);
16982
- }
16983
16982
  },
16984
16983
 
16985
16984
  runCmd (cmd, param, update = true) {
@@ -17042,6 +17041,12 @@
17042
17041
  this.caret = new Caret(this.$refs.content, this);
17043
17042
  this.__setContent(this.value);
17044
17043
  this.refreshToolbar();
17044
+
17045
+ document.addEventListener('selectionchange', this.__onSelectionchange);
17046
+ },
17047
+
17048
+ beforeDestroy () {
17049
+ document.removeEventListener('selectionchange', this.__onSelectionchange);
17045
17050
  },
17046
17051
 
17047
17052
  render (h) {
@@ -17079,13 +17084,8 @@
17079
17084
  focus: this.__onFocus,
17080
17085
 
17081
17086
  // clean saved scroll position
17082
- mousedown: this.__onMousedown,
17083
- touchstart: this.__onTouchstart,
17084
-
17085
- // save caret
17086
- mouseup: this.__onMouseup,
17087
- keyup: this.__onKeyup,
17088
- touchend: this.__onTouchend
17087
+ mousedown: this.__onPointerStart,
17088
+ touchstart: this.__onPointerStart
17089
17089
  };
17090
17090
 
17091
17091
  return h('div', {
@@ -18634,8 +18634,9 @@
18634
18634
  ref: 'target',
18635
18635
  staticClass: 'q-field__native row',
18636
18636
  attrs: {
18637
+ tabindex: -1,
18637
18638
  ...this.qAttrs,
18638
- 'data-autofocus': this.autofocus
18639
+ 'data-autofocus': this.autofocus || void 0
18639
18640
  }
18640
18641
  }, this.$scopedSlots.control(this.controlSlotScope))
18641
18642
  );
@@ -18811,7 +18812,7 @@
18811
18812
  const attrs = this.__getControl === void 0 && this.$scopedSlots.control === void 0
18812
18813
  ? {
18813
18814
  ...this.qAttrs,
18814
- 'data-autofocus': this.autofocus,
18815
+ 'data-autofocus': this.autofocus || void 0,
18815
18816
  ...this.attrs
18816
18817
  }
18817
18818
  : this.attrs;
@@ -19219,6 +19220,10 @@
19219
19220
 
19220
19221
  isAppending () {
19221
19222
  return this.multiple === true && this.append === true
19223
+ },
19224
+
19225
+ fieldClass () {
19226
+ return 'q-file q-field--auto-height' + (this.dnd === true ? ' q-file--dnd' : '')
19222
19227
  }
19223
19228
  },
19224
19229
 
@@ -19385,8 +19390,6 @@
19385
19390
  },
19386
19391
 
19387
19392
  created () {
19388
- this.fieldClass = 'q-file q-field--auto-height';
19389
-
19390
19393
  // necessary for QField's clearable
19391
19394
  // and FileValueMixin
19392
19395
  this.type = 'file';
@@ -20449,6 +20452,16 @@
20449
20452
 
20450
20453
  if (this.isWorking === true) {
20451
20454
  this.__scrollTarget.addEventListener('scroll', this.poll, passive$1);
20455
+
20456
+ if (this.reverse === true) {
20457
+ const
20458
+ scrollHeight = getScrollHeight(this.__scrollTarget),
20459
+ containerHeight = height(this.__scrollTarget);
20460
+
20461
+ setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight);
20462
+ }
20463
+
20464
+ this.immediatePoll();
20452
20465
  }
20453
20466
  },
20454
20467
 
@@ -20480,16 +20493,6 @@
20480
20493
  this.__setDebounce(this.debounce);
20481
20494
 
20482
20495
  this.updateScrollTarget();
20483
-
20484
- if (this.reverse === true) {
20485
- const
20486
- scrollHeight = getScrollHeight(this.__scrollTarget),
20487
- containerHeight = height(this.__scrollTarget);
20488
-
20489
- setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight);
20490
- }
20491
-
20492
- this.immediatePoll();
20493
20496
  },
20494
20497
 
20495
20498
  activated () {
@@ -21150,28 +21153,29 @@
21150
21153
  const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/;
21151
21154
  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;
21152
21155
  const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/;
21156
+ const isPlainText = /[a-z0-9_ -]$/i;
21153
21157
 
21154
21158
  var CompositionMixin = {
21155
21159
  methods: {
21156
21160
  __onComposition (e) {
21157
21161
  if (e.type === 'compositionend' || e.type === 'change') {
21158
- if (e.target.composing !== true) { return }
21159
- e.target.composing = false;
21162
+ if (e.target.qComposing !== true) { return }
21163
+ e.target.qComposing = false;
21160
21164
  this.__onInput(e);
21161
21165
  }
21162
- else if (e.type === 'compositionupdate') {
21163
- if (
21164
- typeof e.data === 'string' &&
21165
- isJapanese.test(e.data) === false &&
21166
- isChinese.test(e.data) === false &&
21167
- isKorean.test(e.data) === false
21168
- ) {
21169
- e.target.composing = false;
21166
+ else if (
21167
+ e.type === 'compositionupdate' &&
21168
+ e.target.qComposing !== true &&
21169
+ typeof e.data === 'string'
21170
+ ) {
21171
+ const isComposing = client.is.firefox === true
21172
+ ? isPlainText.test(e.data) === false
21173
+ : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true;
21174
+
21175
+ if (isComposing === true) {
21176
+ e.target.qComposing = true;
21170
21177
  }
21171
21178
  }
21172
- else {
21173
- e.target.composing = true;
21174
- }
21175
21179
  }
21176
21180
  }
21177
21181
  };
@@ -21319,7 +21323,7 @@
21319
21323
  inputAttrs () {
21320
21324
  const attrs = {
21321
21325
  tabindex: 0,
21322
- 'data-autofocus': this.autofocus,
21326
+ 'data-autofocus': this.autofocus || void 0,
21323
21327
  rows: this.type === 'textarea' ? 6 : void 0,
21324
21328
  'aria-label': this.label,
21325
21329
  name: this.nameProp,
@@ -21372,7 +21376,7 @@
21372
21376
  },
21373
21377
 
21374
21378
  __onInput (e) {
21375
- if (!e || !e.target || e.target.composing === true) {
21379
+ if (!e || !e.target || e.target.qComposing === true) {
21376
21380
  return
21377
21381
  }
21378
21382
 
@@ -21450,13 +21454,16 @@
21450
21454
  const inp = this.$refs.input;
21451
21455
  if (inp !== void 0) {
21452
21456
  const parentStyle = inp.parentNode.style;
21457
+ const { overflow } = inp.style;
21453
21458
 
21454
21459
  // reset height of textarea to a small size to detect the real height
21455
21460
  // but keep the total control size the same
21456
21461
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px';
21457
21462
  inp.style.height = '1px';
21463
+ inp.style.overflow = 'hidden';
21458
21464
 
21459
21465
  inp.style.height = inp.scrollHeight + 'px';
21466
+ inp.style.overflow = overflow;
21460
21467
  parentStyle.marginBottom = '';
21461
21468
  }
21462
21469
  },
@@ -22246,6 +22253,7 @@
22246
22253
  const layout = h('div', {
22247
22254
  class: this.classes,
22248
22255
  style: this.style,
22256
+ attrs: { tabindex: -1 },
22249
22257
  on: { ...this.qListeners }
22250
22258
  }, mergeSlot([
22251
22259
  h(QScrollObserver, {
@@ -25973,11 +25981,12 @@
25973
25981
  setOverflowAnchor.isSupported = window.getComputedStyle(document.body).overflowAnchor !== void 0;
25974
25982
  }
25975
25983
 
25976
- if (setOverflowAnchor.isSupported === false) {
25984
+ if (setOverflowAnchor.isSupported === false || contentEl === void 0) {
25977
25985
  return
25978
25986
  }
25979
25987
 
25980
- requestAnimationFrame(() => {
25988
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
25989
+ contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
25981
25990
  if (contentEl === void 0) {
25982
25991
  return
25983
25992
  }
@@ -26647,13 +26656,18 @@
26647
26656
  this.__updateMenu(show);
26648
26657
  },
26649
26658
 
26650
- virtualScrollLength () {
26659
+ virtualScrollLength (newLength, oldLength) {
26651
26660
  if (this.menu === true && this.innerLoading === false) {
26652
- this.reset();
26661
+ this.__resetVirtualScroll(-1, true);
26653
26662
 
26654
26663
  this.$nextTick(() => {
26655
26664
  if (this.menu === true && this.innerLoading === false) {
26656
- this.__updateMenu(true);
26665
+ if (newLength > oldLength) {
26666
+ this.__resetVirtualScroll();
26667
+ }
26668
+ else {
26669
+ this.__updateMenu(true);
26670
+ }
26657
26671
  }
26658
26672
  });
26659
26673
  }
@@ -26891,7 +26905,7 @@
26891
26905
 
26892
26906
  virtualScrollItemSizeComputed () {
26893
26907
  return this.virtualScrollItemSize === void 0
26894
- ? (this.dense === true ? 24 : 48)
26908
+ ? (this.optionsDense === true ? 24 : 48)
26895
26909
  : this.virtualScrollItemSize
26896
26910
  },
26897
26911
 
@@ -27571,7 +27585,7 @@
27571
27585
  maxlength: this.maxlength, // this is converted to prop by QField
27572
27586
  tabindex: this.tabindex,
27573
27587
  autocomplete: this.autocomplete,
27574
- 'data-autofocus': fromDialog === true ? false : this.autofocus,
27588
+ 'data-autofocus': (fromDialog !== true && this.autofocus) || void 0,
27575
27589
  disabled: this.disable === true,
27576
27590
  readonly: this.readonly === true
27577
27591
  },
@@ -27592,7 +27606,7 @@
27592
27606
  __onInput (e) {
27593
27607
  clearTimeout(this.inputTimer);
27594
27608
 
27595
- if (e && e.target && e.target.composing === true) {
27609
+ if (e && e.target && e.target.qComposing === true) {
27596
27610
  return
27597
27611
  }
27598
27612
 
@@ -35413,28 +35427,32 @@
35413
35427
 
35414
35428
  return [
35415
35429
  h('div', {
35416
- staticClass: 'q-uploader__header-content flex flex-center no-wrap q-gutter-xs'
35430
+ staticClass: 'q-uploader__header-content column'
35417
35431
  }, [
35418
- this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),
35419
- this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),
35420
-
35421
- this.isUploading === true
35422
- ? h(QSpinner, { staticClass: 'q-uploader__spinner' })
35423
- : null,
35432
+ h('div', {
35433
+ staticClass: 'flex flex-center no-wrap q-gutter-xs'
35434
+ }, [
35435
+ this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),
35436
+ this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),
35424
35437
 
35425
- h('div', { staticClass: 'col column justify-center' }, [
35426
- this.label !== void 0
35427
- ? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
35438
+ this.isUploading === true
35439
+ ? h(QSpinner, { staticClass: 'q-uploader__spinner' })
35428
35440
  : null,
35429
35441
 
35430
- h('div', { staticClass: 'q-uploader__subtitle' }, [
35431
- this.uploadSizeLabel + ' / ' + this.uploadProgressLabel
35432
- ])
35433
- ]),
35442
+ h('div', { staticClass: 'col column justify-center' }, [
35443
+ this.label !== void 0
35444
+ ? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
35445
+ : null,
35434
35446
 
35435
- this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),
35436
- this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),
35437
- this.__getBtn(h, this.isUploading, 'clear', this.abort)
35447
+ h('div', { staticClass: 'q-uploader__subtitle' }, [
35448
+ this.uploadSizeLabel + ' / ' + this.uploadProgressLabel
35449
+ ])
35450
+ ]),
35451
+
35452
+ this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),
35453
+ this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),
35454
+ this.__getBtn(h, this.isUploading, 'clear', this.abort)
35455
+ ])
35438
35456
  ])
35439
35457
  ]
35440
35458
  },
@@ -35535,7 +35553,8 @@
35535
35553
  'q-uploader--bordered': this.bordered,
35536
35554
  'q-uploader--square no-border-radius': this.square,
35537
35555
  'q-uploader--flat no-shadow': this.flat,
35538
- 'disabled q-uploader--disable': this.disable
35556
+ 'disabled q-uploader--disable': this.disable,
35557
+ 'q-uploader--dnd': this.dnd
35539
35558
  },
35540
35559
  on: this.canAddFiles === true
35541
35560
  ? cache(this, 'drag', {