quasar 1.22.5 → 1.22.7

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 (144) hide show
  1. package/dist/api/BottomSheet.json +12 -0
  2. package/dist/api/QCarouselSlide.json +1 -1
  3. package/dist/api/QChatMessage.json +1 -1
  4. package/dist/api/QImg.json +8 -2
  5. package/dist/api/QTimelineEntry.json +1 -1
  6. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  7. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  8. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  9. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  10. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  11. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  12. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  13. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  14. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  15. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  16. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  17. package/dist/icon-set/material-icons.umd.min.js +1 -1
  18. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  19. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  20. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  21. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  22. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  23. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  24. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  25. package/dist/icon-set/mdi-v7.umd.min.js +1 -1
  26. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  27. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  33. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  36. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  37. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  38. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  39. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  40. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  41. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  42. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  43. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  44. package/dist/icon-set/svg-mdi-v7.umd.min.js +1 -1
  45. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  46. package/dist/icon-set/themify.umd.min.js +1 -1
  47. package/dist/lang/ar.umd.min.js +1 -1
  48. package/dist/lang/az-latn.umd.min.js +1 -1
  49. package/dist/lang/bg.umd.min.js +1 -1
  50. package/dist/lang/ca.umd.min.js +1 -1
  51. package/dist/lang/cs.umd.min.js +1 -1
  52. package/dist/lang/da.umd.min.js +1 -1
  53. package/dist/lang/de.umd.min.js +1 -1
  54. package/dist/lang/el.umd.min.js +1 -1
  55. package/dist/lang/en-gb.umd.min.js +1 -1
  56. package/dist/lang/en-us.umd.min.js +1 -1
  57. package/dist/lang/eo.umd.min.js +1 -1
  58. package/dist/lang/es.umd.min.js +1 -1
  59. package/dist/lang/et.umd.min.js +1 -1
  60. package/dist/lang/eu.umd.min.js +1 -1
  61. package/dist/lang/fa-ir.umd.min.js +1 -1
  62. package/dist/lang/fa.umd.min.js +1 -1
  63. package/dist/lang/fi.umd.min.js +1 -1
  64. package/dist/lang/fr.umd.min.js +1 -1
  65. package/dist/lang/gn.umd.min.js +1 -1
  66. package/dist/lang/he.umd.min.js +1 -1
  67. package/dist/lang/hr.umd.min.js +1 -1
  68. package/dist/lang/hu.umd.min.js +1 -1
  69. package/dist/lang/id.umd.min.js +1 -1
  70. package/dist/lang/is.umd.min.js +1 -1
  71. package/dist/lang/it.umd.min.js +1 -1
  72. package/dist/lang/ja.umd.min.js +2 -2
  73. package/dist/lang/km.umd.min.js +1 -1
  74. package/dist/lang/ko-kr.umd.min.js +1 -1
  75. package/dist/lang/kur-ckb.umd.min.js +1 -1
  76. package/dist/lang/kz.umd.min.js +1 -1
  77. package/dist/lang/lu.umd.min.js +1 -1
  78. package/dist/lang/lv.umd.min.js +1 -1
  79. package/dist/lang/ml.umd.min.js +1 -1
  80. package/dist/lang/mm.umd.min.js +1 -1
  81. package/dist/lang/ms.umd.min.js +1 -1
  82. package/dist/lang/my.umd.min.js +1 -1
  83. package/dist/lang/nb-no.umd.min.js +1 -1
  84. package/dist/lang/nl.umd.min.js +1 -1
  85. package/dist/lang/pl.umd.min.js +1 -1
  86. package/dist/lang/pt-br.umd.min.js +1 -1
  87. package/dist/lang/pt.umd.min.js +1 -1
  88. package/dist/lang/ro.umd.min.js +1 -1
  89. package/dist/lang/ru.umd.min.js +1 -1
  90. package/dist/lang/sk.umd.min.js +1 -1
  91. package/dist/lang/sl.umd.min.js +2 -2
  92. package/dist/lang/sm.umd.min.js +1 -1
  93. package/dist/lang/sr.umd.min.js +1 -1
  94. package/dist/lang/sv.umd.min.js +1 -1
  95. package/dist/lang/ta.umd.min.js +1 -1
  96. package/dist/lang/th.umd.min.js +1 -1
  97. package/dist/lang/tr.umd.min.js +1 -1
  98. package/dist/lang/ug.umd.min.js +1 -1
  99. package/dist/lang/uk.umd.min.js +1 -1
  100. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  101. package/dist/lang/uz-Latn.umd.min.js +1 -1
  102. package/dist/lang/vi.umd.min.js +1 -1
  103. package/dist/lang/zh-hans.umd.min.js +1 -1
  104. package/dist/lang/zh-hant.umd.min.js +1 -1
  105. package/dist/quasar.addon.css +1 -1
  106. package/dist/quasar.addon.rtl.css +1 -1
  107. package/dist/quasar.common.js +2 -2
  108. package/dist/quasar.css +26 -5
  109. package/dist/quasar.esm.js +2 -2
  110. package/dist/quasar.ie.polyfills.js +1 -1
  111. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  112. package/dist/quasar.min.css +1 -1
  113. package/dist/quasar.rtl.css +4 -3
  114. package/dist/quasar.rtl.min.css +1 -1
  115. package/dist/quasar.sass +18 -5
  116. package/dist/quasar.styl +18 -5
  117. package/dist/quasar.umd.js +128 -64
  118. package/dist/quasar.umd.min.js +2 -2
  119. package/dist/quasar.umd.modern.js +122 -62
  120. package/dist/quasar.umd.modern.min.js +2 -2
  121. package/dist/types/index.d.ts +12 -0
  122. package/dist/vetur/quasar-attributes.json +4 -0
  123. package/dist/vetur/quasar-tags.json +2 -1
  124. package/dist/web-types/web-types.json +16 -6
  125. package/lang/ja.js +1 -1
  126. package/lang/sl.js +1 -1
  127. package/package.json +1 -1
  128. package/src/components/carousel/QCarouselSlide.json +1 -1
  129. package/src/components/chat/QChatMessage.json +1 -1
  130. package/src/components/date/QDate.js +8 -3
  131. package/src/components/dialog-bottom-sheet/BottomSheet.js +2 -0
  132. package/src/components/field/QField.js +5 -1
  133. package/src/components/field/QField.sass +18 -4
  134. package/src/components/field/QField.styl +18 -4
  135. package/src/components/img/QImg.js +10 -1
  136. package/src/components/img/QImg.json +9 -2
  137. package/src/components/input/QInput.js +17 -4
  138. package/src/components/layout/QLayout.sass +1 -0
  139. package/src/components/layout/QLayout.styl +1 -0
  140. package/src/components/slide-transition/QSlideTransition.js +6 -1
  141. package/src/components/table/table-top.js +1 -1
  142. package/src/components/timeline/QTimelineEntry.json +1 -1
  143. package/src/mixins/mask.js +71 -49
  144. package/src/plugins/BottomSheet.json +7 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v1.22.5
2
+ * Quasar Framework v1.22.7
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.22.5";
15
+ var version = "1.22.7";
16
16
 
17
17
  /* eslint-disable no-useless-escape */
18
18
 
@@ -13214,8 +13214,8 @@
13214
13214
  this.lastEmitValue = 0;
13215
13215
  }
13216
13216
  else {
13217
- const { year, month } = this.__getViewModel(this.innerMask, this.innerLocale);
13218
- this.__updateViewModel(year, month);
13217
+ const model = this.__getViewModel(this.innerMask, this.innerLocale);
13218
+ this.__updateViewModel(model.year, model.month, model);
13219
13219
  }
13220
13220
  },
13221
13221
 
@@ -14383,7 +14383,7 @@
14383
14383
  }
14384
14384
  },
14385
14385
 
14386
- __updateViewModel (year, month) {
14386
+ __updateViewModel (year, month, time) {
14387
14387
  if (this.minNav !== void 0 && year <= this.minNav.year) {
14388
14388
  year = this.minNav.year;
14389
14389
  if (month < this.minNav.month) {
@@ -14398,6 +14398,11 @@
14398
14398
  }
14399
14399
  }
14400
14400
 
14401
+ if (time !== void 0) {
14402
+ const { hour, minute, second, millisecond, timezoneOffset, timeHash } = time;
14403
+ Object.assign(this.viewModel, { hour, minute, second, millisecond, timezoneOffset, timeHash });
14404
+ }
14405
+
14401
14406
  const newHash = year + '/' + pad(month) + '/01';
14402
14407
 
14403
14408
  if (newHash !== this.viewModel.dateHash) {
@@ -17690,7 +17695,7 @@
17690
17695
 
17691
17696
  methods: {
17692
17697
  __begin (el, height, done) {
17693
- el.style.overflowY = 'hidden';
17698
+ // here overflowY is 'hidden'
17694
17699
  if (height !== void 0) {
17695
17700
  el.style.height = `${height}px`;
17696
17701
  }
@@ -17735,12 +17740,14 @@
17735
17740
  let pos = 0;
17736
17741
  this.el = el;
17737
17742
 
17743
+ // if animationg overflowY is already 'hidden'
17738
17744
  if (this.animating === true) {
17739
17745
  this.__cleanup();
17740
17746
  pos = el.offsetHeight === el.scrollHeight ? 0 : void 0;
17741
17747
  }
17742
17748
  else {
17743
17749
  this.lastEvent = 'hide';
17750
+ el.style.overflowY = 'hidden';
17744
17751
  }
17745
17752
 
17746
17753
  this.__begin(el, pos, done);
@@ -17766,6 +17773,9 @@
17766
17773
  }
17767
17774
  else {
17768
17775
  this.lastEvent = 'show';
17776
+ // we need to set overflowY 'hidden' before calculating the height
17777
+ // or else we get small differences
17778
+ el.style.overflowY = 'hidden';
17769
17779
  pos = el.scrollHeight;
17770
17780
  }
17771
17781
 
@@ -18900,7 +18910,11 @@
18900
18910
  this.focused === true ||
18901
18911
  typeof this.inputValue === 'number' ||
18902
18912
  (typeof this.inputValue === 'string' && this.inputValue.length > 0) ||
18903
- (this.hideSelected !== true && this.hasValue === true) ||
18913
+ (
18914
+ this.hideSelected !== true &&
18915
+ this.hasValue === true &&
18916
+ (this.type !== 'number' || isNaN(this.value) === false)
18917
+ ) ||
18904
18918
  (
18905
18919
  this.displayValue !== void 0 &&
18906
18920
  this.displayValue !== null &&
@@ -20548,6 +20562,7 @@
20548
20562
  imgStyle: Object,
20549
20563
 
20550
20564
  nativeContextMenu: Boolean,
20565
+ notDraggable: Boolean,
20551
20566
 
20552
20567
  noDefaultSpinner: Boolean,
20553
20568
  spinnerColor: String,
@@ -20587,6 +20602,14 @@
20587
20602
  return att
20588
20603
  },
20589
20604
 
20605
+ imgAttrs () {
20606
+ const att = { src: this.url, 'aria-hidden': 'true' };
20607
+ if (this.notDraggable === true) {
20608
+ att.draggable = false;
20609
+ }
20610
+ return att
20611
+ },
20612
+
20590
20613
  imgContainerStyle () {
20591
20614
  return Object.assign(
20592
20615
  {
@@ -20738,7 +20761,7 @@
20738
20761
  ? [
20739
20762
  h('img', {
20740
20763
  staticClass: 'absolute-full fit',
20741
- attrs: { src: this.url, 'aria-hidden': 'true' }
20764
+ attrs: this.imgAttrs
20742
20765
  })
20743
20766
  ]
20744
20767
  : void 0;
@@ -21349,7 +21372,7 @@
21349
21372
 
21350
21373
  this.computedMask = mask;
21351
21374
  this.computedUnmask = val => {
21352
- const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length));
21375
+ const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length + 1));
21353
21376
  if (unmaskMatch !== null) {
21354
21377
  val = unmaskMatch.slice(1).join('');
21355
21378
  }
@@ -21409,8 +21432,15 @@
21409
21432
  }
21410
21433
 
21411
21434
  if (inputType === 'insertFromPaste' && this.reverseFillMask !== true) {
21412
- const cursor = end - 1;
21413
- this.__moveCursorRight(inp, cursor, cursor);
21435
+ const maxEnd = inp.selectionEnd;
21436
+ let cursor = end - 1;
21437
+ // each non-marker char means we move once to right
21438
+ for (let i = this.__pastedTextStart; i <= cursor && i < maxEnd; i++) {
21439
+ if (this.maskMarked[i] !== MARKER) {
21440
+ cursor++;
21441
+ }
21442
+ }
21443
+ this.__moveCursorRight(inp, cursor);
21414
21444
 
21415
21445
  return
21416
21446
  }
@@ -21436,7 +21466,7 @@
21436
21466
  inp.setSelectionRange(cursor, cursor, 'forward');
21437
21467
  }
21438
21468
  else {
21439
- this.__moveCursorRightReverse(inp, cursor, cursor);
21469
+ this.__moveCursorRightReverse(inp, cursor);
21440
21470
  }
21441
21471
  }
21442
21472
  else {
@@ -21447,11 +21477,11 @@
21447
21477
  else {
21448
21478
  if (changed === true) {
21449
21479
  const cursor = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1);
21450
- this.__moveCursorRight(inp, cursor, cursor);
21480
+ this.__moveCursorRight(inp, cursor);
21451
21481
  }
21452
21482
  else {
21453
21483
  const cursor = end - 1;
21454
- this.__moveCursorRight(inp, cursor, cursor);
21484
+ this.__moveCursorRight(inp, cursor);
21455
21485
  }
21456
21486
  }
21457
21487
  });
@@ -21467,73 +21497,71 @@
21467
21497
  const preMasked = this.__mask(this.__unmask(inp.value));
21468
21498
 
21469
21499
  start = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, start));
21500
+ this.__pastedTextStart = start;
21470
21501
 
21471
21502
  inp.setSelectionRange(start, end, 'forward');
21472
21503
  },
21473
21504
 
21474
- __moveCursorLeft (inp, start, end, selection) {
21475
- const noMarkBefore = this.maskMarked.slice(start - 1).indexOf(MARKER) === -1;
21476
- let i = Math.max(0, start - 1);
21505
+ __moveCursorLeft (inp, cursor) {
21506
+ const noMarkBefore = this.maskMarked.slice(cursor - 1).indexOf(MARKER) === -1;
21507
+ let i = Math.max(0, cursor - 1);
21477
21508
 
21478
21509
  for (; i >= 0; i--) {
21479
21510
  if (this.maskMarked[i] === MARKER) {
21480
- start = i;
21481
- noMarkBefore === true && start++;
21511
+ cursor = i;
21512
+ noMarkBefore === true && cursor++;
21482
21513
  break
21483
21514
  }
21484
21515
  }
21485
21516
 
21486
21517
  if (
21487
21518
  i < 0 &&
21488
- this.maskMarked[start] !== void 0 &&
21489
- this.maskMarked[start] !== MARKER
21519
+ this.maskMarked[cursor] !== void 0 &&
21520
+ this.maskMarked[cursor] !== MARKER
21490
21521
  ) {
21491
- return this.__moveCursorRight(inp, 0, 0)
21522
+ return this.__moveCursorRight(inp, 0)
21492
21523
  }
21493
21524
 
21494
- start >= 0 && inp.setSelectionRange(
21495
- start,
21496
- selection === true ? end : start, 'backward'
21497
- );
21525
+ cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward');
21498
21526
  },
21499
21527
 
21500
- __moveCursorRight (inp, start, end, selection) {
21528
+ __moveCursorRight (inp, cursor) {
21501
21529
  const limit = inp.value.length;
21502
- let i = Math.min(limit, end + 1);
21530
+ let i = Math.min(limit, cursor + 1);
21503
21531
 
21504
21532
  for (; i <= limit; i++) {
21505
21533
  if (this.maskMarked[i] === MARKER) {
21506
- end = i;
21534
+ cursor = i;
21507
21535
  break
21508
21536
  }
21509
21537
  else if (this.maskMarked[i - 1] === MARKER) {
21510
- end = i;
21538
+ cursor = i;
21511
21539
  }
21512
21540
  }
21513
21541
 
21514
21542
  if (
21515
21543
  i > limit &&
21516
- this.maskMarked[end - 1] !== void 0 &&
21517
- this.maskMarked[end - 1] !== MARKER
21544
+ this.maskMarked[cursor - 1] !== void 0 &&
21545
+ this.maskMarked[cursor - 1] !== MARKER
21518
21546
  ) {
21519
- return this.__moveCursorLeft(inp, limit, limit)
21547
+ return this.__moveCursorLeft(inp, limit)
21520
21548
  }
21521
21549
 
21522
- inp.setSelectionRange(selection ? start : end, end, 'forward');
21550
+ inp.setSelectionRange(cursor, cursor, 'forward');
21523
21551
  },
21524
21552
 
21525
- __moveCursorLeftReverse (inp, start, end, selection) {
21553
+ __moveCursorLeftReverse (inp, cursor) {
21526
21554
  const
21527
21555
  maskMarked = this.__getPaddedMaskMarked(inp.value.length);
21528
- let i = Math.max(0, start - 1);
21556
+ let i = Math.max(0, cursor - 1);
21529
21557
 
21530
21558
  for (; i >= 0; i--) {
21531
21559
  if (maskMarked[i - 1] === MARKER) {
21532
- start = i;
21560
+ cursor = i;
21533
21561
  break
21534
21562
  }
21535
21563
  else if (maskMarked[i] === MARKER) {
21536
- start = i;
21564
+ cursor = i;
21537
21565
  if (i === 0) {
21538
21566
  break
21539
21567
  }
@@ -21542,42 +21570,45 @@
21542
21570
 
21543
21571
  if (
21544
21572
  i < 0 &&
21545
- maskMarked[start] !== void 0 &&
21546
- maskMarked[start] !== MARKER
21573
+ maskMarked[cursor] !== void 0 &&
21574
+ maskMarked[cursor] !== MARKER
21547
21575
  ) {
21548
- return this.__moveCursorRightReverse(inp, 0, 0)
21576
+ return this.__moveCursorRightReverse(inp, 0)
21549
21577
  }
21550
21578
 
21551
- start >= 0 && inp.setSelectionRange(
21552
- start,
21553
- selection === true ? end : start, 'backward'
21554
- );
21579
+ cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward');
21555
21580
  },
21556
21581
 
21557
- __moveCursorRightReverse (inp, start, end, selection) {
21582
+ __moveCursorRightReverse (inp, cursor) {
21558
21583
  const
21559
21584
  limit = inp.value.length,
21560
21585
  maskMarked = this.__getPaddedMaskMarked(limit),
21561
- noMarkBefore = maskMarked.slice(0, end + 1).indexOf(MARKER) === -1;
21562
- let i = Math.min(limit, end + 1);
21586
+ noMarkBefore = maskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1;
21587
+ let i = Math.min(limit, cursor + 1);
21563
21588
 
21564
21589
  for (; i <= limit; i++) {
21565
21590
  if (maskMarked[i - 1] === MARKER) {
21566
- end = i;
21567
- end > 0 && noMarkBefore === true && end--;
21591
+ cursor = i;
21592
+ cursor > 0 && noMarkBefore === true && cursor--;
21568
21593
  break
21569
21594
  }
21570
21595
  }
21571
21596
 
21572
21597
  if (
21573
21598
  i > limit &&
21574
- maskMarked[end - 1] !== void 0 &&
21575
- maskMarked[end - 1] !== MARKER
21599
+ maskMarked[cursor - 1] !== void 0 &&
21600
+ maskMarked[cursor - 1] !== MARKER
21576
21601
  ) {
21577
- return this.__moveCursorLeftReverse(inp, limit, limit)
21602
+ return this.__moveCursorLeftReverse(inp, limit)
21578
21603
  }
21579
21604
 
21580
- inp.setSelectionRange(selection === true ? start : end, end, 'forward');
21605
+ inp.setSelectionRange(cursor, cursor, 'forward');
21606
+ },
21607
+
21608
+ __onMaskedClick (e) {
21609
+ this.qListeners.click !== void 0 && this.$emit('click', e);
21610
+
21611
+ this.__selectionAnchor = void 0;
21581
21612
  },
21582
21613
 
21583
21614
  __onMaskedKeydown (e) {
@@ -21592,25 +21623,39 @@
21592
21623
  start = inp.selectionStart,
21593
21624
  end = inp.selectionEnd;
21594
21625
 
21626
+ if (!e.shiftKey) {
21627
+ this.__selectionAnchor = void 0;
21628
+ }
21629
+
21595
21630
  if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right
21631
+ if (e.shiftKey && this.__selectionAnchor === void 0) {
21632
+ this.__selectionAnchor = inp.selectionDirection === 'forward' ? start : end;
21633
+ }
21634
+
21596
21635
  const fn = this['__moveCursor' + (e.keyCode === 39 ? 'Right' : 'Left') + (this.reverseFillMask === true ? 'Reverse' : '')];
21597
21636
 
21598
21637
  e.preventDefault();
21599
- fn(inp, start, end, e.shiftKey);
21638
+ fn(inp, this.__selectionAnchor === start ? end : start);
21639
+
21640
+ if (e.shiftKey) {
21641
+ const anchor = this.__selectionAnchor;
21642
+ const cursor = inp.selectionStart;
21643
+ inp.setSelectionRange(Math.min(anchor, cursor), Math.max(anchor, cursor), 'forward');
21644
+ }
21600
21645
  }
21601
21646
  else if (
21602
21647
  e.keyCode === 8 && // Backspace
21603
21648
  this.reverseFillMask !== true &&
21604
21649
  start === end
21605
21650
  ) {
21606
- this.__moveCursorLeft(inp, start, end, true);
21651
+ this.__moveCursorLeft(inp, start);
21607
21652
  }
21608
21653
  else if (
21609
21654
  e.keyCode === 46 && // Delete
21610
21655
  this.reverseFillMask === true &&
21611
21656
  start === end
21612
21657
  ) {
21613
- this.__moveCursorRightReverse(inp, start, end, true);
21658
+ this.__moveCursorRightReverse(inp, end);
21614
21659
  }
21615
21660
 
21616
21661
  this.$emit('keydown', e);
@@ -21861,6 +21906,8 @@
21861
21906
 
21862
21907
  if (this.hasMask === true) {
21863
21908
  on.keydown = this.__onMaskedKeydown;
21909
+ // reset selection anchor on pointer selection
21910
+ on.click = this.__onMaskedClick;
21864
21911
  }
21865
21912
 
21866
21913
  if (this.autogrow === true) {
@@ -22010,18 +22057,29 @@
22010
22057
  const inp = this.$refs.input;
22011
22058
  if (inp !== void 0) {
22012
22059
  const parentStyle = inp.parentNode.style;
22013
- const { overflow } = inp.style;
22060
+ // chrome does not keep scroll #15498
22061
+ const { scrollTop } = inp;
22062
+ // chrome calculates a smaller scrollHeight when in a .column container
22063
+ const { overflowY, maxHeight } = this.$q.platform.is.firefox === true
22064
+ ? {}
22065
+ : window.getComputedStyle(inp);
22066
+ // on firefox or if overflowY is specified as scroll #14263, #14344
22067
+ // we don't touch overflow
22068
+ // firefox is not so bad in the end
22069
+ const changeOverflow = overflowY !== void 0 && overflowY !== 'scroll';
22014
22070
 
22015
22071
  // reset height of textarea to a small size to detect the real height
22016
22072
  // but keep the total control size the same
22017
- // Firefox rulez #14263, #14344
22018
- this.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden');
22073
+ changeOverflow === true && (inp.style.overflowY = 'hidden');
22019
22074
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px';
22020
22075
  inp.style.height = '1px';
22021
22076
 
22022
22077
  inp.style.height = inp.scrollHeight + 'px';
22023
- inp.style.overflow = overflow;
22078
+ // we should allow scrollbars only
22079
+ // if there is maxHeight and content is taller than maxHeight
22080
+ changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden');
22024
22081
  parentStyle.marginBottom = '';
22082
+ inp.scrollTop = scrollTop;
22025
22083
  }
22026
22084
  });
22027
22085
  },
@@ -32026,7 +32084,7 @@
32026
32084
 
32027
32085
  if (topLeft !== void 0) {
32028
32086
  child.push(
32029
- h('div', { staticClass: 'q-table-control' }, [
32087
+ h('div', { staticClass: 'q-table__control' }, [
32030
32088
  topLeft(this.marginalsScope)
32031
32089
  ])
32032
32090
  );
@@ -38812,6 +38870,7 @@
38812
38870
  : h('div', {
38813
38871
  staticClass: 'q-bottom-sheet__item q-hoverable q-focusable cursor-pointer relative-position',
38814
38872
  class: action.classes,
38873
+ style: action.style,
38815
38874
  attrs: attrsGridItem,
38816
38875
  on: {
38817
38876
  click: () => {
@@ -38849,6 +38908,7 @@
38849
38908
  : h(QItem, {
38850
38909
  staticClass: 'q-bottom-sheet__item',
38851
38910
  class: action.classes,
38911
+ style: action.style,
38852
38912
  props: {
38853
38913
  tabindex: 0,
38854
38914
  clickable: true,