quasar 2.9.2 → 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 (337) 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/QBreadcrumbsEl.json +0 -14
  12. package/dist/api/QBtn.json +0 -3
  13. package/dist/api/QBtnDropdown.json +32 -8
  14. package/dist/api/QCarousel.json +0 -10
  15. package/dist/api/QCarouselControl.json +0 -3
  16. package/dist/api/QCircularProgress.json +0 -23
  17. package/dist/api/QColor.json +0 -3
  18. package/dist/api/QDialog.json +18 -9
  19. package/dist/api/QDrawer.json +0 -6
  20. package/dist/api/QExpansionItem.json +0 -3
  21. package/dist/api/QFab.json +1 -6
  22. package/dist/api/QFabAction.json +1 -3
  23. package/dist/api/QField.json +1 -6
  24. package/dist/api/QFile.json +12 -29
  25. package/dist/api/QFooter.json +0 -3
  26. package/dist/api/QHeader.json +0 -6
  27. package/dist/api/QInfiniteScroll.json +9 -16
  28. package/dist/api/QInnerLoading.json +0 -4
  29. package/dist/api/QInput.json +8 -15
  30. package/dist/api/QIntersection.json +0 -4
  31. package/dist/api/QItemLabel.json +0 -5
  32. package/dist/api/QKnob.json +3 -36
  33. package/dist/api/QLayout.json +6 -24
  34. package/dist/api/QLinearProgress.json +0 -6
  35. package/dist/api/QList.json +15 -0
  36. package/dist/api/QMenu.json +7 -12
  37. package/dist/api/QOptionGroup.json +0 -3
  38. package/dist/api/QPage.json +2 -8
  39. package/dist/api/QPageScroller.json +0 -9
  40. package/dist/api/QPageSticky.json +0 -3
  41. package/dist/api/QPagination.json +138 -127
  42. package/dist/api/QParallax.json +2 -14
  43. package/dist/api/QPopupEdit.json +0 -8
  44. package/dist/api/QPopupProxy.json +0 -4
  45. package/dist/api/QRange.json +5 -32
  46. package/dist/api/QRating.json +0 -4
  47. package/dist/api/QResizeObserver.json +2 -8
  48. package/dist/api/QScrollArea.json +8 -36
  49. package/dist/api/QScrollObserver.json +6 -24
  50. package/dist/api/QSelect.json +18 -108
  51. package/dist/api/QSlideItem.json +1 -6
  52. package/dist/api/QSlideTransition.json +0 -4
  53. package/dist/api/QSlider.json +3 -24
  54. package/dist/api/QSpinner.json +0 -4
  55. package/dist/api/QSplitter.json +1 -4
  56. package/dist/api/QStepper.json +0 -7
  57. package/dist/api/QTabPanels.json +0 -7
  58. package/dist/api/QTable.json +43 -191
  59. package/dist/api/QTabs.json +1 -7
  60. package/dist/api/QTime.json +3 -12
  61. package/dist/api/QTooltip.json +7 -18
  62. package/dist/api/QTree.json +0 -3
  63. package/dist/api/QUploader.json +5 -16
  64. package/dist/api/QVirtualScroll.json +11 -56
  65. package/dist/api/Screen.json +9 -36
  66. package/dist/api/Scroll.json +2 -8
  67. package/dist/api/SessionStorage.json +4 -16
  68. package/dist/api/TouchHold.json +3 -12
  69. package/dist/api/TouchPan.json +7 -28
  70. package/dist/api/TouchRepeat.json +6 -24
  71. package/dist/api/TouchSwipe.json +3 -12
  72. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  73. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  74. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  75. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  76. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  77. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  78. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  79. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  80. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  81. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  82. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  83. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  84. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  85. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  86. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  87. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  88. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  89. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  90. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  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-themify.umd.prod.js +1 -1
  108. package/dist/icon-set/themify.umd.prod.js +1 -1
  109. package/dist/lang/ar-TN.umd.prod.js +1 -1
  110. package/dist/lang/ar.umd.prod.js +1 -1
  111. package/dist/lang/az-Latn.umd.prod.js +1 -1
  112. package/dist/lang/bg.umd.prod.js +1 -1
  113. package/dist/lang/bn.umd.prod.js +1 -1
  114. package/dist/lang/ca.umd.prod.js +1 -1
  115. package/dist/lang/cs.umd.prod.js +1 -1
  116. package/dist/lang/da.umd.prod.js +1 -1
  117. package/dist/lang/de.umd.prod.js +1 -1
  118. package/dist/lang/el.umd.prod.js +1 -1
  119. package/dist/lang/en-GB.umd.prod.js +1 -1
  120. package/dist/lang/en-US.umd.prod.js +1 -1
  121. package/dist/lang/eo.umd.prod.js +1 -1
  122. package/dist/lang/es.umd.prod.js +1 -1
  123. package/dist/lang/et.umd.prod.js +1 -1
  124. package/dist/lang/eu.umd.prod.js +1 -1
  125. package/dist/lang/fa-IR.umd.prod.js +1 -1
  126. package/dist/lang/fa.umd.prod.js +1 -1
  127. package/dist/lang/fi.umd.prod.js +1 -1
  128. package/dist/lang/fr.umd.prod.js +1 -1
  129. package/dist/lang/gn.umd.prod.js +1 -1
  130. package/dist/lang/he.umd.prod.js +1 -1
  131. package/dist/lang/hr.umd.prod.js +1 -1
  132. package/dist/lang/hu.umd.prod.js +1 -1
  133. package/dist/lang/id.umd.prod.js +1 -1
  134. package/dist/lang/is.umd.prod.js +1 -1
  135. package/dist/lang/it.umd.prod.js +1 -1
  136. package/dist/lang/ja.umd.prod.js +1 -1
  137. package/dist/lang/km.umd.prod.js +1 -1
  138. package/dist/lang/ko-KR.umd.prod.js +1 -1
  139. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  140. package/dist/lang/kz.umd.prod.js +1 -1
  141. package/dist/lang/lt.umd.prod.js +1 -1
  142. package/dist/lang/lu.umd.prod.js +1 -1
  143. package/dist/lang/lv.umd.prod.js +1 -1
  144. package/dist/lang/ml.umd.prod.js +1 -1
  145. package/dist/lang/mm.umd.prod.js +1 -1
  146. package/dist/lang/ms.umd.prod.js +1 -1
  147. package/dist/lang/my.umd.prod.js +1 -1
  148. package/dist/lang/nb-NO.umd.prod.js +1 -1
  149. package/dist/lang/nl.umd.prod.js +1 -1
  150. package/dist/lang/pl.umd.prod.js +1 -1
  151. package/dist/lang/pt-BR.umd.prod.js +1 -1
  152. package/dist/lang/pt.umd.prod.js +1 -1
  153. package/dist/lang/ro.umd.prod.js +1 -1
  154. package/dist/lang/ru.umd.prod.js +1 -1
  155. package/dist/lang/sk.umd.prod.js +1 -1
  156. package/dist/lang/sl.umd.prod.js +1 -1
  157. package/dist/lang/sm.umd.prod.js +1 -1
  158. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  159. package/dist/lang/sr.umd.prod.js +1 -1
  160. package/dist/lang/sv.umd.prod.js +1 -1
  161. package/dist/lang/ta.umd.prod.js +1 -1
  162. package/dist/lang/th.umd.prod.js +1 -1
  163. package/dist/lang/tr.umd.prod.js +1 -1
  164. package/dist/lang/ug.umd.prod.js +1 -1
  165. package/dist/lang/uk.umd.prod.js +1 -1
  166. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  167. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  168. package/dist/lang/vi.umd.prod.js +1 -1
  169. package/dist/lang/zh-CN.umd.prod.js +1 -1
  170. package/dist/lang/zh-TW.umd.prod.js +1 -1
  171. package/dist/quasar.cjs.prod.js +2 -2
  172. package/dist/quasar.css +12 -2
  173. package/dist/quasar.esm.js +603 -445
  174. package/dist/quasar.esm.prod.js +2 -2
  175. package/dist/quasar.prod.css +1 -1
  176. package/dist/quasar.rtl.css +28 -2
  177. package/dist/quasar.rtl.prod.css +1 -1
  178. package/dist/quasar.sass +13 -3
  179. package/dist/quasar.umd.js +603 -445
  180. package/dist/quasar.umd.prod.js +2 -2
  181. package/dist/transforms/auto-import.json +7 -3
  182. package/dist/transforms/import-map.json +2 -0
  183. package/dist/types/index.d.ts +116 -106
  184. package/dist/vetur/quasar-attributes.json +65 -49
  185. package/dist/vetur/quasar-tags.json +18 -14
  186. package/dist/web-types/web-types.json +261 -222
  187. package/package.json +3 -3
  188. package/src/api.extends.json +1 -2
  189. package/src/components/ajax-bar/QAjaxBar.json +5 -11
  190. package/src/components/badge/QBadge.js +1 -1
  191. package/src/components/breadcrumbs/QBreadcrumbs.json +0 -2
  192. package/src/components/breadcrumbs/QBreadcrumbsEl.json +1 -6
  193. package/src/components/breadcrumbs/__tests__/BasicBreadcrumbs.vue +7 -0
  194. package/src/components/breadcrumbs/__tests__/BreadcrumbWithSeparatorSlot.vue +11 -0
  195. package/src/components/breadcrumbs/__tests__/QBreadcrumbs.spec.js +112 -0
  196. package/src/components/breadcrumbs/__tests__/QBreadcrumbsEl.spec.js +87 -0
  197. package/src/components/btn/QBtn.json +1 -3
  198. package/src/components/btn/__tests__/QBtn.spec.js +87 -14
  199. package/src/components/btn/__tests__/use-btn.spec.js +385 -58
  200. package/src/components/btn/use-btn.js +24 -14
  201. package/src/components/btn-dropdown/QBtnDropdown.js +34 -18
  202. package/src/components/btn-dropdown/QBtnDropdown.json +1 -3
  203. package/src/components/btn-toggle/QBtnToggle.js +14 -14
  204. package/src/components/btn-toggle/QBtnToggle.json +2 -4
  205. package/src/components/carousel/QCarousel.json +4 -9
  206. package/src/components/carousel/QCarouselControl.json +0 -1
  207. package/src/components/checkbox/use-checkbox.js +1 -1
  208. package/src/components/checkbox/use-checkbox.json +1 -2
  209. package/src/components/chip/QChip.js +14 -11
  210. package/src/components/circular-progress/QCircularProgress.json +0 -5
  211. package/src/components/color/QColor.json +0 -1
  212. package/src/components/date/QDate.js +3 -3
  213. package/src/components/date/QDate.json +28 -56
  214. package/src/components/dialog/QDialog.js +32 -41
  215. package/src/components/dialog/QDialog.json +9 -2
  216. package/src/components/dialog-bottom-sheet/BottomSheet.js +7 -4
  217. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  218. package/src/components/drawer/QDrawer.js +10 -8
  219. package/src/components/drawer/QDrawer.json +0 -4
  220. package/src/components/editor/QEditor.json +3 -6
  221. package/src/components/expansion-item/QExpansionItem.js +3 -3
  222. package/src/components/expansion-item/QExpansionItem.json +3 -8
  223. package/src/components/fab/QFab.json +0 -1
  224. package/src/components/fab/use-fab.json +0 -1
  225. package/src/components/field/QField.json +0 -1
  226. package/src/components/file/QFile.js +4 -1
  227. package/src/components/file/QFile.json +19 -20
  228. package/src/components/footer/QFooter.js +5 -3
  229. package/src/components/footer/QFooter.json +0 -1
  230. package/src/components/form/QForm.js +5 -3
  231. package/src/components/form/QForm.json +2 -4
  232. package/src/components/header/QHeader.js +5 -3
  233. package/src/components/header/QHeader.json +0 -4
  234. package/src/components/infinite-scroll/QInfiniteScroll.json +9 -6
  235. package/src/components/inner-loading/QInnerLoading.js +2 -5
  236. package/src/components/input/QInput.js +4 -1
  237. package/src/components/input/QInput.json +11 -7
  238. package/src/components/input/use-mask.js +2 -2
  239. package/src/components/intersection/QIntersection.json +0 -1
  240. package/src/components/item/QItem.js +1 -0
  241. package/src/components/item/QItem.json +1 -2
  242. package/src/components/item/QItemLabel.json +0 -1
  243. package/src/components/item/QList.js +7 -2
  244. package/src/components/item/QList.json +7 -0
  245. package/src/components/knob/QKnob.js +3 -3
  246. package/src/components/knob/QKnob.json +3 -12
  247. package/src/components/layout/QLayout.js +1 -1
  248. package/src/components/layout/QLayout.json +6 -12
  249. package/src/components/linear-progress/QLinearProgress.json +0 -2
  250. package/src/components/menu/QMenu.js +8 -5
  251. package/src/components/menu/QMenu.json +0 -2
  252. package/src/components/option-group/QOptionGroup.js +1 -1
  253. package/src/components/option-group/QOptionGroup.json +2 -5
  254. package/src/components/page/QPage.js +11 -4
  255. package/src/components/page/QPage.json +3 -6
  256. package/src/components/page/QPageContainer.js +5 -3
  257. package/src/components/page-scroller/QPageScroller.json +0 -2
  258. package/src/components/page-sticky/QPageSticky.json +0 -1
  259. package/src/components/page-sticky/use-page-sticky.js +5 -3
  260. package/src/components/pagination/QPagination.js +265 -188
  261. package/src/components/pagination/QPagination.json +87 -78
  262. package/src/components/pagination/QPagination.sass +14 -0
  263. package/src/components/parallax/QParallax.json +2 -6
  264. package/src/components/popup-edit/QPopupEdit.js +3 -3
  265. package/src/components/popup-edit/QPopupEdit.json +4 -10
  266. package/src/components/popup-proxy/QPopupProxy.json +0 -1
  267. package/src/components/radio/QRadio.json +1 -2
  268. package/src/components/range/QRange.json +2 -4
  269. package/src/components/rating/QRating.json +0 -1
  270. package/src/components/resize-observer/QResizeObserver.js +14 -10
  271. package/src/components/resize-observer/QResizeObserver.json +2 -4
  272. package/src/components/scroll-area/QScrollArea.js +15 -4
  273. package/src/components/scroll-area/QScrollArea.json +24 -50
  274. package/src/components/scroll-observer/QScrollObserver.js +2 -0
  275. package/src/components/scroll-observer/QScrollObserver.json +6 -12
  276. package/src/components/select/QSelect.js +20 -24
  277. package/src/components/select/QSelect.json +30 -65
  278. package/src/components/select/QSelect.sass +2 -2
  279. package/src/components/slide-item/QSlideItem.json +1 -2
  280. package/src/components/slide-transition/QSlideTransition.json +0 -1
  281. package/src/components/slider/use-slider.json +33 -70
  282. package/src/components/spinner/QSpinner.json +0 -1
  283. package/src/components/splitter/QSplitter.json +1 -2
  284. package/src/components/stepper/QStep.js +7 -5
  285. package/src/components/tab-panels/QTabPanel.js +1 -1
  286. package/src/components/table/QTable.js +3 -3
  287. package/src/components/table/QTable.json +118 -239
  288. package/src/components/tabs/QRouteTab.json +0 -1
  289. package/src/components/tabs/QTabs.js +0 -7
  290. package/src/components/tabs/QTabs.json +1 -3
  291. package/src/components/tabs/use-tab.js +5 -3
  292. package/src/components/time/QTime.json +10 -20
  293. package/src/components/timeline/QTimelineEntry.js +5 -3
  294. package/src/components/toolbar/QToolbar.js +1 -1
  295. package/src/components/tooltip/QTooltip.js +3 -6
  296. package/src/components/tooltip/QTooltip.json +0 -4
  297. package/src/components/tree/QTree.js +6 -6
  298. package/src/components/tree/QTree.json +15 -31
  299. package/src/components/uploader/QUploader.json +13 -22
  300. package/src/components/uploader/QUploaderAddTrigger.js +7 -3
  301. package/src/components/uploader/xhr-uploader-plugin.js +1 -1
  302. package/src/components/uploader/xhr-uploader-plugin.json +25 -50
  303. package/src/components/virtual-scroll/QVirtualScroll.json +5 -10
  304. package/src/components/virtual-scroll/use-virtual-scroll.js +1 -1
  305. package/src/components/virtual-scroll/use-virtual-scroll.json +8 -19
  306. package/src/composables/private/use-field.js +1 -1
  307. package/src/composables/private/use-field.json +2 -3
  308. package/src/composables/private/use-file.js +10 -1
  309. package/src/composables/private/use-file.json +4 -13
  310. package/src/composables/private/use-model-toggle.js +3 -3
  311. package/src/composables/private/use-panel.js +2 -2
  312. package/src/composables/private/use-panel.json +0 -2
  313. package/src/composables/private/use-portal.js +5 -1
  314. package/src/composables/private/use-portal.json +7 -1
  315. package/src/composables/private/use-transition.js +17 -11
  316. package/src/composables/private/use-transition.json +0 -1
  317. package/src/composables/private/use-validate.json +1 -3
  318. package/src/directives/Intersection.json +26 -53
  319. package/src/directives/Morph.json +4 -8
  320. package/src/directives/Mutation.json +6 -12
  321. package/src/directives/Scroll.json +2 -4
  322. package/src/directives/TouchHold.json +3 -6
  323. package/src/directives/TouchPan.json +7 -14
  324. package/src/directives/TouchRepeat.json +6 -12
  325. package/src/directives/TouchSwipe.json +3 -6
  326. package/src/plugins/BottomSheet.json +1 -2
  327. package/src/plugins/Cookies.json +2 -4
  328. package/src/plugins/Dialog.json +32 -72
  329. package/src/plugins/Loading.json +6 -11
  330. package/src/plugins/LoadingBar.json +3 -6
  331. package/src/plugins/Notify.json +4 -5
  332. package/src/plugins/Platform.json +3 -6
  333. package/src/plugins/Screen.json +9 -18
  334. package/src/utils/private/global-dialog.json +6 -12
  335. package/src/utils/private/portal.js +4 -4
  336. package/src/utils/private/symbols.js +2 -0
  337. package/src/utils/private/web-storage.json +6 -10
@@ -4,7 +4,7 @@ import QResizeObserver from '../resize-observer/QResizeObserver.js'
4
4
 
5
5
  import { createComponent } from '../../utils/private/create.js'
6
6
  import { hUniqueSlot } from '../../utils/private/render.js'
7
- import { layoutKey } from '../../utils/private/symbols.js'
7
+ import { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'
8
8
 
9
9
  export default createComponent({
10
10
  name: 'QHeader',
@@ -33,9 +33,11 @@ export default createComponent({
33
33
  setup (props, { slots, emit }) {
34
34
  const { proxy: { $q } } = getCurrentInstance()
35
35
 
36
- const $layout = inject(layoutKey, () => {
36
+ const $layout = inject(layoutKey, emptyRenderFn)
37
+ if ($layout === emptyRenderFn) {
37
38
  console.error('QHeader needs to be child of QLayout')
38
- })
39
+ return emptyRenderFn
40
+ }
39
41
 
40
42
  const size = ref(parseInt(props.heightHint, 10))
41
43
  const revealed = ref(true)
@@ -25,9 +25,6 @@
25
25
  "type": "Number",
26
26
  "desc": "Amount of scroll (in pixels) that should trigger a 'reveal' state change",
27
27
  "default": 250,
28
- "examples": [
29
- ":reveal-offset=\"500\""
30
- ],
31
28
  "category": "behavior"
32
29
  },
33
30
 
@@ -45,7 +42,6 @@
45
42
  "type": [ "Number", "String" ],
46
43
  "desc": "When using SSR, you can optionally hint of the height (in pixels) of the QHeader",
47
44
  "default": 50,
48
- "examples": [ "150" ],
49
45
  "category": "behavior"
50
46
  }
51
47
  },
@@ -8,7 +8,6 @@
8
8
  "type": "Number",
9
9
  "desc": "Offset (pixels) to bottom of Infinite Scroll container from which the component should start loading more content in advance",
10
10
  "default": 500,
11
- "examples": [ ":offset=\"250\"" ],
12
11
  "category": "behavior"
13
12
  },
14
13
 
@@ -16,7 +15,6 @@
16
15
  "type": [ "String", "Number" ],
17
16
  "desc": "Debounce amount (in milliseconds)",
18
17
  "default": 100,
19
- "examples": [ "0", "530" ],
20
18
  "category": "behavior"
21
19
  },
22
20
 
@@ -24,7 +22,6 @@
24
22
  "type": "Number",
25
23
  "desc": "Initialize the pagination index (used for the @load event)",
26
24
  "default": 0,
27
- "examples": [ 2, 3 ],
28
25
  "category": "behavior"
29
26
  },
30
27
 
@@ -59,8 +56,7 @@
59
56
  "params": {
60
57
  "index": {
61
58
  "type": "Number",
62
- "desc": "The index parameter can be used to make some sort of pagination on the content you load. It takes numeric values starting with 1 and incrementing with each call",
63
- "examples": [ 12 ]
59
+ "desc": "The index parameter can be used to make some sort of pagination on the content you load. It takes numeric values starting with 1 and incrementing with each call"
64
60
  },
65
61
  "done": {
66
62
  "type": "Function",
@@ -99,7 +95,14 @@
99
95
  },
100
96
 
101
97
  "setIndex": {
102
- "desc": "Overwrite the current pagination index"
98
+ "desc": "Overwrite the current pagination index",
99
+ "params": {
100
+ "newIndex": {
101
+ "type": "Number",
102
+ "desc": "New pagination index",
103
+ "required": true
104
+ }
105
+ }
103
106
  },
104
107
 
105
108
  "updateScrollTarget": {
@@ -30,7 +30,7 @@ export default createComponent({
30
30
  const vm = getCurrentInstance()
31
31
  const isDark = useDark(props, vm.proxy.$q)
32
32
 
33
- const { transition, transitionStyle } = useTransition(props, computed(() => props.showing))
33
+ const { transitionProps, transitionStyle } = useTransition(props)
34
34
 
35
35
  const classes = computed(() =>
36
36
  'q-inner-loading absolute-full column flex-center'
@@ -74,9 +74,6 @@ export default createComponent({
74
74
  : null
75
75
  }
76
76
 
77
- return () => h(Transition, {
78
- name: transition.value,
79
- appear: true
80
- }, getContent)
77
+ return () => h(Transition, transitionProps.value, getContent)
81
78
  }
82
79
  })
@@ -9,6 +9,7 @@ import useKeyComposition from '../../composables/private/use-key-composition.js'
9
9
  import { createComponent } from '../../utils/private/create.js'
10
10
  import { stop } from '../../utils/event.js'
11
11
  import { addFocusFn } from '../../utils/private/focus-manager.js'
12
+ import { injectProp } from '../../utils/private/inject-obj-prop.js'
12
13
 
13
14
  export default createComponent({
14
15
  name: 'QInput',
@@ -415,9 +416,11 @@ export default createComponent({
415
416
  Object.assign(proxy, {
416
417
  focus,
417
418
  select,
418
- getNativeElement: () => inputRef.value
419
+ getNativeElement: () => inputRef.value // deprecated
419
420
  })
420
421
 
422
+ injectProp(proxy, 'nativeEl', () => inputRef.value)
423
+
421
424
  return renderFn
422
425
  }
423
426
  })
@@ -28,21 +28,18 @@
28
28
  "text", "password", "textarea", "email", "search",
29
29
  "tel", "file", "number", "url", "time", "date"
30
30
  ],
31
- "examples": [ "password" ],
32
31
  "category": "general"
33
32
  },
34
33
 
35
34
  "debounce": {
36
35
  "type": [ "String", "Number" ],
37
36
  "desc": "Debounce amount (in milliseconds) when updating model",
38
- "examples": [ "0", "530" ],
39
37
  "category": "model"
40
38
  },
41
39
 
42
40
  "maxlength": {
43
41
  "type": [ "String", "Number" ],
44
42
  "desc": "Specify a max length of model",
45
- "examples": [ "12" ],
46
43
  "category": "model"
47
44
  },
48
45
 
@@ -118,12 +115,19 @@
118
115
  },
119
116
 
120
117
  "getNativeElement": {
121
- "desc": "Get the native input/textarea DOM Element",
118
+ "desc": "DEPRECATED; Access 'nativeEl' directly instead; Get the native input/textarea DOM Element",
122
119
  "returns": {
123
- "type": "Object",
124
- "desc": "The underlying native input/textarea DOM Element",
125
- "__exemption": [ "examples" ]
120
+ "type": "Element",
121
+ "desc": "The underlying native input/textarea DOM Element"
126
122
  }
127
123
  }
124
+ },
125
+
126
+ "computedProps": {
127
+ "nativeEl": {
128
+ "type": "Element",
129
+ "desc": "The native input/textarea DOM Element",
130
+ "addedIn": "v2.10.1"
131
+ }
128
132
  }
129
133
  }
@@ -166,7 +166,7 @@ export default function (props, emit, emitValue, inputRef) {
166
166
  '^'
167
167
  + unmask.join('')
168
168
  + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'
169
- + '[' + unmaskChar + ']*$'
169
+ + (unmaskChar === '' ? '' : '[' + unmaskChar + ']*') + '$'
170
170
  ),
171
171
  extractLast = extract.length - 1,
172
172
  extractMatcher = extract.map((re, index) => {
@@ -186,7 +186,7 @@ export default function (props, emit, emitValue, inputRef) {
186
186
 
187
187
  computedMask = mask
188
188
  computedUnmask = val => {
189
- const unmaskMatch = unmaskMatcher.exec(val)
189
+ const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length))
190
190
  if (unmaskMatch !== null) {
191
191
  val = unmaskMatch.slice(1).join('')
192
192
  }
@@ -55,7 +55,6 @@
55
55
  "type": [ "String", "Number" ],
56
56
  "desc": "Transition duration (in milliseconds, without unit)",
57
57
  "default": 300,
58
- "examples": [ 500, "1200" ],
59
58
  "category": "behavior",
60
59
  "addedIn": "v2.3.1"
61
60
  },
@@ -136,6 +136,7 @@ export default createComponent({
136
136
  ref: rootRef,
137
137
  class: classes.value,
138
138
  style: style.value,
139
+ role: 'listitem',
139
140
  onClick,
140
141
  onKeyup
141
142
  }
@@ -109,8 +109,7 @@
109
109
  },
110
110
  "returns": {
111
111
  "type": "Promise<any>",
112
- "desc": "Returns the router's navigation promise",
113
- "__exemption": [ "examples" ]
112
+ "desc": "Returns the router's navigation promise"
114
113
  }
115
114
  }
116
115
  }
@@ -25,7 +25,6 @@
25
25
  "lines": {
26
26
  "type": [ "Number", "String" ],
27
27
  "desc": "Apply ellipsis when there's not enough space to render on the specified number of lines;",
28
- "examples": [ "1", "3", ":lines=\"2\"" ],
29
28
  "category": "content|behavior"
30
29
  }
31
30
  },
@@ -13,7 +13,12 @@ export default createComponent({
13
13
  bordered: Boolean,
14
14
  dense: Boolean,
15
15
  separator: Boolean,
16
- padding: Boolean
16
+ padding: Boolean,
17
+
18
+ tag: {
19
+ type: String,
20
+ default: 'div'
21
+ }
17
22
  },
18
23
 
19
24
  setup (props, { slots }) {
@@ -29,6 +34,6 @@ export default createComponent({
29
34
  + (props.padding === true ? ' q-list--padding' : '')
30
35
  )
31
36
 
32
- return () => h('div', { class: classes.value }, hSlot(slots.default))
37
+ return () => h(props.tag, { class: classes.value, role: 'list' }, hSlot(slots.default))
33
38
  }
34
39
  })
@@ -26,6 +26,13 @@
26
26
  "type": "Boolean",
27
27
  "desc": "Applies a material design-like padding on top and bottom",
28
28
  "category": "content"
29
+ },
30
+
31
+ "tag": {
32
+ "extends": "tag",
33
+ "default": "div",
34
+ "examples": [ "div", "ul", "ol" ],
35
+ "addedIn": "v2.10.1"
29
36
  }
30
37
  },
31
38
 
@@ -45,7 +45,7 @@ export default createComponent({
45
45
  readonly: Boolean
46
46
  },
47
47
 
48
- emits: [ 'update:modelValue', 'change', 'drag-value' ],
48
+ emits: [ 'update:modelValue', 'change', 'dragValue' ],
49
49
 
50
50
  setup (props, { slots, emit }) {
51
51
  const { proxy } = getCurrentInstance()
@@ -92,7 +92,7 @@ export default createComponent({
92
92
  )
93
93
  )
94
94
 
95
- const decimals = computed(() => (String(props.step).trim('0').split('.')[ 1 ] || '').length)
95
+ const decimals = computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length)
96
96
  const step = computed(() => (props.step === 0 ? 1 : props.step))
97
97
  const instantFeedback = computed(() => props.instantFeedback === true || dragging.value === true)
98
98
 
@@ -227,7 +227,7 @@ export default createComponent({
227
227
 
228
228
  newModel = between(newModel, innerMin.value, innerMax.value)
229
229
 
230
- emit('drag-value', newModel)
230
+ emit('dragValue', newModel)
231
231
 
232
232
  if (model.value !== newModel) {
233
233
  model.value = newModel
@@ -16,21 +16,18 @@
16
16
  "min": {
17
17
  "type": "Number",
18
18
  "desc": "The minimum value that the model (the knob value) should start at",
19
- "examples": [ "20", "5" ],
20
19
  "category": "model"
21
20
  },
22
21
 
23
22
  "max": {
24
23
  "type": "Number",
25
24
  "desc": "The maximum value that the model (the knob value) should go to",
26
- "examples": [ "100", "50" ],
27
25
  "category": "model"
28
26
  },
29
27
 
30
28
  "inner-min": {
31
29
  "type": "Number",
32
30
  "desc": "Inner minimum value of the model; Use in case you need the model value to be inside of the track's min-max values; Needs to be higher or equal to 'min' prop; Defaults to 'min' prop",
33
- "examples": [ ":inner-min=\"0\"" ],
34
31
  "category": "model",
35
32
  "addedIn": "v2.5.4"
36
33
  },
@@ -38,16 +35,14 @@
38
35
  "inner-max": {
39
36
  "type": "Number",
40
37
  "desc": "Inner maximum value of the model; Use in case you need the model value to be inside of the track's min-max values; Needs to be lower or equal to 'max' prop; Defaults to 'max' prop",
41
- "examples": [ ":inner-max=\"100\"" ],
42
38
  "category": "model",
43
39
  "addedIn": "v2.5.4"
44
40
  },
45
41
 
46
42
  "step": {
47
43
  "type": "Number",
48
- "default": "1",
44
+ "default": 1,
49
45
  "desc": "A number representing steps in the value of the model, while adjusting the knob",
50
- "examples": [ "1", "5" ],
51
46
  "category": "model"
52
47
  },
53
48
 
@@ -89,7 +84,6 @@
89
84
  "type": "Number",
90
85
  "default": 0.2,
91
86
  "desc": "Thickness of progress arc as a ratio (0.0 < x < 1.0) of component size",
92
- "examples": [ 1, 0.3 ],
93
87
  "category": "style"
94
88
  },
95
89
 
@@ -97,7 +91,6 @@
97
91
  "type": "Number",
98
92
  "desc": "Angle to rotate progress arc by",
99
93
  "default": 0,
100
- "examples": [ 0, 40, 90 ],
101
94
  "category": "content"
102
95
  },
103
96
 
@@ -142,8 +135,7 @@
142
135
  "params": {
143
136
  "value": {
144
137
  "type": "Number",
145
- "desc": "New model value",
146
- "examples": [ 12 ]
138
+ "desc": "New model value"
147
139
  }
148
140
  }
149
141
  },
@@ -153,8 +145,7 @@
153
145
  "params": {
154
146
  "value": {
155
147
  "type": "Number",
156
- "desc": "New model value",
157
- "examples": [ 12 ]
148
+ "desc": "New model value"
158
149
  }
159
150
  }
160
151
  }
@@ -90,7 +90,7 @@ export default createComponent({
90
90
  if (height.value !== newHeight) {
91
91
  resized = true
92
92
  height.value = newHeight
93
- props.onScrollHeight !== void 0 && emit('scroll-height', newHeight)
93
+ props.onScrollHeight !== void 0 && emit('scrollHeight', newHeight)
94
94
  updateScrollbarWidth()
95
95
  }
96
96
  if (width.value !== newWidth) {
@@ -38,14 +38,12 @@
38
38
  "height": {
39
39
  "type": "Number",
40
40
  "required": true,
41
- "desc": "Layout height",
42
- "examples": [ 575 ]
41
+ "desc": "Layout height"
43
42
  },
44
43
  "width": {
45
44
  "type": "Number",
46
45
  "required": true,
47
- "desc": "Layout height",
48
- "examples": [ 575 ]
46
+ "desc": "Layout height"
49
47
  }
50
48
  }
51
49
  }
@@ -62,8 +60,7 @@
62
60
  "position": {
63
61
  "type": "Number",
64
62
  "required": true,
65
- "desc": "Scroll offset from top (vertical)",
66
- "examples": [ 120 ]
63
+ "desc": "Scroll offset from top (vertical)"
67
64
  },
68
65
 
69
66
  "direction": {
@@ -80,15 +77,13 @@
80
77
  "delta": {
81
78
  "type": "Number",
82
79
  "required": true,
83
- "desc": "Vertical delta distance since event was last emitted",
84
- "examples": [ 120 ]
80
+ "desc": "Vertical delta distance since event was last emitted"
85
81
  },
86
82
 
87
83
  "inflectionPoint": {
88
84
  "type": "Number",
89
85
  "required": true,
90
- "desc": "Scroll offset from top (vertical)",
91
- "examples": [ 120 ]
86
+ "desc": "Scroll offset from top (vertical)"
92
87
  }
93
88
  }
94
89
  }
@@ -100,8 +95,7 @@
100
95
  "params": {
101
96
  "height": {
102
97
  "type": "Number",
103
- "desc": "New scroll height of layout",
104
- "examples": [ 1442 ]
98
+ "desc": "New scroll height of layout"
105
99
  }
106
100
  }
107
101
  }
@@ -10,14 +10,12 @@
10
10
  "type": "Number",
11
11
  "desc": "Progress value (0.0 < x < 1.0)",
12
12
  "default": 0,
13
- "examples": [ ":value=\"0.28\"" ],
14
13
  "category": "model"
15
14
  },
16
15
 
17
16
  "buffer": {
18
17
  "type": "Number",
19
18
  "desc": "Optional buffer value (0.0 < x < 1.0)",
20
- "examples": [ ":buffer=\"0.78\"" ],
21
19
  "category": "behavior"
22
20
  },
23
21
 
@@ -79,7 +79,7 @@ export default createComponent({
79
79
 
80
80
  emits: [
81
81
  ...useModelToggleEmits,
82
- 'click', 'escape-key'
82
+ 'click', 'escapeKey'
83
83
  ],
84
84
 
85
85
  setup (props, { slots, emit, attrs }) {
@@ -100,7 +100,7 @@ export default createComponent({
100
100
  const isDark = useDark(props, $q)
101
101
  const { registerTick, removeTick } = useTick()
102
102
  const { registerTimeout } = useTimeout()
103
- const { transition, transitionStyle } = useTransition(props, showing)
103
+ const { transitionProps, transitionStyle } = useTransition(props)
104
104
  const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)
105
105
 
106
106
  const { anchorEl, canShow } = useAnchor({ showing })
@@ -180,7 +180,10 @@ export default createComponent({
180
180
  let node = innerRef.value
181
181
 
182
182
  if (node && node.contains(document.activeElement) !== true) {
183
- node = node.querySelector('[autofocus], [data-autofocus]') || node
183
+ node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')
184
+ || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')
185
+ || node.querySelector('[autofocus], [data-autofocus]')
186
+ || node
184
187
  node.focus({ preventScroll: true })
185
188
  }
186
189
  })
@@ -317,7 +320,7 @@ export default createComponent({
317
320
  }
318
321
 
319
322
  function onEscapeKey (evt) {
320
- emit('escape-key')
323
+ emit('escapeKey')
321
324
  hide(evt)
322
325
  }
323
326
 
@@ -345,7 +348,7 @@ export default createComponent({
345
348
  function renderPortalContent () {
346
349
  return h(
347
350
  Transition,
348
- { name: transition.value, appear: true },
351
+ transitionProps.value,
349
352
  () => (
350
353
  showing.value === true
351
354
  ? h('div', {
@@ -30,7 +30,6 @@
30
30
  "center left", "center middle", "center right", "center start", "center end",
31
31
  "bottom left", "bottom middle", "bottom right", "bottom start", "bottom end"
32
32
  ],
33
- "examples": [ "top left", "bottom right" ],
34
33
  "category": "position"
35
34
  },
36
35
 
@@ -42,7 +41,6 @@
42
41
  "center left", "center middle", "center right", "center start", "center end",
43
42
  "bottom left", "bottom middle", "bottom right", "bottom start", "bottom end"
44
43
  ],
45
- "examples": [ "top left", "bottom right" ],
46
44
  "category": "position"
47
45
  },
48
46
 
@@ -74,7 +74,7 @@ export default createComponent({
74
74
  )
75
75
 
76
76
  const attrs = computed(() => {
77
- const attrs = {}
77
+ const attrs = { role: 'group' }
78
78
 
79
79
  if (props.type === 'radio') {
80
80
  attrs.role = 'radiogroup'
@@ -56,7 +56,6 @@
56
56
  "desc": "The type of input component to be used",
57
57
  "values": [ "radio", "checkbox", "toggle" ],
58
58
  "default": "radio",
59
- "examples": [ "checkbox" ],
60
59
  "category": "content"
61
60
  },
62
61
 
@@ -124,8 +123,7 @@
124
123
  "desc": "Any other props from QToggle, QCheckbox, or QRadio",
125
124
  "examples": [ "val=\"car\"", ":true-value=\"trueValue\"", "checked-icon=\"visibility\"" ]
126
125
  }
127
- },
128
- "__exemption": [ "examples" ]
126
+ }
129
127
  }
130
128
  },
131
129
  "addedIn": "v2.2"
@@ -159,8 +157,7 @@
159
157
  "desc": "Any other props from QToggle, QCheckbox, or QRadio",
160
158
  "examples": [ "val=\"car\"", ":true-value=\"trueValue\"", "checked-icon=\"visibility\"" ]
161
159
  }
162
- },
163
- "__exemption": [ "examples" ]
160
+ }
164
161
  }
165
162
  },
166
163
  "addedIn": "v2.2"
@@ -2,7 +2,7 @@ import { h, computed, inject, getCurrentInstance } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private/create.js'
4
4
  import { hSlot } from '../../utils/private/render.js'
5
- import { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'
5
+ import { pageContainerKey, layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'
6
6
 
7
7
  export default createComponent({
8
8
  name: 'QPage',
@@ -15,10 +15,17 @@ export default createComponent({
15
15
  setup (props, { slots }) {
16
16
  const { proxy: { $q } } = getCurrentInstance()
17
17
 
18
- const $layout = inject(layoutKey)
19
- inject(pageContainerKey, () => {
18
+ const $layout = inject(layoutKey, emptyRenderFn)
19
+ if ($layout === emptyRenderFn) {
20
+ console.error('QPage needs to be a deep child of QLayout')
21
+ return emptyRenderFn
22
+ }
23
+
24
+ const $pageContainer = inject(pageContainerKey, emptyRenderFn)
25
+ if ($pageContainer === emptyRenderFn) {
20
26
  console.error('QPage needs to be child of QPageContainer')
21
- })
27
+ return emptyRenderFn
28
+ }
22
29
 
23
30
  const style = computed(() => {
24
31
  const offset
@@ -16,19 +16,16 @@
16
16
  "params": {
17
17
  "offset": {
18
18
  "type": "Number",
19
- "desc": "Header + Footer height (in pixels)",
20
- "examples": [ 152 ]
19
+ "desc": "Header + Footer height (in pixels)"
21
20
  },
22
21
  "height": {
23
22
  "type": "Number",
24
- "desc": "Value in pixels of container height (if containerized) or window height otherwise",
25
- "examples": [ 1200 ]
23
+ "desc": "Value in pixels of container height (if containerized) or window height otherwise"
26
24
  }
27
25
  },
28
26
  "returns": {
29
27
  "type": "Object",
30
- "desc": "Object with CSS properties to apply to Page DOM element",
31
- "__exemption": [ "examples" ]
28
+ "desc": "Object with CSS properties to apply to Page DOM element"
32
29
  },
33
30
  "default": "(see source code)",
34
31
  "examples": [ "(see source code)" ],
@@ -2,7 +2,7 @@ import { h, computed, provide, inject, getCurrentInstance } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private/create.js'
4
4
  import { hSlot } from '../../utils/private/render.js'
5
- import { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'
5
+ import { pageContainerKey, layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'
6
6
 
7
7
  export default createComponent({
8
8
  name: 'QPageContainer',
@@ -10,9 +10,11 @@ export default createComponent({
10
10
  setup (_, { slots }) {
11
11
  const { proxy: { $q } } = getCurrentInstance()
12
12
 
13
- const $layout = inject(layoutKey, () => {
13
+ const $layout = inject(layoutKey, emptyRenderFn)
14
+ if ($layout === emptyRenderFn) {
14
15
  console.error('QPageContainer needs to be child of QLayout')
15
- })
16
+ return emptyRenderFn
17
+ }
16
18
 
17
19
  provide(pageContainerKey, true)
18
20
 
@@ -10,7 +10,6 @@
10
10
  "type": "Number",
11
11
  "desc": "Scroll offset (in pixels) from which point the component is shown on page; Measured from the top of the page (or from the bottom if in 'reverse' mode)",
12
12
  "default": 1000,
13
- "examples": [ 550 ],
14
13
  "category": "behavior"
15
14
  },
16
15
 
@@ -24,7 +23,6 @@
24
23
  "type": "Number",
25
24
  "desc": "Duration (in milliseconds) of the scrolling until it reaches its target",
26
25
  "default": 300,
27
- "examples": [ 500 ],
28
26
  "category": "behavior"
29
27
  },
30
28
 
@@ -13,7 +13,6 @@
13
13
  "bottom-right", "bottom-left",
14
14
  "top", "right", "bottom", "left"
15
15
  ],
16
- "examples": [ "top-right" ],
17
16
  "category": "position"
18
17
  },
19
18