quasar 2.15.1 → 2.15.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 (518) hide show
  1. package/dist/api/AddressbarColor.json +1 -1
  2. package/dist/api/BottomSheet.json +1 -1
  3. package/dist/api/ClosePopup.json +1 -1
  4. package/dist/api/Cookies.json +1 -1
  5. package/dist/api/Dark.json +1 -1
  6. package/dist/api/Dialog.json +1 -1
  7. package/dist/api/Intersection.json +1 -1
  8. package/dist/api/Loading.json +1 -1
  9. package/dist/api/LoadingBar.json +1 -1
  10. package/dist/api/LocalStorage.json +1 -1
  11. package/dist/api/Morph.json +1 -1
  12. package/dist/api/Mutation.json +1 -1
  13. package/dist/api/Notify.json +1 -1
  14. package/dist/api/Platform.json +1 -1
  15. package/dist/api/QAjaxBar.json +1 -1
  16. package/dist/api/QAvatar.json +1 -1
  17. package/dist/api/QBadge.json +1 -1
  18. package/dist/api/QBanner.json +1 -1
  19. package/dist/api/QBar.json +1 -1
  20. package/dist/api/QBreadcrumbs.json +1 -1
  21. package/dist/api/QBreadcrumbsEl.json +1 -1
  22. package/dist/api/QBtn.json +1 -1
  23. package/dist/api/QBtnDropdown.json +1 -1
  24. package/dist/api/QBtnToggle.json +1 -1
  25. package/dist/api/QCard.json +1 -1
  26. package/dist/api/QCardActions.json +1 -1
  27. package/dist/api/QCardSection.json +1 -1
  28. package/dist/api/QCarousel.json +1 -1
  29. package/dist/api/QCarouselControl.json +1 -1
  30. package/dist/api/QCarouselSlide.json +1 -1
  31. package/dist/api/QChatMessage.json +1 -1
  32. package/dist/api/QCheckbox.json +1 -1
  33. package/dist/api/QChip.json +1 -1
  34. package/dist/api/QCircularProgress.json +1 -1
  35. package/dist/api/QColor.json +1 -1
  36. package/dist/api/QDate.json +1 -1
  37. package/dist/api/QDialog.json +1 -1
  38. package/dist/api/QDrawer.json +1 -1
  39. package/dist/api/QEditor.json +1 -1
  40. package/dist/api/QExpansionItem.json +1 -1
  41. package/dist/api/QFab.json +1 -1
  42. package/dist/api/QFabAction.json +1 -1
  43. package/dist/api/QField.json +1 -1
  44. package/dist/api/QFile.json +1 -1
  45. package/dist/api/QFooter.json +1 -1
  46. package/dist/api/QHeader.json +1 -1
  47. package/dist/api/QIcon.json +1 -1
  48. package/dist/api/QImg.json +1 -1
  49. package/dist/api/QInfiniteScroll.json +1 -1
  50. package/dist/api/QInnerLoading.json +1 -1
  51. package/dist/api/QInput.json +1 -1
  52. package/dist/api/QIntersection.json +1 -1
  53. package/dist/api/QItem.json +1 -1
  54. package/dist/api/QKnob.json +1 -1
  55. package/dist/api/QLayout.json +1 -1
  56. package/dist/api/QLinearProgress.json +1 -1
  57. package/dist/api/QList.json +1 -1
  58. package/dist/api/QMarkupTable.json +1 -1
  59. package/dist/api/QMenu.json +1 -1
  60. package/dist/api/QNoSsr.json +1 -1
  61. package/dist/api/QOptionGroup.json +1 -1
  62. package/dist/api/QPage.json +1 -1
  63. package/dist/api/QPageScroller.json +1 -1
  64. package/dist/api/QPageSticky.json +1 -1
  65. package/dist/api/QPagination.json +1 -1
  66. package/dist/api/QParallax.json +1 -1
  67. package/dist/api/QPopupEdit.json +1 -1
  68. package/dist/api/QPopupProxy.json +1 -1
  69. package/dist/api/QPullToRefresh.json +1 -1
  70. package/dist/api/QRadio.json +1 -1
  71. package/dist/api/QRange.json +1 -1
  72. package/dist/api/QRating.json +1 -1
  73. package/dist/api/QResizeObserver.json +1 -1
  74. package/dist/api/QResponsive.json +1 -1
  75. package/dist/api/QRouteTab.json +1 -1
  76. package/dist/api/QScrollArea.json +1 -1
  77. package/dist/api/QScrollObserver.json +1 -1
  78. package/dist/api/QSelect.json +1 -1
  79. package/dist/api/QSeparator.json +1 -1
  80. package/dist/api/QSkeleton.json +1 -1
  81. package/dist/api/QSlideItem.json +1 -1
  82. package/dist/api/QSlideTransition.json +1 -1
  83. package/dist/api/QSlider.json +1 -1
  84. package/dist/api/QSpinner.json +1 -1
  85. package/dist/api/QSpinnerAudio.json +1 -1
  86. package/dist/api/QSpinnerBall.json +1 -1
  87. package/dist/api/QSpinnerBars.json +1 -1
  88. package/dist/api/QSpinnerBox.json +1 -1
  89. package/dist/api/QSpinnerClock.json +1 -1
  90. package/dist/api/QSpinnerComment.json +1 -1
  91. package/dist/api/QSpinnerCube.json +1 -1
  92. package/dist/api/QSpinnerDots.json +1 -1
  93. package/dist/api/QSpinnerFacebook.json +1 -1
  94. package/dist/api/QSpinnerGears.json +1 -1
  95. package/dist/api/QSpinnerGrid.json +1 -1
  96. package/dist/api/QSpinnerHearts.json +1 -1
  97. package/dist/api/QSpinnerHourglass.json +1 -1
  98. package/dist/api/QSpinnerInfinity.json +1 -1
  99. package/dist/api/QSpinnerIos.json +1 -1
  100. package/dist/api/QSpinnerOrbit.json +1 -1
  101. package/dist/api/QSpinnerOval.json +1 -1
  102. package/dist/api/QSpinnerPie.json +1 -1
  103. package/dist/api/QSpinnerPuff.json +1 -1
  104. package/dist/api/QSpinnerRadio.json +1 -1
  105. package/dist/api/QSpinnerRings.json +1 -1
  106. package/dist/api/QSpinnerTail.json +1 -1
  107. package/dist/api/QSplitter.json +1 -1
  108. package/dist/api/QStep.json +1 -1
  109. package/dist/api/QStepper.json +1 -1
  110. package/dist/api/QTab.json +1 -1
  111. package/dist/api/QTabPanel.json +1 -1
  112. package/dist/api/QTabPanels.json +1 -1
  113. package/dist/api/QTable.json +1 -1
  114. package/dist/api/QTabs.json +1 -1
  115. package/dist/api/QTd.json +1 -1
  116. package/dist/api/QTh.json +1 -1
  117. package/dist/api/QTime.json +1 -1
  118. package/dist/api/QTimeline.json +1 -1
  119. package/dist/api/QTimelineEntry.json +1 -1
  120. package/dist/api/QToggle.json +1 -1
  121. package/dist/api/QTooltip.json +1 -1
  122. package/dist/api/QTr.json +1 -1
  123. package/dist/api/QTree.json +1 -1
  124. package/dist/api/QUploader.json +1 -1
  125. package/dist/api/QVideo.json +1 -1
  126. package/dist/api/QVirtualScroll.json +1 -1
  127. package/dist/api/Ripple.json +1 -1
  128. package/dist/api/Screen.json +1 -1
  129. package/dist/api/Scroll.json +1 -1
  130. package/dist/api/ScrollFire.json +1 -1
  131. package/dist/api/SessionStorage.json +1 -1
  132. package/dist/api/TouchHold.json +1 -1
  133. package/dist/api/TouchPan.json +1 -1
  134. package/dist/api/TouchRepeat.json +1 -1
  135. package/dist/api/TouchSwipe.json +1 -1
  136. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  137. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  138. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  139. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  140. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  141. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  142. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  143. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  144. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  145. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  146. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  147. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  148. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  149. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  150. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  151. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  152. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  153. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  154. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  155. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  156. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  157. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  158. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  159. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  160. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  161. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  162. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  163. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  164. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  165. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  166. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  167. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  168. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  169. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  170. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  171. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  172. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  173. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  174. package/dist/icon-set/themify.umd.prod.js +1 -1
  175. package/dist/lang/ar-TN.umd.prod.js +1 -1
  176. package/dist/lang/ar.umd.prod.js +1 -1
  177. package/dist/lang/az-Latn.umd.prod.js +1 -1
  178. package/dist/lang/bg.umd.prod.js +1 -1
  179. package/dist/lang/bn.umd.prod.js +1 -1
  180. package/dist/lang/ca.umd.prod.js +1 -1
  181. package/dist/lang/cs.umd.prod.js +1 -1
  182. package/dist/lang/da.umd.prod.js +1 -1
  183. package/dist/lang/de-CH.umd.prod.js +1 -1
  184. package/dist/lang/de-DE.umd.prod.js +1 -1
  185. package/dist/lang/de.umd.prod.js +1 -1
  186. package/dist/lang/el.umd.prod.js +1 -1
  187. package/dist/lang/en-GB.umd.prod.js +1 -1
  188. package/dist/lang/en-US.umd.prod.js +1 -1
  189. package/dist/lang/eo.umd.prod.js +1 -1
  190. package/dist/lang/es.umd.prod.js +1 -1
  191. package/dist/lang/et.umd.prod.js +1 -1
  192. package/dist/lang/eu.umd.prod.js +1 -1
  193. package/dist/lang/fa-IR.umd.prod.js +1 -1
  194. package/dist/lang/fa.umd.prod.js +1 -1
  195. package/dist/lang/fi.umd.prod.js +1 -1
  196. package/dist/lang/fr.umd.prod.js +1 -1
  197. package/dist/lang/gn.umd.prod.js +1 -1
  198. package/dist/lang/he.umd.prod.js +1 -1
  199. package/dist/lang/hi.umd.prod.js +1 -1
  200. package/dist/lang/hr.umd.prod.js +1 -1
  201. package/dist/lang/hu.umd.prod.js +1 -1
  202. package/dist/lang/id.umd.prod.js +1 -1
  203. package/dist/lang/is.umd.prod.js +1 -1
  204. package/dist/lang/it.umd.prod.js +1 -1
  205. package/dist/lang/ja.umd.prod.js +1 -1
  206. package/dist/lang/kk.umd.prod.js +1 -1
  207. package/dist/lang/km.umd.prod.js +1 -1
  208. package/dist/lang/ko-KR.umd.prod.js +1 -1
  209. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  210. package/dist/lang/lt.umd.prod.js +1 -1
  211. package/dist/lang/lu.umd.prod.js +1 -1
  212. package/dist/lang/lv.umd.prod.js +1 -1
  213. package/dist/lang/mk.umd.prod.js +1 -1
  214. package/dist/lang/ml.umd.prod.js +1 -1
  215. package/dist/lang/mm.umd.prod.js +1 -1
  216. package/dist/lang/ms-MY.umd.prod.js +1 -1
  217. package/dist/lang/ms.umd.prod.js +1 -1
  218. package/dist/lang/my.umd.prod.js +1 -1
  219. package/dist/lang/nb-NO.umd.prod.js +1 -1
  220. package/dist/lang/nl.umd.prod.js +1 -1
  221. package/dist/lang/pl.umd.prod.js +1 -1
  222. package/dist/lang/pt-BR.umd.prod.js +1 -1
  223. package/dist/lang/pt.umd.prod.js +1 -1
  224. package/dist/lang/ro.umd.prod.js +1 -1
  225. package/dist/lang/ru.umd.prod.js +1 -1
  226. package/dist/lang/sk.umd.prod.js +1 -1
  227. package/dist/lang/sl.umd.prod.js +1 -1
  228. package/dist/lang/sm.umd.prod.js +1 -1
  229. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  230. package/dist/lang/sr.umd.prod.js +1 -1
  231. package/dist/lang/sv.umd.prod.js +1 -1
  232. package/dist/lang/ta.umd.prod.js +1 -1
  233. package/dist/lang/th.umd.prod.js +1 -1
  234. package/dist/lang/tl.umd.prod.js +1 -1
  235. package/dist/lang/tr.umd.prod.js +1 -1
  236. package/dist/lang/ug.umd.prod.js +1 -1
  237. package/dist/lang/uk.umd.prod.js +1 -1
  238. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  239. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  240. package/dist/lang/vi.umd.prod.js +1 -1
  241. package/dist/lang/zh-CN.umd.prod.js +1 -1
  242. package/dist/lang/zh-TW.umd.prod.js +1 -1
  243. package/dist/quasar.cjs.prod.js +12 -12
  244. package/dist/quasar.css +53 -53
  245. package/dist/quasar.esm.js +77 -49
  246. package/dist/quasar.esm.prod.js +10 -10
  247. package/dist/quasar.prod.css +1 -1
  248. package/dist/quasar.rtl.css +65 -65
  249. package/dist/quasar.rtl.prod.css +1 -1
  250. package/dist/quasar.sass +37 -37
  251. package/dist/quasar.umd.js +75 -48
  252. package/dist/quasar.umd.prod.js +6 -6
  253. package/dist/transforms/import-map.json +1 -1
  254. package/dist/types/index.d.ts +325 -235
  255. package/dist/vetur/quasar-attributes.json +1 -1
  256. package/dist/web-types/web-types.json +1 -1
  257. package/package.json +15 -30
  258. package/src/api-file-example.json +5 -5
  259. package/src/api.extends.json +18 -18
  260. package/src/body.js +1 -1
  261. package/src/components/ajax-bar/QAjaxBar.json +5 -5
  262. package/src/components/avatar/QAvatar.json +1 -1
  263. package/src/components/avatar/QAvatar.test.js +146 -0
  264. package/src/components/badge/QBadge.json +2 -2
  265. package/src/components/badge/QBadge.test.js +167 -0
  266. package/src/components/banner/QBanner.test.js +123 -0
  267. package/src/components/bar/QBar.test.js +55 -0
  268. package/src/components/breadcrumbs/QBreadcrumbs.json +7 -7
  269. package/src/components/breadcrumbs/QBreadcrumbs.test.js +123 -0
  270. package/src/components/breadcrumbs/QBreadcrumbsEl.json +4 -4
  271. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +134 -0
  272. package/src/components/btn/QBtn.js +1 -1
  273. package/src/components/btn/QBtn.json +1 -1
  274. package/src/components/btn/QBtn.test.js +350 -0
  275. package/src/components/btn/use-btn.json +13 -13
  276. package/src/components/btn/use-btn.test.js +590 -0
  277. package/src/components/btn-dropdown/QBtnDropdown.json +14 -14
  278. package/src/components/btn-toggle/QBtnToggle.json +6 -6
  279. package/src/components/card/QCard.json +2 -2
  280. package/src/components/card/QCardActions.json +3 -3
  281. package/src/components/card/QCardSection.json +2 -2
  282. package/src/components/carousel/QCarousel.json +9 -9
  283. package/src/components/carousel/QCarouselControl.json +5 -5
  284. package/src/components/carousel/QCarouselSlide.json +4 -7
  285. package/src/components/chat/QChatMessage.json +9 -9
  286. package/src/components/checkbox/use-checkbox.json +13 -13
  287. package/src/components/chip/QChip.js +1 -1
  288. package/src/components/chip/QChip.json +6 -8
  289. package/src/components/chip/QChip.test.js +534 -0
  290. package/src/components/circular-progress/QCircularProgress.json +8 -8
  291. package/src/components/color/QColor.js +1 -1
  292. package/src/components/color/QColor.json +8 -10
  293. package/src/components/date/QDate.json +31 -30
  294. package/src/components/date/use-datetime.json +3 -3
  295. package/src/components/dialog/QDialog.json +13 -13
  296. package/src/components/dialog/QDialog.test.js +390 -0
  297. package/src/components/dialog/test/DialogWrapper.vue +17 -0
  298. package/src/components/drawer/QDrawer.js +1 -1
  299. package/src/components/drawer/QDrawer.json +8 -12
  300. package/src/components/editor/QEditor.json +31 -45
  301. package/src/components/expansion-item/QExpansionItem.js +1 -1
  302. package/src/components/expansion-item/QExpansionItem.json +14 -14
  303. package/src/components/fab/QFab.json +4 -4
  304. package/src/components/fab/QFabAction.json +3 -5
  305. package/src/components/fab/use-fab.json +10 -12
  306. package/src/components/field/QField.json +5 -5
  307. package/src/components/file/QFile.json +9 -11
  308. package/src/components/footer/QFooter.js +1 -1
  309. package/src/components/footer/QFooter.json +3 -5
  310. package/src/components/form/QForm.json +1 -3
  311. package/src/components/form/QFormChildMixin.json +1 -3
  312. package/src/components/header/QHeader.json +4 -6
  313. package/src/components/icon/QIcon.json +2 -2
  314. package/src/components/img/QImg.js +1 -1
  315. package/src/components/img/QImg.json +45 -59
  316. package/src/components/infinite-scroll/QInfiniteScroll.json +3 -3
  317. package/src/components/inner-loading/QInnerLoading.json +5 -7
  318. package/src/components/input/QInput.json +10 -10
  319. package/src/components/input/use-mask.json +1 -1
  320. package/src/components/intersection/QIntersection.js +2 -2
  321. package/src/components/intersection/QIntersection.json +7 -7
  322. package/src/components/item/QItem.json +5 -5
  323. package/src/components/item/QList.json +2 -2
  324. package/src/components/knob/QKnob.js +1 -1
  325. package/src/components/knob/QKnob.json +6 -6
  326. package/src/components/layout/QLayout.js +1 -1
  327. package/src/components/layout/QLayout.json +3 -5
  328. package/src/components/linear-progress/QLinearProgress.json +2 -2
  329. package/src/components/markup-table/QMarkupTable.json +3 -3
  330. package/src/components/menu/QMenu.json +8 -8
  331. package/src/components/no-ssr/QNoSsr.json +3 -3
  332. package/src/components/option-group/QOptionGroup.json +11 -13
  333. package/src/components/page/QPage.json +2 -2
  334. package/src/components/page-scroller/QPageScroller.json +3 -3
  335. package/src/components/page-sticky/QPageSticky.json +4 -4
  336. package/src/components/pagination/QPagination.json +20 -20
  337. package/src/components/parallax/QParallax.json +5 -5
  338. package/src/components/popup-edit/QPopupEdit.json +17 -19
  339. package/src/components/popup-proxy/QPopupProxy.json +2 -2
  340. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -1
  341. package/src/components/radio/QRadio.json +5 -5
  342. package/src/components/range/QRange.json +3 -7
  343. package/src/components/rating/QRating.json +16 -19
  344. package/src/components/resize-observer/QResizeObserver.json +2 -2
  345. package/src/components/scroll-area/QScrollArea.js +1 -1
  346. package/src/components/scroll-area/QScrollArea.json +12 -12
  347. package/src/components/scroll-observer/QScrollObserver.json +4 -4
  348. package/src/components/select/QSelect.json +55 -59
  349. package/src/components/select/__tests__/QSelect.cy.js +21 -1
  350. package/src/components/separator/QSeparator.json +3 -5
  351. package/src/components/skeleton/QSkeleton.json +14 -16
  352. package/src/components/slide-item/QSlideItem.js +1 -1
  353. package/src/components/slide-item/QSlideItem.json +2 -2
  354. package/src/components/slide-transition/QSlideTransition.json +1 -1
  355. package/src/components/slider/QSlider.json +2 -4
  356. package/src/components/slider/use-slider.js +1 -1
  357. package/src/components/slider/use-slider.json +18 -22
  358. package/src/components/spinner/QSpinner.json +1 -1
  359. package/src/components/spinner/QSpinnerAudio.json +1 -1
  360. package/src/components/spinner/QSpinnerBall.json +1 -1
  361. package/src/components/spinner/QSpinnerBars.json +1 -1
  362. package/src/components/spinner/QSpinnerBox.json +1 -1
  363. package/src/components/spinner/QSpinnerClock.json +1 -1
  364. package/src/components/spinner/QSpinnerComment.json +1 -1
  365. package/src/components/spinner/QSpinnerCube.json +1 -1
  366. package/src/components/spinner/QSpinnerDots.json +1 -1
  367. package/src/components/spinner/QSpinnerFacebook.json +1 -1
  368. package/src/components/spinner/QSpinnerGears.json +1 -1
  369. package/src/components/spinner/QSpinnerGrid.json +1 -1
  370. package/src/components/spinner/QSpinnerHearts.json +1 -1
  371. package/src/components/spinner/QSpinnerHourglass.json +1 -1
  372. package/src/components/spinner/QSpinnerInfinity.json +1 -1
  373. package/src/components/spinner/QSpinnerIos.json +1 -1
  374. package/src/components/spinner/QSpinnerOrbit.json +1 -1
  375. package/src/components/spinner/QSpinnerOval.json +1 -1
  376. package/src/components/spinner/QSpinnerPie.json +1 -1
  377. package/src/components/spinner/QSpinnerPuff.json +1 -1
  378. package/src/components/spinner/QSpinnerRadio.json +1 -1
  379. package/src/components/spinner/QSpinnerRings.json +1 -1
  380. package/src/components/spinner/QSpinnerTail.json +1 -1
  381. package/src/components/splitter/QSplitter.js +1 -1
  382. package/src/components/splitter/QSplitter.json +14 -14
  383. package/src/components/stepper/QStep.json +4 -10
  384. package/src/components/stepper/QStepper.json +1 -3
  385. package/src/components/stepper/StepHeader.js +1 -1
  386. package/src/components/table/QTable.js +1 -1
  387. package/src/components/table/QTable.json +113 -126
  388. package/src/components/table/QTd.json +1 -1
  389. package/src/components/table/QTh.json +1 -1
  390. package/src/components/table/QTr.json +1 -1
  391. package/src/components/tabs/QRouteTab.json +1 -1
  392. package/src/components/tabs/QTab.json +6 -13
  393. package/src/components/tabs/QTabs.json +8 -8
  394. package/src/components/tabs/use-tab.js +1 -1
  395. package/src/components/time/QTime.js +1 -1
  396. package/src/components/time/QTime.json +10 -22
  397. package/src/components/timeline/QTimeline.json +4 -4
  398. package/src/components/timeline/QTimelineEntry.json +11 -11
  399. package/src/components/tooltip/QTooltip.json +17 -20
  400. package/src/components/tree/QTree.json +26 -26
  401. package/src/components/uploader/QUploader.json +4 -4
  402. package/src/components/uploader/xhr-uploader-plugin.json +12 -12
  403. package/src/components/video/QVideo.json +15 -19
  404. package/src/components/virtual-scroll/QVirtualScroll.json +7 -10
  405. package/src/components/virtual-scroll/use-virtual-scroll.json +9 -8
  406. package/src/composables/private/use-anchor.json +6 -6
  407. package/src/composables/private/use-field.json +8 -11
  408. package/src/composables/private/use-file.js +1 -1
  409. package/src/composables/private/use-file.json +6 -8
  410. package/src/composables/private/use-form.json +1 -1
  411. package/src/composables/private/use-form.test.js +93 -0
  412. package/src/composables/private/use-fullscreen.json +1 -3
  413. package/src/composables/private/use-key-composition.js +1 -1
  414. package/src/composables/private/use-panel.child.json +1 -3
  415. package/src/composables/private/use-panel.js +1 -1
  416. package/src/composables/private/use-panel.json +12 -12
  417. package/src/composables/private/use-portal.js +16 -1
  418. package/src/composables/private/use-ratio.json +4 -3
  419. package/src/composables/private/use-ratio.test.js +27 -0
  420. package/src/composables/private/use-router-link.json +6 -6
  421. package/src/composables/private/use-size.json +1 -1
  422. package/src/composables/private/use-size.test.js +22 -0
  423. package/src/composables/private/use-transition.json +3 -3
  424. package/src/composables/private/use-validate.json +6 -6
  425. package/src/composables/use-hydration.js +1 -1
  426. package/src/composables/use-id.js +1 -1
  427. package/src/composables/use-id.test.js +55 -0
  428. package/src/composables/use-meta.js +1 -1
  429. package/src/composables.js +2 -0
  430. package/src/css/index.sass +6 -6
  431. package/src/directives/{ClosePopup.js → close-popup/ClosePopup.js} +4 -4
  432. package/src/directives/{ClosePopup.json → close-popup/ClosePopup.json} +5 -5
  433. package/src/directives/{Intersection.js → intersection/Intersection.js} +3 -3
  434. package/src/directives/{Intersection.json → intersection/Intersection.json} +4 -6
  435. package/src/directives/{Morph.js → morph/Morph.js} +2 -2
  436. package/src/directives/{Morph.json → morph/Morph.json} +20 -20
  437. package/src/directives/{Mutation.js → mutation/Mutation.js} +2 -2
  438. package/src/directives/{Mutation.json → mutation/Mutation.json} +10 -12
  439. package/src/directives/{Ripple.js → ripple/Ripple.js} +6 -6
  440. package/src/directives/{Ripple.json → ripple/Ripple.json} +7 -13
  441. package/src/directives/{Scroll.js → scroll/Scroll.js} +4 -4
  442. package/src/directives/{Scroll.json → scroll/Scroll.json} +2 -2
  443. package/src/directives/{ScrollFire.js → scroll-fire/ScrollFire.js} +6 -6
  444. package/src/directives/{ScrollFire.json → scroll-fire/ScrollFire.json} +1 -1
  445. package/src/directives/{TouchHold.js → touch-hold/TouchHold.js} +5 -5
  446. package/src/directives/{TouchHold.json → touch-hold/TouchHold.json} +6 -6
  447. package/src/directives/{TouchPan.js → touch-pan/TouchPan.js} +6 -6
  448. package/src/directives/{TouchPan.json → touch-pan/TouchPan.json} +4 -4
  449. package/src/directives/{TouchRepeat.js → touch-repeat/TouchRepeat.js} +6 -6
  450. package/src/directives/{TouchRepeat.json → touch-repeat/TouchRepeat.json} +4 -4
  451. package/src/directives/{TouchSwipe.js → touch-swipe/TouchSwipe.js} +6 -6
  452. package/src/directives/{TouchSwipe.json → touch-swipe/TouchSwipe.json} +4 -4
  453. package/src/directives.js +11 -11
  454. package/src/history.js +1 -1
  455. package/src/install-quasar.js +3 -3
  456. package/src/plugins/{AddressbarColor.js → addressbar/AddressbarColor.js} +3 -3
  457. package/src/plugins/{AddressbarColor.json → addressbar/AddressbarColor.json} +1 -1
  458. package/src/plugins/{AppFullscreen.js → app-fullscreen/AppFullscreen.js} +2 -2
  459. package/src/plugins/{AppVisibility.js → app-visibility/AppVisibility.js} +2 -2
  460. package/src/plugins/{BottomSheet.js → bottom-sheet/BottomSheet.js} +2 -2
  461. package/src/plugins/{BottomSheet.json → bottom-sheet/BottomSheet.json} +10 -10
  462. package/src/{components/dialog-bottom-sheet/BottomSheet.js → plugins/bottom-sheet/component/BottomSheetComponent.js} +10 -10
  463. package/src/plugins/{Cookies.json → cookies/Cookies.json} +14 -16
  464. package/src/plugins/{Dark.js → dark/Dark.js} +1 -1
  465. package/src/plugins/{Dark.json → dark/Dark.json} +3 -3
  466. package/src/plugins/{Dialog.js → dialog/Dialog.js} +2 -2
  467. package/src/plugins/{Dialog.json → dialog/Dialog.json} +15 -15
  468. package/src/{components/dialog-plugin/DialogPlugin.js → plugins/dialog/component/DialogPluginComponent.js} +14 -14
  469. package/src/plugins/{Loading.js → loading/Loading.js} +7 -6
  470. package/src/plugins/{Loading.json → loading/Loading.json} +15 -15
  471. package/src/plugins/{LoadingBar.js → loading-bar/LoadingBar.js} +6 -6
  472. package/src/plugins/{LoadingBar.json → loading-bar/LoadingBar.json} +1 -1
  473. package/src/plugins/{LocalStorage.js → local-storage/LocalStorage.js} +2 -2
  474. package/src/plugins/{Meta.js → meta/Meta.js} +2 -2
  475. package/src/plugins/{Notify.js → notify/Notify.js} +11 -10
  476. package/src/plugins/{Notify.json → notify/Notify.json} +52 -68
  477. package/src/plugins/{Platform.js → platform/Platform.js} +3 -9
  478. package/src/plugins/{Platform.json → platform/Platform.json} +6 -10
  479. package/src/plugins/{Screen.js → screen/Screen.js} +4 -4
  480. package/src/plugins/{Screen.json → screen/Screen.json} +6 -12
  481. package/src/plugins/{SessionStorage.js → session-storage/SessionStorage.js} +2 -2
  482. package/src/plugins.js +15 -15
  483. package/src/utils/create-meta-mixin.js +1 -1
  484. package/src/utils/open-url.js +1 -1
  485. package/src/utils/prevent-scroll.js +1 -1
  486. package/src/utils/private/escape-key.js +1 -1
  487. package/src/utils/private/focusout.js +1 -1
  488. package/src/utils/private/global-dialog.json +2 -2
  489. package/src/utils/private/position-engine.js +1 -1
  490. package/src/utils/private/selection.js +1 -1
  491. package/src/utils/private/web-storage.json +8 -10
  492. package/src/components/avatar/__tests__/QAvatar.cy.js +0 -120
  493. package/src/components/badge/__tests__/QBadge.cy.js +0 -148
  494. package/src/components/banner/__tests__/QBanner.cy.js +0 -106
  495. package/src/components/bar/__tests__/QBar.cy.js +0 -45
  496. package/src/components/breadcrumbs/__tests__/QBreadcrumbs.cy.js +0 -111
  497. package/src/components/breadcrumbs/__tests__/QBreadcrumbsEl.cy.js +0 -87
  498. package/src/components/btn/__tests__/QBtn.cy.js +0 -128
  499. package/src/components/btn/__tests__/use-btn.cy.js +0 -517
  500. package/src/components/chip/__tests__/QChip.cy.js +0 -480
  501. package/src/components/dialog/__tests__/DialogWrapper.vue +0 -33
  502. package/src/components/dialog/__tests__/QDialog.cy.js +0 -543
  503. package/src/components/tabs/__tests__/QRouteTab.cy.js +0 -9
  504. /package/src/components/breadcrumbs/{__tests__ → test}/BasicBreadcrumbs.vue +0 -0
  505. /package/src/components/breadcrumbs/{__tests__ → test}/BreadcrumbWithSeparatorSlot.vue +0 -0
  506. /package/src/components/spinner/{__spinner-mixin.json → spinner.json} +0 -0
  507. /package/src/directives/{Morph.sass → morph/Morph.sass} +0 -0
  508. /package/src/directives/{Ripple.sass → ripple/Ripple.sass} +0 -0
  509. /package/src/plugins/{AppFullscreen.json → app-fullscreen/AppFullscreen.json} +0 -0
  510. /package/src/plugins/{AppVisibility.json → app-visibility/AppVisibility.json} +0 -0
  511. /package/src/{components/dialog-bottom-sheet/BottomSheet.sass → plugins/bottom-sheet/component/BottomSheetComponent.sass} +0 -0
  512. /package/src/plugins/{Cookies.js → cookies/Cookies.js} +0 -0
  513. /package/src/{components/dialog-plugin/DialogPlugin.sass → plugins/dialog/component/DialogPluginComponent.sass} +0 -0
  514. /package/src/plugins/{Loading.sass → loading/Loading.sass} +0 -0
  515. /package/src/plugins/{LocalStorage.json → local-storage/LocalStorage.json} +0 -0
  516. /package/src/plugins/{Meta.json → meta/Meta.json} +0 -0
  517. /package/src/plugins/{Notify.sass → notify/Notify.sass} +0 -0
  518. /package/src/plugins/{SessionStorage.json → session-storage/SessionStorage.json} +0 -0
@@ -3,7 +3,7 @@
3
3
  "model-value": {
4
4
  "type": "Any",
5
5
  "desc": "Model of the component defining the current panel's name; If a Number is used, it does not define the panel's index, but rather the panel's name which can also be an Integer; Either use this property (along with a listener for 'update:model-value' event) OR use the v-model directive.",
6
- "examples": [ "v-model=\"panelName\"" ],
6
+ "examples": [ "# v-model=\"panelName\"" ],
7
7
  "category": "model"
8
8
  },
9
9
 
@@ -16,14 +16,14 @@
16
16
  "keep-alive-include": {
17
17
  "type": [ "String", "Array", "RegExp" ],
18
18
  "desc": "Equivalent to using Vue's native include prop for <keep-alive>; Values must be valid Vue component names",
19
- "examples": [ "a,b", "/a|b/", "['a', 'b']" ],
19
+ "examples": [ "'a,b'", "/a|b/", "['a', 'b']" ],
20
20
  "category": "behavior"
21
21
  },
22
22
 
23
23
  "keep-alive-exclude": {
24
24
  "type": [ "String", "Array", "RegExp" ],
25
25
  "desc": "Equivalent to using Vue's native exclude prop for <keep-alive>; Values must be valid Vue component names",
26
- "examples": [ "a,b", "/a|b/", "['a', 'b']" ],
26
+ "examples": [ "'a,b'", "/a|b/", "['a', 'b']" ],
27
27
  "category": "behavior"
28
28
  },
29
29
 
@@ -60,21 +60,21 @@
60
60
  "transition-prev": {
61
61
  "extends": "transition",
62
62
  "desc": "One of Quasar's embedded transitions (has effect only if 'animated' prop is set)",
63
- "default": "slide-right/slide-down",
63
+ "default": "# slide-right/slide-down",
64
64
  "category": "transition"
65
65
  },
66
66
 
67
67
  "transition-next": {
68
68
  "extends": "transition",
69
69
  "desc": "One of Quasar's embedded transitions (has effect only if 'animated' prop is set)",
70
- "default": "slide-left/slide-up",
70
+ "default": "# slide-left/slide-up",
71
71
  "category": "transition"
72
72
  },
73
73
 
74
74
  "transition-duration": {
75
75
  "type": [ "String", "Number" ],
76
76
  "desc": "Transition duration (in milliseconds, without unit)",
77
- "default": 300,
77
+ "default": "300",
78
78
  "category": "transition",
79
79
  "addedIn": "v2.2"
80
80
  }
@@ -87,7 +87,7 @@
87
87
  "value": {
88
88
  "type": [ "String", "Number" ],
89
89
  "desc": "New current panel name",
90
- "examples": [ "dashboard" ]
90
+ "examples": [ "'dashboard'" ]
91
91
  }
92
92
  }
93
93
  },
@@ -98,12 +98,12 @@
98
98
  "newVal": {
99
99
  "type": [ "String", "Number" ],
100
100
  "desc": "Panel name towards transition is going",
101
- "examples": [ "dashboard" ]
101
+ "examples": [ "'dashboard'" ]
102
102
  },
103
103
  "oldVal": {
104
104
  "type": [ "String", "Number" ],
105
105
  "desc": "Panel name from which transition is happening",
106
- "examples": [ "dashboard" ]
106
+ "examples": [ "'dashboard'" ]
107
107
  }
108
108
  }
109
109
  },
@@ -114,12 +114,12 @@
114
114
  "newVal": {
115
115
  "type": [ "String", "Number" ],
116
116
  "desc": "Panel name towards transition has occurred",
117
- "examples": [ "dashboard" ]
117
+ "examples": [ "'dashboard'" ]
118
118
  },
119
119
  "oldVal": {
120
120
  "type": [ "String", "Number" ],
121
121
  "desc": "Panel name from which transition has happened",
122
- "examples": [ "dashboard" ]
122
+ "examples": [ "'dashboard'" ]
123
123
  }
124
124
  }
125
125
  }
@@ -141,7 +141,7 @@
141
141
  "type": [ "String", "Number" ],
142
142
  "desc": "Panel's name, which may be a String or Number; Number does not refers to panel index, but to its name, which may be an Integer",
143
143
  "required": true,
144
- "examples": [ "dashboard" ]
144
+ "examples": [ "'dashboard'" ]
145
145
  }
146
146
  }
147
147
  }
@@ -1,11 +1,26 @@
1
1
  import { h, ref, onUnmounted, Teleport } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { noop } from '../../utils/event.js'
4
5
  import { addFocusWaitFlag, removeFocusWaitFlag } from '../../utils/private/focus-manager.js'
5
6
  import { createGlobalNode, removeGlobalNode } from '../../utils/private/global-nodes.js'
6
7
  import { portalProxyList } from '../../utils/private/portal.js'
7
8
  import { injectProp } from '../../utils/private/inject-obj-prop.js'
8
9
 
10
+ /**
11
+ * Noop internal component to ease testing
12
+ * of the teleported content.
13
+ *
14
+ * const wrapper = mount(QDialog, { ... })
15
+ * const teleportedWrapper = wrapper.findComponent({ name: 'QPortal' })
16
+ */
17
+ const QPortal = createComponent({
18
+ name: 'QPortal',
19
+ setup (_, { slots }) {
20
+ return () => slots.default()
21
+ }
22
+ })
23
+
9
24
  function isOnGlobalDialog (vm) {
10
25
  vm = vm.parent
11
26
 
@@ -111,7 +126,7 @@ export default function (vm, innerRef, renderPortalContent, type) {
111
126
  ? renderPortalContent()
112
127
  : (
113
128
  portalIsActive.value === true
114
- ? [ h(Teleport, { to: portalEl }, renderPortalContent()) ]
129
+ ? [ h(Teleport, { to: portalEl }, h(QPortal, renderPortalContent)) ]
115
130
  : void 0
116
131
  )
117
132
  )
@@ -4,9 +4,10 @@
4
4
  "type": [ "String", "Number" ],
5
5
  "desc": "Aspect ratio for the content; If value is a String, then avoid using a computational statement (like '16/9') and instead specify the String value of the result directly (eg. '1.7777')",
6
6
  "examples": [
7
- ":ratio=\"4/3\"",
8
- ":ratio=\"16/9\"",
9
- "ratio=\"1\""
7
+ "1",
8
+ "'1.7778'",
9
+ "# :ratio=\"4/3\"",
10
+ "# :ratio=\"16/9\""
10
11
  ],
11
12
  "category": "style"
12
13
  }
@@ -0,0 +1,27 @@
1
+ import { describe, test, expect } from 'vitest'
2
+
3
+ import useRatio from './use-ratio.js'
4
+
5
+ describe('[useRatio API]', () => {
6
+ test('should return padding when ratio is supplied', () => {
7
+ const { value } = useRatio({ ratio: 2 })
8
+ expect(value).toBeTruthy()
9
+ expect(value.paddingBottom).toBeTruthy()
10
+ })
11
+
12
+ test('should return padding when naturalRatio is supplied', () => {
13
+ const { value } = useRatio({}, { value: 2 })
14
+ expect(value).toBeTruthy()
15
+ expect(value.paddingBottom).toBeTruthy()
16
+ })
17
+
18
+ test('should not return padding when invalid params', () => {
19
+ const { value } = useRatio({ ratio: 'a' })
20
+ expect(value).toBeFalsy()
21
+ })
22
+
23
+ test('should not return padding when no params are supplied', () => {
24
+ const { value } = useRatio({})
25
+ expect(value).toBeFalsy()
26
+ })
27
+ })
@@ -4,8 +4,8 @@
4
4
  "type": [ "String", "Object" ],
5
5
  "desc": "Equivalent to Vue Router <router-link> 'to' property; Superseded by 'href' prop if used",
6
6
  "examples": [
7
- "/home/dashboard",
8
- ":to=\"{ name: 'my-route-name' }\""
7
+ "'/home/dashboard'",
8
+ "{ name: 'my-route-name' }"
9
9
  ],
10
10
  "category": "navigation"
11
11
  },
@@ -25,21 +25,21 @@
25
25
  "active-class": {
26
26
  "type": "String",
27
27
  "desc": "Equivalent to Vue Router <router-link> 'active-class' property; Superseded by 'href' prop if used",
28
- "examples": [ "my-active-class" ],
28
+ "examples": [ "'my-active-class'" ],
29
29
  "category": "navigation"
30
30
  },
31
31
 
32
32
  "exact-active-class": {
33
33
  "type": "String",
34
34
  "desc": "Equivalent to Vue Router <router-link> 'active-class' property; Superseded by 'href' prop if used",
35
- "examples": [ "my-exact-active-class" ],
35
+ "examples": [ "'my-exact-active-class'" ],
36
36
  "category": "navigation"
37
37
  },
38
38
 
39
39
  "href": {
40
40
  "type": "String",
41
41
  "desc": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props",
42
- "examples": [ "https://quasar.dev" ],
42
+ "examples": [ "'https://quasar.dev'" ],
43
43
  "category": "navigation",
44
44
  "addedIn": "v2.4"
45
45
  },
@@ -47,7 +47,7 @@
47
47
  "target": {
48
48
  "type": "String",
49
49
  "desc": "Native <a> link target attribute; Use it only along with 'href' prop; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props",
50
- "examples": [ "_blank", "_self", "_parent", "_top" ],
50
+ "examples": [ "'_blank'", "'_self'", "'_parent'", "'_top'" ],
51
51
  "category": "navigation",
52
52
  "addedIn": "v2.4"
53
53
  },
@@ -3,7 +3,7 @@
3
3
  "size": {
4
4
  "type": "String",
5
5
  "desc": "Size in CSS units, including unit name or standard size name (xs|sm|md|lg|xl)",
6
- "examples": [ "16px", "2rem", "xs", "md" ],
6
+ "examples": [ "'16px'", "'2rem'", "'xs'", "'md'" ],
7
7
  "category": "style"
8
8
  }
9
9
  }
@@ -0,0 +1,22 @@
1
+ import { describe, test, expect } from 'vitest'
2
+
3
+ import useSize, { useSizeDefaults } from './use-size.js'
4
+
5
+ describe('[useSize API]', () => {
6
+ describe('(prop): size', () => {
7
+ test('should set the size', () => {
8
+ const { value } = useSize({ size: '24px' })
9
+ expect(value.fontSize).toBe('24px')
10
+ })
11
+
12
+ test('should set the size with standard size names', () => {
13
+ const { value } = useSize({ size: 'sm' })
14
+ expect(value.fontSize).toBe(`${ useSizeDefaults.sm }px`)
15
+ })
16
+
17
+ test('should set the size with custom size names', () => {
18
+ const { value } = useSize({ size: 'xs' }, { xs: 55 })
19
+ expect(value.fontSize).toBe('55px')
20
+ })
21
+ })
22
+ })
@@ -2,18 +2,18 @@
2
2
  "props": {
3
3
  "transition-show": {
4
4
  "extends": "transition",
5
- "default": "fade"
5
+ "default": "'fade'"
6
6
  },
7
7
 
8
8
  "transition-hide": {
9
9
  "extends": "transition",
10
- "default": "fade"
10
+ "default": "'fade'"
11
11
  },
12
12
 
13
13
  "transition-duration": {
14
14
  "type": [ "String", "Number" ],
15
15
  "desc": "Transition duration (in milliseconds, without unit)",
16
- "default": 300,
16
+ "default": "300",
17
17
  "category": "transition"
18
18
  }
19
19
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
  "error": {
10
10
  "type": [ "Boolean", "null" ],
11
- "default": null,
11
+ "default": "null",
12
12
  "desc": "Does field have validation errors?",
13
13
  "category": "behavior"
14
14
  },
@@ -16,7 +16,7 @@
16
16
  "error-message": {
17
17
  "type": "String",
18
18
  "desc": "Validation error message (gets displayed only if 'error' is set to 'true')",
19
- "examples": [ "Username must have at least 5 characters" ],
19
+ "examples": [ "'Username must have at least 5 characters'" ],
20
20
  "category": "content"
21
21
  },
22
22
 
@@ -31,9 +31,9 @@
31
31
  "tsType": "ValidationRule",
32
32
  "desc": "Array of Functions/Strings; If String, then it must be a name of one of the embedded validation rules",
33
33
  "examples": [
34
- ":rules=\"[ val => val.length <= 3 || 'Please use maximum 3 characters' ]\"",
35
- ":rules=\"[ 'fulltime' ]\"",
36
- ":rules=\"[ (val, rules) => rules.email(val) || 'Please enter a valid email address' ]\""
34
+ "[ val => val.length <= 3 || 'Please use maximum 3 characters' ]",
35
+ "[ 'fulltime' ]",
36
+ "[ (val, rules) => rules.email(val) || 'Please enter a valid email address' ]"
37
37
  ],
38
38
  "category": "behavior"
39
39
  },
@@ -47,7 +47,7 @@
47
47
  "lazy-rules": {
48
48
  "type": [ "Boolean", "String" ],
49
49
  "desc": "If set to boolean true then it checks validation status against the 'rules' only after field loses focus for first time; If set to 'ondemand' then it will trigger only when component's validate() method is manually called or when the wrapper QForm submits itself",
50
- "values": [ "(Boolean) true", "(Boolean) false", "ondemand" ],
50
+ "values": [ "true", "false", "'ondemand'" ],
51
51
  "category": "behavior"
52
52
  }
53
53
  },
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted } from 'vue'
2
2
 
3
3
  // using it to manage SSR rendering with best performance
4
- import { isRuntimeSsrPreHydration } from '../plugins/Platform.js'
4
+ import { isRuntimeSsrPreHydration } from '../plugins/platform/Platform.js'
5
5
 
6
6
  export default function () {
7
7
  const isHydrated = ref(!isRuntimeSsrPreHydration.value)
@@ -2,7 +2,7 @@ import { ref, computed, watch, onMounted } from 'vue'
2
2
 
3
3
  import uid from '../utils/uid.js'
4
4
 
5
- import { isRuntimeSsrPreHydration } from '../plugins/Platform.js'
5
+ import { isRuntimeSsrPreHydration } from '../plugins/platform/Platform.js'
6
6
 
7
7
  function parseValue (val) {
8
8
  return val === void 0 || val === null
@@ -0,0 +1,55 @@
1
+ import { describe, test, expect } from 'vitest'
2
+
3
+ import useId from './use-id.js'
4
+
5
+ describe('[useId API]', () => {
6
+ test('useId()', () => {
7
+ const { value: result } = useId()
8
+
9
+ expect(result).toBeTruthy()
10
+ expect(result.startsWith('f_')).toBe(true)
11
+ })
12
+
13
+ test('useId({})', () => {
14
+ const { value: result } = useId({})
15
+
16
+ expect(result).toBeTruthy()
17
+ expect(result.startsWith('f_')).toBe(true)
18
+ })
19
+
20
+ test('useId({ getValue })', () => {
21
+ const { value: result } = useId({
22
+ getValue: () => 'MyValue'
23
+ })
24
+
25
+ expect(result).toBe('MyValue')
26
+ })
27
+
28
+ test('useId({ getValue: () => null })', () => {
29
+ const { value: result } = useId({
30
+ getValue: () => null
31
+ })
32
+
33
+ expect(result).toBeTruthy()
34
+ expect(result.startsWith('f_')).toBe(true)
35
+ })
36
+
37
+ test('useId({ getValue: () => null, required: true })', () => {
38
+ const { value: result } = useId({
39
+ getValue: () => null,
40
+ required: true
41
+ })
42
+
43
+ expect(result).toBeTruthy()
44
+ expect(result.startsWith('f_')).toBe(true)
45
+ })
46
+
47
+ test('useId({ getValue: () => null, required: false })', () => {
48
+ const { value: result } = useId({
49
+ getValue: () => null,
50
+ required: false
51
+ })
52
+
53
+ expect(result).toBe(null)
54
+ })
55
+ })
@@ -1,6 +1,6 @@
1
1
  import { computed, watch, onActivated, onDeactivated, onUnmounted, useSSRContext } from 'vue'
2
2
 
3
- import { clientList, planClientUpdate } from '../plugins/Meta.js'
3
+ import { clientList, planClientUpdate } from '../plugins/meta/Meta.js'
4
4
 
5
5
  export default function (metaOptions) {
6
6
  if (__QUASAR_SSR_SERVER__) {
@@ -5,6 +5,7 @@ import useQuasar from './composables/use-quasar.js'
5
5
 
6
6
  import useHydration from './composables/use-hydration.js'
7
7
  import useId from './composables/use-id.js'
8
+ import useInterval from './composables/use-interval.js'
8
9
  import useRenderCache from './composables/use-render-cache.js'
9
10
  import useSplitAttrs from './composables/use-split-attrs.js'
10
11
  import useTick from './composables/use-tick.js'
@@ -18,6 +19,7 @@ export {
18
19
 
19
20
  useHydration,
20
21
  useId,
22
+ useInterval,
21
23
  useRenderCache,
22
24
  useSplitAttrs,
23
25
  useTick,
@@ -29,8 +29,6 @@
29
29
  @import '../components/color/QColor.sass'
30
30
  @import '../components/date/QDate.sass'
31
31
  @import '../components/dialog/QDialog.sass'
32
- @import '../components/dialog-bottom-sheet/BottomSheet.sass'
33
- @import '../components/dialog-plugin/DialogPlugin.sass'
34
32
  @import '../components/editor/QEditor.sass'
35
33
  @import '../components/expansion-item/QExpansionItem.sass'
36
34
  @import '../components/fab/QFab.sass'
@@ -78,12 +76,14 @@
78
76
  @import '../components/virtual-scroll/QVirtualScroll.sass'
79
77
 
80
78
  /* Directives */
81
- @import '../directives/Ripple.sass'
82
- @import '../directives/Morph.sass'
79
+ @import '../directives/ripple/Ripple.sass'
80
+ @import '../directives/morph/Morph.sass'
83
81
 
84
82
  /* Plugins */
85
- @import '../plugins/Loading.sass'
86
- @import '../plugins/Notify.sass'
83
+ @import '../plugins/bottom-sheet/component/BottomSheetComponent.sass'
84
+ @import '../plugins/dialog/component/DialogPluginComponent.sass'
85
+ @import '../plugins/loading/Loading.sass'
86
+ @import '../plugins/notify/Notify.sass'
87
87
 
88
88
  /* Core */
89
89
  @import './core/animations.sass'
@@ -1,7 +1,7 @@
1
- import { createDirective } from '../utils/private/create.js'
2
- import { closePortals, getPortalProxy } from '../utils/private/portal.js'
3
- import { isKeyCode } from '../utils/private/key-composition.js'
4
- import getSSRProps from '../utils/private/noop-ssr-directive-transform.js'
1
+ import { createDirective } from '../../utils/private/create.js'
2
+ import { closePortals, getPortalProxy } from '../../utils/private/portal.js'
3
+ import { isKeyCode } from '../../utils/private/key-composition.js'
4
+ import getSSRProps from '../../utils/private/noop-ssr-directive-transform.js'
5
5
 
6
6
  /*
7
7
  * depth
@@ -7,11 +7,11 @@
7
7
  "type": [ "Boolean", "Number", "String" ],
8
8
  "desc": "If value is 0 or 'false' then directive is disabled; if value is < 0 then it closes all popups in the chain; if value is 1 or 'true' or undefined then it closes only the parent popup; if value is > 1 it closes the specified number of parent popups in the chain (note that chained QMenus are considered 1 popup only & QPopupProxy separates chained menus)",
9
9
  "examples": [
10
- "v-close-popup",
11
- "v-close-popup=\"booleanState\"",
12
- "v-close-popup=\"-1\"",
13
- "v-close-popup=\"2\"",
14
- "v-close-popup=\"0\""
10
+ "# v-close-popup",
11
+ "# v-close-popup=\"booleanState\"",
12
+ "# v-close-popup=\"-1\"",
13
+ "# v-close-popup=\"2\"",
14
+ "# v-close-popup=\"0\""
15
15
  ]
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
- import { createDirective } from '../utils/private/create.js'
2
- import { isDeepEqual } from '../utils/is.js'
3
- import getSSRProps from '../utils/private/noop-ssr-directive-transform.js'
1
+ import { createDirective } from '../../utils/private/create.js'
2
+ import { isDeepEqual } from '../../utils/is.js'
3
+ import getSSRProps from '../../utils/private/noop-ssr-directive-transform.js'
4
4
 
5
5
  const defaultCfg = {
6
6
  threshold: 0,
@@ -7,8 +7,8 @@
7
7
  "type": [ "Object", "Function" ],
8
8
  "desc": "Function to call when scrolling occurs (identical to description of 'handler' prop of the Object form); If using the Object form, it is HIGHLY recommended to reference it from your vue component scope, otherwise the directive update cycle will continuously recreate the observer which hits performance hard",
9
9
  "examples": [
10
- "v-intersection=\"myFunction\"",
11
- "v-intersection=\"{ handler: myFunction, cfg: { root: myScrollingParentEl, rootMargin: '10px 20px 30px 40px', threshold: [0, 0.25, 0.5, 0.75, 1] } }\""
10
+ "# v-intersection=\"myFunction\"",
11
+ "# v-intersection=\"{ handler: myFunction, cfg: { root: myScrollingParentEl, rootMargin: '10px 20px 30px 40px', threshold: [0, 0.25, 0.5, 0.75, 1] } }\""
12
12
  ],
13
13
 
14
14
  "definition": {
@@ -180,7 +180,7 @@
180
180
  "rootMargin": {
181
181
  "type": "String",
182
182
  "desc": "Allows you to specify the margins for the root, effectively allowing you to either grow or shrink the area used for intersections",
183
- "examples": [ "10px 20px 30px 40px" ]
183
+ "examples": [ "'10px 20px 30px 40px'" ]
184
184
  },
185
185
 
186
186
  "threshold": {
@@ -209,9 +209,7 @@
209
209
  "once": {
210
210
  "type": "Boolean",
211
211
  "desc": "Call handler only once, when the conditions are first met",
212
- "examples": [
213
- "v-intersection.once"
214
- ]
212
+ "examples": [ "# v-intersection.once" ]
215
213
  }
216
214
  }
217
215
  }
@@ -1,5 +1,5 @@
1
- import { createDirective } from '../utils/private/create.js'
2
- import morph from '../utils/morph.js'
1
+ import { createDirective } from '../../utils/private/create.js'
2
+ import morph from '../../utils/morph.js'
3
3
 
4
4
  const morphGroups = {}
5
5
  const props = [
@@ -10,19 +10,19 @@
10
10
  "group": {
11
11
  "type": "String",
12
12
  "desc": "Name of the morph group the element belongs to",
13
- "examples": [ "dialogGroup" ]
13
+ "examples": [ "'dialogGroup'" ]
14
14
  },
15
15
 
16
16
  "name": {
17
17
  "type": "String",
18
18
  "desc": "Name of the morph inside the group that the element belongs to",
19
- "examples": [ "btn" ]
19
+ "examples": [ "'btn'" ]
20
20
  },
21
21
 
22
22
  "model": {
23
23
  "type": "String",
24
24
  "desc": "Current value of the group model; when it becomes the same as the 'name' it triggers the morphing",
25
- "examples": [ "btn" ]
25
+ "examples": [ "'btn'" ]
26
26
  },
27
27
 
28
28
  "duration": {
@@ -40,27 +40,27 @@
40
40
  "easing": {
41
41
  "type": "String",
42
42
  "desc": "Timing function for the animation (CSS easing format)",
43
- "default": "ease-in-out",
44
- "examples": [ "ease-out" ]
43
+ "default": "'ease-in-out'",
44
+ "examples": [ "'ease-out'" ]
45
45
  },
46
46
 
47
47
  "fill": {
48
48
  "type": "String",
49
49
  "desc": "Fill mode for the animation",
50
- "default": "none",
51
- "examples": [ "forward" ]
50
+ "default": "'none'",
51
+ "examples": [ "'forward'" ]
52
52
  },
53
53
 
54
54
  "classes": {
55
55
  "type": "String",
56
56
  "desc": "Class names to be added to the destination element during the animation",
57
- "examples": [ "bg-grey-2" ]
57
+ "examples": [ "'bg-grey-2'" ]
58
58
  },
59
59
 
60
60
  "style": {
61
61
  "type": [ "String", "Object" ],
62
62
  "desc": "Styles to be added to the destination element during the animation",
63
- "examples": [ "border-radius: 20px" ]
63
+ "examples": [ "'border-radius: 20px'" ]
64
64
  },
65
65
 
66
66
  "resize": {
@@ -91,20 +91,20 @@
91
91
  "tweenFromOpacity": {
92
92
  "type": "Number",
93
93
  "desc": "If using tween it is the initial opacity of the initial element (will be animated to 0) - the initial element is placed on top of the final element",
94
- "default": 0.6
94
+ "default": "0.6"
95
95
  },
96
96
 
97
97
  "tweenToOpacity": {
98
98
  "type": "Number",
99
99
  "desc": "If using tween it is the initial opacity of the final element (will be animated to 1)",
100
- "default": 0.5
100
+ "default": "0.5"
101
101
  },
102
102
 
103
103
  "waitFor": {
104
104
  "type": [ "Number", "String", "Promise<void>" ],
105
105
  "desc": "Delay animation start for that number of milliseconds, or until a 'transitionend' event is emitted by the destination element, or until the promise is resolved (if the promise is rejected the morphing will abort, but the 'toggle function' was already called)",
106
106
  "default": "0",
107
- "examples": [ "300", "transitionend" ]
107
+ "examples": [ "300", "'200'", "'transitionend'" ]
108
108
  },
109
109
 
110
110
  "onEnd": {
@@ -115,7 +115,7 @@
115
115
  "direction": {
116
116
  "type": "String",
117
117
  "desc": "'to' if the morphing was finished in the final state or 'from' if it was finished in the initial state",
118
- "values": [ "to", "from" ]
118
+ "values": [ "'to'", "'from'" ]
119
119
  },
120
120
  "aborted": {
121
121
  "type": "Boolean",
@@ -127,8 +127,8 @@
127
127
  },
128
128
 
129
129
  "examples": [
130
- "v-morph:element2:group1=\"groupModel\"",
131
- "v-morph=\"{ name: 'element2', group: 'group1', model: 'element1' }\""
130
+ "# v-morph:element2:group1=\"groupModel\"",
131
+ "# v-morph=\"{ name: 'element2', group: 'group1', model: 'element1' }\""
132
132
  ]
133
133
  },
134
134
 
@@ -136,11 +136,11 @@
136
136
  "type": "String",
137
137
  "desc": "x:x2:y:z, where x is the morph element name, x2 is the morph group, y is the animation duration (in milliseconds) and z is the amount of time to wait (in milliseconds) or the 'transitionend' string",
138
138
  "examples": [
139
- "v-morph:name=\"options\"",
140
- "v-morph:name:groupName=\"options\"",
141
- "v-morph:name:groupName:400=\"options\"",
142
- "v-morph:name:groupName:400:100=\"options\"",
143
- "v-morph:name:groupName:400:transitionend=\"options\""
139
+ "# v-morph:name=\"options\"",
140
+ "# v-morph:name:groupName=\"options\"",
141
+ "# v-morph:name:groupName:400=\"options\"",
142
+ "# v-morph:name:groupName:400:100=\"options\"",
143
+ "# v-morph:name:groupName:400:transitionend=\"options\""
144
144
  ]
145
145
  },
146
146