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
@@ -24,14 +24,12 @@
24
24
  "height": {
25
25
  "type": "Number",
26
26
  "required": true,
27
- "desc": "Layout height",
28
- "examples": [ 822 ]
27
+ "desc": "Layout height"
29
28
  },
30
29
  "width": {
31
30
  "type": "Number",
32
31
  "required": true,
33
- "desc": "Layout width",
34
- "examples": [ 822 ]
32
+ "desc": "Layout width"
35
33
  }
36
34
  }
37
35
  }
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, withDirectives, onActivated, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, withDirectives, onActivated, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
 
@@ -142,7 +142,7 @@ export default createComponent({
142
142
  scroll.horizontal.percentage = computed(() => {
143
143
  const diff = scroll.horizontal.size.value - container.horizontal.value
144
144
  if (diff <= 0) { return 0 }
145
- const p = between(scroll.horizontal.position.value / diff, 0, 1)
145
+ const p = between(Math.abs(scroll.horizontal.position.value) / diff, 0, 1)
146
146
  return Math.round(p * 10000) / 10000
147
147
  })
148
148
  scroll.horizontal.thumbHidden = computed(() =>
@@ -168,7 +168,7 @@ export default createComponent({
168
168
  return {
169
169
  ...props.thumbStyle,
170
170
  ...props.horizontalThumbStyle,
171
- left: `${ scroll.horizontal.thumbStart.value }px`,
171
+ [ proxy.$q.lang.rtl === true ? 'right' : 'left' ]: `${ scroll.horizontal.thumbStart.value }px`,
172
172
  width: `${ scroll.horizontal.thumbSize.value }px`
173
173
  }
174
174
  })
@@ -362,6 +362,15 @@ export default createComponent({
362
362
 
363
363
  let scrollPosition = null
364
364
 
365
+ watch(() => proxy.$q.lang.rtl, rtl => {
366
+ if (targetRef.value !== null) {
367
+ setHorizontalScrollPosition(
368
+ targetRef.value,
369
+ Math.abs(scroll.horizontal.position.value) * (rtl === true ? -1 : 1)
370
+ )
371
+ }
372
+ })
373
+
365
374
  onDeactivated(() => {
366
375
  scrollPosition = {
367
376
  top: scroll.vertical.position.value,
@@ -398,7 +407,9 @@ export default createComponent({
398
407
  setScrollPercentage (axis, percentage, duration) {
399
408
  localSetScrollPosition(
400
409
  axis,
401
- percentage * (scroll[ axis ].size.value - container[ axis ].value),
410
+ percentage
411
+ * (scroll[ axis ].size.value - container[ axis ].value)
412
+ * (axis === 'horizontal' && proxy.$q.lang.rtl === true ? -1 : 1),
402
413
  duration
403
414
  )
404
415
  }
@@ -82,7 +82,6 @@
82
82
  "type": [ "Number", "String" ],
83
83
  "desc": "When content changes, the scrollbar appears; this delay defines the amount of time (in milliseconds) before scrollbars disappear again (if component is not hovered)",
84
84
  "default": 1000,
85
- "examples": [ 500, ":delay=\"550\"" ],
86
85
  "category": "behavior"
87
86
  },
88
87
 
@@ -115,51 +114,43 @@
115
114
  "verticalPosition": {
116
115
  "type": "Number",
117
116
  "required": true,
118
- "desc": "Vertical scroll position (in px)",
119
- "__exemption": [ "examples" ]
117
+ "desc": "Vertical scroll position (in px)"
120
118
  },
121
119
  "verticalPercentage": {
122
120
  "type": "Number",
123
121
  "required": true,
124
- "desc": "Vertical scroll percentage (0.0 <= x <= 1.0)",
125
- "__exemption": [ "examples" ]
122
+ "desc": "Vertical scroll percentage (0.0 <= x <= 1.0)"
126
123
  },
127
124
  "verticalSize": {
128
125
  "type": "Number",
129
126
  "required": true,
130
- "desc": "Vertical scroll size (in px)",
131
- "__exemption": [ "examples" ]
127
+ "desc": "Vertical scroll size (in px)"
132
128
  },
133
129
  "verticalContainerSize": {
134
130
  "type": "Number",
135
131
  "required": true,
136
- "desc": "Height of the container (in px)",
137
- "__exemption": [ "examples" ]
132
+ "desc": "Height of the container (in px)"
138
133
  },
139
134
 
140
135
  "horizontalPosition": {
141
136
  "type": "Number",
142
137
  "required": true,
143
- "desc": "Horizontal scroll position (in px)",
144
- "__exemption": [ "examples" ]
138
+ "desc": "Horizontal scroll position (in px)"
145
139
  },
146
140
  "horizontalPercentage": {
147
141
  "type": "Number",
148
142
  "required": true,
149
- "desc": "Horizontal scroll percentage (0.0 <= x <= 1.0)",
150
- "__exemption": [ "examples" ]
143
+ "desc": "Horizontal scroll percentage (0.0 <= x <= 1.0)"
151
144
  },
152
145
  "horizontalSize": {
153
146
  "type": "Number",
154
147
  "required": true,
155
- "desc": "Horizontal scroll size (in px)",
156
- "__exemption": [ "examples" ]
148
+ "desc": "Horizontal scroll size (in px)"
157
149
  },
158
150
  "horizontalContainerSize": {
159
151
  "type": "Number",
160
152
  "required": true,
161
- "desc": "Width of the container (in px)",
162
- "__exemption": [ "examples" ]
153
+ "desc": "Width of the container (in px)"
163
154
  }
164
155
  }
165
156
  }
@@ -181,56 +172,47 @@
181
172
  "returns": {
182
173
  "type": "Object",
183
174
  "desc": "Scroll information",
184
- "__exemption": [ "examples" ],
185
175
  "definition": {
186
176
  "verticalPosition": {
187
177
  "type": "Number",
188
178
  "required": true,
189
- "desc": "Vertical scroll position (in px)",
190
- "__exemption": [ "examples" ]
179
+ "desc": "Vertical scroll position (in px)"
191
180
  },
192
181
  "verticalPercentage": {
193
182
  "type": "Number",
194
183
  "required": true,
195
- "desc": "Vertical scroll percentage (0.0 <= x <= 1.0)",
196
- "__exemption": [ "examples" ]
184
+ "desc": "Vertical scroll percentage (0.0 <= x <= 1.0)"
197
185
  },
198
186
  "verticalSize": {
199
187
  "type": "Number",
200
188
  "required": true,
201
- "desc": "Vertical scroll size (in px)",
202
- "__exemption": [ "examples" ]
189
+ "desc": "Vertical scroll size (in px)"
203
190
  },
204
191
  "verticalContainerSize": {
205
192
  "type": "Number",
206
193
  "required": true,
207
- "desc": "Height of the container (in px)",
208
- "__exemption": [ "examples" ]
194
+ "desc": "Height of the container (in px)"
209
195
  },
210
196
 
211
197
  "horizontalPosition": {
212
198
  "type": "Number",
213
199
  "required": true,
214
- "desc": "Horizontal scroll position (in px)",
215
- "__exemption": [ "examples" ]
200
+ "desc": "Horizontal scroll position (in px)"
216
201
  },
217
202
  "horizontalPercentage": {
218
203
  "type": "Number",
219
204
  "required": true,
220
- "desc": "Horizontal scroll percentage (0.0 <= x <= 1.0)",
221
- "__exemption": [ "examples" ]
205
+ "desc": "Horizontal scroll percentage (0.0 <= x <= 1.0)"
222
206
  },
223
207
  "horizontalSize": {
224
208
  "type": "Number",
225
209
  "required": true,
226
- "desc": "Horizontal scroll size (in px)",
227
- "__exemption": [ "examples" ]
210
+ "desc": "Horizontal scroll size (in px)"
228
211
  },
229
212
  "horizontalContainerSize": {
230
213
  "type": "Number",
231
214
  "required": true,
232
- "desc": "Width of the container (in px)",
233
- "__exemption": [ "examples" ]
215
+ "desc": "Width of the container (in px)"
234
216
  }
235
217
  }
236
218
  }
@@ -245,14 +227,12 @@
245
227
  "top": {
246
228
  "type": "Number",
247
229
  "required": true,
248
- "desc": "Scroll offset from top (vertical)",
249
- "examples": [ 120 ]
230
+ "desc": "Scroll offset from top (vertical)"
250
231
  },
251
232
  "left": {
252
233
  "type": "Number",
253
234
  "required": true,
254
- "desc": "Scroll offset from left (horizontal)",
255
- "examples": [ 10 ]
235
+ "desc": "Scroll offset from left (horizontal)"
256
236
  }
257
237
  },
258
238
  "examples": [ "{ top: 10, left: 0 }" ]
@@ -268,14 +248,12 @@
268
248
  "top": {
269
249
  "type": "Number",
270
250
  "required": true,
271
- "desc": "Scroll percentage (0.0 <= x <= 1.0) offset from top (vertical)",
272
- "examples": [ 0.12 ]
251
+ "desc": "Scroll percentage (0.0 <= x <= 1.0) offset from top (vertical)"
273
252
  },
274
253
  "left": {
275
254
  "type": "Number",
276
255
  "required": true,
277
- "desc": "Scroll percentage (0.0 <= x <= 1.0) offset from left (horizontal)",
278
- "examples": [ 0.92 ]
256
+ "desc": "Scroll percentage (0.0 <= x <= 1.0) offset from left (horizontal)"
279
257
  }
280
258
  },
281
259
  "examples": [ "{ top: 0.212, left: 0 }" ]
@@ -294,13 +272,11 @@
294
272
  "offset": {
295
273
  "type": "Number",
296
274
  "required": true,
297
- "desc": "Scroll position offset from top (in pixels)",
298
- "examples": [ 220 ]
275
+ "desc": "Scroll position offset from top (in pixels)"
299
276
  },
300
277
  "duration": {
301
278
  "type": "Number",
302
- "desc": "Duration (in milliseconds) enabling animated scroll",
303
- "examples": [ 300 ]
279
+ "desc": "Duration (in milliseconds) enabling animated scroll"
304
280
  }
305
281
  }
306
282
  },
@@ -317,13 +293,11 @@
317
293
  "offset": {
318
294
  "type": "Number",
319
295
  "desc": "Scroll percentage (0.0 <= x <= 1.0) of the total scrolling size",
320
- "required": true,
321
- "examples": [ 220 ]
296
+ "required": true
322
297
  },
323
298
  "duration": {
324
299
  "type": "Number",
325
- "desc": "Duration (in milliseconds) enabling animated scroll",
326
- "examples": [ 300 ]
300
+ "desc": "Duration (in milliseconds) enabling animated scroll"
327
301
  }
328
302
  }
329
303
  }
@@ -119,6 +119,8 @@ export default createComponent({
119
119
 
120
120
  const { proxy } = getCurrentInstance()
121
121
 
122
+ watch(() => proxy.$q.lang.rtl, emitEvent)
123
+
122
124
  onMounted(() => {
123
125
  parentEl = proxy.$el.parentNode
124
126
  configureScrollTarget()
@@ -40,14 +40,12 @@
40
40
  "top": {
41
41
  "type": "Number",
42
42
  "required": true,
43
- "desc": "Scroll offset from top (vertical)",
44
- "examples": [ 120 ]
43
+ "desc": "Scroll offset from top (vertical)"
45
44
  },
46
45
  "left": {
47
46
  "type": "Number",
48
47
  "required": true,
49
- "desc": "Scroll offset from left (horizontal)",
50
- "examples": [ 10 ]
48
+ "desc": "Scroll offset from left (horizontal)"
51
49
  }
52
50
  }
53
51
  },
@@ -71,14 +69,12 @@
71
69
  "top": {
72
70
  "type": "Number",
73
71
  "required": true,
74
- "desc": "Vertical delta distance since event was last emitted",
75
- "examples": [ 120 ]
72
+ "desc": "Vertical delta distance since event was last emitted"
76
73
  },
77
74
  "left": {
78
75
  "type": "Number",
79
76
  "required": true,
80
- "desc": "Horizontal delta distance since event was last emitted",
81
- "examples": [ 10 ]
77
+ "desc": "Horizontal delta distance since event was last emitted"
82
78
  }
83
79
  }
84
80
  },
@@ -91,14 +87,12 @@
91
87
  "top": {
92
88
  "type": "Number",
93
89
  "required": true,
94
- "desc": "Scroll offset from top (vertical)",
95
- "examples": [ 120 ]
90
+ "desc": "Scroll offset from top (vertical)"
96
91
  },
97
92
  "left": {
98
93
  "type": "Number",
99
94
  "required": true,
100
- "desc": "Scroll offset from left (horizontal)",
101
- "examples": [ 10 ]
95
+ "desc": "Scroll offset from left (horizontal)"
102
96
  }
103
97
  }
104
98
  }
@@ -127,9 +127,9 @@ export default createComponent({
127
127
 
128
128
  emits: [
129
129
  ...useFieldEmits,
130
- 'add', 'remove', 'input-value', 'new-value',
130
+ 'add', 'remove', 'inputValue', 'newValue',
131
131
  'keyup', 'keypress', 'keydown',
132
- 'filter-abort'
132
+ 'filterAbort'
133
133
  ],
134
134
 
135
135
  setup (props, { slots, emit }) {
@@ -251,6 +251,11 @@ export default createComponent({
251
251
  .join(', ')
252
252
  )
253
253
 
254
+ const ariaCurrentValue = computed(() => (props.displayValue !== void 0
255
+ ? props.displayValue
256
+ : selectedString.value
257
+ ))
258
+
254
259
  const needsHtmlFn = computed(() => (
255
260
  props.optionsHtml === true
256
261
  ? () => true
@@ -276,20 +281,9 @@ export default createComponent({
276
281
  'aria-readonly': props.readonly === true ? 'true' : 'false',
277
282
  'aria-autocomplete': props.useInput === true ? 'list' : 'none',
278
283
  'aria-expanded': menu.value === true ? 'true' : 'false',
279
- 'aria-owns': `${ state.targetUid.value }_lb`,
280
284
  'aria-controls': `${ state.targetUid.value }_lb`
281
285
  }
282
286
 
283
- return attrs
284
- })
285
-
286
- const listboxAttrs = computed(() => {
287
- const attrs = {
288
- id: `${ state.targetUid.value }_lb`,
289
- role: 'listbox',
290
- 'aria-multiselectable': props.multiple === true ? 'true' : 'false'
291
- }
292
-
293
287
  if (optionIndex.value >= 0) {
294
288
  attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`
295
289
  }
@@ -297,6 +291,12 @@ export default createComponent({
297
291
  return attrs
298
292
  })
299
293
 
294
+ const listboxAttrs = computed(() => ({
295
+ id: `${ state.targetUid.value }_lb`,
296
+ role: 'listbox',
297
+ 'aria-multiselectable': props.multiple === true ? 'true' : 'false'
298
+ }))
299
+
300
300
  const selectedScope = computed(() => {
301
301
  return innerValue.value.map((opt, i) => ({
302
302
  index: i,
@@ -792,7 +792,9 @@ export default createComponent({
792
792
  && props.useInput !== true
793
793
  && e.key !== void 0
794
794
  && e.key.length === 1 // printable char
795
- && e.altKey === e.ctrlKey // not kbd shortcut
795
+ && e.altKey === false // not kbd shortcut
796
+ && e.ctrlKey === false // not kbd shortcut
797
+ && e.metaKey === false // not kbd shortcut, especially on macOS with Command key
796
798
  && (e.keyCode !== 32 || searchBuffer.length > 0) // space in middle of search
797
799
  ) {
798
800
  menu.value !== true && showPopup(e)
@@ -877,7 +879,7 @@ export default createComponent({
877
879
  }
878
880
 
879
881
  if (props.onNewValue !== void 0) {
880
- emit('new-value', inputValue.value, done)
882
+ emit('newValue', inputValue.value, done)
881
883
  }
882
884
  else {
883
885
  done(inputValue.value)
@@ -900,8 +902,8 @@ export default createComponent({
900
902
  return hasDialog === true
901
903
  ? menuContentRef.value
902
904
  : (
903
- menuRef.value !== null && menuRef.value.__qPortalInnerRef.value !== null
904
- ? menuRef.value.__qPortalInnerRef.value
905
+ menuRef.value !== null && menuRef.value.contentEl !== null
906
+ ? menuRef.value.contentEl
905
907
  : void 0
906
908
  )
907
909
  }
@@ -939,9 +941,7 @@ export default createComponent({
939
941
 
940
942
  return [
941
943
  h('span', {
942
- [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: props.displayValue !== void 0
943
- ? props.displayValue
944
- : selectedString.value
944
+ [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value
945
945
  })
946
946
  ]
947
947
  }
@@ -996,7 +996,7 @@ export default createComponent({
996
996
  id: isTarget === true ? state.targetUid.value : void 0,
997
997
  maxlength: props.maxlength,
998
998
  autocomplete: props.autocomplete,
999
- 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
999
+ 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,
1000
1000
  disabled: props.disable === true,
1001
1001
  readonly: props.readonly === true,
1002
1002
  ...inputControlEvents.value
@@ -1044,7 +1044,7 @@ export default createComponent({
1044
1044
  function setInputValue (val) {
1045
1045
  if (inputValue.value !== val) {
1046
1046
  inputValue.value = val
1047
- emit('input-value', val)
1047
+ emit('inputValue', val)
1048
1048
  }
1049
1049
  }
1050
1050
 
@@ -1068,7 +1068,7 @@ export default createComponent({
1068
1068
  }
1069
1069
 
1070
1070
  if (state.innerLoading.value === true) {
1071
- emit('filter-abort')
1071
+ emit('filterAbort')
1072
1072
  }
1073
1073
  else {
1074
1074
  state.innerLoading.value = true
@@ -1285,7 +1285,7 @@ export default createComponent({
1285
1285
  filterId = void 0
1286
1286
 
1287
1287
  if (state.innerLoading.value === true) {
1288
- emit('filter-abort')
1288
+ emit('filterAbort')
1289
1289
  state.innerLoading.value = false
1290
1290
  innerLoadingIndicator.value = false
1291
1291
  }
@@ -1371,14 +1371,14 @@ export default createComponent({
1371
1371
 
1372
1372
  function onControlPopupShow (e) {
1373
1373
  e !== void 0 && stop(e)
1374
- emit('popup-show', e)
1374
+ emit('popupShow', e)
1375
1375
  state.hasPopupOpen = true
1376
1376
  state.onControlFocusin(e)
1377
1377
  }
1378
1378
 
1379
1379
  function onControlPopupHide (e) {
1380
1380
  e !== void 0 && stop(e)
1381
- emit('popup-hide', e)
1381
+ emit('popupHide', e)
1382
1382
  state.hasPopupOpen = false
1383
1383
  state.onControlFocusout(e)
1384
1384
  }
@@ -1496,8 +1496,9 @@ export default createComponent({
1496
1496
  key: 'd_t',
1497
1497
  class: 'q-select__focus-target',
1498
1498
  id: isTarget === true ? state.targetUid.value : void 0,
1499
+ value: ariaCurrentValue.value,
1499
1500
  readonly: true,
1500
- 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
1501
+ 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,
1501
1502
  ...attrs,
1502
1503
  onKeydown: onTargetKeydown,
1503
1504
  onKeyup: onTargetKeyup,