quasar 2.2.4 → 2.3.3

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 (253) hide show
  1. package/dist/api/AppFullscreen.json +15 -8
  2. package/dist/api/BottomSheet.json +23 -2
  3. package/dist/api/Cookies.json +4 -3
  4. package/dist/api/Dialog.json +40 -11
  5. package/dist/api/Loading.json +4 -2
  6. package/dist/api/LoadingBar.json +8 -3
  7. package/dist/api/LocalStorage.json +8 -0
  8. package/dist/api/Morph.json +14 -7
  9. package/dist/api/Mutation.json +1 -1
  10. package/dist/api/Notify.json +41 -27
  11. package/dist/api/QAjaxBar.json +6 -3
  12. package/dist/api/QBreadcrumbs.json +8 -4
  13. package/dist/api/QBreadcrumbsEl.json +4 -2
  14. package/dist/api/QBtn.json +6 -3
  15. package/dist/api/QBtnDropdown.json +10 -5
  16. package/dist/api/QBtnToggle.json +4 -2
  17. package/dist/api/QCard.json +2 -1
  18. package/dist/api/QCardActions.json +2 -1
  19. package/dist/api/QCardSection.json +2 -1
  20. package/dist/api/QCarousel.json +10 -5
  21. package/dist/api/QCarouselControl.json +4 -2
  22. package/dist/api/QChatMessage.json +8 -4
  23. package/dist/api/QCheckbox.json +8 -4
  24. package/dist/api/QChip.json +2 -1
  25. package/dist/api/QCircularProgress.json +27 -6
  26. package/dist/api/QColor.json +6 -3
  27. package/dist/api/QDate.json +79 -5
  28. package/dist/api/QDialog.json +8 -4
  29. package/dist/api/QDrawer.json +10 -5
  30. package/dist/api/QEditor.json +17 -7
  31. package/dist/api/QExpansionItem.json +2 -1
  32. package/dist/api/QFab.json +8 -4
  33. package/dist/api/QFabAction.json +4 -2
  34. package/dist/api/QField.json +2 -1
  35. package/dist/api/QFile.json +3 -0
  36. package/dist/api/QFooter.json +3 -2
  37. package/dist/api/QHeader.json +5 -3
  38. package/dist/api/QIcon.json +2 -1
  39. package/dist/api/QImg.json +8 -4
  40. package/dist/api/QInfiniteScroll.json +6 -3
  41. package/dist/api/QInnerLoading.json +8 -4
  42. package/dist/api/QInput.json +2 -1
  43. package/dist/api/QIntersection.json +17 -1
  44. package/dist/api/QItem.json +2 -1
  45. package/dist/api/QKnob.json +8 -4
  46. package/dist/api/QLayout.json +9 -1
  47. package/dist/api/QLinearProgress.json +17 -1
  48. package/dist/api/QMarkupTable.json +2 -1
  49. package/dist/api/QMenu.json +8 -4
  50. package/dist/api/QNoSsr.json +2 -1
  51. package/dist/api/QOptionGroup.json +2 -1
  52. package/dist/api/QPage.json +2 -1
  53. package/dist/api/QPageScroller.json +8 -4
  54. package/dist/api/QPageSticky.json +2 -1
  55. package/dist/api/QPagination.json +10 -6
  56. package/dist/api/QParallax.json +2 -1
  57. package/dist/api/QPopupEdit.json +5 -2
  58. package/dist/api/QPopupProxy.json +4 -2
  59. package/dist/api/QRange.json +8 -4
  60. package/dist/api/QRating.json +2 -1
  61. package/dist/api/QResizeObserver.json +4 -1
  62. package/dist/api/QRouteTab.json +5 -26
  63. package/dist/api/QScrollArea.json +29 -4
  64. package/dist/api/QScrollObserver.json +13 -1
  65. package/dist/api/QSelect.json +135 -37
  66. package/dist/api/QSeparator.json +2 -1
  67. package/dist/api/QSkeleton.json +9 -5
  68. package/dist/api/QSlideItem.json +9 -0
  69. package/dist/api/QSlideTransition.json +2 -1
  70. package/dist/api/QSlider.json +8 -4
  71. package/dist/api/QSpinner.json +2 -1
  72. package/dist/api/QSplitter.json +4 -2
  73. package/dist/api/QStep.json +2 -1
  74. package/dist/api/QStepper.json +6 -3
  75. package/dist/api/QTab.json +4 -2
  76. package/dist/api/QTabPanels.json +6 -3
  77. package/dist/api/QTable.json +216 -93
  78. package/dist/api/QTabs.json +4 -2
  79. package/dist/api/QTime.json +16 -4
  80. package/dist/api/QTimeline.json +4 -2
  81. package/dist/api/QTimelineEntry.json +4 -2
  82. package/dist/api/QToggle.json +8 -4
  83. package/dist/api/QTooltip.json +18 -9
  84. package/dist/api/QTree.json +26 -15
  85. package/dist/api/QUploader.json +93 -5
  86. package/dist/api/QVirtualScroll.json +23 -9
  87. package/dist/api/ScrollFire.json +1 -1
  88. package/dist/api/SessionStorage.json +8 -0
  89. package/dist/api/TouchHold.json +2 -1
  90. package/dist/api/TouchRepeat.json +2 -1
  91. package/dist/api/TouchSwipe.json +2 -1
  92. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  93. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  94. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  95. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  96. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  97. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  98. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  99. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  100. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  101. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  102. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  103. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  104. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  105. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  106. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  107. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  108. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  109. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  110. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  111. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +6 -0
  112. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  113. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  114. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  115. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  116. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  117. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  118. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  119. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  120. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  121. package/dist/icon-set/themify.umd.prod.js +1 -1
  122. package/dist/lang/ar.umd.prod.js +1 -1
  123. package/dist/lang/az-Latn.umd.prod.js +1 -1
  124. package/dist/lang/bg.umd.prod.js +1 -1
  125. package/dist/lang/bn.umd.prod.js +1 -1
  126. package/dist/lang/ca.umd.prod.js +1 -1
  127. package/dist/lang/cs.umd.prod.js +1 -1
  128. package/dist/lang/da.umd.prod.js +1 -1
  129. package/dist/lang/de.umd.prod.js +1 -1
  130. package/dist/lang/el.umd.prod.js +1 -1
  131. package/dist/lang/en-GB.umd.prod.js +1 -1
  132. package/dist/lang/en-US.umd.prod.js +1 -1
  133. package/dist/lang/eo.umd.prod.js +1 -1
  134. package/dist/lang/es.umd.prod.js +1 -1
  135. package/dist/lang/et.umd.prod.js +1 -1
  136. package/dist/lang/fa-IR.umd.prod.js +1 -1
  137. package/dist/lang/fa.umd.prod.js +1 -1
  138. package/dist/lang/fi.umd.prod.js +1 -1
  139. package/dist/lang/fr.umd.prod.js +1 -1
  140. package/dist/lang/gn.umd.prod.js +1 -1
  141. package/dist/lang/he.umd.prod.js +1 -1
  142. package/dist/lang/hr.umd.prod.js +1 -1
  143. package/dist/lang/hu.umd.prod.js +1 -1
  144. package/dist/lang/id.umd.prod.js +1 -1
  145. package/dist/lang/is.umd.prod.js +1 -1
  146. package/dist/lang/it.umd.prod.js +1 -1
  147. package/dist/lang/ja.umd.prod.js +1 -1
  148. package/dist/lang/km.umd.prod.js +1 -1
  149. package/dist/lang/ko-KR.umd.prod.js +1 -1
  150. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  151. package/dist/lang/lt.umd.prod.js +1 -1
  152. package/dist/lang/lu.umd.prod.js +1 -1
  153. package/dist/lang/lv.umd.prod.js +1 -1
  154. package/dist/lang/ml.umd.prod.js +1 -1
  155. package/dist/lang/ms.umd.prod.js +1 -1
  156. package/dist/lang/nb-NO.umd.prod.js +1 -1
  157. package/dist/lang/nl.umd.prod.js +1 -1
  158. package/dist/lang/pl.umd.prod.js +1 -1
  159. package/dist/lang/pt-BR.umd.prod.js +1 -1
  160. package/dist/lang/pt.umd.prod.js +1 -1
  161. package/dist/lang/ro.umd.prod.js +1 -1
  162. package/dist/lang/ru.umd.prod.js +1 -1
  163. package/dist/lang/sk.umd.prod.js +1 -1
  164. package/dist/lang/sl.umd.prod.js +1 -1
  165. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  166. package/dist/lang/sr.umd.prod.js +1 -1
  167. package/dist/lang/sv.umd.prod.js +1 -1
  168. package/dist/lang/ta.umd.prod.js +1 -1
  169. package/dist/lang/th.umd.prod.js +1 -1
  170. package/dist/lang/tr.umd.prod.js +1 -1
  171. package/dist/lang/ug.umd.prod.js +1 -1
  172. package/dist/lang/uk.umd.prod.js +1 -1
  173. package/dist/lang/vi.umd.prod.js +1 -1
  174. package/dist/lang/zh-CN.umd.prod.js +1 -1
  175. package/dist/lang/zh-TW.umd.prod.js +1 -1
  176. package/dist/quasar.cjs.prod.js +2 -2
  177. package/dist/quasar.css +7 -2
  178. package/dist/quasar.esm.prod.js +2 -2
  179. package/dist/quasar.prod.css +1 -1
  180. package/dist/quasar.rtl.css +7 -2
  181. package/dist/quasar.rtl.prod.css +1 -1
  182. package/dist/quasar.sass +6 -3
  183. package/dist/quasar.umd.js +185 -105
  184. package/dist/quasar.umd.prod.js +2 -2
  185. package/dist/ssr-directives/Morph.js +1 -1
  186. package/dist/types/api/cookies.d.ts +1 -1
  187. package/dist/types/composables.d.ts +5 -1
  188. package/dist/types/extras/icon-set.d.ts +1 -0
  189. package/dist/types/index.d.ts +516 -176
  190. package/dist/vetur/quasar-attributes.json +14 -2
  191. package/dist/vetur/quasar-tags.json +5 -2
  192. package/dist/web-types/web-types.json +43 -8
  193. package/icon-set/svg-ionicons-v6.js +225 -0
  194. package/package.json +5 -2
  195. package/src/api.extends.json +7 -0
  196. package/src/body.js +14 -4
  197. package/src/components/btn/QBtn.js +1 -0
  198. package/src/components/circular-progress/QCircularProgress.js +6 -1
  199. package/src/components/circular-progress/QCircularProgress.json +6 -0
  200. package/src/components/date/QDate.json +59 -1
  201. package/src/components/editor/QEditor.js +2 -2
  202. package/src/components/editor/QEditor.json +6 -2
  203. package/src/components/field/QField.json +3 -3
  204. package/src/components/file/QFile.json +3 -0
  205. package/src/components/footer/QFooter.json +1 -1
  206. package/src/components/header/QHeader.json +1 -1
  207. package/src/components/icon/QIcon.js +1 -1
  208. package/src/components/infinite-scroll/QInfiniteScroll.js +48 -31
  209. package/src/components/intersection/QIntersection.js +9 -1
  210. package/src/components/intersection/QIntersection.json +9 -0
  211. package/src/components/layout/QLayout.json +8 -1
  212. package/src/components/linear-progress/QLinearProgress.js +10 -1
  213. package/src/components/linear-progress/QLinearProgress.json +6 -0
  214. package/src/components/linear-progress/QLinearProgress.sass +3 -2
  215. package/src/components/pagination/QPagination.json +0 -1
  216. package/src/components/popup-edit/QPopupEdit.json +1 -0
  217. package/src/components/popup-proxy/QPopupProxy.js +6 -15
  218. package/src/components/resize-observer/QResizeObserver.json +2 -0
  219. package/src/components/scroll-area/QScrollArea.js +8 -13
  220. package/src/components/scroll-area/QScrollArea.json +28 -4
  221. package/src/components/scroll-observer/QScrollObserver.json +11 -0
  222. package/src/components/select/QSelect.js +7 -3
  223. package/src/components/select/QSelect.json +71 -11
  224. package/src/components/skeleton/QSkeleton.json +1 -4
  225. package/src/components/slide-item/QSlideItem.json +9 -0
  226. package/src/components/slider/use-slider.js +3 -3
  227. package/src/components/table/QTable.json +155 -60
  228. package/src/components/table/table-pagination.js +6 -2
  229. package/src/components/tabs/QRouteTab.json +1 -23
  230. package/src/components/time/QTime.json +8 -0
  231. package/src/components/tree/QTree.json +14 -9
  232. package/src/components/uploader/xhr-uploader-plugin.json +105 -4
  233. package/src/components/virtual-scroll/use-virtual-scroll.js +17 -1
  234. package/src/components/virtual-scroll/use-virtual-scroll.json +5 -0
  235. package/src/composables/private/use-field.js +4 -4
  236. package/src/composables/private/use-refocus-target.js +12 -3
  237. package/src/composables/private/use-split-attrs.js +10 -7
  238. package/src/composables/use-dialog-plugin-component.js +7 -1
  239. package/src/css/core/transitions.sass +3 -1
  240. package/src/directives/Mutation.json +2 -3
  241. package/src/directives/ScrollFire.json +2 -3
  242. package/src/install-quasar.js +1 -0
  243. package/src/plugins/AppFullscreen.json +8 -8
  244. package/src/plugins/Cookies.json +2 -2
  245. package/src/plugins/Dialog.json +4 -2
  246. package/src/plugins/LoadingBar.json +4 -3
  247. package/src/plugins/Notify.json +13 -19
  248. package/src/utils/create-uploader-component.js +6 -4
  249. package/src/utils/private/get-emits-object.js +11 -0
  250. package/src/utils/private/global-dialog.json +16 -2
  251. package/src/utils/private/vm.js +3 -3
  252. package/src/utils/private/web-storage.json +10 -0
  253. package/wrappers/index.js +4 -0
@@ -61,6 +61,17 @@
61
61
  "events": {
62
62
  "type": [ "Array", "Function" ],
63
63
  "desc": "A list of events to highlight on the calendar; If using a function, it receives the date as a String and must return a Boolean (matches or not); If using a function then for best performance, reference it from your scope and do not define it inline",
64
+ "params": {
65
+ "date": {
66
+ "type": "String",
67
+ "desc": "The current date being processed.",
68
+ "examples": [ "2018/11/05", "2021/10/25" ]
69
+ }
70
+ },
71
+ "returns": {
72
+ "type": "Boolean",
73
+ "desc": "If true, the current date will be highlighted"
74
+ },
64
75
  "examples": [
65
76
  ":events=\"['2018/11/05', '2018/11/06', '2018/11/09', '2018/11/23']\"",
66
77
  ":events=\"date => date[9] % 3 === 0\""
@@ -71,6 +82,18 @@
71
82
  "event-color": {
72
83
  "type": [ "String", "Function" ],
73
84
  "desc": "Color name (from the Quasar Color Palette); If using a function, it receives the date as a String and must return a String (color for the received date); If using a function then for best performance, reference it from your scope and do not define it inline",
85
+ "params": {
86
+ "date": {
87
+ "type": "String",
88
+ "desc": "The current date being processed.",
89
+ "examples": [ "2018/11/05", "2021/10/25" ]
90
+ }
91
+ },
92
+ "returns": {
93
+ "type": "String",
94
+ "desc": "Color for the current date.",
95
+ "examples": [ "teal", "orange" ]
96
+ },
74
97
  "examples": [
75
98
  "teal-10",
76
99
  ":event-color=\"(date) => date[9] % 2 === 0 ? 'teal' : 'orange'\""
@@ -81,6 +104,17 @@
81
104
  "options": {
82
105
  "type": [ "Array", "Function" ],
83
106
  "desc": "Optionally configure the days that are selectable; If using a function, it receives the date as a String and must return a Boolean (is date acceptable or not); If using a function then for best performance, reference it from your scope and do not define it inline; Incompatible with 'range' prop",
107
+ "params": {
108
+ "date": {
109
+ "type": "String",
110
+ "desc": "The current date being processed.",
111
+ "examples": [ "2018/11/05", "2021/10/25" ]
112
+ }
113
+ },
114
+ "returns": {
115
+ "type": "Boolean",
116
+ "desc": "If true, the current date will be made available for selection"
117
+ },
84
118
  "examples": [
85
119
  ":options=\"['2018/11/05', '2018/11/12', '2018/11/19', '2018/11/26' ]\"",
86
120
  ":options=\"date => date[9] % 3 === 0\"",
@@ -175,35 +209,42 @@
175
209
  "definition": {
176
210
  "year": {
177
211
  "type": "Number",
212
+ "required": true,
178
213
  "desc": "The year of the date that the user has clicked/tapped on",
179
214
  "__exemption": [ "examples" ]
180
215
  },
181
216
  "month": {
182
217
  "type": "Number",
218
+ "required": true,
183
219
  "desc": "The month of the date that the user has clicked/tapped on",
184
220
  "__exemption": [ "examples" ]
185
221
  },
186
222
  "day": {
187
223
  "type": "Number",
224
+ "required": true,
188
225
  "desc": "The day of the month that the user has clicked/tapped on",
189
226
  "__exemption": [ "examples" ]
190
227
  },
191
228
  "from": {
192
229
  "type": "Object",
230
+ "required": false,
193
231
  "desc": "Object of properties of the range starting point (only if range)",
194
232
  "definition": {
195
233
  "year": {
196
234
  "type": "Number",
235
+ "required": true,
197
236
  "desc": "The year",
198
237
  "__exemption": [ "examples" ]
199
238
  },
200
239
  "month": {
201
240
  "type": "Number",
241
+ "required": true,
202
242
  "desc": "The month",
203
243
  "__exemption": [ "examples" ]
204
244
  },
205
245
  "day": {
206
246
  "type": "Number",
247
+ "required": true,
207
248
  "desc": "The day of month",
208
249
  "__exemption": [ "examples" ]
209
250
  }
@@ -211,20 +252,24 @@
211
252
  },
212
253
  "to": {
213
254
  "type": "Object",
255
+ "required": false,
214
256
  "desc": "Object of properties of the range ending point (only if range)",
215
257
  "definition": {
216
258
  "year": {
217
259
  "type": "Number",
260
+ "required": true,
218
261
  "desc": "The year",
219
262
  "__exemption": [ "examples" ]
220
263
  },
221
264
  "month": {
222
265
  "type": "Number",
266
+ "required": true,
223
267
  "desc": "The month",
224
268
  "__exemption": [ "examples" ]
225
269
  },
226
270
  "day": {
227
271
  "type": "Number",
272
+ "required": true,
228
273
  "desc": "The day of month",
229
274
  "__exemption": [ "examples" ]
230
275
  }
@@ -244,11 +289,13 @@
244
289
  "definition": {
245
290
  "year": {
246
291
  "type": "Number",
292
+ "required": true,
247
293
  "desc": "The year",
248
294
  "__exemption": [ "examples" ]
249
295
  },
250
296
  "month": {
251
297
  "type": "Number",
298
+ "required": true,
252
299
  "desc": "The month",
253
300
  "__exemption": [ "examples" ]
254
301
  }
@@ -266,16 +313,19 @@
266
313
  "definition": {
267
314
  "year": {
268
315
  "type": "Number",
316
+ "required": true,
269
317
  "desc": "The year",
270
318
  "__exemption": [ "examples" ]
271
319
  },
272
320
  "month": {
273
321
  "type": "Number",
322
+ "required": true,
274
323
  "desc": "The month",
275
324
  "__exemption": [ "examples" ]
276
325
  },
277
326
  "day": {
278
327
  "type": "Number",
328
+ "required": true,
279
329
  "desc": "The day of month",
280
330
  "__exemption": [ "examples" ]
281
331
  }
@@ -293,20 +343,24 @@
293
343
  "definition": {
294
344
  "from": {
295
345
  "type": "Object",
346
+ "required": true,
296
347
  "desc": "Definition of date from where the range begins",
297
348
  "definition": {
298
349
  "year": {
299
350
  "type": "Number",
351
+ "required": true,
300
352
  "desc": "The year",
301
353
  "__exemption": [ "examples" ]
302
354
  },
303
355
  "month": {
304
356
  "type": "Number",
357
+ "required": true,
305
358
  "desc": "The month",
306
359
  "__exemption": [ "examples" ]
307
360
  },
308
361
  "day": {
309
362
  "type": "Number",
363
+ "required": true,
310
364
  "desc": "The day of month",
311
365
  "__exemption": [ "examples" ]
312
366
  }
@@ -314,20 +368,24 @@
314
368
  },
315
369
  "to": {
316
370
  "type": "Object",
371
+ "required": true,
317
372
  "desc": "Definition of date to where the range ends",
318
373
  "definition": {
319
374
  "year": {
320
375
  "type": "Number",
376
+ "required": true,
321
377
  "desc": "The year",
322
378
  "__exemption": [ "examples" ]
323
379
  },
324
380
  "month": {
325
381
  "type": "Number",
382
+ "required": true,
326
383
  "desc": "The month",
327
384
  "__exemption": [ "examples" ]
328
385
  },
329
386
  "day": {
330
387
  "type": "Number",
388
+ "required": true,
331
389
  "desc": "The day of month",
332
390
  "__exemption": [ "examples" ]
333
391
  }
@@ -349,8 +407,8 @@
349
407
  "params": {
350
408
  "view": {
351
409
  "type": "String",
352
- "desc": "QDate view name",
353
410
  "required": true,
411
+ "desc": "QDate view name",
354
412
  "values": [ "Calendar", "Months", "Years" ]
355
413
  }
356
414
  }
@@ -80,12 +80,12 @@ export default createComponent({
80
80
  ],
81
81
 
82
82
  setup (props, { slots, emit, attrs }) {
83
- const { proxy } = getCurrentInstance()
83
+ const { proxy, vnode } = getCurrentInstance()
84
84
  const { $q } = proxy
85
85
 
86
86
  const isDark = useDark(props, $q)
87
87
  const { inFullscreen, toggleFullscreen } = useFullscreen()
88
- const splitAttrs = useSplitAttrs(attrs)
88
+ const splitAttrs = useSplitAttrs(attrs, vnode)
89
89
 
90
90
  const rootRef = ref(null)
91
91
  const contentRef = ref(null)
@@ -120,8 +120,12 @@
120
120
  },
121
121
  "disable": {
122
122
  "type": [ "Boolean", "Function" ],
123
- "desc": "Is button disabled? If specifying a function, return a Boolean value.",
124
- "examples": [ "() => this.userIsActive()" ]
123
+ "desc": "Is button disabled?",
124
+ "returns": {
125
+ "type": "Boolean",
126
+ "desc": "If true, the button will be disabled"
127
+ },
128
+ "examples": [ "!user.active", "() => !checkIfUserIsActive()" ]
125
129
  },
126
130
  "type": {
127
131
  "type": "String",
@@ -30,9 +30,8 @@
30
30
  "examples": [ "qf_363270c0-7a83-62b1-8dcf-6dfd64ee38fa" ]
31
31
  },
32
32
  "field": {
33
- "type": "Object",
34
- "desc": "DOM element of the field",
35
- "__exemption": [ "examples" ]
33
+ "type": "Element",
34
+ "desc": "DOM element of the field"
36
35
  },
37
36
  "editable": {
38
37
  "type": "Boolean",
@@ -57,6 +56,7 @@
57
56
  "params": {
58
57
  "value": {
59
58
  "type": "Any",
59
+ "required": true,
60
60
  "desc": "Value to be emitted",
61
61
  "examples": [ 0, "Changed text" ]
62
62
  }
@@ -42,16 +42,19 @@
42
42
  "definition": {
43
43
  "totalSize": {
44
44
  "type": "String",
45
+ "required": true,
45
46
  "desc": "The total size of files in human readable format",
46
47
  "examples": [ "1.42MB" ]
47
48
  },
48
49
  "filesNumber": {
49
50
  "type": "Number",
51
+ "required": true,
50
52
  "desc": "Number of picked files",
51
53
  "examples": [ 5 ]
52
54
  },
53
55
  "maxFiles": {
54
56
  "type": [ "Number", "String" ],
57
+ "required": true,
55
58
  "desc": "Maximum number of files (same as 'max-files' prop, if specified); When 'max-files' is not specified, this has 'void 0' as value",
56
59
  "examples": [ 5 ]
57
60
  }
@@ -32,7 +32,7 @@
32
32
  },
33
33
 
34
34
  "height-hint": {
35
- "type": [ "Number", "String " ],
35
+ "type": [ "Number", "String" ],
36
36
  "desc": "When using SSR, you can optionally hint of the height (in pixels) of the QFooter",
37
37
  "default": 50,
38
38
  "examples": [ "150" ],
@@ -42,7 +42,7 @@
42
42
  },
43
43
 
44
44
  "height-hint": {
45
- "type": [ "Number", "String " ],
45
+ "type": [ "Number", "String" ],
46
46
  "desc": "When using SSR, you can optionally hint of the height (in pixels) of the QHeader",
47
47
  "default": 50,
48
48
  "examples": [ "150" ],
@@ -33,7 +33,7 @@ const mRE = /^M/
33
33
  const imgRE = /^img:/
34
34
  const svgUseRE = /^svguse:/
35
35
  const ionRE = /^ion-/
36
- const faLaRE = /^[l|f]a[s|r|l|b|d]? /
36
+ const faLaRE = /^[l|f]a[s|r|l|b|d|k]? /
37
37
 
38
38
  export default createComponent({
39
39
  name: 'QIcon',
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private/create.js'
4
4
  import debounce from '../../utils/debounce.js'
@@ -7,6 +7,8 @@ import { getScrollTarget, getScrollHeight, getVerticalScrollPosition, setVertica
7
7
  import { listenOpts } from '../../utils/event.js'
8
8
  import { hSlot, hUniqueSlot } from '../../utils/private/render.js'
9
9
 
10
+ const { passive } = listenOpts
11
+
10
12
  export default createComponent({
11
13
  name: 'QInfiniteScroll',
12
14
 
@@ -34,20 +36,21 @@ export default createComponent({
34
36
  emits: [ 'load' ],
35
37
 
36
38
  setup (props, { slots, emit }) {
37
- const fetching = ref(false)
39
+ const isFetching = ref(false)
40
+ const isWorking = ref(true)
38
41
  const rootRef = ref(null)
39
42
 
40
43
  let index = props.initialIndex || 0
41
- let isWorking = true
44
+ let scrollPos = false
42
45
  let localScrollTarget, poll
43
46
 
44
47
  const classes = computed(() =>
45
48
  'q-infinite-scroll__loading'
46
- + (fetching.value === true ? '' : ' invisible')
49
+ + (isFetching.value === true ? '' : ' invisible')
47
50
  )
48
51
 
49
52
  function immediatePoll () {
50
- if (props.disable === true || fetching.value === true || isWorking === false) {
53
+ if (props.disable === true || isFetching.value === true || isWorking.value === false) {
51
54
  return
52
55
  }
53
56
 
@@ -69,18 +72,18 @@ export default createComponent({
69
72
  }
70
73
 
71
74
  function trigger () {
72
- if (props.disable === true || fetching.value === true || isWorking === false) {
75
+ if (props.disable === true || isFetching.value === true || isWorking.value === false) {
73
76
  return
74
77
  }
75
78
 
76
79
  index++
77
- fetching.value = true
80
+ isFetching.value = true
78
81
 
79
82
  const heightBefore = getScrollHeight(localScrollTarget)
80
83
 
81
84
  emit('load', index, isDone => {
82
- if (isWorking === true) {
83
- fetching.value = false
85
+ if (isWorking.value === true) {
86
+ isFetching.value = false
84
87
  nextTick(() => {
85
88
  if (props.reverse === true) {
86
89
  const
@@ -107,31 +110,31 @@ export default createComponent({
107
110
  }
108
111
 
109
112
  function resume () {
110
- if (isWorking === false) {
111
- isWorking = true
112
- localScrollTarget.addEventListener('scroll', poll, listenOpts.passive)
113
+ if (isWorking.value === false) {
114
+ isWorking.value = true
115
+ localScrollTarget.addEventListener('scroll', poll, passive)
113
116
  }
114
117
 
115
118
  immediatePoll()
116
119
  }
117
120
 
118
121
  function stop () {
119
- if (isWorking === true) {
120
- isWorking = false
121
- fetching.value = false
122
- localScrollTarget.removeEventListener('scroll', poll, listenOpts.passive)
122
+ if (isWorking.value === true) {
123
+ isWorking.value = false
124
+ isFetching.value = false
125
+ localScrollTarget.removeEventListener('scroll', poll, passive)
123
126
  }
124
127
  }
125
128
 
126
129
  function updateScrollTarget () {
127
- if (localScrollTarget && isWorking === true) {
128
- localScrollTarget.removeEventListener('scroll', poll, listenOpts.passive)
130
+ if (localScrollTarget && isWorking.value === true) {
131
+ localScrollTarget.removeEventListener('scroll', poll, passive)
129
132
  }
130
133
 
131
134
  localScrollTarget = getScrollTarget(rootRef.value, props.scrollTarget)
132
135
 
133
- if (isWorking === true) {
134
- localScrollTarget.addEventListener('scroll', poll, listenOpts.passive)
136
+ if (isWorking.value === true) {
137
+ localScrollTarget.addEventListener('scroll', poll, passive)
135
138
  }
136
139
  }
137
140
 
@@ -155,30 +158,44 @@ export default createComponent({
155
158
  ? immediatePoll
156
159
  : debounce(immediatePoll, isNaN(val) === true ? 100 : val)
157
160
 
158
- if (localScrollTarget && isWorking === true) {
161
+ if (localScrollTarget && isWorking.value === true) {
159
162
  if (oldPoll !== void 0) {
160
- localScrollTarget.removeEventListener('scroll', oldPoll, listenOpts.passive)
163
+ localScrollTarget.removeEventListener('scroll', oldPoll, passive)
161
164
  }
162
165
 
163
- localScrollTarget.addEventListener('scroll', poll, listenOpts.passive)
166
+ localScrollTarget.addEventListener('scroll', poll, passive)
164
167
  }
165
168
  }
166
169
 
167
170
  watch(() => props.disable, val => {
168
- if (val === true) {
169
- stop()
170
- }
171
- else {
172
- resume()
171
+ if (val === true) { stop() }
172
+ else { resume() }
173
+ })
174
+
175
+ watch(() => props.reverse, val => {
176
+ if (isFetching.value === false && isWorking.value === true) {
177
+ immediatePoll()
173
178
  }
174
179
  })
175
180
 
176
181
  watch(() => props.scrollTarget, updateScrollTarget)
177
182
  watch(() => props.debounce, setDebounce)
178
183
 
184
+ onActivated(() => {
185
+ if (localScrollTarget && scrollPos !== false) {
186
+ setVerticalScrollPosition(localScrollTarget, scrollPos)
187
+ }
188
+ })
189
+
190
+ onDeactivated(() => {
191
+ scrollPos = localScrollTarget
192
+ ? getVerticalScrollPosition(localScrollTarget)
193
+ : false
194
+ })
195
+
179
196
  onBeforeUnmount(() => {
180
- if (isWorking === true) {
181
- localScrollTarget.removeEventListener('scroll', poll, listenOpts.passive)
197
+ if (isWorking.value === true) {
198
+ localScrollTarget.removeEventListener('scroll', poll, passive)
182
199
  }
183
200
  })
184
201
 
@@ -201,7 +218,7 @@ export default createComponent({
201
218
  return () => {
202
219
  const child = hUniqueSlot(slots.default, [])
203
220
 
204
- if (props.disable !== true && isWorking === true) {
221
+ if (props.disable !== true && isWorking.value === true) {
205
222
  child[ props.reverse === false ? 'push' : 'unshift' ](
206
223
  h('div', { class: classes.value }, hSlot(slots.loading))
207
224
  )
@@ -18,6 +18,10 @@ export default createComponent({
18
18
 
19
19
  once: Boolean,
20
20
  transition: String,
21
+ transitionDuration: {
22
+ type: [ String, Number ],
23
+ default: 300
24
+ },
21
25
 
22
26
  ssrPrerender: Boolean,
23
27
 
@@ -63,6 +67,10 @@ export default createComponent({
63
67
  ] ]
64
68
  })
65
69
 
70
+ const transitionStyle = computed(
71
+ () => `--q-transition-duration: ${ props.transitionDuration }ms`
72
+ )
73
+
66
74
  function trigger (entry) {
67
75
  if (showing.value !== entry.isIntersecting) {
68
76
  showing.value = entry.isIntersecting
@@ -72,7 +80,7 @@ export default createComponent({
72
80
 
73
81
  function getContent () {
74
82
  return showing.value === true
75
- ? [ h('div', { key: 'content' }, hSlot(slots.default)) ]
83
+ ? [ h('div', { key: 'content', style: transitionStyle.value }, hSlot(slots.default)) ]
76
84
  : void 0
77
85
  }
78
86
 
@@ -51,6 +51,15 @@
51
51
  "category": "behavior"
52
52
  },
53
53
 
54
+ "transition-duration": {
55
+ "type": [ "String", "Number" ],
56
+ "desc": "Transition duration (in milliseconds, without unit)",
57
+ "default": 300,
58
+ "examples": [ 500, "1200" ],
59
+ "category": "behavior",
60
+ "addedIn": "v2.3.1"
61
+ },
62
+
54
63
  "disable": {
55
64
  "type": "Boolean",
56
65
  "desc": "Disable visibility observable (content will remain as it was, visible or hidden)",
@@ -37,11 +37,13 @@
37
37
  "definition": {
38
38
  "height": {
39
39
  "type": "Number",
40
+ "required": true,
40
41
  "desc": "Layout height",
41
42
  "examples": [ 575 ]
42
43
  },
43
44
  "width": {
44
45
  "type": "Number",
46
+ "required": true,
45
47
  "desc": "Layout height",
46
48
  "examples": [ 575 ]
47
49
  }
@@ -59,27 +61,32 @@
59
61
  "definition": {
60
62
  "position": {
61
63
  "type": "Number",
64
+ "required": true,
62
65
  "desc": "Scroll offset from top (vertical)",
63
66
  "examples": [ 120 ]
64
67
  },
65
68
 
66
69
  "direction": {
67
70
  "type": "String",
71
+ "required": true,
68
72
  "desc": "Direction of scroll",
69
73
  "values": [ "up", "down" ]
70
74
  },
71
75
  "directionChanged": {
72
76
  "type": "Boolean",
77
+ "required": true,
73
78
  "desc": "Has scroll direction changed since event was last emitted?"
74
79
  },
75
80
  "delta": {
76
81
  "type": "Number",
82
+ "required": true,
77
83
  "desc": "Vertical delta distance since event was last emitted",
78
84
  "examples": [ 120 ]
79
85
  },
80
86
 
81
87
  "inflectionPoint": {
82
88
  "type": "Number",
89
+ "required": true,
83
90
  "desc": "Scroll offset from top (vertical)",
84
91
  "examples": [ 120 ]
85
92
  }
@@ -94,7 +101,7 @@
94
101
  "height": {
95
102
  "type": "Number",
96
103
  "desc": "New scroll height of layout",
97
- "examples": [1442]
104
+ "examples": [ 1442 ]
98
105
  }
99
106
  }
100
107
  }
@@ -44,6 +44,11 @@ export default createComponent({
44
44
  query: Boolean,
45
45
  rounded: Boolean,
46
46
 
47
+ animationSpeed: {
48
+ type: [ String, Number ],
49
+ default: 2100
50
+ },
51
+
47
52
  instantFeedback: Boolean
48
53
  },
49
54
 
@@ -53,6 +58,10 @@ export default createComponent({
53
58
  const sizeStyle = useSize(props, defaultSizes)
54
59
 
55
60
  const motion = computed(() => props.indeterminate === true || props.query === true)
61
+ const style = computed(() => ({
62
+ ...(sizeStyle.value !== null ? sizeStyle.value : {}),
63
+ '--q-linear-progress-speed': `${ props.animationSpeed }ms`
64
+ }))
56
65
 
57
66
  const classes = computed(() =>
58
67
  'q-linear-progress'
@@ -103,7 +112,7 @@ export default createComponent({
103
112
 
104
113
  return h('div', {
105
114
  class: classes.value,
106
- style: sizeStyle.value,
115
+ style: style.value,
107
116
  role: 'progressbar',
108
117
  'aria-valuemin': 0,
109
118
  'aria-valuemax': 1,
@@ -66,6 +66,12 @@
66
66
  "type": "Boolean",
67
67
  "desc": "No transition when model changes",
68
68
  "category": "behavior"
69
+ },
70
+
71
+ "animation-speed": {
72
+ "extends": "animation-speed",
73
+ "default": 300,
74
+ "addedIn": "v2.3"
69
75
  }
70
76
  },
71
77
 
@@ -1,4 +1,5 @@
1
1
  .q-linear-progress
2
+ --q-linear-progress-speed: .3s
2
3
  position: relative
3
4
  width: 100%
4
5
  overflow: hidden
@@ -10,7 +11,7 @@
10
11
  transform-origin: 0 0
11
12
 
12
13
  &--with-transition
13
- transition: transform .3s
14
+ transition: transform var(--q-linear-progress-speed)
14
15
 
15
16
  &--reverse
16
17
  .q-linear-progress
@@ -50,7 +51,7 @@
50
51
  background: rgba(255,255,255,.6)
51
52
 
52
53
  &__stripe
53
- transition: width .3s
54
+ transition: width var(--q-linear-progress-speed)
54
55
  background-image: linear-gradient(45deg, rgba(255,255,255,.15) 25%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, rgba(255,255,255,0) 75%, rgba(255,255,255,0)) !important
55
56
  background-size: 40px 40px !important
56
57
 
@@ -22,7 +22,6 @@
22
22
  "max": {
23
23
  "type": "Number",
24
24
  "desc": "Number of last page (must be higher than 'min')",
25
- "default": 100,
26
25
  "required": true,
27
26
  "examples": [ 10 ],
28
27
  "category": "model"