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
package/dist/quasar.sass CHANGED
@@ -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
  */
@@ -2333,8 +2333,14 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
2333
2333
  -webkit-animation-fill-mode: both
2334
2334
  &:-webkit-autofill + .q-field__label
2335
2335
  transform: translateY(-40%) scale(.75)
2336
- &[type="number"]:invalid + .q-field__label
2337
- transform: translateY(-40%) scale(.75)
2336
+ &[type="color"],
2337
+ &[type="date"],
2338
+ &[type="datetime-local"],
2339
+ &[type="month"],
2340
+ &[type="time"],
2341
+ &[type="week"]
2342
+ + .q-field__label
2343
+ transform: translateY(-40%) scale(.75)
2338
2344
  &:invalid
2339
2345
  box-shadow: none
2340
2346
  &__native[type="file"]
@@ -2581,8 +2587,14 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
2581
2587
  .q-field__native, .q-field__input
2582
2588
  &:-webkit-autofill + .q-field__label
2583
2589
  transform: translateY(-30%) scale(.75)
2584
- &[type="number"]:invalid + .q-field__label
2585
- transform: translateY(-30%) scale(.75)
2590
+ &[type="color"],
2591
+ &[type="date"],
2592
+ &[type="datetime-local"],
2593
+ &[type="month"],
2594
+ &[type="time"],
2595
+ &[type="week"]
2596
+ + .q-field__label
2597
+ transform: translateY(-30%) scale(.75)
2586
2598
  &--borderless, &--standard
2587
2599
  .q-field__bottom,
2588
2600
  &.q-field--dense .q-field__control
@@ -2871,6 +2883,7 @@ body.mobile .q-textarea,
2871
2883
  box-shadow: $shadow-4
2872
2884
  .q-layout
2873
2885
  width: 100%
2886
+ outline: 0
2874
2887
  .q-layout-container
2875
2888
  position: relative
2876
2889
  width: 100%
package/dist/quasar.styl CHANGED
@@ -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
  */
@@ -2380,8 +2380,14 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
2380
2380
  -webkit-animation-fill-mode: both
2381
2381
  &:-webkit-autofill + .q-field__label
2382
2382
  transform: translateY(-40%) scale(.75)
2383
- &[type="number"]:invalid + .q-field__label
2384
- transform: translateY(-40%) scale(.75)
2383
+ &[type="color"],
2384
+ &[type="date"],
2385
+ &[type="datetime-local"],
2386
+ &[type="month"],
2387
+ &[type="time"],
2388
+ &[type="week"]
2389
+ + .q-field__label
2390
+ transform: translateY(-40%) scale(.75)
2385
2391
  &:invalid
2386
2392
  box-shadow: none
2387
2393
  &__native[type="file"]
@@ -2628,8 +2634,14 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
2628
2634
  .q-field__native, .q-field__input
2629
2635
  &:-webkit-autofill + .q-field__label
2630
2636
  transform: translateY(-30%) scale(.75)
2631
- &[type="number"]:invalid + .q-field__label
2632
- transform: translateY(-30%) scale(.75)
2637
+ &[type="color"],
2638
+ &[type="date"],
2639
+ &[type="datetime-local"],
2640
+ &[type="month"],
2641
+ &[type="time"],
2642
+ &[type="week"]
2643
+ + .q-field__label
2644
+ transform: translateY(-30%) scale(.75)
2633
2645
  &--borderless, &--standard
2634
2646
  .q-field__bottom,
2635
2647
  &.q-field--dense .q-field__control
@@ -2918,6 +2930,7 @@ body.mobile .q-textarea,
2918
2930
  box-shadow: $shadow-4
2919
2931
  .q-layout
2920
2932
  width: 100%
2933
+ outline: 0
2921
2934
  .q-layout-container
2922
2935
  position: relative
2923
2936
  width: 100%
@@ -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
 
@@ -13454,10 +13454,8 @@
13454
13454
  this.lastEmitValue = 0;
13455
13455
  }
13456
13456
  else {
13457
- var ref = this.__getViewModel(this.innerMask, this.innerLocale);
13458
- var year = ref.year;
13459
- var month = ref.month;
13460
- this.__updateViewModel(year, month);
13457
+ var model = this.__getViewModel(this.innerMask, this.innerLocale);
13458
+ this.__updateViewModel(model.year, model.month, model);
13461
13459
  }
13462
13460
  },
13463
13461
 
@@ -14675,7 +14673,7 @@
14675
14673
  }
14676
14674
  },
14677
14675
 
14678
- __updateViewModel: function __updateViewModel (year, month) {
14676
+ __updateViewModel: function __updateViewModel (year, month, time) {
14679
14677
  var this$1 = this;
14680
14678
 
14681
14679
  if (this.minNav !== void 0 && year <= this.minNav.year) {
@@ -14692,6 +14690,16 @@
14692
14690
  }
14693
14691
  }
14694
14692
 
14693
+ if (time !== void 0) {
14694
+ var hour = time.hour;
14695
+ var minute = time.minute;
14696
+ var second = time.second;
14697
+ var millisecond = time.millisecond;
14698
+ var timezoneOffset = time.timezoneOffset;
14699
+ var timeHash = time.timeHash;
14700
+ Object.assign(this.viewModel, { hour: hour, minute: minute, second: second, millisecond: millisecond, timezoneOffset: timezoneOffset, timeHash: timeHash });
14701
+ }
14702
+
14695
14703
  var newHash = year + '/' + pad(month) + '/01';
14696
14704
 
14697
14705
  if (newHash !== this.viewModel.dateHash) {
@@ -18028,7 +18036,7 @@
18028
18036
 
18029
18037
  methods: {
18030
18038
  __begin: function __begin (el, height, done) {
18031
- el.style.overflowY = 'hidden';
18039
+ // here overflowY is 'hidden'
18032
18040
  if (height !== void 0) {
18033
18041
  el.style.height = height + "px";
18034
18042
  }
@@ -18075,12 +18083,14 @@
18075
18083
  var pos = 0;
18076
18084
  this$1.el = el;
18077
18085
 
18086
+ // if animationg overflowY is already 'hidden'
18078
18087
  if (this$1.animating === true) {
18079
18088
  this$1.__cleanup();
18080
18089
  pos = el.offsetHeight === el.scrollHeight ? 0 : void 0;
18081
18090
  }
18082
18091
  else {
18083
18092
  this$1.lastEvent = 'hide';
18093
+ el.style.overflowY = 'hidden';
18084
18094
  }
18085
18095
 
18086
18096
  this$1.__begin(el, pos, done);
@@ -18106,6 +18116,9 @@
18106
18116
  }
18107
18117
  else {
18108
18118
  this$1.lastEvent = 'show';
18119
+ // we need to set overflowY 'hidden' before calculating the height
18120
+ // or else we get small differences
18121
+ el.style.overflowY = 'hidden';
18109
18122
  pos = el.scrollHeight;
18110
18123
  }
18111
18124
 
@@ -19235,7 +19248,11 @@
19235
19248
  this.focused === true ||
19236
19249
  typeof this.inputValue === 'number' ||
19237
19250
  (typeof this.inputValue === 'string' && this.inputValue.length > 0) ||
19238
- (this.hideSelected !== true && this.hasValue === true) ||
19251
+ (
19252
+ this.hideSelected !== true &&
19253
+ this.hasValue === true &&
19254
+ (this.type !== 'number' || isNaN(this.value) === false)
19255
+ ) ||
19239
19256
  (
19240
19257
  this.displayValue !== void 0 &&
19241
19258
  this.displayValue !== null &&
@@ -20881,6 +20898,7 @@
20881
20898
  imgStyle: Object,
20882
20899
 
20883
20900
  nativeContextMenu: Boolean,
20901
+ notDraggable: Boolean,
20884
20902
 
20885
20903
  noDefaultSpinner: Boolean,
20886
20904
  spinnerColor: String,
@@ -20920,6 +20938,14 @@
20920
20938
  return att
20921
20939
  },
20922
20940
 
20941
+ imgAttrs: function imgAttrs () {
20942
+ var att = { src: this.url, 'aria-hidden': 'true' };
20943
+ if (this.notDraggable === true) {
20944
+ att.draggable = false;
20945
+ }
20946
+ return att
20947
+ },
20948
+
20923
20949
  imgContainerStyle: function imgContainerStyle () {
20924
20950
  return Object.assign(
20925
20951
  {
@@ -21076,7 +21102,7 @@
21076
21102
  ? [
21077
21103
  h('img', {
21078
21104
  staticClass: 'absolute-full fit',
21079
- attrs: { src: this.url, 'aria-hidden': 'true' }
21105
+ attrs: this.imgAttrs
21080
21106
  })
21081
21107
  ]
21082
21108
  : void 0;
@@ -21693,7 +21719,7 @@
21693
21719
 
21694
21720
  this.computedMask = mask;
21695
21721
  this.computedUnmask = function (val) {
21696
- var unmaskMatch = unmaskMatcher.exec(this$1.reverseFillMask === true ? val : val.slice(0, mask.length));
21722
+ var unmaskMatch = unmaskMatcher.exec(this$1.reverseFillMask === true ? val : val.slice(0, mask.length + 1));
21697
21723
  if (unmaskMatch !== null) {
21698
21724
  val = unmaskMatch.slice(1).join('');
21699
21725
  }
@@ -21755,8 +21781,15 @@
21755
21781
  }
21756
21782
 
21757
21783
  if (inputType === 'insertFromPaste' && this$1.reverseFillMask !== true) {
21784
+ var maxEnd = inp.selectionEnd;
21758
21785
  var cursor$1 = end - 1;
21759
- this$1.__moveCursorRight(inp, cursor$1, cursor$1);
21786
+ // each non-marker char means we move once to right
21787
+ for (var i = this$1.__pastedTextStart; i <= cursor$1 && i < maxEnd; i++) {
21788
+ if (this$1.maskMarked[i] !== MARKER) {
21789
+ cursor$1++;
21790
+ }
21791
+ }
21792
+ this$1.__moveCursorRight(inp, cursor$1);
21760
21793
 
21761
21794
  return
21762
21795
  }
@@ -21782,7 +21815,7 @@
21782
21815
  inp.setSelectionRange(cursor$3, cursor$3, 'forward');
21783
21816
  }
21784
21817
  else {
21785
- this$1.__moveCursorRightReverse(inp, cursor$3, cursor$3);
21818
+ this$1.__moveCursorRightReverse(inp, cursor$3);
21786
21819
  }
21787
21820
  }
21788
21821
  else {
@@ -21793,11 +21826,11 @@
21793
21826
  else {
21794
21827
  if (changed === true) {
21795
21828
  var cursor$5 = Math.max(0, this$1.maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1);
21796
- this$1.__moveCursorRight(inp, cursor$5, cursor$5);
21829
+ this$1.__moveCursorRight(inp, cursor$5);
21797
21830
  }
21798
21831
  else {
21799
21832
  var cursor$6 = end - 1;
21800
- this$1.__moveCursorRight(inp, cursor$6, cursor$6);
21833
+ this$1.__moveCursorRight(inp, cursor$6);
21801
21834
  }
21802
21835
  }
21803
21836
  });
@@ -21813,73 +21846,71 @@
21813
21846
  var preMasked = this.__mask(this.__unmask(inp.value));
21814
21847
 
21815
21848
  start = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, start));
21849
+ this.__pastedTextStart = start;
21816
21850
 
21817
21851
  inp.setSelectionRange(start, end, 'forward');
21818
21852
  },
21819
21853
 
21820
- __moveCursorLeft: function __moveCursorLeft (inp, start, end, selection) {
21821
- var noMarkBefore = this.maskMarked.slice(start - 1).indexOf(MARKER) === -1;
21822
- var i = Math.max(0, start - 1);
21854
+ __moveCursorLeft: function __moveCursorLeft (inp, cursor) {
21855
+ var noMarkBefore = this.maskMarked.slice(cursor - 1).indexOf(MARKER) === -1;
21856
+ var i = Math.max(0, cursor - 1);
21823
21857
 
21824
21858
  for (; i >= 0; i--) {
21825
21859
  if (this.maskMarked[i] === MARKER) {
21826
- start = i;
21827
- noMarkBefore === true && start++;
21860
+ cursor = i;
21861
+ noMarkBefore === true && cursor++;
21828
21862
  break
21829
21863
  }
21830
21864
  }
21831
21865
 
21832
21866
  if (
21833
21867
  i < 0 &&
21834
- this.maskMarked[start] !== void 0 &&
21835
- this.maskMarked[start] !== MARKER
21868
+ this.maskMarked[cursor] !== void 0 &&
21869
+ this.maskMarked[cursor] !== MARKER
21836
21870
  ) {
21837
- return this.__moveCursorRight(inp, 0, 0)
21871
+ return this.__moveCursorRight(inp, 0)
21838
21872
  }
21839
21873
 
21840
- start >= 0 && inp.setSelectionRange(
21841
- start,
21842
- selection === true ? end : start, 'backward'
21843
- );
21874
+ cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward');
21844
21875
  },
21845
21876
 
21846
- __moveCursorRight: function __moveCursorRight (inp, start, end, selection) {
21877
+ __moveCursorRight: function __moveCursorRight (inp, cursor) {
21847
21878
  var limit = inp.value.length;
21848
- var i = Math.min(limit, end + 1);
21879
+ var i = Math.min(limit, cursor + 1);
21849
21880
 
21850
21881
  for (; i <= limit; i++) {
21851
21882
  if (this.maskMarked[i] === MARKER) {
21852
- end = i;
21883
+ cursor = i;
21853
21884
  break
21854
21885
  }
21855
21886
  else if (this.maskMarked[i - 1] === MARKER) {
21856
- end = i;
21887
+ cursor = i;
21857
21888
  }
21858
21889
  }
21859
21890
 
21860
21891
  if (
21861
21892
  i > limit &&
21862
- this.maskMarked[end - 1] !== void 0 &&
21863
- this.maskMarked[end - 1] !== MARKER
21893
+ this.maskMarked[cursor - 1] !== void 0 &&
21894
+ this.maskMarked[cursor - 1] !== MARKER
21864
21895
  ) {
21865
- return this.__moveCursorLeft(inp, limit, limit)
21896
+ return this.__moveCursorLeft(inp, limit)
21866
21897
  }
21867
21898
 
21868
- inp.setSelectionRange(selection ? start : end, end, 'forward');
21899
+ inp.setSelectionRange(cursor, cursor, 'forward');
21869
21900
  },
21870
21901
 
21871
- __moveCursorLeftReverse: function __moveCursorLeftReverse (inp, start, end, selection) {
21902
+ __moveCursorLeftReverse: function __moveCursorLeftReverse (inp, cursor) {
21872
21903
  var
21873
21904
  maskMarked = this.__getPaddedMaskMarked(inp.value.length);
21874
- var i = Math.max(0, start - 1);
21905
+ var i = Math.max(0, cursor - 1);
21875
21906
 
21876
21907
  for (; i >= 0; i--) {
21877
21908
  if (maskMarked[i - 1] === MARKER) {
21878
- start = i;
21909
+ cursor = i;
21879
21910
  break
21880
21911
  }
21881
21912
  else if (maskMarked[i] === MARKER) {
21882
- start = i;
21913
+ cursor = i;
21883
21914
  if (i === 0) {
21884
21915
  break
21885
21916
  }
@@ -21888,42 +21919,45 @@
21888
21919
 
21889
21920
  if (
21890
21921
  i < 0 &&
21891
- maskMarked[start] !== void 0 &&
21892
- maskMarked[start] !== MARKER
21922
+ maskMarked[cursor] !== void 0 &&
21923
+ maskMarked[cursor] !== MARKER
21893
21924
  ) {
21894
- return this.__moveCursorRightReverse(inp, 0, 0)
21925
+ return this.__moveCursorRightReverse(inp, 0)
21895
21926
  }
21896
21927
 
21897
- start >= 0 && inp.setSelectionRange(
21898
- start,
21899
- selection === true ? end : start, 'backward'
21900
- );
21928
+ cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward');
21901
21929
  },
21902
21930
 
21903
- __moveCursorRightReverse: function __moveCursorRightReverse (inp, start, end, selection) {
21931
+ __moveCursorRightReverse: function __moveCursorRightReverse (inp, cursor) {
21904
21932
  var
21905
21933
  limit = inp.value.length,
21906
21934
  maskMarked = this.__getPaddedMaskMarked(limit),
21907
- noMarkBefore = maskMarked.slice(0, end + 1).indexOf(MARKER) === -1;
21908
- var i = Math.min(limit, end + 1);
21935
+ noMarkBefore = maskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1;
21936
+ var i = Math.min(limit, cursor + 1);
21909
21937
 
21910
21938
  for (; i <= limit; i++) {
21911
21939
  if (maskMarked[i - 1] === MARKER) {
21912
- end = i;
21913
- end > 0 && noMarkBefore === true && end--;
21940
+ cursor = i;
21941
+ cursor > 0 && noMarkBefore === true && cursor--;
21914
21942
  break
21915
21943
  }
21916
21944
  }
21917
21945
 
21918
21946
  if (
21919
21947
  i > limit &&
21920
- maskMarked[end - 1] !== void 0 &&
21921
- maskMarked[end - 1] !== MARKER
21948
+ maskMarked[cursor - 1] !== void 0 &&
21949
+ maskMarked[cursor - 1] !== MARKER
21922
21950
  ) {
21923
- return this.__moveCursorLeftReverse(inp, limit, limit)
21951
+ return this.__moveCursorLeftReverse(inp, limit)
21924
21952
  }
21925
21953
 
21926
- inp.setSelectionRange(selection === true ? start : end, end, 'forward');
21954
+ inp.setSelectionRange(cursor, cursor, 'forward');
21955
+ },
21956
+
21957
+ __onMaskedClick: function __onMaskedClick (e) {
21958
+ this.qListeners.click !== void 0 && this.$emit('click', e);
21959
+
21960
+ this.__selectionAnchor = void 0;
21927
21961
  },
21928
21962
 
21929
21963
  __onMaskedKeydown: function __onMaskedKeydown (e) {
@@ -21938,25 +21972,39 @@
21938
21972
  start = inp.selectionStart,
21939
21973
  end = inp.selectionEnd;
21940
21974
 
21975
+ if (!e.shiftKey) {
21976
+ this.__selectionAnchor = void 0;
21977
+ }
21978
+
21941
21979
  if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right
21980
+ if (e.shiftKey && this.__selectionAnchor === void 0) {
21981
+ this.__selectionAnchor = inp.selectionDirection === 'forward' ? start : end;
21982
+ }
21983
+
21942
21984
  var fn = this['__moveCursor' + (e.keyCode === 39 ? 'Right' : 'Left') + (this.reverseFillMask === true ? 'Reverse' : '')];
21943
21985
 
21944
21986
  e.preventDefault();
21945
- fn(inp, start, end, e.shiftKey);
21987
+ fn(inp, this.__selectionAnchor === start ? end : start);
21988
+
21989
+ if (e.shiftKey) {
21990
+ var anchor = this.__selectionAnchor;
21991
+ var cursor = inp.selectionStart;
21992
+ inp.setSelectionRange(Math.min(anchor, cursor), Math.max(anchor, cursor), 'forward');
21993
+ }
21946
21994
  }
21947
21995
  else if (
21948
21996
  e.keyCode === 8 && // Backspace
21949
21997
  this.reverseFillMask !== true &&
21950
21998
  start === end
21951
21999
  ) {
21952
- this.__moveCursorLeft(inp, start, end, true);
22000
+ this.__moveCursorLeft(inp, start);
21953
22001
  }
21954
22002
  else if (
21955
22003
  e.keyCode === 46 && // Delete
21956
22004
  this.reverseFillMask === true &&
21957
22005
  start === end
21958
22006
  ) {
21959
- this.__moveCursorRightReverse(inp, start, end, true);
22007
+ this.__moveCursorRightReverse(inp, end);
21960
22008
  }
21961
22009
 
21962
22010
  this.$emit('keydown', e);
@@ -22205,6 +22253,8 @@
22205
22253
 
22206
22254
  if (this.hasMask === true) {
22207
22255
  on.keydown = this.__onMaskedKeydown;
22256
+ // reset selection anchor on pointer selection
22257
+ on.click = this.__onMaskedClick;
22208
22258
  }
22209
22259
 
22210
22260
  if (this.autogrow === true) {
@@ -22360,19 +22410,31 @@
22360
22410
  var inp = this$1.$refs.input;
22361
22411
  if (inp !== void 0) {
22362
22412
  var parentStyle = inp.parentNode.style;
22363
- var ref = inp.style;
22364
- var overflow = ref.overflow;
22413
+ // chrome does not keep scroll #15498
22414
+ var scrollTop = inp.scrollTop;
22415
+ // chrome calculates a smaller scrollHeight when in a .column container
22416
+ var ref = this$1.$q.platform.is.firefox === true
22417
+ ? {}
22418
+ : window.getComputedStyle(inp);
22419
+ var overflowY = ref.overflowY;
22420
+ var maxHeight = ref.maxHeight;
22421
+ // on firefox or if overflowY is specified as scroll #14263, #14344
22422
+ // we don't touch overflow
22423
+ // firefox is not so bad in the end
22424
+ var changeOverflow = overflowY !== void 0 && overflowY !== 'scroll';
22365
22425
 
22366
22426
  // reset height of textarea to a small size to detect the real height
22367
22427
  // but keep the total control size the same
22368
- // Firefox rulez #14263, #14344
22369
- this$1.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden');
22428
+ changeOverflow === true && (inp.style.overflowY = 'hidden');
22370
22429
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px';
22371
22430
  inp.style.height = '1px';
22372
22431
 
22373
22432
  inp.style.height = inp.scrollHeight + 'px';
22374
- inp.style.overflow = overflow;
22433
+ // we should allow scrollbars only
22434
+ // if there is maxHeight and content is taller than maxHeight
22435
+ changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden');
22375
22436
  parentStyle.marginBottom = '';
22437
+ inp.scrollTop = scrollTop;
22376
22438
  }
22377
22439
  });
22378
22440
  },
@@ -32491,7 +32553,7 @@
32491
32553
 
32492
32554
  if (topLeft !== void 0) {
32493
32555
  child.push(
32494
- h('div', { staticClass: 'q-table-control' }, [
32556
+ h('div', { staticClass: 'q-table__control' }, [
32495
32557
  topLeft(this.marginalsScope)
32496
32558
  ])
32497
32559
  );
@@ -39315,6 +39377,7 @@
39315
39377
  : h('div', {
39316
39378
  staticClass: 'q-bottom-sheet__item q-hoverable q-focusable cursor-pointer relative-position',
39317
39379
  class: action.classes,
39380
+ style: action.style,
39318
39381
  attrs: attrsGridItem,
39319
39382
  on: {
39320
39383
  click: function () {
@@ -39354,6 +39417,7 @@
39354
39417
  : h(QItem, {
39355
39418
  staticClass: 'q-bottom-sheet__item',
39356
39419
  class: action.classes,
39420
+ style: action.style,
39357
39421
  props: {
39358
39422
  tabindex: 0,
39359
39423
  clickable: true,