quasar 2.15.3 → 2.16.0

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 (582) hide show
  1. package/dist/api/AppFullscreen.json +1 -1
  2. package/dist/api/Brand.json +1 -1
  3. package/dist/api/QBreadcrumbs.json +1 -1
  4. package/dist/api/QBreadcrumbsEl.json +1 -1
  5. package/dist/api/QBtnDropdown.json +1 -1
  6. package/dist/api/QCarousel.json +1 -1
  7. package/dist/api/QCheckbox.json +1 -1
  8. package/dist/api/QCircularProgress.json +1 -1
  9. package/dist/api/QDialog.json +1 -1
  10. package/dist/api/QDrawer.json +1 -1
  11. package/dist/api/QEditor.json +1 -1
  12. package/dist/api/QExpansionItem.json +1 -1
  13. package/dist/api/QFab.json +1 -1
  14. package/dist/api/QFabAction.json +1 -1
  15. package/dist/api/QField.json +1 -1
  16. package/dist/api/QFile.json +1 -1
  17. package/dist/api/QImg.json +1 -1
  18. package/dist/api/QInnerLoading.json +1 -1
  19. package/dist/api/QInput.json +1 -1
  20. package/dist/api/QIntersection.json +1 -1
  21. package/dist/api/QItem.json +1 -1
  22. package/dist/api/QKnob.json +1 -1
  23. package/dist/api/QMenu.json +1 -1
  24. package/dist/api/QPage.json +1 -1
  25. package/dist/api/QPagination.json +1 -1
  26. package/dist/api/QParallax.json +1 -1
  27. package/dist/api/QPopupEdit.json +1 -1
  28. package/dist/api/QRadio.json +1 -1
  29. package/dist/api/QRange.json +1 -1
  30. package/dist/api/QRouteTab.json +1 -1
  31. package/dist/api/QSelect.json +1 -1
  32. package/dist/api/QSeparator.json +1 -1
  33. package/dist/api/QSkeleton.json +1 -1
  34. package/dist/api/QSlider.json +1 -1
  35. package/dist/api/QSpinner.json +1 -1
  36. package/dist/api/QSpinnerAudio.json +1 -1
  37. package/dist/api/QSpinnerBall.json +1 -1
  38. package/dist/api/QSpinnerBars.json +1 -1
  39. package/dist/api/QSpinnerBox.json +1 -1
  40. package/dist/api/QSpinnerClock.json +1 -1
  41. package/dist/api/QSpinnerComment.json +1 -1
  42. package/dist/api/QSpinnerCube.json +1 -1
  43. package/dist/api/QSpinnerDots.json +1 -1
  44. package/dist/api/QSpinnerFacebook.json +1 -1
  45. package/dist/api/QSpinnerGears.json +1 -1
  46. package/dist/api/QSpinnerGrid.json +1 -1
  47. package/dist/api/QSpinnerHearts.json +1 -1
  48. package/dist/api/QSpinnerHourglass.json +1 -1
  49. package/dist/api/QSpinnerInfinity.json +1 -1
  50. package/dist/api/QSpinnerIos.json +1 -1
  51. package/dist/api/QSpinnerOrbit.json +1 -1
  52. package/dist/api/QSpinnerOval.json +1 -1
  53. package/dist/api/QSpinnerPie.json +1 -1
  54. package/dist/api/QSpinnerPuff.json +1 -1
  55. package/dist/api/QSpinnerRadio.json +1 -1
  56. package/dist/api/QSpinnerRings.json +1 -1
  57. package/dist/api/QSpinnerTail.json +1 -1
  58. package/dist/api/QSplitter.json +1 -1
  59. package/dist/api/QStepper.json +1 -1
  60. package/dist/api/QTabPanels.json +1 -1
  61. package/dist/api/QTable.json +1 -1
  62. package/dist/api/QTimeline.json +1 -1
  63. package/dist/api/QToggle.json +1 -1
  64. package/dist/api/QTooltip.json +1 -1
  65. package/dist/api/QTree.json +1 -1
  66. package/dist/api/QVirtualScroll.json +1 -1
  67. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  68. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  69. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  70. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  71. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  72. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  73. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  74. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  75. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  76. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  77. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  78. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  79. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  80. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  81. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  82. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  83. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  84. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  85. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  86. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  87. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  88. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  89. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  90. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  91. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  92. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  93. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  94. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  95. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  96. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  97. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  98. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  99. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  100. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  101. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  102. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  103. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  104. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  105. package/dist/icon-set/themify.umd.prod.js +1 -1
  106. package/dist/lang/ar-TN.umd.prod.js +1 -1
  107. package/dist/lang/ar.umd.prod.js +1 -1
  108. package/dist/lang/az-Latn.umd.prod.js +1 -1
  109. package/dist/lang/bg.umd.prod.js +1 -1
  110. package/dist/lang/bn.umd.prod.js +1 -1
  111. package/dist/lang/ca.umd.prod.js +1 -1
  112. package/dist/lang/cs.umd.prod.js +1 -1
  113. package/dist/lang/da.umd.prod.js +1 -1
  114. package/dist/lang/de-CH.umd.prod.js +1 -1
  115. package/dist/lang/de-DE.umd.prod.js +1 -1
  116. package/dist/lang/de.umd.prod.js +1 -1
  117. package/dist/lang/el.umd.prod.js +1 -1
  118. package/dist/lang/en-GB.umd.prod.js +1 -1
  119. package/dist/lang/en-US.umd.prod.js +1 -1
  120. package/dist/lang/eo.umd.prod.js +1 -1
  121. package/dist/lang/es.umd.prod.js +1 -1
  122. package/dist/lang/et.umd.prod.js +1 -1
  123. package/dist/lang/eu.umd.prod.js +1 -1
  124. package/dist/lang/fa-IR.umd.prod.js +1 -1
  125. package/dist/lang/fa.umd.prod.js +1 -1
  126. package/dist/lang/fi.umd.prod.js +1 -1
  127. package/dist/lang/fr.umd.prod.js +1 -1
  128. package/dist/lang/gn.umd.prod.js +1 -1
  129. package/dist/lang/he.umd.prod.js +1 -1
  130. package/dist/lang/hi.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/kk.umd.prod.js +1 -1
  138. package/dist/lang/km.umd.prod.js +1 -1
  139. package/dist/lang/ko-KR.umd.prod.js +1 -1
  140. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  141. package/dist/lang/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/mk.umd.prod.js +1 -1
  145. package/dist/lang/ml.umd.prod.js +1 -1
  146. package/dist/lang/mm.umd.prod.js +1 -1
  147. package/dist/lang/ms-MY.umd.prod.js +1 -1
  148. package/dist/lang/ms.umd.prod.js +1 -1
  149. package/dist/lang/my.umd.prod.js +1 -1
  150. package/dist/lang/nb-NO.umd.prod.js +1 -1
  151. package/dist/lang/nl.umd.prod.js +1 -1
  152. package/dist/lang/pl.umd.prod.js +1 -1
  153. package/dist/lang/pt-BR.umd.prod.js +1 -1
  154. package/dist/lang/pt.umd.prod.js +1 -1
  155. package/dist/lang/ro.umd.prod.js +1 -1
  156. package/dist/lang/ru.umd.prod.js +1 -1
  157. package/dist/lang/sk.umd.prod.js +1 -1
  158. package/dist/lang/sl.umd.prod.js +1 -1
  159. package/dist/lang/sm.umd.prod.js +1 -1
  160. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  161. package/dist/lang/sr.umd.prod.js +1 -1
  162. package/dist/lang/sv.umd.prod.js +1 -1
  163. package/dist/lang/ta.umd.prod.js +1 -1
  164. package/dist/lang/th.umd.prod.js +1 -1
  165. package/dist/lang/tl.umd.prod.js +1 -1
  166. package/dist/lang/tr.umd.prod.js +1 -1
  167. package/dist/lang/ug.umd.prod.js +1 -1
  168. package/dist/lang/uk.umd.prod.js +1 -1
  169. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  170. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  171. package/dist/lang/vi.umd.prod.js +1 -1
  172. package/dist/lang/zh-CN.umd.prod.js +1 -1
  173. package/dist/lang/zh-TW.umd.prod.js +1 -1
  174. package/dist/{quasar.esm.js → quasar.client.js} +337 -364
  175. package/dist/quasar.sass +1 -1
  176. package/dist/quasar.server.prod.cjs +127 -0
  177. package/dist/quasar.server.prod.js +127 -0
  178. package/dist/quasar.umd.js +337 -363
  179. package/dist/quasar.umd.prod.js +8 -8
  180. package/dist/transforms/api-list.json +1 -1
  181. package/dist/types/index.d.ts +191 -93
  182. package/dist/vetur/quasar-attributes.json +1 -1
  183. package/dist/vetur/quasar-tags.json +1 -1
  184. package/dist/web-types/web-types.json +1 -1
  185. package/icon-set/bootstrap-icons.js +3 -8
  186. package/icon-set/eva-icons.js +3 -8
  187. package/icon-set/fontawesome-v5-pro.js +1 -6
  188. package/icon-set/fontawesome-v5.js +1 -6
  189. package/icon-set/fontawesome-v6-pro.js +1 -6
  190. package/icon-set/fontawesome-v6.js +1 -6
  191. package/icon-set/ionicons-v4.js +3 -8
  192. package/icon-set/line-awesome.js +1 -6
  193. package/icon-set/material-icons-outlined.js +1 -6
  194. package/icon-set/material-icons-round.js +1 -6
  195. package/icon-set/material-icons-sharp.js +1 -6
  196. package/icon-set/material-icons.js +1 -6
  197. package/icon-set/material-symbols-outlined.js +1 -6
  198. package/icon-set/material-symbols-rounded.js +1 -6
  199. package/icon-set/material-symbols-sharp.js +1 -6
  200. package/icon-set/mdi-v3.js +1 -6
  201. package/icon-set/mdi-v4.js +1 -6
  202. package/icon-set/mdi-v5.js +1 -6
  203. package/icon-set/mdi-v6.js +1 -6
  204. package/icon-set/mdi-v7.js +1 -6
  205. package/icon-set/svg-bootstrap-icons.js +6 -6
  206. package/icon-set/svg-eva-icons.js +6 -6
  207. package/icon-set/svg-fontawesome-v5.js +3 -3
  208. package/icon-set/svg-fontawesome-v6.js +4 -5
  209. package/icon-set/svg-ionicons-v4.js +6 -6
  210. package/icon-set/svg-ionicons-v5.js +5 -5
  211. package/icon-set/svg-ionicons-v6.js +5 -5
  212. package/icon-set/svg-line-awesome.js +4 -5
  213. package/icon-set/svg-material-icons-outlined.js +4 -5
  214. package/icon-set/svg-material-icons-round.js +4 -5
  215. package/icon-set/svg-material-icons-sharp.js +4 -5
  216. package/icon-set/svg-material-icons.js +4 -5
  217. package/icon-set/svg-material-symbols-outlined.js +4 -4
  218. package/icon-set/svg-material-symbols-rounded.js +4 -4
  219. package/icon-set/svg-material-symbols-sharp.js +4 -4
  220. package/icon-set/svg-mdi-v6.js +4 -5
  221. package/icon-set/svg-mdi-v7.js +4 -4
  222. package/icon-set/svg-themify.js +6 -6
  223. package/icon-set/themify.js +3 -8
  224. package/lang/ar-TN.js +1 -6
  225. package/lang/ar.js +1 -6
  226. package/lang/az-Latn.js +1 -6
  227. package/lang/bg.js +1 -6
  228. package/lang/bn.js +1 -6
  229. package/lang/ca.js +1 -6
  230. package/lang/cs.js +1 -6
  231. package/lang/da.js +1 -6
  232. package/lang/de-CH.js +1 -6
  233. package/lang/de-DE.js +1 -6
  234. package/lang/de.js +1 -6
  235. package/lang/el.js +1 -6
  236. package/lang/en-GB.js +1 -6
  237. package/lang/en-US.js +1 -6
  238. package/lang/eo.js +1 -6
  239. package/lang/es.js +1 -6
  240. package/lang/et.js +1 -6
  241. package/lang/eu.js +1 -6
  242. package/lang/fa-IR.js +1 -6
  243. package/lang/fa.js +1 -6
  244. package/lang/fi.js +1 -6
  245. package/lang/fr.js +1 -6
  246. package/lang/gn.js +1 -6
  247. package/lang/he.js +1 -6
  248. package/lang/hi.js +1 -6
  249. package/lang/hr.js +1 -6
  250. package/lang/hu.js +1 -6
  251. package/lang/id.js +1 -6
  252. package/lang/is.js +1 -6
  253. package/lang/it.js +1 -6
  254. package/lang/ja.js +1 -6
  255. package/lang/kk.js +1 -6
  256. package/lang/km.js +1 -6
  257. package/lang/ko-KR.js +1 -6
  258. package/lang/kur-CKB.js +1 -6
  259. package/lang/lt.js +1 -6
  260. package/lang/lu.js +1 -6
  261. package/lang/lv.js +1 -6
  262. package/lang/mk.js +1 -6
  263. package/lang/ml.js +1 -6
  264. package/lang/mm.js +1 -6
  265. package/lang/ms-MY.js +1 -6
  266. package/lang/ms.js +1 -6
  267. package/lang/my.js +1 -6
  268. package/lang/nb-NO.js +1 -6
  269. package/lang/nl.js +1 -6
  270. package/lang/pl.js +1 -6
  271. package/lang/pt-BR.js +1 -6
  272. package/lang/pt.js +1 -6
  273. package/lang/ro.js +1 -6
  274. package/lang/ru.js +1 -6
  275. package/lang/sk.js +1 -6
  276. package/lang/sl.js +1 -6
  277. package/lang/sm.js +1 -6
  278. package/lang/sr-CYR.js +1 -6
  279. package/lang/sr.js +1 -6
  280. package/lang/sv.js +1 -6
  281. package/lang/ta.js +1 -6
  282. package/lang/th.js +1 -6
  283. package/lang/tl.js +1 -6
  284. package/lang/tr.js +1 -6
  285. package/lang/ug.js +1 -6
  286. package/lang/uk.js +1 -6
  287. package/lang/uz-Cyrl.js +1 -6
  288. package/lang/uz-Latn.js +1 -6
  289. package/lang/vi.js +1 -6
  290. package/lang/zh-CN.js +1 -6
  291. package/lang/zh-TW.js +1 -6
  292. package/package.json +20 -9
  293. package/src/components/avatar/QAvatar.test.js +0 -28
  294. package/src/components/badge/QBadge.test.js +0 -36
  295. package/src/components/banner/QBanner.test.js +0 -16
  296. package/src/components/bar/QBar.test.js +0 -8
  297. package/src/components/breadcrumbs/QBreadcrumbs.json +2 -1
  298. package/src/components/breadcrumbs/QBreadcrumbs.test.js +1 -21
  299. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +0 -51
  300. package/src/components/btn/QBtn.json +6 -1
  301. package/src/components/btn/QBtn.test.js +0 -143
  302. package/src/components/btn/use-btn.js +8 -4
  303. package/src/components/btn/use-btn.test.js +9 -1
  304. package/src/components/btn-dropdown/QBtnDropdown.js +3 -3
  305. package/src/components/btn-dropdown/QBtnDropdown.json +1 -4
  306. package/src/components/btn-toggle/QBtnToggle.json +3 -1
  307. package/src/components/card/QCardActions.json +1 -0
  308. package/src/components/carousel/QCarousel.js +4 -3
  309. package/src/components/carousel/QCarousel.json +6 -3
  310. package/src/components/checkbox/use-checkbox.json +1 -1
  311. package/src/components/chip/QChip.test.js +0 -108
  312. package/src/components/circular-progress/QCircularProgress.json +0 -1
  313. package/src/components/color/QColor.json +1 -0
  314. package/src/components/date/QDate.js +8 -2
  315. package/src/components/date/QDate.json +1 -0
  316. package/src/components/date/use-datetime.js +1 -3
  317. package/src/components/dialog/QDialog.js +1 -2
  318. package/src/components/dialog/QDialog.json +11 -1
  319. package/src/components/dialog/QDialog.test.js +38 -160
  320. package/src/components/drawer/QDrawer.json +2 -2
  321. package/src/components/editor/QEditor.js +3 -8
  322. package/src/components/editor/QEditor.json +9 -2
  323. package/src/components/expansion-item/QExpansionItem.js +1 -1
  324. package/src/components/expansion-item/QExpansionItem.json +5 -6
  325. package/src/components/fab/QFab.js +1 -0
  326. package/src/components/fab/QFab.json +5 -4
  327. package/src/components/fab/QFabAction.json +2 -1
  328. package/src/components/fab/use-fab.json +2 -1
  329. package/src/components/field/QField.json +0 -39
  330. package/src/components/file/QFile.js +2 -2
  331. package/src/components/file/QFile.json +2 -7
  332. package/src/components/footer/QFooter.json +3 -1
  333. package/src/components/form/QForm.js +1 -1
  334. package/src/components/header/QHeader.json +3 -1
  335. package/src/components/img/QImg.json +1 -1
  336. package/src/components/infinite-scroll/QInfiniteScroll.js +7 -6
  337. package/src/components/inner-loading/QInnerLoading.js +1 -1
  338. package/src/components/inner-loading/QInnerLoading.json +1 -0
  339. package/src/components/input/QInput.js +2 -1
  340. package/src/components/input/QInput.json +7 -24
  341. package/src/components/intersection/QIntersection.json +1 -1
  342. package/src/components/item/QItem.json +3 -1
  343. package/src/components/knob/QKnob.json +11 -2
  344. package/src/components/menu/QMenu.js +2 -4
  345. package/src/components/menu/QMenu.json +3 -1
  346. package/src/components/option-group/QOptionGroup.js +1 -0
  347. package/src/components/page/QPage.json +1 -2
  348. package/src/components/page-scroller/QPageScroller.js +1 -0
  349. package/src/components/page-scroller/QPageScroller.json +4 -0
  350. package/src/components/page-sticky/QPageSticky.js +1 -1
  351. package/src/components/pagination/QPagination.json +7 -2
  352. package/src/components/parallax/QParallax.js +2 -4
  353. package/src/components/parallax/QParallax.json +1 -0
  354. package/src/components/popup-edit/QPopupEdit.json +2 -1
  355. package/src/components/pull-to-refresh/QPullToRefresh.js +2 -4
  356. package/src/components/radio/QRadio.json +2 -2
  357. package/src/components/range/QRange.json +1 -0
  358. package/src/components/scroll-observer/QScrollObserver.js +2 -4
  359. package/src/components/select/QSelect.js +7 -7
  360. package/src/components/select/QSelect.json +27 -16
  361. package/src/components/separator/QSeparator.json +0 -1
  362. package/src/components/skeleton/QSkeleton.json +1 -1
  363. package/src/components/slider/QSlider.json +1 -0
  364. package/src/components/slider/use-slider.js +0 -2
  365. package/src/components/spinner/QSpinner.json +1 -5
  366. package/src/components/spinner/QSpinner.test.js +79 -0
  367. package/src/components/spinner/QSpinnerAudio.test.js +59 -0
  368. package/src/components/spinner/QSpinnerBall.test.js +59 -0
  369. package/src/components/spinner/QSpinnerBars.test.js +59 -0
  370. package/src/components/spinner/QSpinnerBox.test.js +59 -0
  371. package/src/components/spinner/QSpinnerClock.test.js +59 -0
  372. package/src/components/spinner/QSpinnerComment.test.js +59 -0
  373. package/src/components/spinner/QSpinnerCube.test.js +59 -0
  374. package/src/components/spinner/QSpinnerDots.test.js +59 -0
  375. package/src/components/spinner/QSpinnerFacebook.test.js +59 -0
  376. package/src/components/spinner/QSpinnerGears.test.js +59 -0
  377. package/src/components/spinner/QSpinnerGrid.test.js +59 -0
  378. package/src/components/spinner/QSpinnerHearts.test.js +59 -0
  379. package/src/components/spinner/QSpinnerHourglass.test.js +59 -0
  380. package/src/components/spinner/QSpinnerInfinity.test.js +59 -0
  381. package/src/components/spinner/QSpinnerIos.test.js +59 -0
  382. package/src/components/spinner/QSpinnerOrbit.test.js +59 -0
  383. package/src/components/spinner/QSpinnerOval.test.js +59 -0
  384. package/src/components/spinner/QSpinnerPie.test.js +59 -0
  385. package/src/components/spinner/QSpinnerPuff.test.js +59 -0
  386. package/src/components/spinner/QSpinnerRadio.test.js +59 -0
  387. package/src/components/spinner/QSpinnerRings.test.js +59 -0
  388. package/src/components/spinner/QSpinnerTail.test.js +59 -0
  389. package/src/components/spinner/spinner.json +5 -0
  390. package/src/components/spinner/use-spinner.js +1 -1
  391. package/src/components/spinner/use-spinner.test.js +59 -0
  392. package/src/components/splitter/QSplitter.json +3 -3
  393. package/src/components/stepper/QStep.json +6 -0
  394. package/src/components/tab-panels/QTabPanels.json +6 -0
  395. package/src/components/table/QTable.js +6 -8
  396. package/src/components/table/QTable.json +13 -8
  397. package/src/components/table/QTh.json +4 -0
  398. package/src/components/tabs/QRouteTab.json +3 -2
  399. package/src/components/tabs/QTab.json +1 -65
  400. package/src/components/tabs/use-tab.json +72 -0
  401. package/src/components/time/QTime.js +6 -0
  402. package/src/components/time/QTime.json +2 -0
  403. package/src/components/timeline/QTimeline.json +2 -1
  404. package/src/components/toolbar/QToolbar.test.js +41 -0
  405. package/src/components/toolbar/QToolbarTitle.test.js +41 -0
  406. package/src/components/tooltip/QTooltip.js +6 -6
  407. package/src/components/tooltip/QTooltip.json +6 -15
  408. package/src/components/tree/QTree.js +1 -1
  409. package/src/components/tree/QTree.json +2 -1
  410. package/src/components/uploader/xhr-uploader-plugin.js +1 -3
  411. package/src/components/video/QVideo.test.js +0 -24
  412. package/src/components/virtual-scroll/QVirtualScroll.js +2 -4
  413. package/src/components/virtual-scroll/QVirtualScroll.json +0 -1
  414. package/src/components/virtual-scroll/use-virtual-scroll.js +2 -2
  415. package/src/components/virtual-scroll/use-virtual-scroll.json +1 -1
  416. package/src/composables/private.use-anchor/use-anchor-static.json +22 -0
  417. package/src/composables/private.use-anchor/use-anchor.js +13 -4
  418. package/src/composables/private.use-anchor/use-anchor.json +2 -19
  419. package/src/composables/private.use-field/use-field.js +6 -3
  420. package/src/composables/private.use-field/use-field.json +22 -0
  421. package/src/composables/private.use-fullscreen/use-fullscreen.json +10 -0
  422. package/src/composables/private.use-model-toggle/use-model-toggle.json +4 -2
  423. package/src/composables/private.use-panel/use-panel.json +3 -0
  424. package/src/composables/private.use-portal/use-portal.js +1 -1
  425. package/src/composables/private.use-router-link/use-router-link.js +15 -9
  426. package/src/composables/private.use-router-link/use-router-link.json +2 -0
  427. package/src/composables/private.use-validate/use-validate.json +1 -0
  428. package/src/composables/use-id/use-id.test.js +0 -1
  429. package/src/composables/use-interval/use-interval.test.js +173 -0
  430. package/src/composables/use-render-cache/use-render-cache.js +2 -2
  431. package/src/composables/use-render-cache/use-render-cache.test.js +73 -0
  432. package/src/composables/use-split-attrs/use-split-attrs.test.js +55 -0
  433. package/src/composables/use-tick/use-tick.test.js +118 -0
  434. package/src/composables/use-timeout/use-timeout.test.js +169 -0
  435. package/src/install-quasar.js +1 -1
  436. package/src/plugins/addressbar/AddressbarColor.test.js +53 -0
  437. package/src/plugins/app-fullscreen/AppFullscreen.js +1 -1
  438. package/src/plugins/app-fullscreen/AppFullscreen.json +3 -1
  439. package/src/plugins/app-fullscreen/AppFullscreen.test.js +206 -0
  440. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +43 -0
  441. package/src/plugins/app-visibility/AppVisibility.test.js +45 -0
  442. package/src/plugins/bottom-sheet/BottomSheet.js +1 -1
  443. package/src/plugins/bottom-sheet/BottomSheet.json +1 -1
  444. package/src/plugins/dark/Dark.test.js +158 -0
  445. package/src/plugins/dialog/Dialog.js +1 -1
  446. package/src/plugins/dialog/Dialog.json +1 -1
  447. package/src/plugins/icon-set/IconSet.js +1 -2
  448. package/src/plugins/icon-set/IconSet.test.js +2 -2
  449. package/src/plugins/lang/Lang.js +1 -2
  450. package/src/plugins/lang/Lang.test.js +2 -2
  451. package/src/plugins/loading/Loading.js +1 -1
  452. package/src/plugins/loading-bar/LoadingBar.js +1 -1
  453. package/src/plugins/notify/Notify.js +1 -1
  454. package/src/plugins/platform/Platform.js +2 -1
  455. package/src/plugins/private.body/Body.test.js +28 -0
  456. package/src/plugins/private.history/History.test.js +38 -0
  457. package/src/plugins/screen/Screen.test.js +453 -0
  458. package/src/utils/css-var/get-css-var.test.js +12 -0
  459. package/src/utils/css-var/set-css-var.test.js +18 -0
  460. package/src/utils/dom/dom.test.js +222 -0
  461. package/src/utils/{private.global/global-config.test.js → private.config/instance-config.test.js} +2 -2
  462. package/src/utils/{private.global/global-nodes.js → private.config/nodes.js} +1 -1
  463. package/src/utils/{private.global/global-nodes.test.js → private.config/nodes.test.js} +3 -3
  464. package/src/utils/{private.global/global-dialog.js → private.dialog/create-dialog.js} +1 -1
  465. package/src/utils/private.render/render.test.js +187 -0
  466. package/src/utils/private.selection/selection.test.js +40 -0
  467. package/src/utils/private.vm/vm.test.js +175 -0
  468. package/src/utils/scroll/scroll.js +4 -0
  469. package/wrappers/{index.mjs → index.cjs} +15 -15
  470. package/wrappers/index.js +15 -15
  471. package/dist/quasar.cjs.prod.js +0 -127
  472. package/dist/quasar.esm.prod.js +0 -127
  473. package/dist/transforms/import-transformation.js +0 -9
  474. package/icon-set/bootstrap-icons.mjs +0 -136
  475. package/icon-set/eva-icons.mjs +0 -186
  476. package/icon-set/fontawesome-v5-pro.mjs +0 -128
  477. package/icon-set/fontawesome-v5.mjs +0 -128
  478. package/icon-set/fontawesome-v6-pro.mjs +0 -128
  479. package/icon-set/fontawesome-v6.mjs +0 -128
  480. package/icon-set/ionicons-v4.mjs +0 -180
  481. package/icon-set/line-awesome.mjs +0 -128
  482. package/icon-set/material-icons-outlined.mjs +0 -128
  483. package/icon-set/material-icons-round.mjs +0 -128
  484. package/icon-set/material-icons-sharp.mjs +0 -128
  485. package/icon-set/material-icons.mjs +0 -128
  486. package/icon-set/material-symbols-outlined.mjs +0 -128
  487. package/icon-set/material-symbols-rounded.mjs +0 -128
  488. package/icon-set/material-symbols-sharp.mjs +0 -128
  489. package/icon-set/mdi-v3.mjs +0 -141
  490. package/icon-set/mdi-v4.mjs +0 -141
  491. package/icon-set/mdi-v5.mjs +0 -141
  492. package/icon-set/mdi-v6.mjs +0 -141
  493. package/icon-set/mdi-v7.mjs +0 -141
  494. package/icon-set/svg-bootstrap-icons.mjs +0 -210
  495. package/icon-set/svg-eva-icons.mjs +0 -233
  496. package/icon-set/svg-fontawesome-v5.mjs +0 -197
  497. package/icon-set/svg-fontawesome-v6.mjs +0 -198
  498. package/icon-set/svg-ionicons-v4.mjs +0 -234
  499. package/icon-set/svg-ionicons-v5.mjs +0 -225
  500. package/icon-set/svg-ionicons-v6.mjs +0 -224
  501. package/icon-set/svg-line-awesome.mjs +0 -198
  502. package/icon-set/svg-material-icons-outlined.mjs +0 -203
  503. package/icon-set/svg-material-icons-round.mjs +0 -203
  504. package/icon-set/svg-material-icons-sharp.mjs +0 -203
  505. package/icon-set/svg-material-icons.mjs +0 -203
  506. package/icon-set/svg-material-symbols-outlined.mjs +0 -201
  507. package/icon-set/svg-material-symbols-rounded.mjs +0 -201
  508. package/icon-set/svg-material-symbols-sharp.mjs +0 -201
  509. package/icon-set/svg-mdi-v6.mjs +0 -225
  510. package/icon-set/svg-mdi-v7.mjs +0 -224
  511. package/icon-set/svg-themify.mjs +0 -231
  512. package/icon-set/themify.mjs +0 -169
  513. package/lang/ar-TN.mjs +0 -98
  514. package/lang/ar.mjs +0 -98
  515. package/lang/az-Latn.mjs +0 -93
  516. package/lang/bg.mjs +0 -93
  517. package/lang/bn.mjs +0 -93
  518. package/lang/ca.mjs +0 -93
  519. package/lang/cs.mjs +0 -104
  520. package/lang/da.mjs +0 -93
  521. package/lang/de-CH.mjs +0 -93
  522. package/lang/de-DE.mjs +0 -93
  523. package/lang/de.mjs +0 -93
  524. package/lang/el.mjs +0 -93
  525. package/lang/en-GB.mjs +0 -93
  526. package/lang/en-US.mjs +0 -93
  527. package/lang/eo.mjs +0 -93
  528. package/lang/es.mjs +0 -93
  529. package/lang/et.mjs +0 -93
  530. package/lang/eu.mjs +0 -93
  531. package/lang/fa-IR.mjs +0 -94
  532. package/lang/fa.mjs +0 -94
  533. package/lang/fi.mjs +0 -94
  534. package/lang/fr.mjs +0 -96
  535. package/lang/gn.mjs +0 -93
  536. package/lang/he.mjs +0 -94
  537. package/lang/hi.mjs +0 -93
  538. package/lang/hr.mjs +0 -93
  539. package/lang/hu.mjs +0 -93
  540. package/lang/id.mjs +0 -93
  541. package/lang/is.mjs +0 -93
  542. package/lang/it.mjs +0 -93
  543. package/lang/ja.mjs +0 -92
  544. package/lang/kk.mjs +0 -97
  545. package/lang/km.mjs +0 -93
  546. package/lang/ko-KR.mjs +0 -93
  547. package/lang/kur-CKB.mjs +0 -103
  548. package/lang/lt.mjs +0 -105
  549. package/lang/lu.mjs +0 -93
  550. package/lang/lv.mjs +0 -93
  551. package/lang/mk.mjs +0 -93
  552. package/lang/ml.mjs +0 -97
  553. package/lang/mm.mjs +0 -94
  554. package/lang/ms-MY.mjs +0 -96
  555. package/lang/ms.mjs +0 -93
  556. package/lang/my.mjs +0 -92
  557. package/lang/nb-NO.mjs +0 -94
  558. package/lang/nl.mjs +0 -93
  559. package/lang/pl.mjs +0 -93
  560. package/lang/pt-BR.mjs +0 -93
  561. package/lang/pt.mjs +0 -93
  562. package/lang/ro.mjs +0 -93
  563. package/lang/ru.mjs +0 -97
  564. package/lang/sk.mjs +0 -93
  565. package/lang/sl.mjs +0 -93
  566. package/lang/sm.mjs +0 -93
  567. package/lang/sr-CYR.mjs +0 -93
  568. package/lang/sr.mjs +0 -93
  569. package/lang/sv.mjs +0 -93
  570. package/lang/ta.mjs +0 -93
  571. package/lang/th.mjs +0 -93
  572. package/lang/tl.mjs +0 -93
  573. package/lang/tr.mjs +0 -89
  574. package/lang/ug.mjs +0 -93
  575. package/lang/uk.mjs +0 -97
  576. package/lang/uz-Cyrl.mjs +0 -95
  577. package/lang/uz-Latn.mjs +0 -99
  578. package/lang/vi.mjs +0 -93
  579. package/lang/zh-CN.mjs +0 -92
  580. package/lang/zh-TW.mjs +0 -92
  581. /package/src/utils/{private.global/global-config.js → private.config/instance-config.js} +0 -0
  582. /package/src/utils/{private.global/global-dialog.json → private.dialog/create-dialog.json} +0 -0
@@ -0,0 +1,59 @@
1
+ import { mount, flushPromises } from '@vue/test-utils'
2
+ import { describe, test, expect } from 'vitest'
3
+
4
+ import QSpinnerTail from './QSpinnerTail.js'
5
+
6
+ describe('[QSpinnerTail API]', () => {
7
+ describe('[Props]', () => {
8
+ describe('[(prop)size]', () => {
9
+ test.each([
10
+ [ 'String', '100px' ],
11
+ [ 'Number', 100 ]
12
+ ])('type %s has effect', async (_, propVal) => {
13
+ const expectedValue = '' + propVal
14
+ const wrapper = mount(QSpinnerTail)
15
+
16
+ const target = wrapper.get('.q-spinner')
17
+
18
+ expect(
19
+ target.attributes('width')
20
+ ).not.toBe(expectedValue)
21
+
22
+ expect(
23
+ target.attributes('height')
24
+ ).not.toBe(expectedValue)
25
+
26
+ await wrapper.setProps({ size: propVal })
27
+ await flushPromises()
28
+
29
+ expect(
30
+ target.attributes('width')
31
+ ).toBe(expectedValue)
32
+
33
+ expect(
34
+ target.attributes('height')
35
+ ).toBe(expectedValue)
36
+ })
37
+ })
38
+
39
+ describe('[(prop)color]', () => {
40
+ test('type String has effect', async () => {
41
+ const propVal = 'red'
42
+ const wrapper = mount(QSpinnerTail)
43
+
44
+ const target = wrapper.get('.q-spinner')
45
+
46
+ expect(
47
+ target.classes()
48
+ ).not.toContain('text-red')
49
+
50
+ await wrapper.setProps({ color: propVal })
51
+ await flushPromises()
52
+
53
+ expect(
54
+ target.classes()
55
+ ).toContain('text-red')
56
+ })
57
+ })
58
+ })
59
+ })
@@ -8,6 +8,11 @@
8
8
  "props": {
9
9
  "color": {
10
10
  "extends": "color"
11
+ },
12
+
13
+ "size": {
14
+ "type": [ "String", "Number" ],
15
+ "default": "'1em'"
11
16
  }
12
17
  }
13
18
  }
@@ -3,7 +3,7 @@ import { useSizeDefaults } from '../../composables/private.use-size/use-size.js'
3
3
 
4
4
  export const useSpinnerProps = {
5
5
  size: {
6
- type: [ Number, String ],
6
+ type: [ String, Number ],
7
7
  default: '1em'
8
8
  },
9
9
  color: String
@@ -0,0 +1,59 @@
1
+ import { describe, test, expect } from 'vitest'
2
+
3
+ import useSpinner, { useSpinnerProps } from './use-spinner.js'
4
+ import { useSizeDefaults } from 'quasar/src/composables/private.use-size/use-size.js'
5
+
6
+ describe('[useSpinner API]', () => {
7
+ describe('[Variables]', () => {
8
+ describe('[(variable)useSpinnerProps]', () => {
9
+ test('is defined correctly', () => {
10
+ expect(useSpinnerProps).toBeTypeOf('object')
11
+ expect(Object.keys(useSpinnerProps)).not.toHaveLength(0)
12
+ })
13
+ })
14
+ })
15
+
16
+ describe('[Functions]', () => {
17
+ describe('[(function)default]', () => {
18
+ test('has correct return value when missing props', () => {
19
+ const result = useSpinner({})
20
+ expect(result).toStrictEqual({
21
+ cSize: expect.$ref(void 0),
22
+ classes: expect.$ref('q-spinner')
23
+ })
24
+ })
25
+
26
+ test('has correct return value when props.size has unit', () => {
27
+ const result = useSpinner({ size: '2em' })
28
+ expect(result).toStrictEqual({
29
+ cSize: expect.$ref('2em'),
30
+ classes: expect.$ref('q-spinner')
31
+ })
32
+ })
33
+
34
+ test('has correct return value when props.size is xl', () => {
35
+ const result = useSpinner({ size: 'xl' })
36
+ expect(result).toStrictEqual({
37
+ cSize: expect.$ref(`${ useSizeDefaults.xl }px`),
38
+ classes: expect.$ref('q-spinner')
39
+ })
40
+ })
41
+
42
+ test('has correct return value when props.color is defined', () => {
43
+ const result = useSpinner({ color: 'red' })
44
+ expect(result).toStrictEqual({
45
+ cSize: expect.$ref(void 0),
46
+ classes: expect.$ref('q-spinner text-red')
47
+ })
48
+ })
49
+
50
+ test('has correct return value when props.size & props.color are defined', () => {
51
+ const result = useSpinner({ size: '500em', color: 'bogus-color' })
52
+ expect(result).toStrictEqual({
53
+ cSize: expect.$ref('500em'),
54
+ classes: expect.$ref('q-spinner text-bogus-color')
55
+ })
56
+ })
57
+ })
58
+ })
59
+ })
@@ -41,6 +41,7 @@
41
41
  "type": "Array",
42
42
  "desc": "An array of two values representing the minimum and maximum split size of the two panels; When 'px' unit is set then you can use Infinity as the second value to make it unbound on the other side; Default value: for '%' unit it is [10, 90], while for 'px' unit it is [50, Infinity]",
43
43
  "default": "# [10, 90]/[50, Infinity]",
44
+ "__runtimeDefault": true,
44
45
  "examples": [ "[ 30, 70 ]", "[ 0, Infinity ]" ],
45
46
  "category": "content|model"
46
47
  },
@@ -94,9 +95,8 @@
94
95
  },
95
96
 
96
97
  "dark": {
97
- "type": "Boolean",
98
- "desc": "Applies a default lighter color on the separator; To be used when background is darker; Avoid using when you are overriding through separator-class or separator-style props",
99
- "category": "style"
98
+ "extends": "dark",
99
+ "desc": "Applies a default lighter color on the separator; To be used when background is darker; Avoid using when you are overriding through separator-class or separator-style props"
100
100
  }
101
101
  },
102
102
 
@@ -94,5 +94,11 @@
94
94
  "default": {
95
95
  "desc": "The content of the step; Can also contain a QStepperNavigation if you want to handle step navigation and don't have a global navigation in place"
96
96
  }
97
+ },
98
+
99
+ "events": {
100
+ "scroll": {
101
+ "internal": true
102
+ }
97
103
  }
98
104
  }
@@ -5,6 +5,12 @@
5
5
  "docsUrl": "https://v2.quasar.dev/vue-components/tab-panels"
6
6
  },
7
7
 
8
+ "props": {
9
+ "dark": {
10
+ "extends": "dark"
11
+ }
12
+ },
13
+
8
14
  "slots": {
9
15
  "default": {
10
16
  "extends": "default"
@@ -13,7 +13,7 @@ import QBtn from '../btn/QBtn.js'
13
13
  import getTableMiddle from './get-table-middle.js'
14
14
 
15
15
  import useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'
16
- import { commonVirtPropsList } from '../virtual-scroll/use-virtual-scroll.js'
16
+ import { commonVirtScrollPropsList } from '../virtual-scroll/use-virtual-scroll.js'
17
17
  import useFullscreen, { useFullscreenProps, useFullscreenEmits } from '../../composables/private.use-fullscreen/use-fullscreen.js'
18
18
 
19
19
  import { useTableSort, useTableSortProps } from './table-sort.js'
@@ -28,8 +28,8 @@ import { createComponent } from '../../utils/private.create/create.js'
28
28
 
29
29
  const bottomClass = 'q-table__bottom row items-center'
30
30
 
31
- const commonVirtPropsObj = {}
32
- commonVirtPropsList.forEach(p => { commonVirtPropsObj[ p ] = {} })
31
+ const virtScrollPassthroughProps = {}
32
+ commonVirtScrollPropsList.forEach(p => { virtScrollPassthroughProps[ p ] = {} })
33
33
 
34
34
  export default createComponent({
35
35
  name: 'QTable',
@@ -71,10 +71,8 @@ export default createComponent({
71
71
  wrapCells: Boolean,
72
72
 
73
73
  virtualScroll: Boolean,
74
- virtualScrollTarget: {
75
- default: void 0
76
- },
77
- ...commonVirtPropsObj,
74
+ virtualScrollTarget: {},
75
+ ...virtScrollPassthroughProps,
78
76
 
79
77
  noDataLabel: String,
80
78
  noResultsLabel: String,
@@ -266,7 +264,7 @@ export default createComponent({
266
264
  const virtProps = computed(() => {
267
265
  const acc = {}
268
266
 
269
- commonVirtPropsList
267
+ commonVirtScrollPropsList
270
268
  .forEach(p => { acc[ p ] = props[ p ] })
271
269
 
272
270
  if (acc.virtualScrollItemSize === void 0) {
@@ -41,13 +41,15 @@
41
41
  },
42
42
 
43
43
  "virtual-scroll-target": {
44
- "extends": "scroll-target"
44
+ "extends": "scroll-target",
45
+ "passthrough": "child"
45
46
  },
46
47
 
47
48
  "virtual-scroll-slice-size": {
48
- "type": [ "Number", "String" ],
49
+ "type": [ "Number", "String", "null" ],
49
50
  "desc": "Minimum number of rows to render in the virtual list",
50
51
  "default": "30",
52
+ "passthrough": "child",
51
53
  "category": "virtual-scroll"
52
54
  },
53
55
 
@@ -55,6 +57,7 @@
55
57
  "type": [ "Number", "String" ],
56
58
  "desc": "Ratio of number of rows in visible zone to render before it",
57
59
  "default": "1",
60
+ "passthrough": "child",
58
61
  "category": "virtual-scroll"
59
62
  },
60
63
 
@@ -62,6 +65,7 @@
62
65
  "type": [ "Number", "String" ],
63
66
  "desc": "Ratio of number of rows in visible zone to render after it",
64
67
  "default": "1",
68
+ "passthrough": "child",
65
69
  "category": "virtual-scroll"
66
70
  },
67
71
 
@@ -69,6 +73,7 @@
69
73
  "type": [ "Number", "String" ],
70
74
  "desc": "Default size in pixels of a row; This value is used for rendering the initial table; Try to use a value close to the minimum size of a row; Default value: 48 (24 if dense)",
71
75
  "default": "# 48/24",
76
+ "passthrough": "child",
72
77
  "category": "virtual-scroll"
73
78
  },
74
79
 
@@ -76,6 +81,7 @@
76
81
  "type": [ "Number", "String" ],
77
82
  "desc": "Size in pixels of the sticky header (if using one); A correct value will improve scroll precision; Will be also used for non-virtual-scroll tables for fixing top alignment when using scrollTo method",
78
83
  "default": "0",
84
+ "passthrough": "child",
79
85
  "category": "virtual-scroll|behavior"
80
86
  },
81
87
 
@@ -83,13 +89,15 @@
83
89
  "type": [ "Number", "String" ],
84
90
  "desc": "Size in pixels of the sticky footer part (if using one); A correct value will improve scroll precision",
85
91
  "default": "0",
92
+ "passthrough": "child",
86
93
  "category": "virtual-scroll"
87
94
  },
88
95
 
89
96
  "table-colspan": {
90
97
  "type": [ "Number", "String" ],
91
98
  "desc": "The number of columns in the table (you need this if you use table-layout: fixed)",
92
- "category": "virtual-scroll|content"
99
+ "category": "virtual-scroll|content",
100
+ "passthrough": "child"
93
101
  },
94
102
 
95
103
  "color": {
@@ -257,7 +265,7 @@
257
265
  "desc": "Comparison result of term 'a' with term 'b'. Less than 0 when 'a' should come first; greater than 0 if 'b' should come first; equal to 0 if their position must not be changed with respect to each other",
258
266
  "examples": [ "-1", "0", "1" ]
259
267
  },
260
- "addedIn": "v2.13.0"
268
+ "addedIn": "v2.13"
261
269
  },
262
270
  "sortOrder": {
263
271
  "type": "String",
@@ -661,7 +669,6 @@
661
669
  "type": "Array",
662
670
  "desc": "Filtered rows"
663
671
  },
664
- "default": "# see source code",
665
672
  "examples": [ "# see source code" ],
666
673
  "category": "filter"
667
674
  },
@@ -703,7 +710,7 @@
703
710
  "rows-per-page-options": {
704
711
  "type": "Array",
705
712
  "desc": "Options for user to pick (Numbers); Number 0 means 'Show all rows in one page'",
706
- "default": "[ 3, 5, 7, 10, 15, 20, 25, 50, 0 ]",
713
+ "default": "[ 5, 7, 10, 15, 20, 25, 50, 0 ]",
707
714
  "examples": [ "[ 10, 20 ]" ],
708
715
  "category": "pagination"
709
716
  },
@@ -728,7 +735,6 @@
728
735
  "expanded": {
729
736
  "type": "Array",
730
737
  "desc": "Keeps the array with expanded rows keys",
731
- "default": "[]",
732
738
  "syncable": true,
733
739
  "examples": [ "# v-model:expanded=\"expanded\"" ],
734
740
  "category": "expansion"
@@ -756,7 +762,6 @@
756
762
  "type": "Array",
757
763
  "desc": "Sorted rows"
758
764
  },
759
- "default": "# see source code",
760
765
  "examples": [ "# see source code" ],
761
766
  "category": "sorting"
762
767
  }
@@ -22,5 +22,9 @@
22
22
  "default": {
23
23
  "extends": "default"
24
24
  }
25
+ },
26
+
27
+ "events": {
28
+ "click": { "internal": true }
25
29
  }
26
30
  }
@@ -1,13 +1,14 @@
1
1
  {
2
+ "mixins": [ "components/tabs/use-tab", "composables/private.use-router-link/use-router-link" ],
3
+
2
4
  "meta": {
3
5
  "docsUrl": "https://v2.quasar.dev/vue-components/tabs"
4
6
  },
5
7
 
6
- "mixins": [ "components/tabs/QTab", "composables/private.use-router-link/use-router-link" ],
7
-
8
8
  "events": {
9
9
  "click": {
10
10
  "desc": "Emitted when the component is clicked",
11
+ "internal": false,
11
12
  "params": {
12
13
  "evt": {
13
14
  "extends": "evt",
@@ -3,69 +3,5 @@
3
3
  "docsUrl": "https://v2.quasar.dev/vue-components/tabs"
4
4
  },
5
5
 
6
- "props": {
7
- "icon": {
8
- "extends": "icon"
9
- },
10
-
11
- "label": {
12
- "type": [ "Number", "String" ],
13
- "desc": "A number or string to label the tab",
14
- "examples": [ "'Home'" ],
15
- "category": "content"
16
- },
17
-
18
- "alert": {
19
- "type": [ "Boolean", "String" ],
20
- "desc": "Adds an alert symbol to the tab, notifying the user there are some updates; If its value is not a Boolean, then you can specify a color",
21
- "examples": [ "'purple'" ],
22
- "category": "content"
23
- },
24
-
25
- "alert-icon": {
26
- "type": "String",
27
- "desc": "Adds a floating icon to the tab, notifying the user there are some updates; It's displayed only if 'alert' is set; Can use the color specified by 'alert' prop",
28
- "examples": [ "'alarm_on'" ],
29
- "category": "content"
30
- },
31
-
32
- "name": {
33
- "type": [ "Number", "String" ],
34
- "desc": "Panel name",
35
- "default": "# a random UUID",
36
- "examples": [ "'home'", "1" ],
37
- "category": "general"
38
- },
39
-
40
- "no-caps": {
41
- "type": "Boolean",
42
- "desc": "Turns off capitalizing all letters within the tab (which is the default)",
43
- "category": "content"
44
- },
45
-
46
- "content-class": {
47
- "type": "String",
48
- "desc": "Class definitions to be attributed to the content wrapper",
49
- "examples": [ "'my-special-class'" ],
50
- "category": "style"
51
- },
52
-
53
- "ripple": {
54
- "extends": "ripple"
55
- },
56
-
57
- "tabindex": {
58
- "extends": "tabindex"
59
- },
60
-
61
- "disable": {
62
- "extends": "disable"
63
- }
64
- },
65
-
66
- "slots": {
67
- "default": {
68
- "desc": "Suggestion: QMenu, QTooltip"
69
- }
70
- }
6
+ "mixins": [ "components/tabs/use-tab" ]
71
7
  }
@@ -0,0 +1,72 @@
1
+ {
2
+ "props": {
3
+ "icon": {
4
+ "extends": "icon"
5
+ },
6
+
7
+ "label": {
8
+ "type": [ "Number", "String" ],
9
+ "desc": "A number or string to label the tab",
10
+ "examples": [ "'Home'" ],
11
+ "category": "content"
12
+ },
13
+
14
+ "alert": {
15
+ "type": [ "Boolean", "String" ],
16
+ "desc": "Adds an alert symbol to the tab, notifying the user there are some updates; If its value is not a Boolean, then you can specify a color",
17
+ "examples": [ "'purple'" ],
18
+ "category": "content"
19
+ },
20
+
21
+ "alert-icon": {
22
+ "type": "String",
23
+ "desc": "Adds a floating icon to the tab, notifying the user there are some updates; It's displayed only if 'alert' is set; Can use the color specified by 'alert' prop",
24
+ "examples": [ "'alarm_on'" ],
25
+ "category": "content"
26
+ },
27
+
28
+ "name": {
29
+ "type": [ "Number", "String" ],
30
+ "desc": "Panel name",
31
+ "default": "# a random UUID",
32
+ "examples": [ "'home'", "1" ],
33
+ "category": "general"
34
+ },
35
+
36
+ "no-caps": {
37
+ "type": "Boolean",
38
+ "desc": "Turns off capitalizing all letters within the tab (which is the default)",
39
+ "category": "content"
40
+ },
41
+
42
+ "content-class": {
43
+ "type": "String",
44
+ "desc": "Class definitions to be attributed to the content wrapper",
45
+ "examples": [ "'my-special-class'" ],
46
+ "category": "style"
47
+ },
48
+
49
+ "ripple": {
50
+ "extends": "ripple"
51
+ },
52
+
53
+ "tabindex": {
54
+ "extends": "tabindex"
55
+ },
56
+
57
+ "disable": {
58
+ "extends": "disable"
59
+ }
60
+ },
61
+
62
+ "slots": {
63
+ "default": {
64
+ "desc": "Suggestion: QMenu, QTooltip"
65
+ }
66
+ },
67
+
68
+ "events": {
69
+ "click": { "internal": true },
70
+ "keydown": { "internal": true }
71
+ }
72
+ }
@@ -46,7 +46,13 @@ export default createComponent({
46
46
  ...useFormProps,
47
47
  ...useDatetimeProps,
48
48
 
49
+ modelValue: {
50
+ required: true,
51
+ validator: val => (typeof val === 'string' || val === null)
52
+ },
53
+
49
54
  mask: {
55
+ ...useDatetimeProps.mask,
50
56
  default: null
51
57
  },
52
58
 
@@ -24,6 +24,7 @@
24
24
  "type": "String",
25
25
  "desc": "The default date to use (in YYYY/MM/DD format) when model is unfilled (undefined or null)",
26
26
  "default": "# current day",
27
+ "__runtimeDefault": true,
27
28
  "examples": [ "'1995/02/23'" ],
28
29
  "category": "model"
29
30
  },
@@ -31,6 +32,7 @@
31
32
  "mask": {
32
33
  "type": [ "String", "null" ],
33
34
  "default": "'HH:mm'",
35
+ "__runtimeDefault": true,
34
36
  "examples": [ "'HH:mm:ss'", "'YYYY-MM-DD HH:mm:ss'", "'HH:mm MMMM Do, YYYY'" ]
35
37
  },
36
38
 
@@ -5,7 +5,8 @@
5
5
 
6
6
  "props": {
7
7
  "color": {
8
- "extends": "color"
8
+ "extends": "color",
9
+ "default": "'primary'"
9
10
  },
10
11
 
11
12
  "side": {
@@ -0,0 +1,41 @@
1
+ import { mount, flushPromises } from '@vue/test-utils'
2
+ import { describe, test, expect } from 'vitest'
3
+
4
+ import QToolbar from './QToolbar.js'
5
+
6
+ describe('[QToolbar API]', () => {
7
+ describe('[Props]', () => {
8
+ describe('[(prop)inset]', () => {
9
+ test('type Boolean has effect', async () => {
10
+ const wrapper = mount(QToolbar)
11
+ const target = wrapper.get('.q-toolbar')
12
+
13
+ expect(
14
+ target.classes()
15
+ ).not.toContain('q-toolbar--inset')
16
+
17
+ await wrapper.setProps({ inset: true })
18
+ await flushPromises()
19
+
20
+ expect(
21
+ target.classes()
22
+ ).toContain('q-toolbar--inset')
23
+ })
24
+ })
25
+ })
26
+
27
+ describe('[Slots]', () => {
28
+ describe('[(slot)default]', () => {
29
+ test('renders the content', () => {
30
+ const slotContent = 'some-slot-content'
31
+ const wrapper = mount(QToolbar, {
32
+ slots: {
33
+ default: () => slotContent
34
+ }
35
+ })
36
+
37
+ expect(wrapper.html()).toContain(slotContent)
38
+ })
39
+ })
40
+ })
41
+ })
@@ -0,0 +1,41 @@
1
+ import { mount, flushPromises } from '@vue/test-utils'
2
+ import { describe, test, expect } from 'vitest'
3
+
4
+ import QToolbarTitle from './QToolbarTitle.js'
5
+
6
+ describe('[QToolbarTitle API]', () => {
7
+ describe('[Props]', () => {
8
+ describe('[(prop)shrink]', () => {
9
+ test('type Boolean has effect', async () => {
10
+ const wrapper = mount(QToolbarTitle)
11
+ const target = wrapper.get('.q-toolbar__title')
12
+
13
+ expect(
14
+ target.classes()
15
+ ).not.toContain('col-shrink')
16
+
17
+ await wrapper.setProps({ shrink: true })
18
+ await flushPromises()
19
+
20
+ expect(
21
+ target.classes()
22
+ ).toContain('col-shrink')
23
+ })
24
+ })
25
+ })
26
+
27
+ describe('[Slots]', () => {
28
+ describe('[(slot)default]', () => {
29
+ test('renders the content', () => {
30
+ const slotContent = 'some-slot-content'
31
+ const wrapper = mount(QToolbarTitle, {
32
+ slots: {
33
+ default: () => slotContent
34
+ }
35
+ })
36
+
37
+ expect(wrapper.html()).toContain(slotContent)
38
+ })
39
+ })
40
+ })
41
+ })