quasar 2.10.0 → 2.10.2

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 (319) hide show
  1. package/dist/api/Dialog.json +28 -69
  2. package/dist/api/Intersection.json +25 -100
  3. package/dist/api/Loading.json +5 -20
  4. package/dist/api/LoadingBar.json +1 -7
  5. package/dist/api/LocalStorage.json +4 -16
  6. package/dist/api/Morph.json +2 -14
  7. package/dist/api/Notify.json +0 -3
  8. package/dist/api/Platform.json +1 -4
  9. package/dist/api/QAjaxBar.json +1 -11
  10. package/dist/api/QBreadcrumbs.json +0 -8
  11. package/dist/api/QBtn.json +0 -3
  12. package/dist/api/QBtnDropdown.json +0 -12
  13. package/dist/api/QCarousel.json +0 -10
  14. package/dist/api/QCarouselControl.json +0 -3
  15. package/dist/api/QCircularProgress.json +0 -23
  16. package/dist/api/QColor.json +0 -3
  17. package/dist/api/QDialog.json +18 -9
  18. package/dist/api/QDrawer.json +0 -6
  19. package/dist/api/QExpansionItem.json +0 -3
  20. package/dist/api/QFab.json +1 -6
  21. package/dist/api/QFabAction.json +1 -3
  22. package/dist/api/QField.json +1 -6
  23. package/dist/api/QFile.json +12 -29
  24. package/dist/api/QFooter.json +0 -3
  25. package/dist/api/QHeader.json +0 -6
  26. package/dist/api/QInfiniteScroll.json +9 -16
  27. package/dist/api/QInnerLoading.json +0 -4
  28. package/dist/api/QInput.json +8 -15
  29. package/dist/api/QIntersection.json +0 -4
  30. package/dist/api/QItemLabel.json +0 -5
  31. package/dist/api/QKnob.json +3 -36
  32. package/dist/api/QLayout.json +6 -24
  33. package/dist/api/QLinearProgress.json +0 -6
  34. package/dist/api/QList.json +15 -0
  35. package/dist/api/QMenu.json +7 -12
  36. package/dist/api/QOptionGroup.json +0 -3
  37. package/dist/api/QPage.json +2 -8
  38. package/dist/api/QPageScroller.json +0 -9
  39. package/dist/api/QPageSticky.json +0 -3
  40. package/dist/api/QPagination.json +4 -25
  41. package/dist/api/QParallax.json +2 -14
  42. package/dist/api/QPopupEdit.json +0 -8
  43. package/dist/api/QPopupProxy.json +21 -4
  44. package/dist/api/QRange.json +5 -32
  45. package/dist/api/QRating.json +0 -4
  46. package/dist/api/QResizeObserver.json +2 -8
  47. package/dist/api/QScrollArea.json +8 -36
  48. package/dist/api/QScrollObserver.json +6 -24
  49. package/dist/api/QSelect.json +18 -108
  50. package/dist/api/QSlideItem.json +1 -6
  51. package/dist/api/QSlideTransition.json +0 -4
  52. package/dist/api/QSlider.json +3 -24
  53. package/dist/api/QSpinner.json +0 -4
  54. package/dist/api/QSplitter.json +1 -4
  55. package/dist/api/QStepper.json +0 -7
  56. package/dist/api/QTabPanels.json +0 -7
  57. package/dist/api/QTable.json +43 -191
  58. package/dist/api/QTabs.json +0 -6
  59. package/dist/api/QTime.json +3 -12
  60. package/dist/api/QTooltip.json +7 -18
  61. package/dist/api/QTree.json +0 -3
  62. package/dist/api/QUploader.json +5 -16
  63. package/dist/api/QVirtualScroll.json +11 -56
  64. package/dist/api/Screen.json +9 -36
  65. package/dist/api/Scroll.json +2 -8
  66. package/dist/api/SessionStorage.json +4 -16
  67. package/dist/api/TouchHold.json +3 -12
  68. package/dist/api/TouchPan.json +7 -28
  69. package/dist/api/TouchRepeat.json +6 -24
  70. package/dist/api/TouchSwipe.json +3 -12
  71. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  72. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  73. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  74. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  75. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  76. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  77. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  78. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  79. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  80. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  81. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  82. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  83. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  84. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  85. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  86. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  87. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  88. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  89. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  90. package/dist/icon-set/mdi-v7.umd.prod.js +6 -0
  91. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  92. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  93. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  94. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  95. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  96. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  97. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  98. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  99. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  100. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  101. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  102. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  103. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  104. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  105. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  106. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  107. package/dist/icon-set/svg-mdi-v7.umd.prod.js +6 -0
  108. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  109. package/dist/icon-set/themify.umd.prod.js +1 -1
  110. package/dist/lang/ar-TN.umd.prod.js +1 -1
  111. package/dist/lang/ar.umd.prod.js +1 -1
  112. package/dist/lang/az-Latn.umd.prod.js +1 -1
  113. package/dist/lang/bg.umd.prod.js +1 -1
  114. package/dist/lang/bn.umd.prod.js +1 -1
  115. package/dist/lang/ca.umd.prod.js +1 -1
  116. package/dist/lang/cs.umd.prod.js +1 -1
  117. package/dist/lang/da.umd.prod.js +1 -1
  118. package/dist/lang/de.umd.prod.js +1 -1
  119. package/dist/lang/el.umd.prod.js +1 -1
  120. package/dist/lang/en-GB.umd.prod.js +1 -1
  121. package/dist/lang/en-US.umd.prod.js +1 -1
  122. package/dist/lang/eo.umd.prod.js +1 -1
  123. package/dist/lang/es.umd.prod.js +1 -1
  124. package/dist/lang/et.umd.prod.js +1 -1
  125. package/dist/lang/eu.umd.prod.js +1 -1
  126. package/dist/lang/fa-IR.umd.prod.js +1 -1
  127. package/dist/lang/fa.umd.prod.js +1 -1
  128. package/dist/lang/fi.umd.prod.js +1 -1
  129. package/dist/lang/fr.umd.prod.js +1 -1
  130. package/dist/lang/gn.umd.prod.js +1 -1
  131. package/dist/lang/he.umd.prod.js +1 -1
  132. package/dist/lang/hr.umd.prod.js +1 -1
  133. package/dist/lang/hu.umd.prod.js +1 -1
  134. package/dist/lang/id.umd.prod.js +1 -1
  135. package/dist/lang/is.umd.prod.js +1 -1
  136. package/dist/lang/it.umd.prod.js +1 -1
  137. package/dist/lang/ja.umd.prod.js +1 -1
  138. package/dist/lang/km.umd.prod.js +1 -1
  139. package/dist/lang/ko-KR.umd.prod.js +1 -1
  140. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  141. package/dist/lang/kz.umd.prod.js +1 -1
  142. package/dist/lang/lt.umd.prod.js +1 -1
  143. package/dist/lang/lu.umd.prod.js +1 -1
  144. package/dist/lang/lv.umd.prod.js +1 -1
  145. package/dist/lang/ml.umd.prod.js +1 -1
  146. package/dist/lang/mm.umd.prod.js +1 -1
  147. package/dist/lang/ms.umd.prod.js +1 -1
  148. package/dist/lang/my.umd.prod.js +1 -1
  149. package/dist/lang/nb-NO.umd.prod.js +1 -1
  150. package/dist/lang/nl.umd.prod.js +1 -1
  151. package/dist/lang/pl.umd.prod.js +1 -1
  152. package/dist/lang/pt-BR.umd.prod.js +1 -1
  153. package/dist/lang/pt.umd.prod.js +1 -1
  154. package/dist/lang/ro.umd.prod.js +1 -1
  155. package/dist/lang/ru.umd.prod.js +1 -1
  156. package/dist/lang/sk.umd.prod.js +1 -1
  157. package/dist/lang/sl.umd.prod.js +1 -1
  158. package/dist/lang/sm.umd.prod.js +1 -1
  159. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  160. package/dist/lang/sr.umd.prod.js +1 -1
  161. package/dist/lang/sv.umd.prod.js +1 -1
  162. package/dist/lang/ta.umd.prod.js +1 -1
  163. package/dist/lang/th.umd.prod.js +1 -1
  164. package/dist/lang/tr.umd.prod.js +1 -1
  165. package/dist/lang/ug.umd.prod.js +1 -1
  166. package/dist/lang/uk.umd.prod.js +1 -1
  167. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  168. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  169. package/dist/lang/vi.umd.prod.js +1 -1
  170. package/dist/lang/zh-CN.umd.prod.js +1 -1
  171. package/dist/lang/zh-TW.umd.prod.js +1 -1
  172. package/dist/quasar.cjs.prod.js +2 -2
  173. package/dist/quasar.css +3 -3
  174. package/dist/quasar.esm.js +223 -192
  175. package/dist/quasar.esm.prod.js +2 -2
  176. package/dist/quasar.prod.css +1 -1
  177. package/dist/quasar.rtl.css +10 -3
  178. package/dist/quasar.rtl.prod.css +1 -1
  179. package/dist/quasar.sass +5 -4
  180. package/dist/quasar.umd.js +222 -191
  181. package/dist/quasar.umd.prod.js +2 -2
  182. package/dist/types/api/dialog.d.ts +101 -0
  183. package/dist/types/api/qpopupproxy.d.ts +3 -0
  184. package/dist/types/api.d.ts +2 -0
  185. package/dist/types/index.d.ts +56 -97
  186. package/dist/vetur/quasar-attributes.json +4 -0
  187. package/dist/vetur/quasar-tags.json +2 -1
  188. package/dist/web-types/web-types.json +142 -132
  189. package/icon-set/mdi-v7.js +146 -0
  190. package/icon-set/mdi-v7.mjs +141 -0
  191. package/icon-set/svg-mdi-v7.js +224 -0
  192. package/icon-set/svg-mdi-v7.mjs +224 -0
  193. package/package.json +4 -4
  194. package/src/api.extends.json +1 -2
  195. package/src/components/ajax-bar/QAjaxBar.json +5 -11
  196. package/src/components/breadcrumbs/QBreadcrumbs.json +0 -2
  197. package/src/components/breadcrumbs/QBreadcrumbsEl.json +1 -2
  198. package/src/components/btn/QBtn.json +1 -3
  199. package/src/components/btn/__tests__/QBtn.spec.js +87 -14
  200. package/src/components/btn/__tests__/use-btn.spec.js +385 -58
  201. package/src/components/btn-dropdown/QBtnDropdown.js +4 -12
  202. package/src/components/btn-dropdown/QBtnDropdown.json +0 -2
  203. package/src/components/btn-toggle/QBtnToggle.json +2 -4
  204. package/src/components/carousel/QCarousel.json +4 -9
  205. package/src/components/carousel/QCarouselControl.json +0 -1
  206. package/src/components/checkbox/use-checkbox.json +1 -2
  207. package/src/components/circular-progress/QCircularProgress.json +0 -5
  208. package/src/components/color/QColor.json +0 -1
  209. package/src/components/date/QDate.js +6 -4
  210. package/src/components/date/QDate.json +28 -56
  211. package/src/components/dialog/QDialog.js +34 -41
  212. package/src/components/dialog/QDialog.json +9 -2
  213. package/src/components/dialog-bottom-sheet/BottomSheet.js +1 -2
  214. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  215. package/src/components/drawer/QDrawer.js +5 -5
  216. package/src/components/drawer/QDrawer.json +0 -4
  217. package/src/components/editor/QEditor.json +3 -6
  218. package/src/components/expansion-item/QExpansionItem.js +3 -4
  219. package/src/components/expansion-item/QExpansionItem.json +3 -8
  220. package/src/components/fab/QFab.js +3 -6
  221. package/src/components/fab/QFab.json +0 -1
  222. package/src/components/fab/QFab.sass +2 -1
  223. package/src/components/fab/use-fab.json +0 -1
  224. package/src/components/field/QField.json +0 -1
  225. package/src/components/file/QFile.js +4 -1
  226. package/src/components/file/QFile.json +19 -20
  227. package/src/components/footer/QFooter.json +0 -1
  228. package/src/components/form/QForm.js +5 -3
  229. package/src/components/form/QForm.json +2 -4
  230. package/src/components/header/QHeader.json +0 -4
  231. package/src/components/img/QImg.js +20 -19
  232. package/src/components/infinite-scroll/QInfiniteScroll.json +9 -6
  233. package/src/components/inner-loading/QInnerLoading.js +2 -5
  234. package/src/components/input/QInput.js +12 -3
  235. package/src/components/input/QInput.json +11 -7
  236. package/src/components/input/use-mask.js +3 -1
  237. package/src/components/intersection/QIntersection.json +0 -1
  238. package/src/components/item/QItem.json +1 -2
  239. package/src/components/item/QItemLabel.json +0 -1
  240. package/src/components/item/QList.js +7 -2
  241. package/src/components/item/QList.json +7 -0
  242. package/src/components/knob/QKnob.js +3 -3
  243. package/src/components/knob/QKnob.json +3 -12
  244. package/src/components/layout/QLayout.js +1 -1
  245. package/src/components/layout/QLayout.json +6 -12
  246. package/src/components/linear-progress/QLinearProgress.json +0 -2
  247. package/src/components/menu/QMenu.js +12 -6
  248. package/src/components/menu/QMenu.json +0 -2
  249. package/src/components/option-group/QOptionGroup.json +2 -5
  250. package/src/components/page/QPage.json +3 -6
  251. package/src/components/page-scroller/QPageScroller.json +0 -2
  252. package/src/components/page-sticky/QPageSticky.json +0 -1
  253. package/src/components/pagination/QPagination.json +5 -13
  254. package/src/components/parallax/QParallax.json +2 -6
  255. package/src/components/popup-edit/QPopupEdit.js +3 -3
  256. package/src/components/popup-edit/QPopupEdit.json +4 -10
  257. package/src/components/popup-proxy/QPopupProxy.js +6 -0
  258. package/src/components/popup-proxy/QPopupProxy.json +19 -1
  259. package/src/components/radio/QRadio.json +1 -2
  260. package/src/components/range/QRange.json +2 -4
  261. package/src/components/rating/QRating.json +0 -1
  262. package/src/components/resize-observer/QResizeObserver.json +2 -4
  263. package/src/components/scroll-area/QScrollArea.js +15 -4
  264. package/src/components/scroll-area/QScrollArea.json +24 -50
  265. package/src/components/scroll-observer/QScrollObserver.js +2 -0
  266. package/src/components/scroll-observer/QScrollObserver.json +6 -12
  267. package/src/components/select/QSelect.js +28 -27
  268. package/src/components/select/QSelect.json +30 -65
  269. package/src/components/select/QSelect.sass +2 -2
  270. package/src/components/slide-item/QSlideItem.json +1 -2
  271. package/src/components/slide-transition/QSlideTransition.json +0 -1
  272. package/src/components/slider/use-slider.json +33 -70
  273. package/src/components/spinner/QSpinner.json +0 -1
  274. package/src/components/splitter/QSplitter.json +1 -2
  275. package/src/components/table/QTable.js +3 -3
  276. package/src/components/table/QTable.json +118 -239
  277. package/src/components/tabs/QRouteTab.json +0 -1
  278. package/src/components/tabs/QTabs.json +0 -2
  279. package/src/components/time/QTime.json +10 -20
  280. package/src/components/tooltip/QTooltip.js +2 -5
  281. package/src/components/tooltip/QTooltip.json +0 -4
  282. package/src/components/tree/QTree.js +6 -6
  283. package/src/components/tree/QTree.json +15 -31
  284. package/src/components/uploader/QUploader.json +13 -22
  285. package/src/components/uploader/xhr-uploader-plugin.js +1 -1
  286. package/src/components/uploader/xhr-uploader-plugin.json +25 -50
  287. package/src/components/virtual-scroll/QVirtualScroll.json +5 -10
  288. package/src/components/virtual-scroll/use-virtual-scroll.js +1 -1
  289. package/src/components/virtual-scroll/use-virtual-scroll.json +8 -19
  290. package/src/composables/private/use-field.js +1 -1
  291. package/src/composables/private/use-field.json +2 -3
  292. package/src/composables/private/use-file.json +4 -13
  293. package/src/composables/private/use-model-toggle.js +3 -3
  294. package/src/composables/private/use-panel.js +2 -2
  295. package/src/composables/private/use-panel.json +0 -2
  296. package/src/composables/private/use-portal.js +5 -1
  297. package/src/composables/private/use-portal.json +7 -1
  298. package/src/composables/private/use-transition.js +17 -11
  299. package/src/composables/private/use-transition.json +0 -1
  300. package/src/composables/private/use-validate.json +1 -3
  301. package/src/directives/Intersection.json +26 -53
  302. package/src/directives/Morph.json +4 -8
  303. package/src/directives/Mutation.json +6 -12
  304. package/src/directives/Scroll.json +2 -4
  305. package/src/directives/TouchHold.json +3 -6
  306. package/src/directives/TouchPan.json +7 -14
  307. package/src/directives/TouchRepeat.json +6 -12
  308. package/src/directives/TouchSwipe.json +3 -6
  309. package/src/plugins/BottomSheet.json +1 -2
  310. package/src/plugins/Cookies.json +2 -4
  311. package/src/plugins/Dialog.json +35 -73
  312. package/src/plugins/Loading.json +6 -11
  313. package/src/plugins/LoadingBar.json +3 -6
  314. package/src/plugins/Notify.json +4 -5
  315. package/src/plugins/Platform.json +3 -6
  316. package/src/plugins/Screen.json +9 -18
  317. package/src/utils/private/global-dialog.json +6 -12
  318. package/src/utils/private/portal.js +4 -4
  319. package/src/utils/private/web-storage.json +6 -10
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.10.0
2
+ * Quasar Framework v2.10.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1610,7 +1610,7 @@ function prepareApp (app, uiOpts, pluginOpts) {
1610
1610
  }
1611
1611
 
1612
1612
  var installQuasar = function (parentApp, opts = {}) {
1613
- const $q = { version: '2.10.0' };
1613
+ const $q = { version: '2.10.2' };
1614
1614
 
1615
1615
  if (globalConfigIsFrozen === false) {
1616
1616
  if (opts.config !== void 0) {
@@ -4185,7 +4185,7 @@ const useModelToggleProps = {
4185
4185
  };
4186
4186
 
4187
4187
  const useModelToggleEmits = [
4188
- 'before-show', 'show', 'before-hide', 'hide'
4188
+ 'beforeShow', 'show', 'beforeHide', 'hide'
4189
4189
  ];
4190
4190
 
4191
4191
  // handleShow/handleHide -> removeTick(), self (& emit show)
@@ -4245,7 +4245,7 @@ function useModelToggle ({
4245
4245
 
4246
4246
  showing.value = true;
4247
4247
 
4248
- emit('before-show', evt);
4248
+ emit('beforeShow', evt);
4249
4249
 
4250
4250
  if (handleShow !== void 0) {
4251
4251
  handleShow(evt);
@@ -4284,7 +4284,7 @@ function useModelToggle ({
4284
4284
 
4285
4285
  showing.value = false;
4286
4286
 
4287
- emit('before-hide', evt);
4287
+ emit('beforeHide', evt);
4288
4288
 
4289
4289
  if (handleHide !== void 0) {
4290
4290
  handleHide(evt);
@@ -4406,8 +4406,8 @@ const portalProxyList = [];
4406
4406
 
4407
4407
  function getPortalProxy (el) {
4408
4408
  return portalProxyList.find(proxy =>
4409
- proxy.__qPortalInnerRef.value !== null
4410
- && proxy.__qPortalInnerRef.value.contains(el)
4409
+ proxy.contentEl !== null
4410
+ && proxy.contentEl.contains(el)
4411
4411
  )
4412
4412
  }
4413
4413
 
@@ -4421,7 +4421,7 @@ function closePortalMenus (proxy, evt) {
4421
4421
  return getParentProxy(proxy)
4422
4422
  }
4423
4423
  }
4424
- else if (proxy.__qPortalInnerRef !== void 0) {
4424
+ else if (proxy.__qPortal === true) {
4425
4425
  // treat it as point of separation if parent is QPopupProxy
4426
4426
  // (so mobile matches desktop behavior)
4427
4427
  // and hide it too
@@ -4442,7 +4442,7 @@ function closePortalMenus (proxy, evt) {
4442
4442
 
4443
4443
  function closePortals (proxy, evt, depth) {
4444
4444
  while (depth !== 0 && proxy !== void 0 && proxy !== null) {
4445
- if (proxy.__qPortalInnerRef !== void 0) {
4445
+ if (proxy.__qPortal === true) {
4446
4446
  depth--;
4447
4447
 
4448
4448
  if (proxy.$options.name === 'QMenu') {
@@ -4534,7 +4534,10 @@ function usePortal (vm, innerRef, renderPortalContent, checkGlobalDialog) {
4534
4534
  onUnmounted(() => { hidePortal(true); });
4535
4535
 
4536
4536
  // needed for portal vm detection
4537
- vm.proxy.__qPortalInnerRef = innerRef;
4537
+ vm.proxy.__qPortal = true;
4538
+
4539
+ // public way of accessing the rendered content
4540
+ injectProp(vm.proxy, 'contentEl', () => innerRef.value);
4538
4541
 
4539
4542
  return {
4540
4543
  showPortal,
@@ -4572,18 +4575,24 @@ const useTransitionProps = {
4572
4575
  }
4573
4576
  };
4574
4577
 
4575
- function useTransition (props, showing) {
4576
- const transitionState = ref(showing.value);
4578
+ function useTransition (props, defaultShowFn = () => {}, defaultHideFn = () => {}) {
4579
+ return {
4580
+ transitionProps: computed(() => {
4581
+ const show = `q-transition--${ props.transitionShow || defaultShowFn() }`;
4582
+ const hide = `q-transition--${ props.transitionHide || defaultHideFn() }`;
4577
4583
 
4578
- watch(showing, val => {
4579
- nextTick(() => { transitionState.value = val; });
4580
- });
4584
+ return {
4585
+ appear: true,
4581
4586
 
4582
- // return transition
4583
- return {
4584
- transition: computed(() => 'q-transition--' + (
4585
- transitionState.value === true ? props.transitionHide : props.transitionShow
4586
- )),
4587
+ enterFromClass: `${ show }-enter-from`,
4588
+ enterActiveClass: `${ show }-enter-active`,
4589
+ enterToClass: `${ show }-enter-to`,
4590
+
4591
+ leaveFromClass: `${ hide }-leave-from`,
4592
+ leaveActiveClass: `${ hide }-leave-active`,
4593
+ leaveToClass: `${ hide }-leave-to`
4594
+ }
4595
+ }),
4587
4596
 
4588
4597
  transitionStyle: computed(() => `--q-transition-duration: ${ props.transitionDuration }ms`)
4589
4598
  }
@@ -5306,7 +5315,7 @@ var QMenu = createComponent({
5306
5315
 
5307
5316
  emits: [
5308
5317
  ...useModelToggleEmits,
5309
- 'click', 'escape-key'
5318
+ 'click', 'escapeKey'
5310
5319
  ],
5311
5320
 
5312
5321
  setup (props, { slots, emit, attrs }) {
@@ -5327,7 +5336,7 @@ var QMenu = createComponent({
5327
5336
  const isDark = useDark(props, $q);
5328
5337
  const { registerTick, removeTick } = useTick();
5329
5338
  const { registerTimeout } = useTimeout();
5330
- const { transition, transitionStyle } = useTransition(props, showing);
5339
+ const { transitionProps, transitionStyle } = useTransition(props);
5331
5340
  const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
5332
5341
 
5333
5342
  const { anchorEl, canShow } = useAnchor({ showing });
@@ -5407,7 +5416,10 @@ var QMenu = createComponent({
5407
5416
  let node = innerRef.value;
5408
5417
 
5409
5418
  if (node && node.contains(document.activeElement) !== true) {
5410
- node = node.querySelector('[autofocus], [data-autofocus]') || node;
5419
+ node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
5420
+ || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
5421
+ || node.querySelector('[autofocus], [data-autofocus]')
5422
+ || node;
5411
5423
  node.focus({ preventScroll: true });
5412
5424
  }
5413
5425
  });
@@ -5482,7 +5494,10 @@ var QMenu = createComponent({
5482
5494
  || evt.qClickOutside !== true
5483
5495
  )
5484
5496
  ) {
5485
- refocusTarget.focus();
5497
+ ((evt && evt.type.indexOf('key') === 0
5498
+ ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
5499
+ : void 0
5500
+ ) || refocusTarget).focus();
5486
5501
  refocusTarget = null;
5487
5502
  }
5488
5503
 
@@ -5544,7 +5559,7 @@ var QMenu = createComponent({
5544
5559
  }
5545
5560
 
5546
5561
  function onEscapeKey (evt) {
5547
- emit('escape-key');
5562
+ emit('escapeKey');
5548
5563
  hide(evt);
5549
5564
  }
5550
5565
 
@@ -5572,7 +5587,7 @@ var QMenu = createComponent({
5572
5587
  function renderPortalContent () {
5573
5588
  return h(
5574
5589
  Transition,
5575
- { name: transition.value, appear: true },
5590
+ transitionProps.value,
5576
5591
  () => (
5577
5592
  showing.value === true
5578
5593
  ? h('div', {
@@ -5679,13 +5694,6 @@ function uid$3 () {
5679
5694
 
5680
5695
  const btnPropsList = Object.keys(useBtnProps);
5681
5696
 
5682
- // let's not duplicate type checking and prop validations
5683
- // so just specify the props here with no type description
5684
- const btnProps = btnPropsList.reduce(
5685
- (acc, key) => (acc[ key ] = {}) && acc,
5686
- {}
5687
- );
5688
-
5689
5697
  const passBtnProps = props => btnPropsList.reduce(
5690
5698
  (acc, key) => {
5691
5699
  const val = props[ key ];
@@ -5701,7 +5709,7 @@ var QBtnDropdown = createComponent({
5701
5709
  name: 'QBtnDropdown',
5702
5710
 
5703
5711
  props: {
5704
- ...btnProps,
5712
+ ...useBtnProps,
5705
5713
  ...useTransitionProps,
5706
5714
 
5707
5715
  modelValue: Boolean,
@@ -5734,7 +5742,7 @@ var QBtnDropdown = createComponent({
5734
5742
  toggleAriaLabel: String
5735
5743
  },
5736
5744
 
5737
- emits: [ 'update:modelValue', 'click', 'before-show', 'show', 'before-hide', 'hide' ],
5745
+ emits: [ 'update:modelValue', 'click', 'beforeShow', 'show', 'beforeHide', 'hide' ],
5738
5746
 
5739
5747
  setup (props, { slots, emit }) {
5740
5748
  const { proxy } = getCurrentInstance();
@@ -5748,7 +5756,6 @@ var QBtnDropdown = createComponent({
5748
5756
  'aria-expanded': showing.value === true ? 'true' : 'false',
5749
5757
  'aria-haspopup': 'true',
5750
5758
  'aria-controls': targetUid,
5751
- 'aria-owns': targetUid,
5752
5759
  'aria-label': props.toggleAriaLabel || proxy.$q.lang.label[ showing.value === true ? 'collapse' : 'expand' ](props.label)
5753
5760
  };
5754
5761
 
@@ -5782,7 +5789,7 @@ var QBtnDropdown = createComponent({
5782
5789
 
5783
5790
  function onBeforeShow (e) {
5784
5791
  showing.value = true;
5785
- emit('before-show', e);
5792
+ emit('beforeShow', e);
5786
5793
  }
5787
5794
 
5788
5795
  function onShow (e) {
@@ -5792,7 +5799,7 @@ var QBtnDropdown = createComponent({
5792
5799
 
5793
5800
  function onBeforeHide (e) {
5794
5801
  showing.value = false;
5795
- emit('before-hide', e);
5802
+ emit('beforeHide', e);
5796
5803
  }
5797
5804
 
5798
5805
  function onHide (e) {
@@ -6554,7 +6561,7 @@ const usePanelProps = {
6554
6561
  keepAliveMax: Number
6555
6562
  };
6556
6563
 
6557
- const usePanelEmits = [ 'update:modelValue', 'before-transition', 'transition' ];
6564
+ const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transition' ];
6558
6565
 
6559
6566
  function usePanel () {
6560
6567
  const { props, emit, proxy } = getCurrentInstance();
@@ -6626,7 +6633,7 @@ function usePanel () {
6626
6633
 
6627
6634
  if (panelIndex.value !== index) {
6628
6635
  panelIndex.value = index;
6629
- emit('before-transition', newVal, oldVal);
6636
+ emit('beforeTransition', newVal, oldVal);
6630
6637
  nextTick(() => {
6631
6638
  emit('transition', newVal, oldVal);
6632
6639
  });
@@ -13086,7 +13093,7 @@ var QDate = createComponent({
13086
13093
 
13087
13094
  emits: [
13088
13095
  ...useDatetimeEmits,
13089
- 'range-start', 'range-end', 'navigation'
13096
+ 'rangeStart', 'rangeEnd', 'navigation'
13090
13097
  ],
13091
13098
 
13092
13099
  setup (props, { slots, emit }) {
@@ -13712,7 +13719,9 @@ var QDate = createComponent({
13712
13719
  });
13713
13720
 
13714
13721
  watch(view, () => {
13715
- blurTargetRef.value !== null && blurTargetRef.value.focus();
13722
+ if (blurTargetRef.value !== null && proxy.$el.contains(document.activeElement) === true) {
13723
+ blurTargetRef.value.focus();
13724
+ }
13716
13725
  });
13717
13726
 
13718
13727
  watch(() => viewModel.value.year, year => {
@@ -14395,7 +14404,7 @@ var QDate = createComponent({
14395
14404
  finalHash: initHash
14396
14405
  };
14397
14406
 
14398
- emit('range-start', getShortDate(day));
14407
+ emit('rangeStart', getShortDate(day));
14399
14408
  }
14400
14409
  else {
14401
14410
  const
@@ -14408,7 +14417,7 @@ var QDate = createComponent({
14408
14417
  editRange.value = null;
14409
14418
  addToModel(initHash === finalHash ? day : { target: day, ...payload });
14410
14419
 
14411
- emit('range-end', {
14420
+ emit('rangeEnd', {
14412
14421
  from: getShortDate(payload.from),
14413
14422
  to: getShortDate(payload.to)
14414
14423
  });
@@ -14713,7 +14722,7 @@ const positionClass$1 = {
14713
14722
  left: 'fixed-left items-center'
14714
14723
  };
14715
14724
 
14716
- const transitions = {
14725
+ const defaultTransitions = {
14717
14726
  standard: [ 'scale', 'scale' ],
14718
14727
  top: [ 'slide-down', 'slide-up' ],
14719
14728
  bottom: [ 'slide-up', 'slide-down' ],
@@ -14730,8 +14739,8 @@ var QDialog = createComponent({
14730
14739
  ...useModelToggleProps,
14731
14740
  ...useTransitionProps,
14732
14741
 
14733
- transitionShow: String,
14734
- transitionHide: String,
14742
+ transitionShow: String, // override useTransitionProps
14743
+ transitionHide: String, // override useTransitionProps
14735
14744
 
14736
14745
  persistent: Boolean,
14737
14746
  autoClose: Boolean,
@@ -14762,7 +14771,7 @@ var QDialog = createComponent({
14762
14771
 
14763
14772
  emits: [
14764
14773
  ...useModelToggleEmits,
14765
- 'shake', 'click', 'escape-key'
14774
+ 'shake', 'click', 'escapeKey'
14766
14775
  ],
14767
14776
 
14768
14777
  setup (props, { slots, emit, attrs }) {
@@ -14770,7 +14779,6 @@ var QDialog = createComponent({
14770
14779
 
14771
14780
  const innerRef = ref(null);
14772
14781
  const showing = ref(false);
14773
- const transitionState = ref(false);
14774
14782
  const animating = ref(false);
14775
14783
 
14776
14784
  let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose;
@@ -14785,6 +14793,12 @@ var QDialog = createComponent({
14785
14793
  const { registerTimeout } = useTimeout();
14786
14794
  const { registerTick, removeTick } = useTick();
14787
14795
 
14796
+ const { transitionProps, transitionStyle } = useTransition(
14797
+ props,
14798
+ () => defaultTransitions[ props.position ][ 0 ],
14799
+ () => defaultTransitions[ props.position ][ 1 ]
14800
+ );
14801
+
14788
14802
  const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(
14789
14803
  vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true
14790
14804
  );
@@ -14809,26 +14823,6 @@ var QDialog = createComponent({
14809
14823
  + (props.square === true ? ' q-dialog__inner--square' : '')
14810
14824
  );
14811
14825
 
14812
- const transitionShow = computed(() =>
14813
- 'q-transition--'
14814
- + (props.transitionShow === void 0 ? transitions[ props.position ][ 0 ] : props.transitionShow)
14815
- );
14816
-
14817
- const transitionHide = computed(() =>
14818
- 'q-transition--'
14819
- + (props.transitionHide === void 0 ? transitions[ props.position ][ 1 ] : props.transitionHide)
14820
- );
14821
-
14822
- const transition = computed(() => (
14823
- transitionState.value === true
14824
- ? transitionHide.value
14825
- : transitionShow.value
14826
- ));
14827
-
14828
- const transitionStyle = computed(
14829
- () => `--q-transition-duration: ${ props.transitionDuration }ms`
14830
- );
14831
-
14832
14826
  const useBackdrop = computed(() => showing.value === true && props.seamless !== true);
14833
14827
 
14834
14828
  const onEvents = computed(() => (
@@ -14843,12 +14837,6 @@ var QDialog = createComponent({
14843
14837
  attrs.class
14844
14838
  ]);
14845
14839
 
14846
- watch(showing, val => {
14847
- nextTick(() => {
14848
- transitionState.value = val;
14849
- });
14850
- });
14851
-
14852
14840
  watch(() => props.maximized, state => {
14853
14841
  showing.value === true && updateMaximized(state);
14854
14842
  });
@@ -14928,7 +14916,10 @@ var QDialog = createComponent({
14928
14916
  hidePortal();
14929
14917
 
14930
14918
  if (refocusTarget !== null) {
14931
- refocusTarget.focus();
14919
+ ((evt && evt.type.indexOf('key') === 0
14920
+ ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
14921
+ : void 0
14922
+ ) || refocusTarget).focus();
14932
14923
  refocusTarget = null;
14933
14924
  }
14934
14925
 
@@ -14948,13 +14939,23 @@ var QDialog = createComponent({
14948
14939
  return
14949
14940
  }
14950
14941
 
14951
- node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node;
14942
+ node = (selector !== '' ? node.querySelector(selector) : null)
14943
+ || node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
14944
+ || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
14945
+ || node.querySelector('[autofocus], [data-autofocus]')
14946
+ || node;
14952
14947
  node.focus({ preventScroll: true });
14953
14948
  });
14954
14949
  }
14955
14950
 
14956
- function shake () {
14957
- focus();
14951
+ function shake (focusTarget) {
14952
+ if (focusTarget && typeof focusTarget.focus === 'function') {
14953
+ focusTarget.focus({ preventScroll: true });
14954
+ }
14955
+ else {
14956
+ focus();
14957
+ }
14958
+
14958
14959
  emit('shake');
14959
14960
 
14960
14961
  const node = innerRef.value;
@@ -14980,7 +14981,7 @@ var QDialog = createComponent({
14980
14981
  props.maximized !== true && props.noShake !== true && shake();
14981
14982
  }
14982
14983
  else {
14983
- emit('escape-key');
14984
+ emit('escapeKey');
14984
14985
  hide();
14985
14986
  }
14986
14987
  }
@@ -15035,7 +15036,7 @@ var QDialog = createComponent({
15035
15036
  hide(e);
15036
15037
  }
15037
15038
  else if (props.noShake !== true) {
15038
- shake();
15039
+ shake(e.relatedTarget);
15039
15040
  }
15040
15041
  }
15041
15042
 
@@ -15078,14 +15079,15 @@ var QDialog = createComponent({
15078
15079
  class: 'q-dialog__backdrop fixed-full',
15079
15080
  style: transitionStyle.value,
15080
15081
  'aria-hidden': 'true',
15081
- onMousedown: onBackdropClick
15082
+ tabindex: -1,
15083
+ onFocusin: onBackdropClick
15082
15084
  })
15083
15085
  : null
15084
15086
  )),
15085
15087
 
15086
15088
  h(
15087
15089
  Transition,
15088
- { name: transition.value, appear: true },
15090
+ transitionProps.value,
15089
15091
  () => (
15090
15092
  showing.value === true
15091
15093
  ? h('div', {
@@ -15158,7 +15160,7 @@ var QDrawer = createComponent({
15158
15160
 
15159
15161
  emits: [
15160
15162
  ...useModelToggleEmits,
15161
- 'on-layout', 'mini-state'
15163
+ 'onLayout', 'miniState'
15162
15164
  ],
15163
15165
 
15164
15166
  setup (props, { slots, emit, attrs }) {
@@ -15491,7 +15493,7 @@ var QDrawer = createComponent({
15491
15493
  watch(offset, val => { updateLayout('offset', val); });
15492
15494
 
15493
15495
  watch(onLayout, val => {
15494
- emit('on-layout', val);
15496
+ emit('onLayout', val);
15495
15497
  updateLayout('space', val);
15496
15498
  });
15497
15499
 
@@ -15515,7 +15517,7 @@ var QDrawer = createComponent({
15515
15517
  }
15516
15518
  });
15517
15519
 
15518
- watch(isMini, val => { emit('mini-state', val); });
15520
+ watch(isMini, val => { emit('miniState', val); });
15519
15521
 
15520
15522
  function applyPosition (position) {
15521
15523
  if (position === void 0) {
@@ -15680,8 +15682,8 @@ var QDrawer = createComponent({
15680
15682
  }
15681
15683
 
15682
15684
  onMounted(() => {
15683
- emit('on-layout', onLayout.value);
15684
- emit('mini-state', isMini.value);
15685
+ emit('onLayout', onLayout.value);
15686
+ emit('miniState', isMini.value);
15685
15687
 
15686
15688
  lastDesktopState = props.showIfAbove === true;
15687
15689
 
@@ -16234,7 +16236,7 @@ var QTooltip = createComponent({
16234
16236
 
16235
16237
  const { registerTick, removeTick } = useTick();
16236
16238
  const { registerTimeout } = useTimeout();
16237
- const { transition, transitionStyle } = useTransition(props, showing);
16239
+ const { transitionProps, transitionStyle } = useTransition(props);
16238
16240
  const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
16239
16241
 
16240
16242
  const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl });
@@ -16431,10 +16433,7 @@ var QTooltip = createComponent({
16431
16433
  }
16432
16434
 
16433
16435
  function renderPortalContent () {
16434
- return h(Transition, {
16435
- name: transition.value,
16436
- appear: true
16437
- }, getTooltipContent)
16436
+ return h(Transition, transitionProps.value, getTooltipContent)
16438
16437
  }
16439
16438
 
16440
16439
  onBeforeUnmount(anchorCleanup);
@@ -17808,7 +17807,7 @@ var QExpansionItem = createComponent({
17808
17807
 
17809
17808
  emits: [
17810
17809
  ...useModelToggleEmits,
17811
- 'click', 'after-show', 'after-hide'
17810
+ 'click', 'afterShow', 'afterHide'
17812
17811
  ],
17813
17812
 
17814
17813
  setup (props, { slots, emit }) {
@@ -17890,7 +17889,6 @@ var QExpansionItem = createComponent({
17890
17889
  return {
17891
17890
  role: 'button',
17892
17891
  'aria-expanded': showing.value === true ? 'true' : 'false',
17893
- 'aria-owns': targetUid,
17894
17892
  'aria-controls': targetUid,
17895
17893
  'aria-label': toggleAriaLabel
17896
17894
  }
@@ -17917,11 +17915,11 @@ var QExpansionItem = createComponent({
17917
17915
  }
17918
17916
 
17919
17917
  function onShow () {
17920
- emit('after-show');
17918
+ emit('afterShow');
17921
17919
  }
17922
17920
 
17923
17921
  function onHide () {
17924
- emit('after-hide');
17922
+ emit('afterHide');
17925
17923
  }
17926
17924
 
17927
17925
  function enterGroup () {
@@ -18271,13 +18269,11 @@ var QFab = createComponent({
18271
18269
 
18272
18270
  const actionAttrs = computed(() => {
18273
18271
  const attrs = {
18274
- id: targetUid
18272
+ id: targetUid,
18273
+ role: 'menu'
18275
18274
  };
18276
18275
 
18277
- if (showing.value === true) {
18278
- attrs.role = 'menu';
18279
- }
18280
- else {
18276
+ if (showing.value !== true) {
18281
18277
  attrs[ 'aria-hidden' ] = 'true';
18282
18278
  }
18283
18279
 
@@ -18346,7 +18342,6 @@ var QFab = createComponent({
18346
18342
  'aria-expanded': showing.value === true ? 'true' : 'false',
18347
18343
  'aria-haspopup': 'true',
18348
18344
  'aria-controls': targetUid,
18349
- 'aria-owns': targetUid,
18350
18345
  onClick: toggle
18351
18346
  }, getTriggerContent),
18352
18347
 
@@ -18749,7 +18744,7 @@ const useFieldProps = {
18749
18744
  maxlength: [ Number, String ]
18750
18745
  };
18751
18746
 
18752
- const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popup-show', 'popup-hide' ];
18747
+ const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ];
18753
18748
 
18754
18749
  function useFieldState () {
18755
18750
  const { props, attrs, proxy, vnode } = getCurrentInstance();
@@ -19844,9 +19839,11 @@ var QFile = createComponent({
19844
19839
  Object.assign(proxy, {
19845
19840
  removeAtIndex,
19846
19841
  removeFile,
19847
- getNativeElement: () => inputRef.value
19842
+ getNativeElement: () => inputRef.value // deprecated
19848
19843
  });
19849
19844
 
19845
+ injectProp(proxy, 'nativeEl', () => inputRef.value);
19846
+
19850
19847
  return useField(state)
19851
19848
  }
19852
19849
  });
@@ -20057,7 +20054,7 @@ var QForm = createComponent({
20057
20054
  onSubmit: Function
20058
20055
  },
20059
20056
 
20060
- emits: [ 'reset', 'validation-success', 'validation-error' ],
20057
+ emits: [ 'reset', 'validationSuccess', 'validationError' ],
20061
20058
 
20062
20059
  setup (props, { slots, emit }) {
20063
20060
  const vm = getCurrentInstance();
@@ -20074,7 +20071,7 @@ var QForm = createComponent({
20074
20071
  const index = ++validateIndex;
20075
20072
 
20076
20073
  const emitEvent = (res, ref) => {
20077
- emit('validation-' + (res === true ? 'success' : 'error'), ref);
20074
+ emit('validation' + (res === true ? 'Success' : 'Error'), ref);
20078
20075
  };
20079
20076
 
20080
20077
  const validateComponent = comp => {
@@ -20176,7 +20173,9 @@ var QForm = createComponent({
20176
20173
  addFocusFn(() => {
20177
20174
  if (rootRef.value === null) { return }
20178
20175
 
20179
- const target = rootRef.value.querySelector('[autofocus], [data-autofocus]')
20176
+ const target = rootRef.value.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
20177
+ || rootRef.value.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
20178
+ || rootRef.value.querySelector('[autofocus], [data-autofocus]')
20180
20179
  || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex > -1);
20181
20180
 
20182
20181
  target !== null && target !== void 0 && target.focus({ preventScroll: true });
@@ -20527,7 +20526,7 @@ var QImg = createComponent({
20527
20526
 
20528
20527
  const images = [
20529
20528
  ref(null),
20530
- ref(props.placeholderSrc !== void 0 ? { src: props.placeholderSrc } : null)
20529
+ ref(getPlaceholderSrc())
20531
20530
  ];
20532
20531
 
20533
20532
  const position = ref(0);
@@ -20567,18 +20566,24 @@ var QImg = createComponent({
20567
20566
  : null
20568
20567
  }
20569
20568
 
20569
+ function getPlaceholderSrc () {
20570
+ return props.placeholderSrc !== void 0
20571
+ ? { src: props.placeholderSrc }
20572
+ : null
20573
+ }
20574
+
20570
20575
  function addImage (imgProps) {
20571
20576
  clearTimeout(loadTimer);
20572
20577
  hasError.value = false;
20573
20578
 
20574
20579
  if (imgProps === null) {
20575
20580
  isLoading.value = false;
20576
- images[ 0 ].value = null;
20577
- images[ 1 ].value = null;
20578
- return
20581
+ images[ position.value ^ 1 ].value = getPlaceholderSrc();
20582
+ }
20583
+ else {
20584
+ isLoading.value = true;
20579
20585
  }
20580
20586
 
20581
- isLoading.value = true;
20582
20587
  images[ position.value ].value = imgProps;
20583
20588
  }
20584
20589
 
@@ -20613,7 +20618,7 @@ var QImg = createComponent({
20613
20618
  // if component has been already destroyed
20614
20619
  if (loadTimer === null) { return }
20615
20620
 
20616
- position.value = position.value === 1 ? 0 : 1;
20621
+ position.value = position.value ^ 1;
20617
20622
  images[ position.value ].value = null;
20618
20623
  isLoading.value = false;
20619
20624
  hasError.value = false;
@@ -20624,19 +20629,11 @@ var QImg = createComponent({
20624
20629
  clearTimeout(loadTimer);
20625
20630
  isLoading.value = false;
20626
20631
  hasError.value = true;
20627
- images[ 0 ].value = null;
20628
- images[ 1 ].value = null;
20632
+ images[ position.value ].value = null;
20633
+ images[ position.value ^ 1 ].value = getPlaceholderSrc();
20629
20634
  emit('error', err);
20630
20635
  }
20631
20636
 
20632
- function getContainer (key, child) {
20633
- return h(
20634
- 'div',
20635
- { class: 'q-img__container absolute-full', key },
20636
- child
20637
- )
20638
- }
20639
-
20640
20637
  function getImage (index) {
20641
20638
  const img = images[ index ].value;
20642
20639
 
@@ -20664,7 +20661,11 @@ var QImg = createComponent({
20664
20661
  data.class += ' q-img__image--loaded';
20665
20662
  }
20666
20663
 
20667
- return getContainer('img' + index, h('img', data))
20664
+ return h(
20665
+ 'div',
20666
+ { class: 'q-img__container absolute-full', key: 'img' + index },
20667
+ h('img', data)
20668
+ )
20668
20669
  }
20669
20670
 
20670
20671
  function getContent () {
@@ -20695,7 +20696,7 @@ var QImg = createComponent({
20695
20696
  }
20696
20697
 
20697
20698
  {
20698
- if (__QUASAR_SSR_CLIENT__ && isRuntimeSsrPreHydration.value === true) {
20699
+ if (__QUASAR_SSR_CLIENT__) {
20699
20700
  onMounted(() => {
20700
20701
  addImage(getCurrentSrc());
20701
20702
  });
@@ -20994,7 +20995,7 @@ var QInnerLoading = createComponent({
20994
20995
  const vm = getCurrentInstance();
20995
20996
  const isDark = useDark(props, vm.proxy.$q);
20996
20997
 
20997
- const { transition, transitionStyle } = useTransition(props, computed(() => props.showing));
20998
+ const { transitionProps, transitionStyle } = useTransition(props);
20998
20999
 
20999
21000
  const classes = computed(() =>
21000
21001
  'q-inner-loading absolute-full column flex-center'
@@ -21038,10 +21039,7 @@ var QInnerLoading = createComponent({
21038
21039
  : null
21039
21040
  }
21040
21041
 
21041
- return () => h(Transition, {
21042
- name: transition.value,
21043
- appear: true
21044
- }, getContent)
21042
+ return () => h(Transition, transitionProps.value, getContent)
21045
21043
  }
21046
21044
  });
21047
21045
 
@@ -21229,7 +21227,7 @@ function useMask (props, emit, emitValue, inputRef) {
21229
21227
 
21230
21228
  computedMask = mask;
21231
21229
  computedUnmask = val => {
21232
- const unmaskMatch = unmaskMatcher.exec(val);
21230
+ const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length));
21233
21231
  if (unmaskMatch !== null) {
21234
21232
  val = unmaskMatch.slice(1).join('');
21235
21233
  }
@@ -21463,6 +21461,8 @@ function useMask (props, emit, emitValue, inputRef) {
21463
21461
  };
21464
21462
 
21465
21463
  function onMaskedKeydown (e) {
21464
+ emit('keydown', e);
21465
+
21466
21466
  if (shouldIgnoreKey(e) === true) {
21467
21467
  return
21468
21468
  }
@@ -21642,7 +21642,8 @@ var QInput = createComponent({
21642
21642
 
21643
21643
  emits: [
21644
21644
  ...useFieldEmits,
21645
- 'paste', 'change'
21645
+ 'paste', 'change',
21646
+ 'keydown', 'animationend'
21646
21647
  ],
21647
21648
 
21648
21649
  setup (props, { emit, attrs }) {
@@ -21700,7 +21701,7 @@ var QInput = createComponent({
21700
21701
  }
21701
21702
 
21702
21703
  if (props.autogrow === true) {
21703
- evt.onAnimationend = adjustHeight;
21704
+ evt.onAnimationend = onAnimationend;
21704
21705
  }
21705
21706
 
21706
21707
  return evt
@@ -21855,6 +21856,11 @@ var QInput = createComponent({
21855
21856
  props.autogrow === true && adjustHeight();
21856
21857
  }
21857
21858
 
21859
+ function onAnimationend (e) {
21860
+ emit('animationend', e);
21861
+ adjustHeight();
21862
+ }
21863
+
21858
21864
  function emitValue (val, stopWatcher) {
21859
21865
  emitValueFn = () => {
21860
21866
  if (
@@ -22018,9 +22024,11 @@ var QInput = createComponent({
22018
22024
  Object.assign(proxy, {
22019
22025
  focus,
22020
22026
  select,
22021
- getNativeElement: () => inputRef.value
22027
+ getNativeElement: () => inputRef.value // deprecated
22022
22028
  });
22023
22029
 
22030
+ injectProp(proxy, 'nativeEl', () => inputRef.value);
22031
+
22024
22032
  return renderFn
22025
22033
  }
22026
22034
  });
@@ -22219,7 +22227,12 @@ var QList = createComponent({
22219
22227
  bordered: Boolean,
22220
22228
  dense: Boolean,
22221
22229
  separator: Boolean,
22222
- padding: Boolean
22230
+ padding: Boolean,
22231
+
22232
+ tag: {
22233
+ type: String,
22234
+ default: 'div'
22235
+ }
22223
22236
  },
22224
22237
 
22225
22238
  setup (props, { slots }) {
@@ -22235,7 +22248,7 @@ var QList = createComponent({
22235
22248
  + (props.padding === true ? ' q-list--padding' : '')
22236
22249
  );
22237
22250
 
22238
- return () => h('div', { class: classes.value, role: 'list' }, hSlot(slots.default))
22251
+ return () => h(props.tag, { class: classes.value }, hSlot(slots.default))
22239
22252
  }
22240
22253
  });
22241
22254
 
@@ -22273,7 +22286,7 @@ var QKnob = createComponent({
22273
22286
  readonly: Boolean
22274
22287
  },
22275
22288
 
22276
- emits: [ 'update:modelValue', 'change', 'drag-value' ],
22289
+ emits: [ 'update:modelValue', 'change', 'dragValue' ],
22277
22290
 
22278
22291
  setup (props, { slots, emit }) {
22279
22292
  const { proxy } = getCurrentInstance();
@@ -22320,7 +22333,7 @@ var QKnob = createComponent({
22320
22333
  )
22321
22334
  );
22322
22335
 
22323
- const decimals = computed(() => (String(props.step).trim('0').split('.')[ 1 ] || '').length);
22336
+ const decimals = computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length);
22324
22337
  const step = computed(() => (props.step === 0 ? 1 : props.step));
22325
22338
  const instantFeedback = computed(() => props.instantFeedback === true || dragging.value === true);
22326
22339
 
@@ -22455,7 +22468,7 @@ var QKnob = createComponent({
22455
22468
 
22456
22469
  newModel = between(newModel, innerMin.value, innerMax.value);
22457
22470
 
22458
- emit('drag-value', newModel);
22471
+ emit('dragValue', newModel);
22459
22472
 
22460
22473
  if (model.value !== newModel) {
22461
22474
  model.value = newModel;
@@ -22630,6 +22643,8 @@ var QScrollObserver = createComponent({
22630
22643
 
22631
22644
  const { proxy } = getCurrentInstance();
22632
22645
 
22646
+ watch(() => proxy.$q.lang.rtl, emitEvent);
22647
+
22633
22648
  onMounted(() => {
22634
22649
  parentEl = proxy.$el.parentNode;
22635
22650
  configureScrollTarget();
@@ -22730,7 +22745,7 @@ var QLayout = createComponent({
22730
22745
  if (height.value !== newHeight) {
22731
22746
  resized = true;
22732
22747
  height.value = newHeight;
22733
- props.onScrollHeight !== void 0 && emit('scroll-height', newHeight);
22748
+ props.onScrollHeight !== void 0 && emit('scrollHeight', newHeight);
22734
22749
  updateScrollbarWidth();
22735
22750
  }
22736
22751
  if (width.value !== newWidth) {
@@ -24381,7 +24396,7 @@ var QPopupEdit = createComponent({
24381
24396
 
24382
24397
  emits: [
24383
24398
  'update:modelValue', 'save', 'cancel',
24384
- 'before-show', 'show', 'before-hide', 'hide'
24399
+ 'beforeShow', 'show', 'beforeHide', 'hide'
24385
24400
  ],
24386
24401
 
24387
24402
  setup (props, { slots, emit }) {
@@ -24445,7 +24460,7 @@ var QPopupEdit = createComponent({
24445
24460
  validated = false;
24446
24461
  initialValue.value = cloneDeep(props.modelValue);
24447
24462
  currentModel.value = cloneDeep(props.modelValue);
24448
- emit('before-show');
24463
+ emit('beforeShow');
24449
24464
  }
24450
24465
 
24451
24466
  function onShow () {
@@ -24463,7 +24478,7 @@ var QPopupEdit = createComponent({
24463
24478
  }
24464
24479
  }
24465
24480
 
24466
- emit('before-hide');
24481
+ emit('beforeHide');
24467
24482
  }
24468
24483
 
24469
24484
  function onHide () {
@@ -24585,6 +24600,11 @@ var QPopupProxy = createComponent({
24585
24600
  toggle (evt) { popupRef.value.toggle(evt); }
24586
24601
  });
24587
24602
 
24603
+ injectProp(proxy, 'currentComponent', () => ({
24604
+ type: type.value,
24605
+ ref: popupRef.value
24606
+ }));
24607
+
24588
24608
  return () => {
24589
24609
  const data = {
24590
24610
  ref: popupRef,
@@ -25732,7 +25752,7 @@ var QScrollArea = createComponent({
25732
25752
  scroll.horizontal.percentage = computed(() => {
25733
25753
  const diff = scroll.horizontal.size.value - container.horizontal.value;
25734
25754
  if (diff <= 0) { return 0 }
25735
- const p = between(scroll.horizontal.position.value / diff, 0, 1);
25755
+ const p = between(Math.abs(scroll.horizontal.position.value) / diff, 0, 1);
25736
25756
  return Math.round(p * 10000) / 10000
25737
25757
  });
25738
25758
  scroll.horizontal.thumbHidden = computed(() =>
@@ -25758,7 +25778,7 @@ var QScrollArea = createComponent({
25758
25778
  return {
25759
25779
  ...props.thumbStyle,
25760
25780
  ...props.horizontalThumbStyle,
25761
- left: `${ scroll.horizontal.thumbStart.value }px`,
25781
+ [ proxy.$q.lang.rtl === true ? 'right' : 'left' ]: `${ scroll.horizontal.thumbStart.value }px`,
25762
25782
  width: `${ scroll.horizontal.thumbSize.value }px`
25763
25783
  }
25764
25784
  });
@@ -25952,6 +25972,15 @@ var QScrollArea = createComponent({
25952
25972
 
25953
25973
  let scrollPosition = null;
25954
25974
 
25975
+ watch(() => proxy.$q.lang.rtl, rtl => {
25976
+ if (targetRef.value !== null) {
25977
+ setHorizontalScrollPosition(
25978
+ targetRef.value,
25979
+ Math.abs(scroll.horizontal.position.value) * (rtl === true ? -1 : 1)
25980
+ );
25981
+ }
25982
+ });
25983
+
25955
25984
  onDeactivated(() => {
25956
25985
  scrollPosition = {
25957
25986
  top: scroll.vertical.position.value,
@@ -25988,7 +26017,9 @@ var QScrollArea = createComponent({
25988
26017
  setScrollPercentage (axis, percentage, duration) {
25989
26018
  localSetScrollPosition(
25990
26019
  axis,
25991
- percentage * (scroll[ axis ].size.value - container[ axis ].value),
26020
+ percentage
26021
+ * (scroll[ axis ].size.value - container[ axis ].value)
26022
+ * (axis === 'horizontal' && proxy.$q.lang.rtl === true ? -1 : 1),
25992
26023
  duration
25993
26024
  );
25994
26025
  }
@@ -26737,7 +26768,7 @@ function useVirtualScroll ({
26737
26768
 
26738
26769
  function emitScroll (index) {
26739
26770
  if (prevToIndex !== index) {
26740
- props.onVirtualScroll !== void 0 && emit('virtual-scroll', {
26771
+ props.onVirtualScroll !== void 0 && emit('virtualScroll', {
26741
26772
  index,
26742
26773
  from: virtualScrollSliceRange.value.from,
26743
26774
  to: virtualScrollSliceRange.value.to - 1,
@@ -26909,9 +26940,9 @@ var QSelect = createComponent({
26909
26940
 
26910
26941
  emits: [
26911
26942
  ...useFieldEmits,
26912
- 'add', 'remove', 'input-value', 'new-value',
26943
+ 'add', 'remove', 'inputValue', 'newValue',
26913
26944
  'keyup', 'keypress', 'keydown',
26914
- 'filter-abort'
26945
+ 'filterAbort'
26915
26946
  ],
26916
26947
 
26917
26948
  setup (props, { slots, emit }) {
@@ -27033,6 +27064,11 @@ var QSelect = createComponent({
27033
27064
  .join(', ')
27034
27065
  );
27035
27066
 
27067
+ const ariaCurrentValue = computed(() => (props.displayValue !== void 0
27068
+ ? props.displayValue
27069
+ : selectedString.value
27070
+ ));
27071
+
27036
27072
  const needsHtmlFn = computed(() => (
27037
27073
  props.optionsHtml === true
27038
27074
  ? () => true
@@ -27058,20 +27094,9 @@ var QSelect = createComponent({
27058
27094
  'aria-readonly': props.readonly === true ? 'true' : 'false',
27059
27095
  'aria-autocomplete': props.useInput === true ? 'list' : 'none',
27060
27096
  'aria-expanded': menu.value === true ? 'true' : 'false',
27061
- 'aria-owns': `${ state.targetUid.value }_lb`,
27062
27097
  'aria-controls': `${ state.targetUid.value }_lb`
27063
27098
  };
27064
27099
 
27065
- return attrs
27066
- });
27067
-
27068
- const listboxAttrs = computed(() => {
27069
- const attrs = {
27070
- id: `${ state.targetUid.value }_lb`,
27071
- role: 'listbox',
27072
- 'aria-multiselectable': props.multiple === true ? 'true' : 'false'
27073
- };
27074
-
27075
27100
  if (optionIndex.value >= 0) {
27076
27101
  attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`;
27077
27102
  }
@@ -27079,6 +27104,12 @@ var QSelect = createComponent({
27079
27104
  return attrs
27080
27105
  });
27081
27106
 
27107
+ const listboxAttrs = computed(() => ({
27108
+ id: `${ state.targetUid.value }_lb`,
27109
+ role: 'listbox',
27110
+ 'aria-multiselectable': props.multiple === true ? 'true' : 'false'
27111
+ }));
27112
+
27082
27113
  const selectedScope = computed(() => {
27083
27114
  return innerValue.value.map((opt, i) => ({
27084
27115
  index: i,
@@ -27574,7 +27605,9 @@ var QSelect = createComponent({
27574
27605
  && props.useInput !== true
27575
27606
  && e.key !== void 0
27576
27607
  && e.key.length === 1 // printable char
27577
- && e.altKey === e.ctrlKey // not kbd shortcut
27608
+ && e.altKey === false // not kbd shortcut
27609
+ && e.ctrlKey === false // not kbd shortcut
27610
+ && e.metaKey === false // not kbd shortcut, especially on macOS with Command key
27578
27611
  && (e.keyCode !== 32 || searchBuffer.length > 0) // space in middle of search
27579
27612
  ) {
27580
27613
  menu.value !== true && showPopup(e);
@@ -27659,7 +27692,7 @@ var QSelect = createComponent({
27659
27692
  };
27660
27693
 
27661
27694
  if (props.onNewValue !== void 0) {
27662
- emit('new-value', inputValue.value, done);
27695
+ emit('newValue', inputValue.value, done);
27663
27696
  }
27664
27697
  else {
27665
27698
  done(inputValue.value);
@@ -27682,8 +27715,8 @@ var QSelect = createComponent({
27682
27715
  return hasDialog === true
27683
27716
  ? menuContentRef.value
27684
27717
  : (
27685
- menuRef.value !== null && menuRef.value.__qPortalInnerRef.value !== null
27686
- ? menuRef.value.__qPortalInnerRef.value
27718
+ menuRef.value !== null && menuRef.value.contentEl !== null
27719
+ ? menuRef.value.contentEl
27687
27720
  : void 0
27688
27721
  )
27689
27722
  }
@@ -27721,9 +27754,7 @@ var QSelect = createComponent({
27721
27754
 
27722
27755
  return [
27723
27756
  h('span', {
27724
- [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: props.displayValue !== void 0
27725
- ? props.displayValue
27726
- : selectedString.value
27757
+ [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value
27727
27758
  })
27728
27759
  ]
27729
27760
  }
@@ -27778,7 +27809,7 @@ var QSelect = createComponent({
27778
27809
  id: isTarget === true ? state.targetUid.value : void 0,
27779
27810
  maxlength: props.maxlength,
27780
27811
  autocomplete: props.autocomplete,
27781
- 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
27812
+ 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,
27782
27813
  disabled: props.disable === true,
27783
27814
  readonly: props.readonly === true,
27784
27815
  ...inputControlEvents.value
@@ -27826,7 +27857,7 @@ var QSelect = createComponent({
27826
27857
  function setInputValue (val) {
27827
27858
  if (inputValue.value !== val) {
27828
27859
  inputValue.value = val;
27829
- emit('input-value', val);
27860
+ emit('inputValue', val);
27830
27861
  }
27831
27862
  }
27832
27863
 
@@ -27850,7 +27881,7 @@ var QSelect = createComponent({
27850
27881
  }
27851
27882
 
27852
27883
  if (state.innerLoading.value === true) {
27853
- emit('filter-abort');
27884
+ emit('filterAbort');
27854
27885
  }
27855
27886
  else {
27856
27887
  state.innerLoading.value = true;
@@ -28067,7 +28098,7 @@ var QSelect = createComponent({
28067
28098
  filterId = void 0;
28068
28099
 
28069
28100
  if (state.innerLoading.value === true) {
28070
- emit('filter-abort');
28101
+ emit('filterAbort');
28071
28102
  state.innerLoading.value = false;
28072
28103
  innerLoadingIndicator.value = false;
28073
28104
  }
@@ -28153,14 +28184,14 @@ var QSelect = createComponent({
28153
28184
 
28154
28185
  function onControlPopupShow (e) {
28155
28186
  e !== void 0 && stop(e);
28156
- emit('popup-show', e);
28187
+ emit('popupShow', e);
28157
28188
  state.hasPopupOpen = true;
28158
28189
  state.onControlFocusin(e);
28159
28190
  }
28160
28191
 
28161
28192
  function onControlPopupHide (e) {
28162
28193
  e !== void 0 && stop(e);
28163
- emit('popup-hide', e);
28194
+ emit('popupHide', e);
28164
28195
  state.hasPopupOpen = false;
28165
28196
  state.onControlFocusout(e);
28166
28197
  }
@@ -28278,8 +28309,9 @@ var QSelect = createComponent({
28278
28309
  key: 'd_t',
28279
28310
  class: 'q-select__focus-target',
28280
28311
  id: isTarget === true ? state.targetUid.value : void 0,
28312
+ value: ariaCurrentValue.value,
28281
28313
  readonly: true,
28282
- 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
28314
+ 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,
28283
28315
  ...attrs,
28284
28316
  onKeydown: onTargetKeydown,
28285
28317
  onKeyup: onTargetKeyup,
@@ -32151,7 +32183,7 @@ var QTable = createComponent({
32151
32183
  },
32152
32184
 
32153
32185
  emits: [
32154
- 'request', 'virtual-scroll',
32186
+ 'request', 'virtualScroll',
32155
32187
  ...useFullscreenEmits,
32156
32188
  ...useTableRowExpandEmits,
32157
32189
  ...useTableRowSelectionEmits
@@ -32385,7 +32417,7 @@ var QTable = createComponent({
32385
32417
 
32386
32418
  scrollTarget.scrollTop = offsetTop;
32387
32419
 
32388
- emit('virtual-scroll', {
32420
+ emit('virtualScroll', {
32389
32421
  index: toIndex,
32390
32422
  from: 0,
32391
32423
  to: innerPagination.value.rowsPerPage - 1,
@@ -32395,7 +32427,7 @@ var QTable = createComponent({
32395
32427
  }
32396
32428
 
32397
32429
  function onVScroll (info) {
32398
- emit('virtual-scroll', info);
32430
+ emit('virtualScroll', info);
32399
32431
  }
32400
32432
 
32401
32433
  function getProgress () {
@@ -34323,9 +34355,9 @@ var QTree = createComponent({
34323
34355
  'update:expanded',
34324
34356
  'update:ticked',
34325
34357
  'update:selected',
34326
- 'lazy-load',
34327
- 'after-show',
34328
- 'after-hide'
34358
+ 'lazyLoad',
34359
+ 'afterShow',
34360
+ 'afterHide'
34329
34361
  ],
34330
34362
 
34331
34363
  setup (props, { slots, emit }) {
@@ -34574,7 +34606,7 @@ var QTree = createComponent({
34574
34606
  if (Array.isArray(node[ props.childrenKey ]) !== true) {
34575
34607
  node[ props.childrenKey ] = [];
34576
34608
  }
34577
- emit('lazy-load', {
34609
+ emit('lazyLoad', {
34578
34610
  node,
34579
34611
  key,
34580
34612
  done: children => {
@@ -34721,11 +34753,11 @@ var QTree = createComponent({
34721
34753
  }
34722
34754
 
34723
34755
  function onShow () {
34724
- emit('after-show');
34756
+ emit('afterShow');
34725
34757
  }
34726
34758
 
34727
34759
  function onHide () {
34728
- emit('after-hide');
34760
+ emit('afterHide');
34729
34761
  }
34730
34762
 
34731
34763
  function getNode (node) {
@@ -35568,7 +35600,7 @@ function injectPlugin ({ props, emit, helpers }) {
35568
35600
  helpers.queuedFiles.value = helpers.queuedFiles.value.concat(files);
35569
35601
  files.forEach(f => { helpers.updateFileStatus(f, 'failed'); });
35570
35602
 
35571
- emit('factory-failed', err, files);
35603
+ emit('factoryFailed', err, files);
35572
35604
  workingThreads.value--;
35573
35605
  }
35574
35606
  };
@@ -37944,8 +37976,7 @@ var BottomSheet$1 = createComponent({
37944
37976
  tabindex: 0,
37945
37977
  clickable: true,
37946
37978
  dark: isDark.value,
37947
- onClick () { onOk(action); },
37948
- onKeyup (e) { e.keyCode === 13 && onOk(action); }
37979
+ onClick () { onOk(action); }
37949
37980
  }, () => [
37950
37981
  h(
37951
37982
  QItemSection,
@@ -38582,12 +38613,12 @@ var DialogPlugin = createComponent({
38582
38613
  function getPrompt () {
38583
38614
  return [
38584
38615
  h(QInput, {
38585
- modelValue: model.value,
38586
- ...formProps.value,
38587
38616
  color: vmColor.value,
38588
38617
  dense: true,
38589
38618
  autofocus: true,
38590
38619
  dark: isDark.value,
38620
+ ...formProps.value,
38621
+ modelValue: model.value,
38591
38622
  'onUpdate:modelValue': onUpdateModel,
38592
38623
  onKeyup: onInputKeyup
38593
38624
  })
@@ -38597,11 +38628,11 @@ var DialogPlugin = createComponent({
38597
38628
  function getOptions () {
38598
38629
  return [
38599
38630
  h(QOptionGroup, {
38600
- modelValue: model.value,
38601
- ...formProps.value,
38602
38631
  color: vmColor.value,
38603
38632
  options: props.options.items,
38604
38633
  dark: isDark.value,
38634
+ ...formProps.value,
38635
+ modelValue: model.value,
38605
38636
  'onUpdate:modelValue': onUpdateModel
38606
38637
  })
38607
38638
  ]
@@ -40288,7 +40319,7 @@ function runSequentialPromises (
40288
40319
  */
40289
40320
 
40290
40321
  const Quasar = {
40291
- version: '2.10.0',
40322
+ version: '2.10.2',
40292
40323
  install: installQuasar,
40293
40324
  lang: Plugin$8,
40294
40325
  iconSet: Plugin$7