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
package/dist/quasar.sass CHANGED
@@ -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
  */
@@ -648,6 +648,7 @@ input[type='search']::-webkit-search-decoration
648
648
  line-height: 1
649
649
  width: 1em
650
650
  height: 1em
651
+ flex-shrink: 0
651
652
  letter-spacing: normal
652
653
  text-transform: none
653
654
  white-space: nowrap
@@ -665,13 +666,16 @@ input[type='search']::-webkit-search-decoration
665
666
  justify-content: center
666
667
  > svg,
667
668
  > img
668
- width: 1em
669
- height: 1em
669
+ width: 100%
670
+ height: 100%
670
671
  .q-icon,
671
672
  .material-icons,
672
673
  .material-icons-outlined,
673
674
  .material-icons-round,
674
- .material-icons-sharp
675
+ .material-icons-sharp,
676
+ .material-symbols-outlined,
677
+ .material-symbols-rounded,
678
+ .material-symbols-sharp
675
679
  user-select: none
676
680
  cursor: inherit
677
681
  font-size: inherit
@@ -4187,7 +4191,7 @@ body.platform-ios
4187
4191
  &--selected
4188
4192
  transform: scale(.95)
4189
4193
  .q-table--horizontal-separator, .q-table--cell-separator
4190
- thead th, tbody tr:not(:last-child) td
4194
+ thead th, tbody tr:not(:last-child) > td
4191
4195
  border-bottom-width: 1px
4192
4196
  .q-table--vertical-separator, .q-table--cell-separator
4193
4197
  td, th
@@ -5514,6 +5518,7 @@ body.q-ios-padding .q-notifications__list
5514
5518
  --q-color-info: #{$info}
5515
5519
  --q-color-warning: #{$warning}
5516
5520
  --q-color-dark: #{$dark}
5521
+ --q-color-dark-page: #{$dark-page}
5517
5522
  .text-dark
5518
5523
  color: $dark !important
5519
5524
  color: var(--q-color-dark) !important
@@ -7497,6 +7502,7 @@ body.desktop
7497
7502
  body.body--dark
7498
7503
  color: #fff
7499
7504
  background: $dark-page
7505
+ background: var(--q-color-dark-page)
7500
7506
  .q-dark
7501
7507
  color: #fff
7502
7508
  background: $grey-9
package/dist/quasar.styl CHANGED
@@ -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
  */
@@ -694,6 +694,7 @@ input[type='search']::-webkit-search-decoration
694
694
  line-height: 1
695
695
  width: 1em
696
696
  height: 1em
697
+ flex-shrink: 0
697
698
  letter-spacing: normal
698
699
  text-transform: none
699
700
  white-space: nowrap
@@ -711,13 +712,16 @@ input[type='search']::-webkit-search-decoration
711
712
  justify-content: center
712
713
  > svg,
713
714
  > img
714
- width: 1em
715
- height: 1em
715
+ width: 100%
716
+ height: 100%
716
717
  .q-icon,
717
718
  .material-icons,
718
719
  .material-icons-outlined,
719
720
  .material-icons-round,
720
- .material-icons-sharp
721
+ .material-icons-sharp,
722
+ .material-symbols-outlined,
723
+ .material-symbols-rounded,
724
+ .material-symbols-sharp
721
725
  user-select: none
722
726
  cursor: inherit
723
727
  font-size: inherit
@@ -4234,7 +4238,7 @@ body.platform-ios
4234
4238
  &--selected
4235
4239
  transform: scale(.95)
4236
4240
  .q-table--horizontal-separator, .q-table--cell-separator
4237
- thead th, tbody tr:not(:last-child) td
4241
+ thead th, tbody tr:not(:last-child) > td
4238
4242
  border-bottom-width: 1px
4239
4243
  .q-table--vertical-separator, .q-table--cell-separator
4240
4244
  td, th
@@ -5558,6 +5562,7 @@ body.q-ios-padding .q-notifications__list
5558
5562
  --q-color-info: $info
5559
5563
  --q-color-warning: $warning
5560
5564
  --q-color-dark: $dark
5565
+ --q-color-dark-page: $dark-page
5561
5566
  .text-dark
5562
5567
  color: $dark !important
5563
5568
  color: var(--q-color-dark) !important
@@ -7543,6 +7548,7 @@ body.desktop
7543
7548
  body.body--dark
7544
7549
  color: #fff
7545
7550
  background: $dark-page
7551
+ background: var(--q-color-dark-page)
7546
7552
  .q-dark
7547
7553
  color: #fff
7548
7554
  background: $grey-9
@@ -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
 
@@ -2403,8 +2403,15 @@
2403
2403
  s_: '-sharp'
2404
2404
  };
2405
2405
 
2406
+ var symMap = {
2407
+ sym_o_: '-outlined',
2408
+ sym_r_: '-rounded',
2409
+ sym_s_: '-sharp'
2410
+ };
2411
+
2406
2412
  var libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')');
2407
2413
  var matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')');
2414
+ var symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')');
2408
2415
  var mRE = /^[Mm]\s?[-+]?\.?\d/;
2409
2416
  var imgRE = /^img:/;
2410
2417
  var svgUseRE = /^svguse:/;
@@ -2518,6 +2525,22 @@
2518
2525
  else if (ionRE.test(icon) === true) {
2519
2526
  cls = "ionicons ion-" + (this.$q.platform.is.ios === true ? 'ios' : 'md') + (icon.substr(3));
2520
2527
  }
2528
+ else if (symRE.test(icon) === true) {
2529
+ // "notranslate" class is for Google Translate
2530
+ // to avoid tampering with Material Symbols ligature font
2531
+ //
2532
+ // Caution: To be able to add suffix to the class name,
2533
+ // keep the 'material-symbols' at the end of the string.
2534
+ cls = 'notranslate material-symbols';
2535
+
2536
+ var matches$1 = icon.match(symRE);
2537
+ if (matches$1 !== null) {
2538
+ icon = icon.substring(6);
2539
+ cls += symMap[ matches$1[ 1 ] ];
2540
+ }
2541
+
2542
+ content = icon;
2543
+ }
2521
2544
  else {
2522
2545
  // "notranslate" class is for Google Translate
2523
2546
  // to avoid tampering with Material Icons ligature font
@@ -2526,10 +2549,10 @@
2526
2549
  // keep the 'material-icons' at the end of the string.
2527
2550
  cls = 'notranslate material-icons';
2528
2551
 
2529
- var matches$1 = icon.match(matRE);
2530
- if (matches$1 !== null) {
2552
+ var matches$2 = icon.match(matRE);
2553
+ if (matches$2 !== null) {
2531
2554
  icon = icon.substring(2);
2532
- cls += matMap[ matches$1[ 1 ] ];
2555
+ cls += matMap[ matches$2[ 1 ] ];
2533
2556
  }
2534
2557
 
2535
2558
  content = icon;
@@ -2569,7 +2592,7 @@
2569
2592
  return h('span', data, mergeSlot([
2570
2593
  h('svg', {
2571
2594
  attrs: {
2572
- viewBox: this.type.viewBox,
2595
+ viewBox: this.type.viewBox || '0 0 24 24',
2573
2596
  focusable: 'false' /* needed for IE11 */
2574
2597
  }
2575
2598
  }, this.type.nodes)
@@ -3374,11 +3397,7 @@
3374
3397
  evt.qSkipRipple !== true &&
3375
3398
  // on ENTER in form IE emits a PointerEvent with negative client cordinates
3376
3399
  (client.is.ie !== true || evt.clientX >= 0) &&
3377
- (
3378
- ctx.modifiers.early === true
3379
- ? ['mousedown', 'touchstart'].includes(evt.type) === true
3380
- : evt.type === 'click'
3381
- )
3400
+ evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
3382
3401
  ) {
3383
3402
  showRipple(evt, el, ctx, evt.qKeyEvent === true);
3384
3403
  }
@@ -3401,8 +3420,7 @@
3401
3420
  el.__qripple = ctx;
3402
3421
 
3403
3422
  addEvt(ctx, 'main', [
3404
- [ el, 'mousedown', 'start', 'passive' ],
3405
- [ el, 'touchstart', 'start', 'passive' ],
3423
+ [ el, 'pointerdown', 'start', 'passive' ],
3406
3424
  [ el, 'click', 'start', 'passive' ],
3407
3425
  [ el, 'keydown', 'keystart', 'passive' ],
3408
3426
  [ el, 'keyup', 'keystart', 'passive' ]
@@ -3937,11 +3955,11 @@
3937
3955
  if (this.loading === true && this.percentage !== void 0) {
3938
3956
  child.push(
3939
3957
  h('span', {
3940
- staticClass: 'q-btn__progress absolute-full overflow-hidden'
3958
+ staticClass: 'q-btn__progress absolute-full overflow-hidden',
3959
+ class: this.darkPercentage === true ? 'q-btn__progress--dark' : ''
3941
3960
  }, [
3942
3961
  h('span', {
3943
3962
  staticClass: 'q-btn__progress-indicator fit block',
3944
- class: this.darkPercentage === true ? 'q-btn__progress--dark' : '',
3945
3963
  style: this.percentageStyle
3946
3964
  })
3947
3965
  ])
@@ -4176,7 +4194,7 @@
4176
4194
  },
4177
4195
 
4178
4196
  __pickAnchorEl: function __pickAnchorEl () {
4179
- if (this.target === false || this.target === '') {
4197
+ if (this.target === false || this.target === '' || this.parentEl === null) {
4180
4198
  this.anchorEl = void 0;
4181
4199
  }
4182
4200
  else if (this.target === true) {
@@ -12154,7 +12172,7 @@
12154
12172
  var date = new Date(
12155
12173
  d.year,
12156
12174
  d.month === null ? null : d.month - 1,
12157
- d.day,
12175
+ d.day === null ? 1 : d.day,
12158
12176
  d.hour,
12159
12177
  d.minute,
12160
12178
  d.second,
@@ -16644,7 +16662,7 @@
16644
16662
  return false
16645
16663
  }
16646
16664
 
16647
- if (el !== null && list.includes(el.nodeName.toLowerCase()) === true) {
16665
+ if (list.includes(el.nodeName.toLowerCase()) === true) {
16648
16666
  return true
16649
16667
  }
16650
16668
 
@@ -17262,33 +17280,14 @@
17262
17280
  }
17263
17281
  },
17264
17282
 
17265
- __onMousedown: function __onMousedown () {
17283
+ // mousedown, touchstart
17284
+ __onPointerStart: function __onPointerStart (e) {
17266
17285
  this.__offsetBottom = void 0;
17286
+ this.qListeners[e.type] !== void 0 && this.$emit(e.type, e);
17267
17287
  },
17268
17288
 
17269
- __onMouseup: function __onMouseup (e) {
17289
+ __onSelectionchange: function __onSelectionchange () {
17270
17290
  this.caret.save();
17271
- if (this.qListeners.mouseup !== void 0) {
17272
- this.$emit('mouseup', e);
17273
- }
17274
- },
17275
-
17276
- __onKeyup: function __onKeyup (e) {
17277
- this.caret.save();
17278
- if (this.qListeners.keyup !== void 0) {
17279
- this.$emit('keyup', e);
17280
- }
17281
- },
17282
-
17283
- __onTouchstart: function __onTouchstart () {
17284
- this.__offsetBottom = void 0;
17285
- },
17286
-
17287
- __onTouchend: function __onTouchend (e) {
17288
- this.caret.save();
17289
- if (this.qListeners.touchend !== void 0) {
17290
- this.$emit('touchend', e);
17291
- }
17292
17291
  },
17293
17292
 
17294
17293
  runCmd: function runCmd (cmd, param, update) {
@@ -17358,6 +17357,12 @@
17358
17357
  this.caret = new Caret(this.$refs.content, this);
17359
17358
  this.__setContent(this.value);
17360
17359
  this.refreshToolbar();
17360
+
17361
+ document.addEventListener('selectionchange', this.__onSelectionchange);
17362
+ },
17363
+
17364
+ beforeDestroy: function beforeDestroy () {
17365
+ document.removeEventListener('selectionchange', this.__onSelectionchange);
17361
17366
  },
17362
17367
 
17363
17368
  render: function render (h) {
@@ -17394,13 +17399,8 @@
17394
17399
  focus: this.__onFocus,
17395
17400
 
17396
17401
  // clean saved scroll position
17397
- mousedown: this.__onMousedown,
17398
- touchstart: this.__onTouchstart,
17399
-
17400
- // save caret
17401
- mouseup: this.__onMouseup,
17402
- keyup: this.__onKeyup,
17403
- touchend: this.__onTouchend});
17402
+ mousedown: this.__onPointerStart,
17403
+ touchstart: this.__onPointerStart});
17404
17404
 
17405
17405
  return h('div', {
17406
17406
  style: {
@@ -18925,8 +18925,9 @@
18925
18925
  h('div', {
18926
18926
  ref: 'target',
18927
18927
  staticClass: 'q-field__native row',
18928
- attrs: Object.assign({}, this.qAttrs,
18929
- {'data-autofocus': this.autofocus})
18928
+ attrs: Object.assign({}, {tabindex: -1},
18929
+ this.qAttrs,
18930
+ {'data-autofocus': this.autofocus || void 0})
18930
18931
  }, this.$scopedSlots.control(this.controlSlotScope))
18931
18932
  );
18932
18933
  }
@@ -19104,7 +19105,7 @@
19104
19105
 
19105
19106
  var attrs = this.__getControl === void 0 && this.$scopedSlots.control === void 0
19106
19107
  ? Object.assign({}, this.qAttrs,
19107
- {'data-autofocus': this.autofocus},
19108
+ {'data-autofocus': this.autofocus || void 0},
19108
19109
  this.attrs)
19109
19110
  : this.attrs;
19110
19111
 
@@ -19511,6 +19512,10 @@
19511
19512
 
19512
19513
  isAppending: function isAppending () {
19513
19514
  return this.multiple === true && this.append === true
19515
+ },
19516
+
19517
+ fieldClass: function fieldClass () {
19518
+ return 'q-file q-field--auto-height' + (this.dnd === true ? ' q-file--dnd' : '')
19514
19519
  }
19515
19520
  },
19516
19521
 
@@ -19681,8 +19686,6 @@
19681
19686
  },
19682
19687
 
19683
19688
  created: function created () {
19684
- this.fieldClass = 'q-file q-field--auto-height';
19685
-
19686
19689
  // necessary for QField's clearable
19687
19690
  // and FileValueMixin
19688
19691
  this.type = 'file';
@@ -20770,6 +20773,16 @@
20770
20773
 
20771
20774
  if (this.isWorking === true) {
20772
20775
  this.__scrollTarget.addEventListener('scroll', this.poll, passive$1);
20776
+
20777
+ if (this.reverse === true) {
20778
+ var
20779
+ scrollHeight = getScrollHeight(this.__scrollTarget),
20780
+ containerHeight = height(this.__scrollTarget);
20781
+
20782
+ setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight);
20783
+ }
20784
+
20785
+ this.immediatePoll();
20773
20786
  }
20774
20787
  },
20775
20788
 
@@ -20801,16 +20814,6 @@
20801
20814
  this.__setDebounce(this.debounce);
20802
20815
 
20803
20816
  this.updateScrollTarget();
20804
-
20805
- if (this.reverse === true) {
20806
- var
20807
- scrollHeight = getScrollHeight(this.__scrollTarget),
20808
- containerHeight = height(this.__scrollTarget);
20809
-
20810
- setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight);
20811
- }
20812
-
20813
- this.immediatePoll();
20814
20817
  },
20815
20818
 
20816
20819
  activated: function activated () {
@@ -21475,28 +21478,29 @@
21475
21478
  var isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/;
21476
21479
  var isChinese = /(?:[\u3300-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uFE30-\uFE4F]|[\uD840-\uD868\uD86A-\uD872][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD873[\uDC00-\uDEAF]|\uD87E[\uDC00-\uDE1F])/;
21477
21480
  var isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/;
21481
+ var isPlainText = /[a-z0-9_ -]$/i;
21478
21482
 
21479
21483
  var CompositionMixin = {
21480
21484
  methods: {
21481
21485
  __onComposition: function __onComposition (e) {
21482
21486
  if (e.type === 'compositionend' || e.type === 'change') {
21483
- if (e.target.composing !== true) { return }
21484
- e.target.composing = false;
21487
+ if (e.target.qComposing !== true) { return }
21488
+ e.target.qComposing = false;
21485
21489
  this.__onInput(e);
21486
21490
  }
21487
- else if (e.type === 'compositionupdate') {
21488
- if (
21489
- typeof e.data === 'string' &&
21490
- isJapanese.test(e.data) === false &&
21491
- isChinese.test(e.data) === false &&
21492
- isKorean.test(e.data) === false
21493
- ) {
21494
- e.target.composing = false;
21491
+ else if (
21492
+ e.type === 'compositionupdate' &&
21493
+ e.target.qComposing !== true &&
21494
+ typeof e.data === 'string'
21495
+ ) {
21496
+ var isComposing = client.is.firefox === true
21497
+ ? isPlainText.test(e.data) === false
21498
+ : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true;
21499
+
21500
+ if (isComposing === true) {
21501
+ e.target.qComposing = true;
21495
21502
  }
21496
21503
  }
21497
- else {
21498
- e.target.composing = true;
21499
- }
21500
21504
  }
21501
21505
  }
21502
21506
  };
@@ -21641,7 +21645,7 @@
21641
21645
 
21642
21646
  inputAttrs: function inputAttrs () {
21643
21647
  var attrs = Object.assign({}, {tabindex: 0,
21644
- 'data-autofocus': this.autofocus,
21648
+ 'data-autofocus': this.autofocus || void 0,
21645
21649
  rows: this.type === 'textarea' ? 6 : void 0,
21646
21650
  'aria-label': this.label,
21647
21651
  name: this.nameProp},
@@ -21695,7 +21699,7 @@
21695
21699
  },
21696
21700
 
21697
21701
  __onInput: function __onInput (e) {
21698
- if (!e || !e.target || e.target.composing === true) {
21702
+ if (!e || !e.target || e.target.qComposing === true) {
21699
21703
  return
21700
21704
  }
21701
21705
 
@@ -21777,13 +21781,17 @@
21777
21781
  var inp = this.$refs.input;
21778
21782
  if (inp !== void 0) {
21779
21783
  var parentStyle = inp.parentNode.style;
21784
+ var ref = inp.style;
21785
+ var overflow = ref.overflow;
21780
21786
 
21781
21787
  // reset height of textarea to a small size to detect the real height
21782
21788
  // but keep the total control size the same
21783
21789
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px';
21784
21790
  inp.style.height = '1px';
21791
+ inp.style.overflow = 'hidden';
21785
21792
 
21786
21793
  inp.style.height = inp.scrollHeight + 'px';
21794
+ inp.style.overflow = overflow;
21787
21795
  parentStyle.marginBottom = '';
21788
21796
  }
21789
21797
  },
@@ -22586,6 +22594,7 @@
22586
22594
  var layout = h('div', {
22587
22595
  class: this.classes,
22588
22596
  style: this.style,
22597
+ attrs: { tabindex: -1 },
22589
22598
  on: Object.assign({}, this.qListeners)
22590
22599
  }, mergeSlot([
22591
22600
  h(QScrollObserver, {
@@ -26372,11 +26381,12 @@
26372
26381
  setOverflowAnchor.isSupported = window.getComputedStyle(document.body).overflowAnchor !== void 0;
26373
26382
  }
26374
26383
 
26375
- if (setOverflowAnchor.isSupported === false) {
26384
+ if (setOverflowAnchor.isSupported === false || contentEl === void 0) {
26376
26385
  return
26377
26386
  }
26378
26387
 
26379
- requestAnimationFrame(function () {
26388
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
26389
+ contentEl._qOverflowAnimationFrame = requestAnimationFrame(function () {
26380
26390
  if (contentEl === void 0) {
26381
26391
  return
26382
26392
  }
@@ -27053,15 +27063,20 @@
27053
27063
  this.__updateMenu(show);
27054
27064
  },
27055
27065
 
27056
- virtualScrollLength: function virtualScrollLength () {
27066
+ virtualScrollLength: function virtualScrollLength (newLength, oldLength) {
27057
27067
  var this$1 = this;
27058
27068
 
27059
27069
  if (this.menu === true && this.innerLoading === false) {
27060
- this.reset();
27070
+ this.__resetVirtualScroll(-1, true);
27061
27071
 
27062
27072
  this.$nextTick(function () {
27063
27073
  if (this$1.menu === true && this$1.innerLoading === false) {
27064
- this$1.__updateMenu(true);
27074
+ if (newLength > oldLength) {
27075
+ this$1.__resetVirtualScroll();
27076
+ }
27077
+ else {
27078
+ this$1.__updateMenu(true);
27079
+ }
27065
27080
  }
27066
27081
  });
27067
27082
  }
@@ -27318,7 +27333,7 @@
27318
27333
 
27319
27334
  virtualScrollItemSizeComputed: function virtualScrollItemSizeComputed () {
27320
27335
  return this.virtualScrollItemSize === void 0
27321
- ? (this.dense === true ? 24 : 48)
27336
+ ? (this.optionsDense === true ? 24 : 48)
27322
27337
  : this.virtualScrollItemSize
27323
27338
  },
27324
27339
 
@@ -28011,7 +28026,7 @@
28011
28026
  maxlength: this.maxlength, // this is converted to prop by QField
28012
28027
  tabindex: this.tabindex,
28013
28028
  autocomplete: this.autocomplete,
28014
- 'data-autofocus': fromDialog === true ? false : this.autofocus,
28029
+ 'data-autofocus': (fromDialog !== true && this.autofocus) || void 0,
28015
28030
  disabled: this.disable === true,
28016
28031
  readonly: this.readonly === true}),
28017
28032
  on: this.inputControlEvents
@@ -28033,7 +28048,7 @@
28033
28048
 
28034
28049
  clearTimeout(this.inputTimer);
28035
28050
 
28036
- if (e && e.target && e.target.composing === true) {
28051
+ if (e && e.target && e.target.qComposing === true) {
28037
28052
  return
28038
28053
  }
28039
28054
 
@@ -35965,28 +35980,32 @@
35965
35980
 
35966
35981
  return [
35967
35982
  h('div', {
35968
- staticClass: 'q-uploader__header-content flex flex-center no-wrap q-gutter-xs'
35983
+ staticClass: 'q-uploader__header-content column'
35969
35984
  }, [
35970
- this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),
35971
- this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),
35972
-
35973
- this.isUploading === true
35974
- ? h(QSpinner, { staticClass: 'q-uploader__spinner' })
35975
- : null,
35985
+ h('div', {
35986
+ staticClass: 'flex flex-center no-wrap q-gutter-xs'
35987
+ }, [
35988
+ this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),
35989
+ this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),
35976
35990
 
35977
- h('div', { staticClass: 'col column justify-center' }, [
35978
- this.label !== void 0
35979
- ? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
35991
+ this.isUploading === true
35992
+ ? h(QSpinner, { staticClass: 'q-uploader__spinner' })
35980
35993
  : null,
35981
35994
 
35982
- h('div', { staticClass: 'q-uploader__subtitle' }, [
35983
- this.uploadSizeLabel + ' / ' + this.uploadProgressLabel
35984
- ])
35985
- ]),
35995
+ h('div', { staticClass: 'col column justify-center' }, [
35996
+ this.label !== void 0
35997
+ ? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
35998
+ : null,
35986
35999
 
35987
- this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),
35988
- this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),
35989
- this.__getBtn(h, this.isUploading, 'clear', this.abort)
36000
+ h('div', { staticClass: 'q-uploader__subtitle' }, [
36001
+ this.uploadSizeLabel + ' / ' + this.uploadProgressLabel
36002
+ ])
36003
+ ]),
36004
+
36005
+ this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),
36006
+ this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),
36007
+ this.__getBtn(h, this.isUploading, 'clear', this.abort)
36008
+ ])
35990
36009
  ])
35991
36010
  ]
35992
36011
  },
@@ -36089,7 +36108,8 @@
36089
36108
  'q-uploader--bordered': this.bordered,
36090
36109
  'q-uploader--square no-border-radius': this.square,
36091
36110
  'q-uploader--flat no-shadow': this.flat,
36092
- 'disabled q-uploader--disable': this.disable
36111
+ 'disabled q-uploader--disable': this.disable,
36112
+ 'q-uploader--dnd': this.dnd
36093
36113
  },
36094
36114
  on: this.canAddFiles === true
36095
36115
  ? cache(this, 'drag', {