quasar 2.3.0 → 2.3.4

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 (255) 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 +41 -12
  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 +11 -6
  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 +14 -7
  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 +5 -3
  32. package/dist/api/QFab.json +11 -6
  33. package/dist/api/QFabAction.json +4 -2
  34. package/dist/api/QField.json +2 -1
  35. package/dist/api/QFile.json +7 -2
  36. package/dist/api/QFooter.json +3 -2
  37. package/dist/api/QForm.json +1 -1
  38. package/dist/api/QHeader.json +5 -3
  39. package/dist/api/QIcon.json +2 -1
  40. package/dist/api/QImg.json +8 -4
  41. package/dist/api/QInfiniteScroll.json +6 -3
  42. package/dist/api/QInnerLoading.json +8 -4
  43. package/dist/api/QInput.json +2 -1
  44. package/dist/api/QIntersection.json +17 -1
  45. package/dist/api/QItem.json +2 -1
  46. package/dist/api/QKnob.json +8 -4
  47. package/dist/api/QLayout.json +9 -1
  48. package/dist/api/QLinearProgress.json +4 -2
  49. package/dist/api/QMarkupTable.json +2 -1
  50. package/dist/api/QMenu.json +8 -4
  51. package/dist/api/QNoSsr.json +2 -1
  52. package/dist/api/QOptionGroup.json +2 -1
  53. package/dist/api/QPage.json +2 -1
  54. package/dist/api/QPageScroller.json +8 -4
  55. package/dist/api/QPageSticky.json +2 -1
  56. package/dist/api/QPagination.json +10 -6
  57. package/dist/api/QParallax.json +2 -1
  58. package/dist/api/QPopupEdit.json +5 -2
  59. package/dist/api/QPopupProxy.json +7 -4
  60. package/dist/api/QRange.json +8 -4
  61. package/dist/api/QRating.json +5 -2
  62. package/dist/api/QResizeObserver.json +4 -1
  63. package/dist/api/QRouteTab.json +5 -26
  64. package/dist/api/QScrollArea.json +32 -6
  65. package/dist/api/QScrollObserver.json +13 -1
  66. package/dist/api/QSelect.json +141 -47
  67. package/dist/api/QSeparator.json +2 -1
  68. package/dist/api/QSkeleton.json +8 -4
  69. package/dist/api/QSlideItem.json +9 -0
  70. package/dist/api/QSlideTransition.json +2 -1
  71. package/dist/api/QSlider.json +8 -4
  72. package/dist/api/QSpinner.json +2 -1
  73. package/dist/api/QSplitter.json +4 -2
  74. package/dist/api/QStep.json +2 -1
  75. package/dist/api/QStepper.json +6 -3
  76. package/dist/api/QTab.json +4 -2
  77. package/dist/api/QTabPanels.json +6 -3
  78. package/dist/api/QTable.json +216 -93
  79. package/dist/api/QTabs.json +4 -2
  80. package/dist/api/QTime.json +16 -4
  81. package/dist/api/QTimeline.json +4 -2
  82. package/dist/api/QTimelineEntry.json +4 -2
  83. package/dist/api/QToggle.json +8 -4
  84. package/dist/api/QTooltip.json +18 -9
  85. package/dist/api/QTree.json +34 -19
  86. package/dist/api/QUploader.json +93 -5
  87. package/dist/api/QVirtualScroll.json +26 -11
  88. package/dist/api/ScrollFire.json +1 -1
  89. package/dist/api/SessionStorage.json +8 -0
  90. package/dist/api/TouchHold.json +2 -1
  91. package/dist/api/TouchRepeat.json +2 -1
  92. package/dist/api/TouchSwipe.json +2 -1
  93. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  94. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  95. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  96. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  97. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  98. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  99. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  100. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  101. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  102. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  103. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  104. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  105. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  106. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  107. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  108. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  109. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  110. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  111. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  112. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +6 -0
  113. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  114. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  115. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  116. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  117. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  118. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  119. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  120. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  121. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  122. package/dist/icon-set/themify.umd.prod.js +1 -1
  123. package/dist/lang/ar.umd.prod.js +1 -1
  124. package/dist/lang/az-Latn.umd.prod.js +1 -1
  125. package/dist/lang/bg.umd.prod.js +1 -1
  126. package/dist/lang/bn.umd.prod.js +1 -1
  127. package/dist/lang/ca.umd.prod.js +1 -1
  128. package/dist/lang/cs.umd.prod.js +1 -1
  129. package/dist/lang/da.umd.prod.js +1 -1
  130. package/dist/lang/de.umd.prod.js +1 -1
  131. package/dist/lang/el.umd.prod.js +1 -1
  132. package/dist/lang/en-GB.umd.prod.js +1 -1
  133. package/dist/lang/en-US.umd.prod.js +1 -1
  134. package/dist/lang/eo.umd.prod.js +1 -1
  135. package/dist/lang/es.umd.prod.js +1 -1
  136. package/dist/lang/et.umd.prod.js +1 -1
  137. package/dist/lang/fa-IR.umd.prod.js +1 -1
  138. package/dist/lang/fa.umd.prod.js +1 -1
  139. package/dist/lang/fi.umd.prod.js +1 -1
  140. package/dist/lang/fr.umd.prod.js +1 -1
  141. package/dist/lang/gn.umd.prod.js +1 -1
  142. package/dist/lang/he.umd.prod.js +1 -1
  143. package/dist/lang/hr.umd.prod.js +1 -1
  144. package/dist/lang/hu.umd.prod.js +1 -1
  145. package/dist/lang/id.umd.prod.js +1 -1
  146. package/dist/lang/is.umd.prod.js +1 -1
  147. package/dist/lang/it.umd.prod.js +1 -1
  148. package/dist/lang/ja.umd.prod.js +1 -1
  149. package/dist/lang/km.umd.prod.js +1 -1
  150. package/dist/lang/ko-KR.umd.prod.js +1 -1
  151. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  152. package/dist/lang/lt.umd.prod.js +1 -1
  153. package/dist/lang/lu.umd.prod.js +1 -1
  154. package/dist/lang/lv.umd.prod.js +1 -1
  155. package/dist/lang/ml.umd.prod.js +1 -1
  156. package/dist/lang/ms.umd.prod.js +1 -1
  157. package/dist/lang/nb-NO.umd.prod.js +1 -1
  158. package/dist/lang/nl.umd.prod.js +1 -1
  159. package/dist/lang/pl.umd.prod.js +1 -1
  160. package/dist/lang/pt-BR.umd.prod.js +1 -1
  161. package/dist/lang/pt.umd.prod.js +1 -1
  162. package/dist/lang/ro.umd.prod.js +1 -1
  163. package/dist/lang/ru.umd.prod.js +1 -1
  164. package/dist/lang/sk.umd.prod.js +1 -1
  165. package/dist/lang/sl.umd.prod.js +1 -1
  166. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  167. package/dist/lang/sr.umd.prod.js +1 -1
  168. package/dist/lang/sv.umd.prod.js +1 -1
  169. package/dist/lang/ta.umd.prod.js +1 -1
  170. package/dist/lang/th.umd.prod.js +1 -1
  171. package/dist/lang/tr.umd.prod.js +1 -1
  172. package/dist/lang/ug.umd.prod.js +1 -1
  173. package/dist/lang/uk.umd.prod.js +1 -1
  174. package/dist/lang/vi.umd.prod.js +1 -1
  175. package/dist/lang/zh-CN.umd.prod.js +1 -1
  176. package/dist/lang/zh-TW.umd.prod.js +1 -1
  177. package/dist/quasar.cjs.prod.js +2 -2
  178. package/dist/quasar.css +8 -1
  179. package/dist/quasar.esm.prod.js +2 -2
  180. package/dist/quasar.prod.css +1 -1
  181. package/dist/quasar.rtl.css +13 -1
  182. package/dist/quasar.rtl.prod.css +1 -1
  183. package/dist/quasar.sass +40 -35
  184. package/dist/quasar.umd.js +74 -48
  185. package/dist/quasar.umd.prod.js +2 -2
  186. package/dist/ssr-directives/Morph.js +1 -1
  187. package/dist/types/api/cookies.d.ts +1 -1
  188. package/dist/types/composables.d.ts +5 -1
  189. package/dist/types/extras/icon-set.d.ts +1 -0
  190. package/dist/types/index.d.ts +519 -192
  191. package/dist/vetur/quasar-attributes.json +7 -3
  192. package/dist/vetur/quasar-tags.json +1 -0
  193. package/dist/web-types/web-types.json +26 -12
  194. package/icon-set/svg-ionicons-v6.js +225 -0
  195. package/package.json +5 -2
  196. package/src/body.js +14 -4
  197. package/src/components/btn/QBtn.js +1 -0
  198. package/src/components/btn-dropdown/QBtnDropdown.json +1 -0
  199. package/src/components/chip/QChip.json +1 -2
  200. package/src/components/circular-progress/QCircularProgress.json +1 -1
  201. package/src/components/date/QDate.json +59 -1
  202. package/src/components/editor/QEditor.js +2 -2
  203. package/src/components/editor/QEditor.json +6 -2
  204. package/src/components/expansion-item/QExpansionItem.json +2 -1
  205. package/src/components/fab/QFab.json +3 -1
  206. package/src/components/field/QField.json +3 -3
  207. package/src/components/file/QFile.json +9 -6
  208. package/src/components/footer/QFooter.json +1 -1
  209. package/src/components/form/QForm.json +2 -3
  210. package/src/components/header/QHeader.json +1 -1
  211. package/src/components/icon/QIcon.js +2 -2
  212. package/src/components/intersection/QIntersection.js +9 -1
  213. package/src/components/intersection/QIntersection.json +9 -0
  214. package/src/components/layout/QLayout.json +8 -1
  215. package/src/components/linear-progress/QLinearProgress.js +3 -2
  216. package/src/components/linear-progress/QLinearProgress.json +1 -1
  217. package/src/components/linear-progress/QLinearProgress.sass +1 -1
  218. package/src/components/pagination/QPagination.json +0 -1
  219. package/src/components/popup-edit/QPopupEdit.json +1 -0
  220. package/src/components/popup-proxy/QPopupProxy.json +2 -1
  221. package/src/components/rating/QRating.json +1 -1
  222. package/src/components/resize-observer/QResizeObserver.json +2 -0
  223. package/src/components/scroll-area/QScrollArea.js +8 -13
  224. package/src/components/scroll-area/QScrollArea.json +33 -10
  225. package/src/components/scroll-observer/QScrollObserver.json +11 -0
  226. package/src/components/select/QSelect.js +7 -3
  227. package/src/components/select/QSelect.json +88 -15
  228. package/src/components/slide-item/QSlideItem.json +9 -0
  229. package/src/components/slider/use-slider.js +3 -3
  230. package/src/components/table/QTable.js +1 -1
  231. package/src/components/table/QTable.json +155 -60
  232. package/src/components/table/table-pagination.js +4 -0
  233. package/src/components/tabs/QRouteTab.json +1 -23
  234. package/src/components/time/QTime.json +8 -0
  235. package/src/components/tree/QTree.json +26 -21
  236. package/src/components/tree/QTree.sass +45 -41
  237. package/src/components/uploader/xhr-uploader-plugin.json +105 -4
  238. package/src/components/virtual-scroll/QVirtualScroll.json +15 -0
  239. package/src/components/virtual-scroll/use-virtual-scroll.json +7 -5
  240. package/src/composables/private/use-field.js +4 -4
  241. package/src/composables/private/use-refocus-target.js +12 -3
  242. package/src/composables/private/use-split-attrs.js +10 -7
  243. package/src/composables/use-dialog-plugin-component.js +1 -0
  244. package/src/css/core/transitions.sass +3 -1
  245. package/src/directives/Mutation.json +2 -3
  246. package/src/directives/ScrollFire.json +2 -3
  247. package/src/install-quasar.js +1 -0
  248. package/src/plugins/AppFullscreen.json +8 -8
  249. package/src/plugins/Cookies.json +2 -2
  250. package/src/plugins/Dialog.json +6 -5
  251. package/src/plugins/LoadingBar.json +4 -3
  252. package/src/plugins/Notify.json +13 -19
  253. package/src/utils/private/global-dialog.json +16 -2
  254. package/src/utils/private/web-storage.json +10 -0
  255. package/wrappers/index.js +4 -0
@@ -64,6 +64,10 @@ export function useTablePaginationState (vm, getCellValue) {
64
64
  nextTick(() => {
65
65
  emit('request', {
66
66
  pagination: prop.pagination || computedPagination.value,
67
+ // FIXME: 'props.filter' is string/object, but 'prop.filter' can be controlled by the user, and the docs are suggesting 'prop.filter' is a function
68
+ // So, value of 'filter' becomes function/string/object, which makes a lot of things unpredictable and can break things
69
+ // Either update the docs to say 'prop.filter' should be a string/object, or use 'prop.filter || props.filterMethod' or maybe get 'computedFilterFunction' here and use that instead of 'props.filterMethod'
70
+ // The examples on our docs are using 'filter' as a string in onRequest handler, but the JSON API is saying 'filter' is a function
67
71
  filter: prop.filter || props.filter,
68
72
  getCellValue
69
73
  })
@@ -24,29 +24,7 @@
24
24
  "navigateFn": {
25
25
  "type": "Function",
26
26
  "desc": "When you need to control the time at which the tab should trigger the route navigation then set 'evt.navigate' to false and call this function; Useful if you have async work to be done before the actual route navigation",
27
- "params": {
28
- "to": {
29
- "type": [ "String", "Object" ],
30
- "desc": "Equivalent to Vue Router <router-link> 'to' property",
31
- "examples": [
32
- "/home/dashboard",
33
- "{ name: 'my-route-name' }"
34
- ],
35
- "default": "Tab's 'to' property"
36
- },
37
-
38
- "append": {
39
- "type": "Boolean",
40
- "desc": "Equivalent to Vue Router <router-link> 'append' property",
41
- "default": "Tab's 'append' property"
42
- },
43
-
44
- "replace": {
45
- "type": "Boolean",
46
- "desc": "Equivalent to Vue Router <router-link> 'replace' property",
47
- "default": "Tab's 'replace' property"
48
- }
49
- },
27
+ "params": null,
50
28
  "returns": null
51
29
  }
52
30
  }
@@ -123,41 +123,49 @@
123
123
  "definition": {
124
124
  "year": {
125
125
  "type": "Number",
126
+ "required": true,
126
127
  "desc": "The year",
127
128
  "__exemption": [ "examples" ]
128
129
  },
129
130
  "month": {
130
131
  "type": "Number",
132
+ "required": true,
131
133
  "desc": "The month",
132
134
  "__exemption": [ "examples" ]
133
135
  },
134
136
  "day": {
135
137
  "type": "Number",
138
+ "required": true,
136
139
  "desc": "The day of the month",
137
140
  "__exemption": [ "examples" ]
138
141
  },
139
142
  "hour": {
140
143
  "type": "Number",
144
+ "required": true,
141
145
  "desc": "The hour",
142
146
  "__exemption": [ "examples" ]
143
147
  },
144
148
  "minute": {
145
149
  "type": "Number",
150
+ "required": true,
146
151
  "desc": "The minute",
147
152
  "__exemption": [ "examples" ]
148
153
  },
149
154
  "second": {
150
155
  "type": "Number",
156
+ "required": true,
151
157
  "desc": "The second",
152
158
  "__exemption": [ "examples" ]
153
159
  },
154
160
  "millisecond": {
155
161
  "type": "Number",
162
+ "required": true,
156
163
  "desc": "The millisecond",
157
164
  "__exemption": [ "examples" ]
158
165
  },
159
166
  "changed": {
160
167
  "type": "Boolean",
168
+ "required": true,
161
169
  "desc": "Did the model change?"
162
170
  }
163
171
  }
@@ -186,9 +186,9 @@
186
186
  "reactive": true
187
187
  },
188
188
  "tree": {
189
- "type": "Object",
190
- "desc": "QTree instance",
191
- "__exemption": [ "examples" ]
189
+ "type": "Component",
190
+ "tsType": "QTree",
191
+ "desc": "QTree instance"
192
192
  },
193
193
  "node": {
194
194
  "type": "Object",
@@ -226,9 +226,9 @@
226
226
  "reactive": true
227
227
  },
228
228
  "tree": {
229
- "type": "Object",
230
- "desc": "QTree instance",
231
- "__exemption": [ "examples" ]
229
+ "type": "Component",
230
+ "tsType": "QTree",
231
+ "desc": "QTree instance"
232
232
  },
233
233
  "node": {
234
234
  "type": "Object",
@@ -266,9 +266,9 @@
266
266
  "reactive": true
267
267
  },
268
268
  "tree": {
269
- "type": "Object",
270
- "desc": "QTree instance",
271
- "__exemption": [ "examples" ]
269
+ "type": "Component",
270
+ "tsType": "QTree",
271
+ "desc": "QTree instance"
272
272
  },
273
273
  "node": {
274
274
  "type": "Object",
@@ -306,9 +306,9 @@
306
306
  "reactive": true
307
307
  },
308
308
  "tree": {
309
- "type": "Object",
310
- "desc": "QTree instance",
311
- "__exemption": [ "examples" ]
309
+ "type": "Component",
310
+ "tsType": "QTree",
311
+ "desc": "QTree instance"
312
312
  },
313
313
  "node": {
314
314
  "type": "Object",
@@ -354,21 +354,25 @@
354
354
  "definition": {
355
355
  "node": {
356
356
  "type": "Object",
357
+ "required": true,
357
358
  "desc": "The node to which the new nodes (the children) will be appended",
358
359
  "__exemption": [ "examples" ]
359
360
  },
360
361
  "key": {
361
362
  "type": "String",
363
+ "required": true,
362
364
  "desc": "The key of the node getting the newly loaded child nodes",
363
365
  "examples": [ "New Node" ]
364
366
  },
365
367
  "done": {
366
368
  "type": "Function",
369
+ "required": true,
367
370
  "desc": "The callback to be carried out when the loading is successful",
368
371
  "params": {
369
372
  "children": {
370
373
  "type": "Array",
371
374
  "desc": "Array of nodes",
375
+ "default": "[]",
372
376
  "__exemption": [ "examples" ]
373
377
  }
374
378
  },
@@ -376,6 +380,7 @@
376
380
  },
377
381
  "fail": {
378
382
  "type": "Function",
383
+ "required": true,
379
384
  "desc": "The callback to be carried out should the loading fails",
380
385
  "params": null,
381
386
  "returns": null
@@ -422,8 +427,8 @@
422
427
  "params": {
423
428
  "key": {
424
429
  "type": "Any",
425
- "desc": "The key of a node",
426
430
  "required": true,
431
+ "desc": "The key of a node",
427
432
  "examples": [ "Node 1" ]
428
433
  }
429
434
  },
@@ -457,8 +462,8 @@
457
462
  "params": {
458
463
  "key": {
459
464
  "type": "Any",
460
- "desc": "The key of a node",
461
465
  "required": true,
466
+ "desc": "The key of a node",
462
467
  "examples": [ "Node 1" ]
463
468
  }
464
469
  },
@@ -481,14 +486,14 @@
481
486
  "params": {
482
487
  "key": {
483
488
  "type": "Any",
484
- "desc": "The key of a node",
485
489
  "required": true,
490
+ "desc": "The key of a node",
486
491
  "examples": [ "Node 1" ]
487
492
  },
488
493
  "state": {
489
494
  "type": "Boolean",
490
- "desc": "Set to 'true' to expand the branch of the tree, otherwise 'false' collapses it",
491
- "required": true
495
+ "required": true,
496
+ "desc": "Set to 'true' to expand the branch of the tree, otherwise 'false' collapses it"
492
497
  }
493
498
  }
494
499
  },
@@ -498,8 +503,8 @@
498
503
  "params": {
499
504
  "key": {
500
505
  "type": "Any",
501
- "desc": "The key of a node",
502
506
  "required": true,
507
+ "desc": "The key of a node",
503
508
  "examples": [ "Node 1" ]
504
509
  }
505
510
  },
@@ -514,14 +519,14 @@
514
519
  "params": {
515
520
  "keys": {
516
521
  "type": "Array",
517
- "desc": "The keys of nodes to tick/untick",
518
522
  "required": true,
523
+ "desc": "The keys of nodes to tick/untick",
519
524
  "examples": [ "[ 'Node 1', 'Node 2' ]" ]
520
525
  },
521
526
  "state": {
522
527
  "type": "Boolean",
523
- "desc": "Set to 'true' to tick the checkbox of nodes, otherwise 'false' unticks them",
524
- "required": true
528
+ "required": true,
529
+ "desc": "Set to 'true' to tick the checkbox of nodes, otherwise 'false' unticks them"
525
530
  }
526
531
  }
527
532
  }
@@ -130,47 +130,51 @@
130
130
  .q-tree__node-body:after
131
131
  display: none !important
132
132
 
133
- &--dense .q-tree
134
- &__arrow,
135
- &__spinner
136
- margin-right: 1px
137
-
138
- &__img
139
- height: 32px
140
-
141
- &__tickbox
142
- margin-right: 3px
143
-
144
- &__node
145
- padding: 0
146
- &:after
147
- top: 0
148
- left: -8px
149
-
150
- &__node-header
151
- margin-top: 0
152
- padding: 1px
153
- &:before
154
- top: 0
155
- left: -8px
156
- width: 8px
157
-
158
- &__node--child
159
- padding-left: 17px
160
- > .q-tree__node-header:before
161
- left: -25px
162
- width: 21px
163
-
164
- &__node-body
165
- padding: 0 0 2px
166
-
167
- &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
168
- padding: 0 0 2px 20px
169
- &:after
170
- left: 8px
171
-
172
- &__children
173
- padding-left: 16px
133
+ &--dense
134
+ > .q-tree__node--child > .q-tree__node-header
135
+ padding-left: 1px
136
+
137
+ .q-tree
138
+ &__arrow,
139
+ &__spinner
140
+ margin-right: 1px
141
+
142
+ &__img
143
+ height: 32px
144
+
145
+ &__tickbox
146
+ margin-right: 3px
147
+
148
+ &__node
149
+ padding: 0
150
+ &:after
151
+ top: 0
152
+ left: -8px
153
+
154
+ &__node-header
155
+ margin-top: 0
156
+ padding: 1px
157
+ &:before
158
+ top: 0
159
+ left: -8px
160
+ width: 8px
161
+
162
+ &__node--child
163
+ padding-left: 17px
164
+ > .q-tree__node-header:before
165
+ left: -25px
166
+ width: 21px
167
+
168
+ &__node-body
169
+ padding: 0 0 2px
170
+
171
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
172
+ padding: 0 0 2px 20px
173
+ &:after
174
+ left: 8px
175
+
176
+ &__children
177
+ padding-left: 16px
174
178
 
175
179
  [dir=rtl]
176
180
  .q-tree__arrow
@@ -11,7 +11,7 @@
11
11
  }
12
12
  },
13
13
  "returns": {
14
- "type": [ "Object", "Promise" ],
14
+ "type": [ "Object", "Promise<any>" ],
15
15
  "desc": "Optional configuration for the upload process; You can override QUploader props in this Object (url, method, headers, formFields, fieldName, withCredentials, sendRaw); Props of these Object can also be Functions with the form of (file[s]) => value",
16
16
  "__exemption": [ "examples" ]
17
17
  },
@@ -22,6 +22,18 @@
22
22
  "type": [ "String", "Function" ],
23
23
  "desc": "URL or path to the server which handles the upload. Takes String or factory function, which returns String. Function is called right before upload; If using a function then for best performance, reference it from your scope and do not define it inline",
24
24
  "examples": [ "https://example.com/path", "files => `https://example.com?count=${files.length}`" ],
25
+ "params": {
26
+ "files": {
27
+ "type": "Array",
28
+ "desc": "Uploaded files",
29
+ "__exemption": [ "examples" ]
30
+ }
31
+ },
32
+ "returns": {
33
+ "type": "String",
34
+ "desc": "URL or path to the server which handles the upload",
35
+ "__exemption": [ "examples" ]
36
+ },
25
37
  "category": "upload"
26
38
  },
27
39
 
@@ -31,6 +43,18 @@
31
43
  "desc": "HTTP method to use for upload; Takes String or factory function which returns a String; Function is called right before upload; If using a function then for best performance, reference it from your scope and do not define it inline",
32
44
  "values": [ "POST", "PUT" ],
33
45
  "examples": [ "POST", ":method=\"files => files.length > 10 ? 'POST' : 'PUT'\"" ],
46
+ "params": {
47
+ "files": {
48
+ "type": "Array",
49
+ "desc": "Uploaded files",
50
+ "__exemption": [ "examples" ]
51
+ }
52
+ },
53
+ "returns": {
54
+ "type": "String",
55
+ "desc": "HTTP method to use for upload",
56
+ "__exemption": [ "examples" ]
57
+ },
34
58
  "category": "upload"
35
59
  },
36
60
 
@@ -42,6 +66,18 @@
42
66
  "backgroundFile",
43
67
  ":field-name=\"(file) => 'background' + file.name\""
44
68
  ],
69
+ "params": {
70
+ "files": {
71
+ "type": "File",
72
+ "desc": "The current file being processed",
73
+ "__exemption": [ "examples" ]
74
+ }
75
+ },
76
+ "returns": {
77
+ "type": "String",
78
+ "desc": "Field name for the current file upload",
79
+ "__exemption": [ "examples" ]
80
+ },
45
81
  "category": "upload"
46
82
  },
47
83
 
@@ -67,6 +103,18 @@
67
103
  "() => [{name: 'X-Custom-Timestamp', value: Date.now()}]",
68
104
  "files => [{name: 'X-Custom-Count', value: files.length}]"
69
105
  ],
106
+ "params": {
107
+ "files": {
108
+ "type": "Array",
109
+ "desc": "Uploaded files",
110
+ "__exemption": [ "examples" ]
111
+ }
112
+ },
113
+ "returns": {
114
+ "type": "String",
115
+ "desc": "An array consists of objects with header definitions",
116
+ "__exemption": [ "examples" ]
117
+ },
70
118
  "category": "upload"
71
119
  },
72
120
 
@@ -92,6 +140,18 @@
92
140
  "() => [{name: 'my-field', value: 'my-value'}]",
93
141
  "files => [{name: 'my-field', value: 'my-value' + files.length}]"
94
142
  ],
143
+ "params": {
144
+ "files": {
145
+ "type": "Array",
146
+ "desc": "Uploaded files",
147
+ "__exemption": [ "examples" ]
148
+ }
149
+ },
150
+ "returns": {
151
+ "type": "String",
152
+ "desc": "An array consists of objects with additional fields definitions (used by Form to be uploaded)",
153
+ "__exemption": [ "examples" ]
154
+ },
95
155
  "category": "upload"
96
156
  },
97
157
 
@@ -99,6 +159,18 @@
99
159
  "type": [ "Boolean", "Function" ],
100
160
  "desc": "Sets withCredentials to true on the XHR that manages the upload; Takes boolean or factory function for Boolean; Function is called right before upload; If using a function then for best performance, reference it from your scope and do not define it inline",
101
161
  "examples": [ "with-credentials", ":with-credentials=\"files => ...\"" ],
162
+ "params": {
163
+ "files": {
164
+ "type": "Array",
165
+ "desc": "Uploaded files",
166
+ "__exemption": [ "examples" ]
167
+ }
168
+ },
169
+ "returns": {
170
+ "type": "Boolean",
171
+ "desc": "If true, withCredentials will be set to true on the XHR that manages the upload",
172
+ "__exemption": [ "examples" ]
173
+ },
102
174
  "category": "upload"
103
175
  },
104
176
 
@@ -106,6 +178,18 @@
106
178
  "type": [ "Boolean", "Function" ],
107
179
  "desc": "Send raw files without wrapping into a Form(); Takes boolean or factory function for Boolean; Function is called right before upload; If using a function then for best performance, reference it from your scope and do not define it inline",
108
180
  "examples": [ "send-raw", ":send-raw=\"files => ...\"" ],
181
+ "params": {
182
+ "files": {
183
+ "type": "Array",
184
+ "desc": "Uploaded files",
185
+ "__exemption": [ "examples" ]
186
+ }
187
+ },
188
+ "returns": {
189
+ "type": "Boolean",
190
+ "desc": "If true, raw files will get sent without wrapping into a Form()",
191
+ "__exemption": [ "examples" ]
192
+ },
109
193
  "category": "upload"
110
194
  },
111
195
 
@@ -113,6 +197,18 @@
113
197
  "type": [ "Boolean", "Function" ],
114
198
  "desc": "Upload files in batch (in one XHR request); Takes boolean or factory function for Boolean; Function is called right before upload; If using a function then for best performance, reference it from your scope and do not define it inline",
115
199
  "examples": [ "files => files.length > 10" ],
200
+ "params": {
201
+ "files": {
202
+ "type": "Array",
203
+ "desc": "Uploaded files",
204
+ "__exemption": [ "examples" ]
205
+ }
206
+ },
207
+ "returns": {
208
+ "type": "Boolean",
209
+ "desc": "If true, files will be uploaded in a batch (in one XHR request)",
210
+ "__exemption": [ "examples" ]
211
+ },
116
212
  "category": "upload"
117
213
  }
118
214
  },
@@ -127,11 +223,13 @@
127
223
  "definition": {
128
224
  "files": {
129
225
  "type": "Array",
226
+ "required": true,
130
227
  "desc": "Uploaded files",
131
228
  "__exemption": [ "examples" ]
132
229
  },
133
230
  "xhr": {
134
231
  "type": "Object",
232
+ "required": true,
135
233
  "desc": "XMLHttpRequest that has been used to upload this batch of files",
136
234
  "__exemption": [ "examples" ]
137
235
  }
@@ -149,11 +247,13 @@
149
247
  "definition": {
150
248
  "files": {
151
249
  "type": "Array",
250
+ "required": true,
152
251
  "desc": "Files which encountered error",
153
252
  "__exemption": [ "examples" ]
154
253
  },
155
254
  "xhr": {
156
255
  "type": "Object",
256
+ "required": true,
157
257
  "desc": "XMLHttpRequest that has been used to upload this batch of files",
158
258
  "__exemption": [ "examples" ]
159
259
  }
@@ -171,11 +271,13 @@
171
271
  "definition": {
172
272
  "files": {
173
273
  "type": "Array",
274
+ "required": true,
174
275
  "desc": "Files which are now uploading",
175
276
  "__exemption": [ "examples" ]
176
277
  },
177
278
  "xhr": {
178
279
  "type": "Object",
280
+ "required": true,
179
281
  "desc": "XMLHttpRequest used for uploading",
180
282
  "__exemption": [ "examples" ]
181
283
  }
@@ -188,9 +290,8 @@
188
290
  "desc": "Emitted when factory function is supplied with a Promise which is rejected",
189
291
  "params": {
190
292
  "err": {
191
- "type": "Object",
192
- "desc": "Error Object which is the Promise rejection reason",
193
- "__exemption": [ "examples" ]
293
+ "type": "Error",
294
+ "desc": "Error object which is the Promise rejection reason"
194
295
  },
195
296
  "files": {
196
297
  "type": "Array",
@@ -67,6 +67,21 @@
67
67
  }
68
68
  },
69
69
 
70
+ "events": {
71
+ "virtual-scroll": {
72
+ "params": {
73
+ "details": {
74
+ "definition": {
75
+ "ref": {
76
+ "tsType": "QVirtualScroll",
77
+ "desc": "Vue reference to the QVirtualScroll"
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ },
84
+
70
85
  "slots" : {
71
86
  "before": {
72
87
  "desc": "Template slot for the elements that should be rendered before the list; Suggestion: thead before a table"
@@ -72,30 +72,32 @@
72
72
  "definition": {
73
73
  "index": {
74
74
  "type": "Number",
75
+ "required": true,
75
76
  "desc": "Index of the list item that was scrolled into view (0 based)",
76
77
  "examples": [ 30 ]
77
78
  },
78
79
  "from": {
79
80
  "type": "Number",
81
+ "required": true,
80
82
  "desc": "The index of the first list item that is rendered (0 based)",
81
83
  "examples": [ 10 ]
82
84
  },
83
85
  "to": {
84
86
  "type": "Number",
87
+ "required": true,
85
88
  "desc": "The index of the last list item that is rendered (0 based)",
86
89
  "examples": [ 50 ]
87
90
  },
88
91
  "direction": {
89
92
  "type": "String",
93
+ "required": true,
90
94
  "desc": "Direction of change",
91
95
  "values": [ "increase", "decrease" ]
92
96
  },
93
97
  "ref": {
94
- "type": "Object",
95
- "desc": "Vue reference to the QVirtualList which triggered the event",
96
- "__exemption": [
97
- "examples"
98
- ]
98
+ "type": "Component",
99
+ "required": true,
100
+ "desc": "Vue reference to the component which triggered the event"
99
101
  }
100
102
  }
101
103
  }
@@ -75,7 +75,7 @@ export const useFieldProps = {
75
75
  export const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popup-show', 'popup-hide' ]
76
76
 
77
77
  export function useFieldState () {
78
- const { props, attrs, proxy } = getCurrentInstance()
78
+ const { props, attrs, proxy, vnode } = getCurrentInstance()
79
79
 
80
80
  const isDark = useDark(props, proxy.$q)
81
81
 
@@ -88,9 +88,9 @@ export function useFieldState () {
88
88
 
89
89
  innerLoading: ref(false),
90
90
  focused: ref(false),
91
- hasPopupOpen: ref(false),
91
+ hasPopupOpen: false,
92
92
 
93
- splitAttrs: useSplitAttrs(attrs),
93
+ splitAttrs: useSplitAttrs(attrs, vnode),
94
94
  targetUid: ref(getTargetUid(props.for)),
95
95
 
96
96
  rootRef: ref(null),
@@ -301,7 +301,7 @@ export default function (state) {
301
301
  focusoutTimer = setTimeout(() => {
302
302
  if (
303
303
  document.hasFocus() === true && (
304
- state.hasPopupOpen.value === true
304
+ state.hasPopupOpen === true
305
305
  || (
306
306
  state.controlRef !== void 0
307
307
  && (
@@ -16,12 +16,21 @@ export default function (props, rootRef) {
16
16
  })
17
17
 
18
18
  function refocusTarget (e) {
19
+ const root = rootRef.value
20
+
19
21
  if (e !== void 0 && e.type.indexOf('key') === 0) {
20
- if (document.activeElement !== rootRef.value && rootRef.value.contains(document.activeElement) === true) {
21
- rootRef.value.focus()
22
+ if (
23
+ root !== null
24
+ && document.activeElement !== root
25
+ && root.contains(document.activeElement) === true
26
+ ) {
27
+ root.focus()
22
28
  }
23
29
  }
24
- else if ((e === void 0 || rootRef.value.contains(e.target) === true) && refocusRef.value !== null) {
30
+ else if (
31
+ refocusRef.value !== null
32
+ && (e === void 0 || (root !== null && root.contains(e.target) === true))
33
+ ) {
25
34
  refocusRef.value.focus()
26
35
  }
27
36
  }