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
@@ -81,6 +81,10 @@ export interface BottomSheet {
81
81
  * CSS classes for this action
82
82
  */
83
83
  classes? : string | any[] | LooseDictionary
84
+ /**
85
+ * Style definitions to be attributed to this action element
86
+ */
87
+ style? : string | any[] | LooseDictionary
84
88
  /**
85
89
  * Icon name following Quasar convention; Make sure you have the icon library installed unless you are using 'img:' prefix; If 'none' (String) is used as value then no icon is rendered (but screen real estate will still be used for it)
86
90
  */
@@ -3905,6 +3909,10 @@ export interface QImg extends Vue {
3905
3909
  * Enable the native context menu of the image
3906
3910
  */
3907
3911
  nativeContextMenu? : boolean
3912
+ /**
3913
+ * Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used
3914
+ */
3915
+ notDraggable? : boolean
3908
3916
  }
3909
3917
 
3910
3918
  export interface QInfiniteScroll extends Vue {
@@ -8792,6 +8800,10 @@ export interface QVueGlobals {
8792
8800
  * CSS classes for this action
8793
8801
  */
8794
8802
  classes? : string | any[] | LooseDictionary
8803
+ /**
8804
+ * Style definitions to be attributed to this action element
8805
+ */
8806
+ style? : string | any[] | LooseDictionary
8795
8807
  /**
8796
8808
  * Icon name following Quasar convention; Make sure you have the icon library installed unless you are using 'img:' prefix; If 'none' (String) is used as value then no icon is rendered (but screen real estate will still be used for it)
8797
8809
  */
@@ -2367,6 +2367,10 @@
2367
2367
  "type": "boolean",
2368
2368
  "description": "Enable the native context menu of the image"
2369
2369
  },
2370
+ "q-img/not-draggable": {
2371
+ "type": "boolean",
2372
+ "description": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used"
2373
+ },
2370
2374
  "q-infinite-scroll/offset": {
2371
2375
  "type": "number",
2372
2376
  "description": "Offset (pixels) to bottom of Infinite Scroll container from which the component should start loading more content in advance"
@@ -767,7 +767,8 @@
767
767
  "spinner-color",
768
768
  "spinner-size",
769
769
  "no-default-spinner",
770
- "native-context-menu"
770
+ "native-context-menu",
771
+ "not-draggable"
771
772
  ],
772
773
  "description": ""
773
774
  },
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.5",
5
+ "version": "1.22.7",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -2573,7 +2573,7 @@
2573
2573
  "kind": "expression",
2574
2574
  "type": "string"
2575
2575
  },
2576
- "description": "URL pointing to a slide background image (use public folder)\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://placeimg.com/500/300/nature\"",
2576
+ "description": "URL pointing to a slide background image (use public folder)\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
2577
2577
  "doc-url": "https://v1.quasar.dev/vue-components/carousel"
2578
2578
  }
2579
2579
  ],
@@ -2646,7 +2646,7 @@
2646
2646
  "kind": "expression",
2647
2647
  "type": "string"
2648
2648
  },
2649
- "description": "URL to the avatar image of the author\n\nExamples:\n(public folder) src=\"boy-avatar.png\"\n(assets folder) src=\"~assets/boy-avatar.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://placeimg.com/500/300/nature\"",
2649
+ "description": "URL to the avatar image of the author\n\nExamples:\n(public folder) src=\"boy-avatar.png\"\n(assets folder) src=\"~assets/boy-avatar.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
2650
2650
  "doc-url": "https://v1.quasar.dev/vue-components/chat"
2651
2651
  },
2652
2652
  {
@@ -7663,7 +7663,7 @@
7663
7663
  "kind": "expression",
7664
7664
  "type": "string"
7665
7665
  },
7666
- "description": "Path to image\n\nExamples:\n(public folder) src=\"img/something.png\"\n(assets folder) src=\"~assets/my-img.gif\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://placeimg.com/500/300/nature\"",
7666
+ "description": "Path to image\n\nExamples:\n(public folder) src=\"img/something.png\"\n(assets folder) src=\"~assets/my-img.gif\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
7667
7667
  "doc-url": "https://v1.quasar.dev/vue-components/img"
7668
7668
  },
7669
7669
  {
@@ -7717,7 +7717,7 @@
7717
7717
  "kind": "expression",
7718
7718
  "type": "string"
7719
7719
  },
7720
- "description": "While waiting for your image to load, you can use a placeholder image\n\nExamples:\n(public folder) src=\"img/some-placeholder.png\"\n(assets folder) src=\"~assets/my-placeholder.gif\"\n(relative path format) :src=\"require('./placeholder.jpg')\"\n(URL) src=\"https://placeimg.com/500/300/nature\"",
7720
+ "description": "While waiting for your image to load, you can use a placeholder image\n\nExamples:\n(public folder) src=\"img/some-placeholder.png\"\n(assets folder) src=\"~assets/my-placeholder.gif\"\n(relative path format) :src=\"require('./placeholder.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
7721
7721
  "doc-url": "https://v1.quasar.dev/vue-components/img"
7722
7722
  },
7723
7723
  {
@@ -7815,6 +7815,16 @@
7815
7815
  "description": "Enable the native context menu of the image",
7816
7816
  "doc-url": "https://v1.quasar.dev/vue-components/img",
7817
7817
  "type": "boolean"
7818
+ },
7819
+ {
7820
+ "name": "not-draggable",
7821
+ "value": {
7822
+ "kind": "expression",
7823
+ "type": "boolean"
7824
+ },
7825
+ "description": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used",
7826
+ "doc-url": "https://v1.quasar.dev/vue-components/img",
7827
+ "type": "boolean"
7818
7828
  }
7819
7829
  ],
7820
7830
  "events": [
@@ -19308,7 +19318,7 @@
19308
19318
  "kind": "expression",
19309
19319
  "type": "string"
19310
19320
  },
19311
- "description": "URL to the avatar image; Icon takes precedence if used, so it replaces avatar\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://placeimg.com/500/300/nature\"",
19321
+ "description": "URL to the avatar image; Icon takes precedence if used, so it replaces avatar\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
19312
19322
  "doc-url": "https://v1.quasar.dev/vue-components/timeline"
19313
19323
  },
19314
19324
  {
package/lang/ja.js CHANGED
@@ -28,7 +28,7 @@ export default {
28
28
  weekday: 'short', month: 'short', day: 'numeric'
29
29
  }).format(date)
30
30
  },
31
- firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
31
+ firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
32
32
  format24h: true, // true
33
33
  pluralDay: '日間'
34
34
  },
package/lang/sl.js CHANGED
@@ -3,7 +3,7 @@ export default {
3
3
  nativeName: 'Slovenski Jezik',
4
4
  label: {
5
5
  clear: 'Počisti',
6
- ok: 'Vredu',
6
+ ok: 'V redu',
7
7
  cancel: 'Prekliči',
8
8
  close: 'Zapri',
9
9
  set: 'Postavi',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "1.22.5",
3
+ "version": "1.22.7",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "module": "src/index.esm.js",
6
6
  "typings": "dist/types/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  "(public folder) src=\"img/my-bg.png\"",
27
27
  "(assets folder) src=\"~assets/my-img.png\"",
28
28
  "(relative path format) :src=\"require('./my_img.jpg')\"",
29
- "(URL) src=\"https://placeimg.com/500/300/nature\""
29
+ "(URL) src=\"https://picsum.photos/500/300\""
30
30
  ],
31
31
  "category": "model"
32
32
  }
@@ -48,7 +48,7 @@
48
48
  "(public folder) src=\"boy-avatar.png\"",
49
49
  "(assets folder) src=\"~assets/boy-avatar.png\"",
50
50
  "(relative path format) :src=\"require('./my_img.jpg')\"",
51
- "(URL) src=\"https://placeimg.com/500/300/nature\""
51
+ "(URL) src=\"https://picsum.photos/500/300\""
52
52
  ],
53
53
  "category": "content"
54
54
  },
@@ -96,8 +96,8 @@ export default Vue.extend({
96
96
  this.lastEmitValue = 0
97
97
  }
98
98
  else {
99
- const { year, month } = this.__getViewModel(this.innerMask, this.innerLocale)
100
- this.__updateViewModel(year, month)
99
+ const model = this.__getViewModel(this.innerMask, this.innerLocale)
100
+ this.__updateViewModel(model.year, model.month, model)
101
101
  }
102
102
  },
103
103
 
@@ -1265,7 +1265,7 @@ export default Vue.extend({
1265
1265
  }
1266
1266
  },
1267
1267
 
1268
- __updateViewModel (year, month) {
1268
+ __updateViewModel (year, month, time) {
1269
1269
  if (this.minNav !== void 0 && year <= this.minNav.year) {
1270
1270
  year = this.minNav.year
1271
1271
  if (month < this.minNav.month) {
@@ -1280,6 +1280,11 @@ export default Vue.extend({
1280
1280
  }
1281
1281
  }
1282
1282
 
1283
+ if (time !== void 0) {
1284
+ const { hour, minute, second, millisecond, timezoneOffset, timeHash } = time
1285
+ Object.assign(this.viewModel, { hour, minute, second, millisecond, timezoneOffset, timeHash })
1286
+ }
1287
+
1283
1288
  const newHash = year + '/' + pad(month) + '/01'
1284
1289
 
1285
1290
  if (newHash !== this.viewModel.dateHash) {
@@ -76,6 +76,7 @@ export default Vue.extend({
76
76
  : h('div', {
77
77
  staticClass: 'q-bottom-sheet__item q-hoverable q-focusable cursor-pointer relative-position',
78
78
  class: action.classes,
79
+ style: action.style,
79
80
  attrs: attrsGridItem,
80
81
  on: {
81
82
  click: () => {
@@ -113,6 +114,7 @@ export default Vue.extend({
113
114
  : h(QItem, {
114
115
  staticClass: 'q-bottom-sheet__item',
115
116
  class: action.classes,
117
+ style: action.style,
116
118
  props: {
117
119
  tabindex: 0,
118
120
  clickable: true,
@@ -122,7 +122,11 @@ export default Vue.extend({
122
122
  this.focused === true ||
123
123
  typeof this.inputValue === 'number' ||
124
124
  (typeof this.inputValue === 'string' && this.inputValue.length > 0) ||
125
- (this.hideSelected !== true && this.hasValue === true) ||
125
+ (
126
+ this.hideSelected !== true &&
127
+ this.hasValue === true &&
128
+ (this.type !== 'number' || isNaN(this.value) === false)
129
+ ) ||
126
130
  (
127
131
  this.displayValue !== void 0 &&
128
132
  this.displayValue !== null &&
@@ -134,8 +134,15 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
134
134
 
135
135
  &:-webkit-autofill + .q-field__label
136
136
  transform: translateY(-40%) scale(.75)
137
- &[type="number"]:invalid + .q-field__label
138
- transform: translateY(-40%) scale(.75)
137
+
138
+ &[type="color"],
139
+ &[type="date"],
140
+ &[type="datetime-local"],
141
+ &[type="month"],
142
+ &[type="time"],
143
+ &[type="week"]
144
+ + .q-field__label
145
+ transform: translateY(-40%) scale(.75)
139
146
 
140
147
  &:invalid
141
148
  box-shadow: none
@@ -439,8 +446,15 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
439
446
  .q-field__native, .q-field__input
440
447
  &:-webkit-autofill + .q-field__label
441
448
  transform: translateY(-30%) scale(.75)
442
- &[type="number"]:invalid + .q-field__label
443
- transform: translateY(-30%) scale(.75)
449
+
450
+ &[type="color"],
451
+ &[type="date"],
452
+ &[type="datetime-local"],
453
+ &[type="month"],
454
+ &[type="time"],
455
+ &[type="week"]
456
+ + .q-field__label
457
+ transform: translateY(-30%) scale(.75)
444
458
 
445
459
  &--borderless, &--standard
446
460
 
@@ -134,8 +134,15 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
134
134
 
135
135
  &:-webkit-autofill + .q-field__label
136
136
  transform: translateY(-40%) scale(.75)
137
- &[type="number"]:invalid + .q-field__label
138
- transform: translateY(-40%) scale(.75)
137
+
138
+ &[type="color"],
139
+ &[type="date"],
140
+ &[type="datetime-local"],
141
+ &[type="month"],
142
+ &[type="time"],
143
+ &[type="week"]
144
+ + .q-field__label
145
+ transform: translateY(-40%) scale(.75)
139
146
 
140
147
  &:invalid
141
148
  box-shadow: none
@@ -439,8 +446,15 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
439
446
  .q-field__native, .q-field__input
440
447
  &:-webkit-autofill + .q-field__label
441
448
  transform: translateY(-30%) scale(.75)
442
- &[type="number"]:invalid + .q-field__label
443
- transform: translateY(-30%) scale(.75)
449
+
450
+ &[type="color"],
451
+ &[type="date"],
452
+ &[type="datetime-local"],
453
+ &[type="month"],
454
+ &[type="time"],
455
+ &[type="week"]
456
+ + .q-field__label
457
+ transform: translateY(-30%) scale(.75)
444
458
 
445
459
  &--borderless, &--standard
446
460
 
@@ -38,6 +38,7 @@ export default Vue.extend({
38
38
  imgStyle: Object,
39
39
 
40
40
  nativeContextMenu: Boolean,
41
+ notDraggable: Boolean,
41
42
 
42
43
  noDefaultSpinner: Boolean,
43
44
  spinnerColor: String,
@@ -77,6 +78,14 @@ export default Vue.extend({
77
78
  return att
78
79
  },
79
80
 
81
+ imgAttrs () {
82
+ const att = { src: this.url, 'aria-hidden': 'true' }
83
+ if (this.notDraggable === true) {
84
+ att.draggable = false
85
+ }
86
+ return att
87
+ },
88
+
80
89
  imgContainerStyle () {
81
90
  return Object.assign(
82
91
  {
@@ -228,7 +237,7 @@ export default Vue.extend({
228
237
  ? [
229
238
  h('img', {
230
239
  staticClass: 'absolute-full fit',
231
- attrs: { src: this.url, 'aria-hidden': 'true' }
240
+ attrs: this.imgAttrs
232
241
  })
233
242
  ]
234
243
  : void 0
@@ -18,7 +18,7 @@
18
18
  "(public folder) src=\"img/something.png\"",
19
19
  "(assets folder) src=\"~assets/my-img.gif\"",
20
20
  "(relative path format) :src=\"require('./my_img.jpg')\"",
21
- "(URL) src=\"https://placeimg.com/500/300/nature\""
21
+ "(URL) src=\"https://picsum.photos/500/300\""
22
22
  ],
23
23
  "category": "model"
24
24
  },
@@ -80,7 +80,7 @@
80
80
  "(public folder) src=\"img/some-placeholder.png\"",
81
81
  "(assets folder) src=\"~assets/my-placeholder.gif\"",
82
82
  "(relative path format) :src=\"require('./placeholder.jpg')\"",
83
- "(URL) src=\"https://placeimg.com/500/300/nature\""
83
+ "(URL) src=\"https://picsum.photos/500/300\""
84
84
  ],
85
85
  "category": "model"
86
86
  },
@@ -163,6 +163,13 @@
163
163
  "desc": "Enable the native context menu of the image",
164
164
  "category": "behavior",
165
165
  "addedIn": "v1.8.4"
166
+ },
167
+
168
+ "not-draggable": {
169
+ "type": "Boolean",
170
+ "desc": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used",
171
+ "category": "behavior",
172
+ "addedIn": "v1.22.6"
166
173
  }
167
174
  },
168
175
 
@@ -142,6 +142,8 @@ export default Vue.extend({
142
142
 
143
143
  if (this.hasMask === true) {
144
144
  on.keydown = this.__onMaskedKeydown
145
+ // reset selection anchor on pointer selection
146
+ on.click = this.__onMaskedClick
145
147
  }
146
148
 
147
149
  if (this.autogrow === true) {
@@ -291,18 +293,29 @@ export default Vue.extend({
291
293
  const inp = this.$refs.input
292
294
  if (inp !== void 0) {
293
295
  const parentStyle = inp.parentNode.style
294
- const { overflow } = inp.style
296
+ // chrome does not keep scroll #15498
297
+ const { scrollTop } = inp
298
+ // chrome calculates a smaller scrollHeight when in a .column container
299
+ const { overflowY, maxHeight } = this.$q.platform.is.firefox === true
300
+ ? {}
301
+ : window.getComputedStyle(inp)
302
+ // on firefox or if overflowY is specified as scroll #14263, #14344
303
+ // we don't touch overflow
304
+ // firefox is not so bad in the end
305
+ const changeOverflow = overflowY !== void 0 && overflowY !== 'scroll'
295
306
 
296
307
  // reset height of textarea to a small size to detect the real height
297
308
  // but keep the total control size the same
298
- // Firefox rulez #14263, #14344
299
- this.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')
309
+ changeOverflow === true && (inp.style.overflowY = 'hidden')
300
310
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
301
311
  inp.style.height = '1px'
302
312
 
303
313
  inp.style.height = inp.scrollHeight + 'px'
304
- inp.style.overflow = overflow
314
+ // we should allow scrollbars only
315
+ // if there is maxHeight and content is taller than maxHeight
316
+ changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden')
305
317
  parentStyle.marginBottom = ''
318
+ inp.scrollTop = scrollTop
306
319
  }
307
320
  })
308
321
  },
@@ -1,5 +1,6 @@
1
1
  .q-layout
2
2
  width: 100%
3
+ outline: 0
3
4
 
4
5
  .q-layout-container
5
6
  position: relative
@@ -1,5 +1,6 @@
1
1
  .q-layout
2
2
  width: 100%
3
+ outline: 0
3
4
 
4
5
  .q-layout-container
5
6
  position: relative
@@ -16,7 +16,7 @@ export default Vue.extend({
16
16
 
17
17
  methods: {
18
18
  __begin (el, height, done) {
19
- el.style.overflowY = 'hidden'
19
+ // here overflowY is 'hidden'
20
20
  if (height !== void 0) {
21
21
  el.style.height = `${height}px`
22
22
  }
@@ -61,12 +61,14 @@ export default Vue.extend({
61
61
  let pos = 0
62
62
  this.el = el
63
63
 
64
+ // if animationg overflowY is already 'hidden'
64
65
  if (this.animating === true) {
65
66
  this.__cleanup()
66
67
  pos = el.offsetHeight === el.scrollHeight ? 0 : void 0
67
68
  }
68
69
  else {
69
70
  this.lastEvent = 'hide'
71
+ el.style.overflowY = 'hidden'
70
72
  }
71
73
 
72
74
  this.__begin(el, pos, done)
@@ -92,6 +94,9 @@ export default Vue.extend({
92
94
  }
93
95
  else {
94
96
  this.lastEvent = 'show'
97
+ // we need to set overflowY 'hidden' before calculating the height
98
+ // or else we get small differences
99
+ el.style.overflowY = 'hidden'
95
100
  pos = el.scrollHeight
96
101
  }
97
102
 
@@ -43,7 +43,7 @@ export default {
43
43
 
44
44
  if (topLeft !== void 0) {
45
45
  child.push(
46
- h('div', { staticClass: 'q-table-control' }, [
46
+ h('div', { staticClass: 'q-table__control' }, [
47
47
  topLeft(this.marginalsScope)
48
48
  ])
49
49
  )
@@ -42,7 +42,7 @@
42
42
  "(public folder) src=\"img/my-bg.png\"",
43
43
  "(assets folder) src=\"~assets/my-img.png\"",
44
44
  "(relative path format) :src=\"require('./my_img.jpg')\"",
45
- "(URL) src=\"https://placeimg.com/500/300/nature\""
45
+ "(URL) src=\"https://picsum.photos/500/300\""
46
46
  ],
47
47
  "category": "content"
48
48
  },