quasar 2.10.0 → 2.10.1

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 (306) hide show
  1. package/dist/api/Dialog.json +25 -68
  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 +0 -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/svg-bootstrap-icons.umd.prod.js +1 -1
  91. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  92. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  93. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  94. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  95. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  96. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  97. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  98. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  99. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  100. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  101. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  102. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  103. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  104. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  105. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  106. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  107. package/dist/icon-set/themify.umd.prod.js +1 -1
  108. package/dist/lang/ar-TN.umd.prod.js +1 -1
  109. package/dist/lang/ar.umd.prod.js +1 -1
  110. package/dist/lang/az-Latn.umd.prod.js +1 -1
  111. package/dist/lang/bg.umd.prod.js +1 -1
  112. package/dist/lang/bn.umd.prod.js +1 -1
  113. package/dist/lang/ca.umd.prod.js +1 -1
  114. package/dist/lang/cs.umd.prod.js +1 -1
  115. package/dist/lang/da.umd.prod.js +1 -1
  116. package/dist/lang/de.umd.prod.js +1 -1
  117. package/dist/lang/el.umd.prod.js +1 -1
  118. package/dist/lang/en-GB.umd.prod.js +1 -1
  119. package/dist/lang/en-US.umd.prod.js +1 -1
  120. package/dist/lang/eo.umd.prod.js +1 -1
  121. package/dist/lang/es.umd.prod.js +1 -1
  122. package/dist/lang/et.umd.prod.js +1 -1
  123. package/dist/lang/eu.umd.prod.js +1 -1
  124. package/dist/lang/fa-IR.umd.prod.js +1 -1
  125. package/dist/lang/fa.umd.prod.js +1 -1
  126. package/dist/lang/fi.umd.prod.js +1 -1
  127. package/dist/lang/fr.umd.prod.js +1 -1
  128. package/dist/lang/gn.umd.prod.js +1 -1
  129. package/dist/lang/he.umd.prod.js +1 -1
  130. package/dist/lang/hr.umd.prod.js +1 -1
  131. package/dist/lang/hu.umd.prod.js +1 -1
  132. package/dist/lang/id.umd.prod.js +1 -1
  133. package/dist/lang/is.umd.prod.js +1 -1
  134. package/dist/lang/it.umd.prod.js +1 -1
  135. package/dist/lang/ja.umd.prod.js +1 -1
  136. package/dist/lang/km.umd.prod.js +1 -1
  137. package/dist/lang/ko-KR.umd.prod.js +1 -1
  138. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  139. package/dist/lang/kz.umd.prod.js +1 -1
  140. package/dist/lang/lt.umd.prod.js +1 -1
  141. package/dist/lang/lu.umd.prod.js +1 -1
  142. package/dist/lang/lv.umd.prod.js +1 -1
  143. package/dist/lang/ml.umd.prod.js +1 -1
  144. package/dist/lang/mm.umd.prod.js +1 -1
  145. package/dist/lang/ms.umd.prod.js +1 -1
  146. package/dist/lang/my.umd.prod.js +1 -1
  147. package/dist/lang/nb-NO.umd.prod.js +1 -1
  148. package/dist/lang/nl.umd.prod.js +1 -1
  149. package/dist/lang/pl.umd.prod.js +1 -1
  150. package/dist/lang/pt-BR.umd.prod.js +1 -1
  151. package/dist/lang/pt.umd.prod.js +1 -1
  152. package/dist/lang/ro.umd.prod.js +1 -1
  153. package/dist/lang/ru.umd.prod.js +1 -1
  154. package/dist/lang/sk.umd.prod.js +1 -1
  155. package/dist/lang/sl.umd.prod.js +1 -1
  156. package/dist/lang/sm.umd.prod.js +1 -1
  157. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  158. package/dist/lang/sr.umd.prod.js +1 -1
  159. package/dist/lang/sv.umd.prod.js +1 -1
  160. package/dist/lang/ta.umd.prod.js +1 -1
  161. package/dist/lang/th.umd.prod.js +1 -1
  162. package/dist/lang/tr.umd.prod.js +1 -1
  163. package/dist/lang/ug.umd.prod.js +1 -1
  164. package/dist/lang/uk.umd.prod.js +1 -1
  165. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  166. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  167. package/dist/lang/vi.umd.prod.js +1 -1
  168. package/dist/lang/zh-CN.umd.prod.js +1 -1
  169. package/dist/lang/zh-TW.umd.prod.js +1 -1
  170. package/dist/quasar.cjs.prod.js +2 -2
  171. package/dist/quasar.css +2 -2
  172. package/dist/quasar.esm.js +166 -158
  173. package/dist/quasar.esm.prod.js +2 -2
  174. package/dist/quasar.prod.css +1 -1
  175. package/dist/quasar.rtl.css +2 -2
  176. package/dist/quasar.rtl.prod.css +1 -1
  177. package/dist/quasar.sass +3 -3
  178. package/dist/quasar.umd.js +166 -158
  179. package/dist/quasar.umd.prod.js +2 -2
  180. package/dist/types/index.d.ts +50 -55
  181. package/dist/vetur/quasar-attributes.json +4 -0
  182. package/dist/vetur/quasar-tags.json +2 -1
  183. package/dist/web-types/web-types.json +142 -132
  184. package/package.json +3 -3
  185. package/src/api.extends.json +1 -2
  186. package/src/components/ajax-bar/QAjaxBar.json +5 -11
  187. package/src/components/breadcrumbs/QBreadcrumbs.json +0 -2
  188. package/src/components/breadcrumbs/QBreadcrumbsEl.json +1 -2
  189. package/src/components/btn/QBtn.json +1 -3
  190. package/src/components/btn/__tests__/QBtn.spec.js +87 -14
  191. package/src/components/btn/__tests__/use-btn.spec.js +385 -58
  192. package/src/components/btn-dropdown/QBtnDropdown.js +4 -11
  193. package/src/components/btn-dropdown/QBtnDropdown.json +0 -2
  194. package/src/components/btn-toggle/QBtnToggle.json +2 -4
  195. package/src/components/carousel/QCarousel.json +4 -9
  196. package/src/components/carousel/QCarouselControl.json +0 -1
  197. package/src/components/checkbox/use-checkbox.json +1 -2
  198. package/src/components/circular-progress/QCircularProgress.json +0 -5
  199. package/src/components/color/QColor.json +0 -1
  200. package/src/components/date/QDate.js +3 -3
  201. package/src/components/date/QDate.json +28 -56
  202. package/src/components/dialog/QDialog.js +30 -40
  203. package/src/components/dialog/QDialog.json +9 -2
  204. package/src/components/dialog-bottom-sheet/BottomSheet.js +1 -2
  205. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  206. package/src/components/drawer/QDrawer.js +5 -5
  207. package/src/components/drawer/QDrawer.json +0 -4
  208. package/src/components/editor/QEditor.json +3 -6
  209. package/src/components/expansion-item/QExpansionItem.js +3 -3
  210. package/src/components/expansion-item/QExpansionItem.json +3 -8
  211. package/src/components/fab/QFab.json +0 -1
  212. package/src/components/fab/use-fab.json +0 -1
  213. package/src/components/field/QField.json +0 -1
  214. package/src/components/file/QFile.js +4 -1
  215. package/src/components/file/QFile.json +19 -20
  216. package/src/components/footer/QFooter.json +0 -1
  217. package/src/components/form/QForm.js +5 -3
  218. package/src/components/form/QForm.json +2 -4
  219. package/src/components/header/QHeader.json +0 -4
  220. package/src/components/infinite-scroll/QInfiniteScroll.json +9 -6
  221. package/src/components/inner-loading/QInnerLoading.js +2 -5
  222. package/src/components/input/QInput.js +4 -1
  223. package/src/components/input/QInput.json +11 -7
  224. package/src/components/input/use-mask.js +1 -1
  225. package/src/components/intersection/QIntersection.json +0 -1
  226. package/src/components/item/QItem.json +1 -2
  227. package/src/components/item/QItemLabel.json +0 -1
  228. package/src/components/item/QList.js +7 -2
  229. package/src/components/item/QList.json +7 -0
  230. package/src/components/knob/QKnob.js +3 -3
  231. package/src/components/knob/QKnob.json +3 -12
  232. package/src/components/layout/QLayout.js +1 -1
  233. package/src/components/layout/QLayout.json +6 -12
  234. package/src/components/linear-progress/QLinearProgress.json +0 -2
  235. package/src/components/menu/QMenu.js +8 -5
  236. package/src/components/menu/QMenu.json +0 -2
  237. package/src/components/option-group/QOptionGroup.json +2 -5
  238. package/src/components/page/QPage.json +3 -6
  239. package/src/components/page-scroller/QPageScroller.json +0 -2
  240. package/src/components/page-sticky/QPageSticky.json +0 -1
  241. package/src/components/pagination/QPagination.json +5 -13
  242. package/src/components/parallax/QParallax.json +2 -6
  243. package/src/components/popup-edit/QPopupEdit.js +3 -3
  244. package/src/components/popup-edit/QPopupEdit.json +4 -10
  245. package/src/components/popup-proxy/QPopupProxy.json +0 -1
  246. package/src/components/radio/QRadio.json +1 -2
  247. package/src/components/range/QRange.json +2 -4
  248. package/src/components/rating/QRating.json +0 -1
  249. package/src/components/resize-observer/QResizeObserver.json +2 -4
  250. package/src/components/scroll-area/QScrollArea.js +15 -4
  251. package/src/components/scroll-area/QScrollArea.json +24 -50
  252. package/src/components/scroll-observer/QScrollObserver.js +2 -0
  253. package/src/components/scroll-observer/QScrollObserver.json +6 -12
  254. package/src/components/select/QSelect.js +20 -24
  255. package/src/components/select/QSelect.json +30 -65
  256. package/src/components/select/QSelect.sass +2 -2
  257. package/src/components/slide-item/QSlideItem.json +1 -2
  258. package/src/components/slide-transition/QSlideTransition.json +0 -1
  259. package/src/components/slider/use-slider.json +33 -70
  260. package/src/components/spinner/QSpinner.json +0 -1
  261. package/src/components/splitter/QSplitter.json +1 -2
  262. package/src/components/table/QTable.js +3 -3
  263. package/src/components/table/QTable.json +118 -239
  264. package/src/components/tabs/QRouteTab.json +0 -1
  265. package/src/components/tabs/QTabs.json +0 -2
  266. package/src/components/time/QTime.json +10 -20
  267. package/src/components/tooltip/QTooltip.js +2 -5
  268. package/src/components/tooltip/QTooltip.json +0 -4
  269. package/src/components/tree/QTree.js +6 -6
  270. package/src/components/tree/QTree.json +15 -31
  271. package/src/components/uploader/QUploader.json +13 -22
  272. package/src/components/uploader/xhr-uploader-plugin.js +1 -1
  273. package/src/components/uploader/xhr-uploader-plugin.json +25 -50
  274. package/src/components/virtual-scroll/QVirtualScroll.json +5 -10
  275. package/src/components/virtual-scroll/use-virtual-scroll.js +1 -1
  276. package/src/components/virtual-scroll/use-virtual-scroll.json +8 -19
  277. package/src/composables/private/use-field.js +1 -1
  278. package/src/composables/private/use-field.json +2 -3
  279. package/src/composables/private/use-file.json +4 -13
  280. package/src/composables/private/use-model-toggle.js +3 -3
  281. package/src/composables/private/use-panel.js +2 -2
  282. package/src/composables/private/use-panel.json +0 -2
  283. package/src/composables/private/use-portal.js +5 -1
  284. package/src/composables/private/use-portal.json +7 -1
  285. package/src/composables/private/use-transition.js +17 -11
  286. package/src/composables/private/use-transition.json +0 -1
  287. package/src/composables/private/use-validate.json +1 -3
  288. package/src/directives/Intersection.json +26 -53
  289. package/src/directives/Morph.json +4 -8
  290. package/src/directives/Mutation.json +6 -12
  291. package/src/directives/Scroll.json +2 -4
  292. package/src/directives/TouchHold.json +3 -6
  293. package/src/directives/TouchPan.json +7 -14
  294. package/src/directives/TouchRepeat.json +6 -12
  295. package/src/directives/TouchSwipe.json +3 -6
  296. package/src/plugins/BottomSheet.json +1 -2
  297. package/src/plugins/Cookies.json +2 -4
  298. package/src/plugins/Dialog.json +32 -72
  299. package/src/plugins/Loading.json +6 -11
  300. package/src/plugins/LoadingBar.json +3 -6
  301. package/src/plugins/Notify.json +4 -5
  302. package/src/plugins/Platform.json +3 -6
  303. package/src/plugins/Screen.json +9 -18
  304. package/src/utils/private/global-dialog.json +6 -12
  305. package/src/utils/private/portal.js +4 -4
  306. 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.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1612,7 +1612,7 @@
1612
1612
  }
1613
1613
 
1614
1614
  var installQuasar = function (parentApp, opts = {}) {
1615
- const $q = { version: '2.10.0' };
1615
+ const $q = { version: '2.10.1' };
1616
1616
 
1617
1617
  if (globalConfigIsFrozen === false) {
1618
1618
  if (opts.config !== void 0) {
@@ -4187,7 +4187,7 @@
4187
4187
  };
4188
4188
 
4189
4189
  const useModelToggleEmits = [
4190
- 'before-show', 'show', 'before-hide', 'hide'
4190
+ 'beforeShow', 'show', 'beforeHide', 'hide'
4191
4191
  ];
4192
4192
 
4193
4193
  // handleShow/handleHide -> removeTick(), self (& emit show)
@@ -4247,7 +4247,7 @@
4247
4247
 
4248
4248
  showing.value = true;
4249
4249
 
4250
- emit('before-show', evt);
4250
+ emit('beforeShow', evt);
4251
4251
 
4252
4252
  if (handleShow !== void 0) {
4253
4253
  handleShow(evt);
@@ -4286,7 +4286,7 @@
4286
4286
 
4287
4287
  showing.value = false;
4288
4288
 
4289
- emit('before-hide', evt);
4289
+ emit('beforeHide', evt);
4290
4290
 
4291
4291
  if (handleHide !== void 0) {
4292
4292
  handleHide(evt);
@@ -4408,8 +4408,8 @@
4408
4408
 
4409
4409
  function getPortalProxy (el) {
4410
4410
  return portalProxyList.find(proxy =>
4411
- proxy.__qPortalInnerRef.value !== null
4412
- && proxy.__qPortalInnerRef.value.contains(el)
4411
+ proxy.contentEl !== null
4412
+ && proxy.contentEl.contains(el)
4413
4413
  )
4414
4414
  }
4415
4415
 
@@ -4423,7 +4423,7 @@
4423
4423
  return getParentProxy(proxy)
4424
4424
  }
4425
4425
  }
4426
- else if (proxy.__qPortalInnerRef !== void 0) {
4426
+ else if (proxy.__qPortal === true) {
4427
4427
  // treat it as point of separation if parent is QPopupProxy
4428
4428
  // (so mobile matches desktop behavior)
4429
4429
  // and hide it too
@@ -4444,7 +4444,7 @@
4444
4444
 
4445
4445
  function closePortals (proxy, evt, depth) {
4446
4446
  while (depth !== 0 && proxy !== void 0 && proxy !== null) {
4447
- if (proxy.__qPortalInnerRef !== void 0) {
4447
+ if (proxy.__qPortal === true) {
4448
4448
  depth--;
4449
4449
 
4450
4450
  if (proxy.$options.name === 'QMenu') {
@@ -4536,7 +4536,10 @@
4536
4536
  vue.onUnmounted(() => { hidePortal(true); });
4537
4537
 
4538
4538
  // needed for portal vm detection
4539
- vm.proxy.__qPortalInnerRef = innerRef;
4539
+ vm.proxy.__qPortal = true;
4540
+
4541
+ // public way of accessing the rendered content
4542
+ injectProp(vm.proxy, 'contentEl', () => innerRef.value);
4540
4543
 
4541
4544
  return {
4542
4545
  showPortal,
@@ -4574,18 +4577,24 @@
4574
4577
  }
4575
4578
  };
4576
4579
 
4577
- function useTransition (props, showing) {
4578
- const transitionState = vue.ref(showing.value);
4580
+ function useTransition (props, defaultShowFn = () => {}, defaultHideFn = () => {}) {
4581
+ return {
4582
+ transitionProps: vue.computed(() => {
4583
+ const show = `q-transition--${ props.transitionShow || defaultShowFn() }`;
4584
+ const hide = `q-transition--${ props.transitionHide || defaultHideFn() }`;
4579
4585
 
4580
- vue.watch(showing, val => {
4581
- vue.nextTick(() => { transitionState.value = val; });
4582
- });
4586
+ return {
4587
+ appear: true,
4583
4588
 
4584
- // return transition
4585
- return {
4586
- transition: vue.computed(() => 'q-transition--' + (
4587
- transitionState.value === true ? props.transitionHide : props.transitionShow
4588
- )),
4589
+ enterFromClass: `${ show }-enter-from`,
4590
+ enterActiveClass: `${ show }-enter-active`,
4591
+ enterToClass: `${ show }-enter-to`,
4592
+
4593
+ leaveFromClass: `${ hide }-leave-from`,
4594
+ leaveActiveClass: `${ hide }-leave-active`,
4595
+ leaveToClass: `${ hide }-leave-to`
4596
+ }
4597
+ }),
4589
4598
 
4590
4599
  transitionStyle: vue.computed(() => `--q-transition-duration: ${ props.transitionDuration }ms`)
4591
4600
  }
@@ -5308,7 +5317,7 @@
5308
5317
 
5309
5318
  emits: [
5310
5319
  ...useModelToggleEmits,
5311
- 'click', 'escape-key'
5320
+ 'click', 'escapeKey'
5312
5321
  ],
5313
5322
 
5314
5323
  setup (props, { slots, emit, attrs }) {
@@ -5329,7 +5338,7 @@
5329
5338
  const isDark = useDark(props, $q);
5330
5339
  const { registerTick, removeTick } = useTick();
5331
5340
  const { registerTimeout } = useTimeout();
5332
- const { transition, transitionStyle } = useTransition(props, showing);
5341
+ const { transitionProps, transitionStyle } = useTransition(props);
5333
5342
  const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
5334
5343
 
5335
5344
  const { anchorEl, canShow } = useAnchor({ showing });
@@ -5409,7 +5418,10 @@
5409
5418
  let node = innerRef.value;
5410
5419
 
5411
5420
  if (node && node.contains(document.activeElement) !== true) {
5412
- node = node.querySelector('[autofocus], [data-autofocus]') || node;
5421
+ node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
5422
+ || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
5423
+ || node.querySelector('[autofocus], [data-autofocus]')
5424
+ || node;
5413
5425
  node.focus({ preventScroll: true });
5414
5426
  }
5415
5427
  });
@@ -5546,7 +5558,7 @@
5546
5558
  }
5547
5559
 
5548
5560
  function onEscapeKey (evt) {
5549
- emit('escape-key');
5561
+ emit('escapeKey');
5550
5562
  hide(evt);
5551
5563
  }
5552
5564
 
@@ -5574,7 +5586,7 @@
5574
5586
  function renderPortalContent () {
5575
5587
  return vue.h(
5576
5588
  vue.Transition,
5577
- { name: transition.value, appear: true },
5589
+ transitionProps.value,
5578
5590
  () => (
5579
5591
  showing.value === true
5580
5592
  ? vue.h('div', {
@@ -5681,13 +5693,6 @@
5681
5693
 
5682
5694
  const btnPropsList = Object.keys(useBtnProps);
5683
5695
 
5684
- // let's not duplicate type checking and prop validations
5685
- // so just specify the props here with no type description
5686
- const btnProps = btnPropsList.reduce(
5687
- (acc, key) => (acc[ key ] = {}) && acc,
5688
- {}
5689
- );
5690
-
5691
5696
  const passBtnProps = props => btnPropsList.reduce(
5692
5697
  (acc, key) => {
5693
5698
  const val = props[ key ];
@@ -5703,7 +5708,7 @@
5703
5708
  name: 'QBtnDropdown',
5704
5709
 
5705
5710
  props: {
5706
- ...btnProps,
5711
+ ...useBtnProps,
5707
5712
  ...useTransitionProps,
5708
5713
 
5709
5714
  modelValue: Boolean,
@@ -5736,7 +5741,7 @@
5736
5741
  toggleAriaLabel: String
5737
5742
  },
5738
5743
 
5739
- emits: [ 'update:modelValue', 'click', 'before-show', 'show', 'before-hide', 'hide' ],
5744
+ emits: [ 'update:modelValue', 'click', 'beforeShow', 'show', 'beforeHide', 'hide' ],
5740
5745
 
5741
5746
  setup (props, { slots, emit }) {
5742
5747
  const { proxy } = vue.getCurrentInstance();
@@ -5784,7 +5789,7 @@
5784
5789
 
5785
5790
  function onBeforeShow (e) {
5786
5791
  showing.value = true;
5787
- emit('before-show', e);
5792
+ emit('beforeShow', e);
5788
5793
  }
5789
5794
 
5790
5795
  function onShow (e) {
@@ -5794,7 +5799,7 @@
5794
5799
 
5795
5800
  function onBeforeHide (e) {
5796
5801
  showing.value = false;
5797
- emit('before-hide', e);
5802
+ emit('beforeHide', e);
5798
5803
  }
5799
5804
 
5800
5805
  function onHide (e) {
@@ -6556,7 +6561,7 @@
6556
6561
  keepAliveMax: Number
6557
6562
  };
6558
6563
 
6559
- const usePanelEmits = [ 'update:modelValue', 'before-transition', 'transition' ];
6564
+ const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transition' ];
6560
6565
 
6561
6566
  function usePanel () {
6562
6567
  const { props, emit, proxy } = vue.getCurrentInstance();
@@ -6628,7 +6633,7 @@
6628
6633
 
6629
6634
  if (panelIndex.value !== index) {
6630
6635
  panelIndex.value = index;
6631
- emit('before-transition', newVal, oldVal);
6636
+ emit('beforeTransition', newVal, oldVal);
6632
6637
  vue.nextTick(() => {
6633
6638
  emit('transition', newVal, oldVal);
6634
6639
  });
@@ -13088,7 +13093,7 @@
13088
13093
 
13089
13094
  emits: [
13090
13095
  ...useDatetimeEmits,
13091
- 'range-start', 'range-end', 'navigation'
13096
+ 'rangeStart', 'rangeEnd', 'navigation'
13092
13097
  ],
13093
13098
 
13094
13099
  setup (props, { slots, emit }) {
@@ -14397,7 +14402,7 @@
14397
14402
  finalHash: initHash
14398
14403
  };
14399
14404
 
14400
- emit('range-start', getShortDate(day));
14405
+ emit('rangeStart', getShortDate(day));
14401
14406
  }
14402
14407
  else {
14403
14408
  const
@@ -14410,7 +14415,7 @@
14410
14415
  editRange.value = null;
14411
14416
  addToModel(initHash === finalHash ? day : { target: day, ...payload });
14412
14417
 
14413
- emit('range-end', {
14418
+ emit('rangeEnd', {
14414
14419
  from: getShortDate(payload.from),
14415
14420
  to: getShortDate(payload.to)
14416
14421
  });
@@ -14715,7 +14720,7 @@
14715
14720
  left: 'fixed-left items-center'
14716
14721
  };
14717
14722
 
14718
- const transitions = {
14723
+ const defaultTransitions = {
14719
14724
  standard: [ 'scale', 'scale' ],
14720
14725
  top: [ 'slide-down', 'slide-up' ],
14721
14726
  bottom: [ 'slide-up', 'slide-down' ],
@@ -14732,8 +14737,8 @@
14732
14737
  ...useModelToggleProps,
14733
14738
  ...useTransitionProps,
14734
14739
 
14735
- transitionShow: String,
14736
- transitionHide: String,
14740
+ transitionShow: String, // override useTransitionProps
14741
+ transitionHide: String, // override useTransitionProps
14737
14742
 
14738
14743
  persistent: Boolean,
14739
14744
  autoClose: Boolean,
@@ -14764,7 +14769,7 @@
14764
14769
 
14765
14770
  emits: [
14766
14771
  ...useModelToggleEmits,
14767
- 'shake', 'click', 'escape-key'
14772
+ 'shake', 'click', 'escapeKey'
14768
14773
  ],
14769
14774
 
14770
14775
  setup (props, { slots, emit, attrs }) {
@@ -14772,7 +14777,6 @@
14772
14777
 
14773
14778
  const innerRef = vue.ref(null);
14774
14779
  const showing = vue.ref(false);
14775
- const transitionState = vue.ref(false);
14776
14780
  const animating = vue.ref(false);
14777
14781
 
14778
14782
  let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose;
@@ -14787,6 +14791,12 @@
14787
14791
  const { registerTimeout } = useTimeout();
14788
14792
  const { registerTick, removeTick } = useTick();
14789
14793
 
14794
+ const { transitionProps, transitionStyle } = useTransition(
14795
+ props,
14796
+ () => defaultTransitions[ props.position ][ 0 ],
14797
+ () => defaultTransitions[ props.position ][ 1 ]
14798
+ );
14799
+
14790
14800
  const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(
14791
14801
  vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true
14792
14802
  );
@@ -14811,26 +14821,6 @@
14811
14821
  + (props.square === true ? ' q-dialog__inner--square' : '')
14812
14822
  );
14813
14823
 
14814
- const transitionShow = vue.computed(() =>
14815
- 'q-transition--'
14816
- + (props.transitionShow === void 0 ? transitions[ props.position ][ 0 ] : props.transitionShow)
14817
- );
14818
-
14819
- const transitionHide = vue.computed(() =>
14820
- 'q-transition--'
14821
- + (props.transitionHide === void 0 ? transitions[ props.position ][ 1 ] : props.transitionHide)
14822
- );
14823
-
14824
- const transition = vue.computed(() => (
14825
- transitionState.value === true
14826
- ? transitionHide.value
14827
- : transitionShow.value
14828
- ));
14829
-
14830
- const transitionStyle = vue.computed(
14831
- () => `--q-transition-duration: ${ props.transitionDuration }ms`
14832
- );
14833
-
14834
14824
  const useBackdrop = vue.computed(() => showing.value === true && props.seamless !== true);
14835
14825
 
14836
14826
  const onEvents = vue.computed(() => (
@@ -14845,12 +14835,6 @@
14845
14835
  attrs.class
14846
14836
  ]);
14847
14837
 
14848
- vue.watch(showing, val => {
14849
- vue.nextTick(() => {
14850
- transitionState.value = val;
14851
- });
14852
- });
14853
-
14854
14838
  vue.watch(() => props.maximized, state => {
14855
14839
  showing.value === true && updateMaximized(state);
14856
14840
  });
@@ -14950,13 +14934,23 @@
14950
14934
  return
14951
14935
  }
14952
14936
 
14953
- node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node;
14937
+ node = (selector !== '' ? node.querySelector(selector) : null)
14938
+ || node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
14939
+ || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
14940
+ || node.querySelector('[autofocus], [data-autofocus]')
14941
+ || node;
14954
14942
  node.focus({ preventScroll: true });
14955
14943
  });
14956
14944
  }
14957
14945
 
14958
- function shake () {
14959
- focus();
14946
+ function shake (refocusTarget) {
14947
+ if (refocusTarget && typeof refocusTarget.focus === 'function') {
14948
+ refocusTarget.focus({ preventScroll: true });
14949
+ }
14950
+ else {
14951
+ focus();
14952
+ }
14953
+
14960
14954
  emit('shake');
14961
14955
 
14962
14956
  const node = innerRef.value;
@@ -14982,7 +14976,7 @@
14982
14976
  props.maximized !== true && props.noShake !== true && shake();
14983
14977
  }
14984
14978
  else {
14985
- emit('escape-key');
14979
+ emit('escapeKey');
14986
14980
  hide();
14987
14981
  }
14988
14982
  }
@@ -15037,7 +15031,7 @@
15037
15031
  hide(e);
15038
15032
  }
15039
15033
  else if (props.noShake !== true) {
15040
- shake();
15034
+ shake(e.relatedTarget);
15041
15035
  }
15042
15036
  }
15043
15037
 
@@ -15080,14 +15074,15 @@
15080
15074
  class: 'q-dialog__backdrop fixed-full',
15081
15075
  style: transitionStyle.value,
15082
15076
  'aria-hidden': 'true',
15083
- onMousedown: onBackdropClick
15077
+ tabindex: -1,
15078
+ onFocusin: onBackdropClick
15084
15079
  })
15085
15080
  : null
15086
15081
  )),
15087
15082
 
15088
15083
  vue.h(
15089
15084
  vue.Transition,
15090
- { name: transition.value, appear: true },
15085
+ transitionProps.value,
15091
15086
  () => (
15092
15087
  showing.value === true
15093
15088
  ? vue.h('div', {
@@ -15160,7 +15155,7 @@
15160
15155
 
15161
15156
  emits: [
15162
15157
  ...useModelToggleEmits,
15163
- 'on-layout', 'mini-state'
15158
+ 'onLayout', 'miniState'
15164
15159
  ],
15165
15160
 
15166
15161
  setup (props, { slots, emit, attrs }) {
@@ -15493,7 +15488,7 @@
15493
15488
  vue.watch(offset, val => { updateLayout('offset', val); });
15494
15489
 
15495
15490
  vue.watch(onLayout, val => {
15496
- emit('on-layout', val);
15491
+ emit('onLayout', val);
15497
15492
  updateLayout('space', val);
15498
15493
  });
15499
15494
 
@@ -15517,7 +15512,7 @@
15517
15512
  }
15518
15513
  });
15519
15514
 
15520
- vue.watch(isMini, val => { emit('mini-state', val); });
15515
+ vue.watch(isMini, val => { emit('miniState', val); });
15521
15516
 
15522
15517
  function applyPosition (position) {
15523
15518
  if (position === void 0) {
@@ -15682,8 +15677,8 @@
15682
15677
  }
15683
15678
 
15684
15679
  vue.onMounted(() => {
15685
- emit('on-layout', onLayout.value);
15686
- emit('mini-state', isMini.value);
15680
+ emit('onLayout', onLayout.value);
15681
+ emit('miniState', isMini.value);
15687
15682
 
15688
15683
  lastDesktopState = props.showIfAbove === true;
15689
15684
 
@@ -16236,7 +16231,7 @@
16236
16231
 
16237
16232
  const { registerTick, removeTick } = useTick();
16238
16233
  const { registerTimeout } = useTimeout();
16239
- const { transition, transitionStyle } = useTransition(props, showing);
16234
+ const { transitionProps, transitionStyle } = useTransition(props);
16240
16235
  const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
16241
16236
 
16242
16237
  const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl });
@@ -16433,10 +16428,7 @@
16433
16428
  }
16434
16429
 
16435
16430
  function renderPortalContent () {
16436
- return vue.h(vue.Transition, {
16437
- name: transition.value,
16438
- appear: true
16439
- }, getTooltipContent)
16431
+ return vue.h(vue.Transition, transitionProps.value, getTooltipContent)
16440
16432
  }
16441
16433
 
16442
16434
  vue.onBeforeUnmount(anchorCleanup);
@@ -17810,7 +17802,7 @@
17810
17802
 
17811
17803
  emits: [
17812
17804
  ...useModelToggleEmits,
17813
- 'click', 'after-show', 'after-hide'
17805
+ 'click', 'afterShow', 'afterHide'
17814
17806
  ],
17815
17807
 
17816
17808
  setup (props, { slots, emit }) {
@@ -17919,11 +17911,11 @@
17919
17911
  }
17920
17912
 
17921
17913
  function onShow () {
17922
- emit('after-show');
17914
+ emit('afterShow');
17923
17915
  }
17924
17916
 
17925
17917
  function onHide () {
17926
- emit('after-hide');
17918
+ emit('afterHide');
17927
17919
  }
17928
17920
 
17929
17921
  function enterGroup () {
@@ -18751,7 +18743,7 @@
18751
18743
  maxlength: [ Number, String ]
18752
18744
  };
18753
18745
 
18754
- const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popup-show', 'popup-hide' ];
18746
+ const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ];
18755
18747
 
18756
18748
  function useFieldState () {
18757
18749
  const { props, attrs, proxy, vnode } = vue.getCurrentInstance();
@@ -19846,9 +19838,11 @@
19846
19838
  Object.assign(proxy, {
19847
19839
  removeAtIndex,
19848
19840
  removeFile,
19849
- getNativeElement: () => inputRef.value
19841
+ getNativeElement: () => inputRef.value // deprecated
19850
19842
  });
19851
19843
 
19844
+ injectProp(proxy, 'nativeEl', () => inputRef.value);
19845
+
19852
19846
  return useField(state)
19853
19847
  }
19854
19848
  });
@@ -20059,7 +20053,7 @@
20059
20053
  onSubmit: Function
20060
20054
  },
20061
20055
 
20062
- emits: [ 'reset', 'validation-success', 'validation-error' ],
20056
+ emits: [ 'reset', 'validationSuccess', 'validationError' ],
20063
20057
 
20064
20058
  setup (props, { slots, emit }) {
20065
20059
  const vm = vue.getCurrentInstance();
@@ -20076,7 +20070,7 @@
20076
20070
  const index = ++validateIndex;
20077
20071
 
20078
20072
  const emitEvent = (res, ref) => {
20079
- emit('validation-' + (res === true ? 'success' : 'error'), ref);
20073
+ emit('validation' + (res === true ? 'Success' : 'Error'), ref);
20080
20074
  };
20081
20075
 
20082
20076
  const validateComponent = comp => {
@@ -20178,7 +20172,9 @@
20178
20172
  addFocusFn(() => {
20179
20173
  if (rootRef.value === null) { return }
20180
20174
 
20181
- const target = rootRef.value.querySelector('[autofocus], [data-autofocus]')
20175
+ const target = rootRef.value.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
20176
+ || rootRef.value.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
20177
+ || rootRef.value.querySelector('[autofocus], [data-autofocus]')
20182
20178
  || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex > -1);
20183
20179
 
20184
20180
  target !== null && target !== void 0 && target.focus({ preventScroll: true });
@@ -20991,7 +20987,7 @@
20991
20987
  const vm = vue.getCurrentInstance();
20992
20988
  const isDark = useDark(props, vm.proxy.$q);
20993
20989
 
20994
- const { transition, transitionStyle } = useTransition(props, vue.computed(() => props.showing));
20990
+ const { transitionProps, transitionStyle } = useTransition(props);
20995
20991
 
20996
20992
  const classes = vue.computed(() =>
20997
20993
  'q-inner-loading absolute-full column flex-center'
@@ -21035,10 +21031,7 @@
21035
21031
  : null
21036
21032
  }
21037
21033
 
21038
- return () => vue.h(vue.Transition, {
21039
- name: transition.value,
21040
- appear: true
21041
- }, getContent)
21034
+ return () => vue.h(vue.Transition, transitionProps.value, getContent)
21042
21035
  }
21043
21036
  });
21044
21037
 
@@ -21226,7 +21219,7 @@
21226
21219
 
21227
21220
  computedMask = mask;
21228
21221
  computedUnmask = val => {
21229
- const unmaskMatch = unmaskMatcher.exec(val);
21222
+ const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length));
21230
21223
  if (unmaskMatch !== null) {
21231
21224
  val = unmaskMatch.slice(1).join('');
21232
21225
  }
@@ -22015,9 +22008,11 @@
22015
22008
  Object.assign(proxy, {
22016
22009
  focus,
22017
22010
  select,
22018
- getNativeElement: () => inputRef.value
22011
+ getNativeElement: () => inputRef.value // deprecated
22019
22012
  });
22020
22013
 
22014
+ injectProp(proxy, 'nativeEl', () => inputRef.value);
22015
+
22021
22016
  return renderFn
22022
22017
  }
22023
22018
  });
@@ -22216,7 +22211,12 @@
22216
22211
  bordered: Boolean,
22217
22212
  dense: Boolean,
22218
22213
  separator: Boolean,
22219
- padding: Boolean
22214
+ padding: Boolean,
22215
+
22216
+ tag: {
22217
+ type: String,
22218
+ default: 'div'
22219
+ }
22220
22220
  },
22221
22221
 
22222
22222
  setup (props, { slots }) {
@@ -22232,7 +22232,7 @@
22232
22232
  + (props.padding === true ? ' q-list--padding' : '')
22233
22233
  );
22234
22234
 
22235
- return () => vue.h('div', { class: classes.value, role: 'list' }, hSlot(slots.default))
22235
+ return () => vue.h(props.tag, { class: classes.value, role: 'list' }, hSlot(slots.default))
22236
22236
  }
22237
22237
  });
22238
22238
 
@@ -22270,7 +22270,7 @@
22270
22270
  readonly: Boolean
22271
22271
  },
22272
22272
 
22273
- emits: [ 'update:modelValue', 'change', 'drag-value' ],
22273
+ emits: [ 'update:modelValue', 'change', 'dragValue' ],
22274
22274
 
22275
22275
  setup (props, { slots, emit }) {
22276
22276
  const { proxy } = vue.getCurrentInstance();
@@ -22317,7 +22317,7 @@
22317
22317
  )
22318
22318
  );
22319
22319
 
22320
- const decimals = vue.computed(() => (String(props.step).trim('0').split('.')[ 1 ] || '').length);
22320
+ const decimals = vue.computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length);
22321
22321
  const step = vue.computed(() => (props.step === 0 ? 1 : props.step));
22322
22322
  const instantFeedback = vue.computed(() => props.instantFeedback === true || dragging.value === true);
22323
22323
 
@@ -22452,7 +22452,7 @@
22452
22452
 
22453
22453
  newModel = between(newModel, innerMin.value, innerMax.value);
22454
22454
 
22455
- emit('drag-value', newModel);
22455
+ emit('dragValue', newModel);
22456
22456
 
22457
22457
  if (model.value !== newModel) {
22458
22458
  model.value = newModel;
@@ -22627,6 +22627,8 @@
22627
22627
 
22628
22628
  const { proxy } = vue.getCurrentInstance();
22629
22629
 
22630
+ vue.watch(() => proxy.$q.lang.rtl, emitEvent);
22631
+
22630
22632
  vue.onMounted(() => {
22631
22633
  parentEl = proxy.$el.parentNode;
22632
22634
  configureScrollTarget();
@@ -22727,7 +22729,7 @@
22727
22729
  if (height.value !== newHeight) {
22728
22730
  resized = true;
22729
22731
  height.value = newHeight;
22730
- props.onScrollHeight !== void 0 && emit('scroll-height', newHeight);
22732
+ props.onScrollHeight !== void 0 && emit('scrollHeight', newHeight);
22731
22733
  updateScrollbarWidth();
22732
22734
  }
22733
22735
  if (width.value !== newWidth) {
@@ -24378,7 +24380,7 @@
24378
24380
 
24379
24381
  emits: [
24380
24382
  'update:modelValue', 'save', 'cancel',
24381
- 'before-show', 'show', 'before-hide', 'hide'
24383
+ 'beforeShow', 'show', 'beforeHide', 'hide'
24382
24384
  ],
24383
24385
 
24384
24386
  setup (props, { slots, emit }) {
@@ -24442,7 +24444,7 @@
24442
24444
  validated = false;
24443
24445
  initialValue.value = cloneDeep(props.modelValue);
24444
24446
  currentModel.value = cloneDeep(props.modelValue);
24445
- emit('before-show');
24447
+ emit('beforeShow');
24446
24448
  }
24447
24449
 
24448
24450
  function onShow () {
@@ -24460,7 +24462,7 @@
24460
24462
  }
24461
24463
  }
24462
24464
 
24463
- emit('before-hide');
24465
+ emit('beforeHide');
24464
24466
  }
24465
24467
 
24466
24468
  function onHide () {
@@ -25729,7 +25731,7 @@
25729
25731
  scroll.horizontal.percentage = vue.computed(() => {
25730
25732
  const diff = scroll.horizontal.size.value - container.horizontal.value;
25731
25733
  if (diff <= 0) { return 0 }
25732
- const p = between(scroll.horizontal.position.value / diff, 0, 1);
25734
+ const p = between(Math.abs(scroll.horizontal.position.value) / diff, 0, 1);
25733
25735
  return Math.round(p * 10000) / 10000
25734
25736
  });
25735
25737
  scroll.horizontal.thumbHidden = vue.computed(() =>
@@ -25755,7 +25757,7 @@
25755
25757
  return {
25756
25758
  ...props.thumbStyle,
25757
25759
  ...props.horizontalThumbStyle,
25758
- left: `${ scroll.horizontal.thumbStart.value }px`,
25760
+ [ proxy.$q.lang.rtl === true ? 'right' : 'left' ]: `${ scroll.horizontal.thumbStart.value }px`,
25759
25761
  width: `${ scroll.horizontal.thumbSize.value }px`
25760
25762
  }
25761
25763
  });
@@ -25949,6 +25951,15 @@
25949
25951
 
25950
25952
  let scrollPosition = null;
25951
25953
 
25954
+ vue.watch(() => proxy.$q.lang.rtl, rtl => {
25955
+ if (targetRef.value !== null) {
25956
+ setHorizontalScrollPosition(
25957
+ targetRef.value,
25958
+ Math.abs(scroll.horizontal.position.value) * (rtl === true ? -1 : 1)
25959
+ );
25960
+ }
25961
+ });
25962
+
25952
25963
  vue.onDeactivated(() => {
25953
25964
  scrollPosition = {
25954
25965
  top: scroll.vertical.position.value,
@@ -25985,7 +25996,9 @@
25985
25996
  setScrollPercentage (axis, percentage, duration) {
25986
25997
  localSetScrollPosition(
25987
25998
  axis,
25988
- percentage * (scroll[ axis ].size.value - container[ axis ].value),
25999
+ percentage
26000
+ * (scroll[ axis ].size.value - container[ axis ].value)
26001
+ * (axis === 'horizontal' && proxy.$q.lang.rtl === true ? -1 : 1),
25989
26002
  duration
25990
26003
  );
25991
26004
  }
@@ -26734,7 +26747,7 @@
26734
26747
 
26735
26748
  function emitScroll (index) {
26736
26749
  if (prevToIndex !== index) {
26737
- props.onVirtualScroll !== void 0 && emit('virtual-scroll', {
26750
+ props.onVirtualScroll !== void 0 && emit('virtualScroll', {
26738
26751
  index,
26739
26752
  from: virtualScrollSliceRange.value.from,
26740
26753
  to: virtualScrollSliceRange.value.to - 1,
@@ -26906,9 +26919,9 @@
26906
26919
 
26907
26920
  emits: [
26908
26921
  ...useFieldEmits,
26909
- 'add', 'remove', 'input-value', 'new-value',
26922
+ 'add', 'remove', 'inputValue', 'newValue',
26910
26923
  'keyup', 'keypress', 'keydown',
26911
- 'filter-abort'
26924
+ 'filterAbort'
26912
26925
  ],
26913
26926
 
26914
26927
  setup (props, { slots, emit }) {
@@ -27047,20 +27060,16 @@
27047
27060
 
27048
27061
  const tabindex = vue.computed(() => (state.focused.value === true ? props.tabindex : -1));
27049
27062
 
27050
- const comboboxAttrs = vue.computed(() => {
27051
- const attrs = {
27052
- tabindex: props.tabindex,
27053
- role: 'combobox',
27054
- 'aria-label': props.label,
27055
- 'aria-readonly': props.readonly === true ? 'true' : 'false',
27056
- 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
27057
- 'aria-expanded': menu.value === true ? 'true' : 'false',
27058
- 'aria-owns': `${ state.targetUid.value }_lb`,
27059
- 'aria-controls': `${ state.targetUid.value }_lb`
27060
- };
27061
-
27062
- return attrs
27063
- });
27063
+ const comboboxAttrs = vue.computed(() => ({
27064
+ tabindex: props.tabindex,
27065
+ role: 'combobox',
27066
+ 'aria-label': props.label,
27067
+ 'aria-readonly': props.readonly === true ? 'true' : 'false',
27068
+ 'aria-autocomplete': props.useInput === true ? 'list' : 'none',
27069
+ 'aria-expanded': menu.value === true ? 'true' : 'false',
27070
+ 'aria-owns': `${ state.targetUid.value }_lb`,
27071
+ 'aria-controls': `${ state.targetUid.value }_lb`
27072
+ }));
27064
27073
 
27065
27074
  const listboxAttrs = vue.computed(() => {
27066
27075
  const attrs = {
@@ -27656,7 +27665,7 @@
27656
27665
  };
27657
27666
 
27658
27667
  if (props.onNewValue !== void 0) {
27659
- emit('new-value', inputValue.value, done);
27668
+ emit('newValue', inputValue.value, done);
27660
27669
  }
27661
27670
  else {
27662
27671
  done(inputValue.value);
@@ -27679,8 +27688,8 @@
27679
27688
  return hasDialog === true
27680
27689
  ? menuContentRef.value
27681
27690
  : (
27682
- menuRef.value !== null && menuRef.value.__qPortalInnerRef.value !== null
27683
- ? menuRef.value.__qPortalInnerRef.value
27691
+ menuRef.value !== null && menuRef.value.contentEl !== null
27692
+ ? menuRef.value.contentEl
27684
27693
  : void 0
27685
27694
  )
27686
27695
  }
@@ -27823,7 +27832,7 @@
27823
27832
  function setInputValue (val) {
27824
27833
  if (inputValue.value !== val) {
27825
27834
  inputValue.value = val;
27826
- emit('input-value', val);
27835
+ emit('inputValue', val);
27827
27836
  }
27828
27837
  }
27829
27838
 
@@ -27847,7 +27856,7 @@
27847
27856
  }
27848
27857
 
27849
27858
  if (state.innerLoading.value === true) {
27850
- emit('filter-abort');
27859
+ emit('filterAbort');
27851
27860
  }
27852
27861
  else {
27853
27862
  state.innerLoading.value = true;
@@ -28064,7 +28073,7 @@
28064
28073
  filterId = void 0;
28065
28074
 
28066
28075
  if (state.innerLoading.value === true) {
28067
- emit('filter-abort');
28076
+ emit('filterAbort');
28068
28077
  state.innerLoading.value = false;
28069
28078
  innerLoadingIndicator.value = false;
28070
28079
  }
@@ -28150,14 +28159,14 @@
28150
28159
 
28151
28160
  function onControlPopupShow (e) {
28152
28161
  e !== void 0 && stop(e);
28153
- emit('popup-show', e);
28162
+ emit('popupShow', e);
28154
28163
  state.hasPopupOpen = true;
28155
28164
  state.onControlFocusin(e);
28156
28165
  }
28157
28166
 
28158
28167
  function onControlPopupHide (e) {
28159
28168
  e !== void 0 && stop(e);
28160
- emit('popup-hide', e);
28169
+ emit('popupHide', e);
28161
28170
  state.hasPopupOpen = false;
28162
28171
  state.onControlFocusout(e);
28163
28172
  }
@@ -32148,7 +32157,7 @@
32148
32157
  },
32149
32158
 
32150
32159
  emits: [
32151
- 'request', 'virtual-scroll',
32160
+ 'request', 'virtualScroll',
32152
32161
  ...useFullscreenEmits,
32153
32162
  ...useTableRowExpandEmits,
32154
32163
  ...useTableRowSelectionEmits
@@ -32382,7 +32391,7 @@
32382
32391
 
32383
32392
  scrollTarget.scrollTop = offsetTop;
32384
32393
 
32385
- emit('virtual-scroll', {
32394
+ emit('virtualScroll', {
32386
32395
  index: toIndex,
32387
32396
  from: 0,
32388
32397
  to: innerPagination.value.rowsPerPage - 1,
@@ -32392,7 +32401,7 @@
32392
32401
  }
32393
32402
 
32394
32403
  function onVScroll (info) {
32395
- emit('virtual-scroll', info);
32404
+ emit('virtualScroll', info);
32396
32405
  }
32397
32406
 
32398
32407
  function getProgress () {
@@ -34320,9 +34329,9 @@
34320
34329
  'update:expanded',
34321
34330
  'update:ticked',
34322
34331
  'update:selected',
34323
- 'lazy-load',
34324
- 'after-show',
34325
- 'after-hide'
34332
+ 'lazyLoad',
34333
+ 'afterShow',
34334
+ 'afterHide'
34326
34335
  ],
34327
34336
 
34328
34337
  setup (props, { slots, emit }) {
@@ -34571,7 +34580,7 @@
34571
34580
  if (Array.isArray(node[ props.childrenKey ]) !== true) {
34572
34581
  node[ props.childrenKey ] = [];
34573
34582
  }
34574
- emit('lazy-load', {
34583
+ emit('lazyLoad', {
34575
34584
  node,
34576
34585
  key,
34577
34586
  done: children => {
@@ -34718,11 +34727,11 @@
34718
34727
  }
34719
34728
 
34720
34729
  function onShow () {
34721
- emit('after-show');
34730
+ emit('afterShow');
34722
34731
  }
34723
34732
 
34724
34733
  function onHide () {
34725
- emit('after-hide');
34734
+ emit('afterHide');
34726
34735
  }
34727
34736
 
34728
34737
  function getNode (node) {
@@ -35565,7 +35574,7 @@
35565
35574
  helpers.queuedFiles.value = helpers.queuedFiles.value.concat(files);
35566
35575
  files.forEach(f => { helpers.updateFileStatus(f, 'failed'); });
35567
35576
 
35568
- emit('factory-failed', err, files);
35577
+ emit('factoryFailed', err, files);
35569
35578
  workingThreads.value--;
35570
35579
  }
35571
35580
  };
@@ -38083,8 +38092,7 @@
38083
38092
  tabindex: 0,
38084
38093
  clickable: true,
38085
38094
  dark: isDark.value,
38086
- onClick () { onOk(action); },
38087
- onKeyup (e) { e.keyCode === 13 && onOk(action); }
38095
+ onClick () { onOk(action); }
38088
38096
  }, () => [
38089
38097
  vue.h(
38090
38098
  QItemSection,
@@ -38713,12 +38721,12 @@
38713
38721
  function getPrompt () {
38714
38722
  return [
38715
38723
  vue.h(QInput, {
38716
- modelValue: model.value,
38717
- ...formProps.value,
38718
38724
  color: vmColor.value,
38719
38725
  dense: true,
38720
38726
  autofocus: true,
38721
38727
  dark: isDark.value,
38728
+ ...formProps.value,
38729
+ modelValue: model.value,
38722
38730
  'onUpdate:modelValue': onUpdateModel,
38723
38731
  onKeyup: onInputKeyup
38724
38732
  })
@@ -38728,11 +38736,11 @@
38728
38736
  function getOptions () {
38729
38737
  return [
38730
38738
  vue.h(QOptionGroup, {
38731
- modelValue: model.value,
38732
- ...formProps.value,
38733
38739
  color: vmColor.value,
38734
38740
  options: props.options.items,
38735
38741
  dark: isDark.value,
38742
+ ...formProps.value,
38743
+ modelValue: model.value,
38736
38744
  'onUpdate:modelValue': onUpdateModel
38737
38745
  })
38738
38746
  ]
@@ -40475,7 +40483,7 @@
40475
40483
  */
40476
40484
 
40477
40485
  var index_umd = {
40478
- version: '2.10.0',
40486
+ version: '2.10.1',
40479
40487
  install (app, opts) {
40480
40488
  installQuasar(app, {
40481
40489
  components,