quasar 2.15.0 → 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 (523) 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 +82 -51
  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 +80 -50
  252. package/dist/quasar.umd.prod.js +6 -6
  253. package/dist/transforms/import-map.json +1 -1
  254. package/dist/types/composables.d.ts +5 -0
  255. package/dist/types/index.d.ts +325 -235
  256. package/dist/types/tsconfig.json +1 -1
  257. package/dist/vetur/quasar-attributes.json +1 -1
  258. package/dist/web-types/web-types.json +1 -1
  259. package/package.json +21 -44
  260. package/src/api-file-example.json +5 -5
  261. package/src/api.extends.json +18 -18
  262. package/src/body.js +1 -1
  263. package/src/components/ajax-bar/QAjaxBar.json +5 -5
  264. package/src/components/avatar/QAvatar.json +1 -1
  265. package/src/components/avatar/QAvatar.test.js +146 -0
  266. package/src/components/badge/QBadge.json +2 -2
  267. package/src/components/badge/QBadge.test.js +167 -0
  268. package/src/components/banner/QBanner.test.js +123 -0
  269. package/src/components/bar/QBar.test.js +55 -0
  270. package/src/components/breadcrumbs/QBreadcrumbs.json +7 -7
  271. package/src/components/breadcrumbs/QBreadcrumbs.test.js +123 -0
  272. package/src/components/breadcrumbs/QBreadcrumbsEl.json +4 -4
  273. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +134 -0
  274. package/src/components/btn/QBtn.js +1 -1
  275. package/src/components/btn/QBtn.json +1 -1
  276. package/src/components/btn/QBtn.test.js +350 -0
  277. package/src/components/btn/use-btn.json +13 -13
  278. package/src/components/btn/use-btn.test.js +590 -0
  279. package/src/components/btn-dropdown/QBtnDropdown.json +14 -14
  280. package/src/components/btn-toggle/QBtnToggle.json +6 -6
  281. package/src/components/card/QCard.json +2 -2
  282. package/src/components/card/QCardActions.json +3 -3
  283. package/src/components/card/QCardSection.json +2 -2
  284. package/src/components/carousel/QCarousel.json +9 -9
  285. package/src/components/carousel/QCarouselControl.json +5 -5
  286. package/src/components/carousel/QCarouselSlide.json +4 -7
  287. package/src/components/chat/QChatMessage.json +9 -9
  288. package/src/components/checkbox/use-checkbox.json +13 -13
  289. package/src/components/chip/QChip.js +1 -1
  290. package/src/components/chip/QChip.json +6 -8
  291. package/src/components/chip/QChip.test.js +534 -0
  292. package/src/components/circular-progress/QCircularProgress.json +8 -8
  293. package/src/components/color/QColor.js +2 -2
  294. package/src/components/color/QColor.json +8 -10
  295. package/src/components/date/QDate.json +31 -30
  296. package/src/components/date/use-datetime.json +3 -3
  297. package/src/components/dialog/QDialog.json +13 -13
  298. package/src/components/dialog/QDialog.test.js +390 -0
  299. package/src/components/dialog/test/DialogWrapper.vue +17 -0
  300. package/src/components/drawer/QDrawer.js +1 -1
  301. package/src/components/drawer/QDrawer.json +8 -12
  302. package/src/components/editor/QEditor.json +31 -45
  303. package/src/components/expansion-item/QExpansionItem.js +1 -1
  304. package/src/components/expansion-item/QExpansionItem.json +14 -14
  305. package/src/components/fab/QFab.json +4 -4
  306. package/src/components/fab/QFabAction.json +3 -5
  307. package/src/components/fab/use-fab.json +10 -12
  308. package/src/components/field/QField.json +5 -5
  309. package/src/components/file/QFile.json +9 -11
  310. package/src/components/footer/QFooter.js +1 -1
  311. package/src/components/footer/QFooter.json +3 -5
  312. package/src/components/form/QForm.json +1 -3
  313. package/src/components/form/QFormChildMixin.json +1 -3
  314. package/src/components/header/QHeader.json +4 -6
  315. package/src/components/icon/QIcon.json +2 -2
  316. package/src/components/img/QImg.js +1 -1
  317. package/src/components/img/QImg.json +45 -59
  318. package/src/components/infinite-scroll/QInfiniteScroll.json +3 -3
  319. package/src/components/inner-loading/QInnerLoading.json +5 -7
  320. package/src/components/input/QInput.json +10 -10
  321. package/src/components/input/use-mask.json +1 -1
  322. package/src/components/intersection/QIntersection.js +2 -2
  323. package/src/components/intersection/QIntersection.json +7 -7
  324. package/src/components/item/QItem.json +5 -5
  325. package/src/components/item/QList.json +2 -2
  326. package/src/components/knob/QKnob.js +1 -1
  327. package/src/components/knob/QKnob.json +6 -6
  328. package/src/components/layout/QLayout.js +1 -1
  329. package/src/components/layout/QLayout.json +3 -5
  330. package/src/components/linear-progress/QLinearProgress.json +2 -2
  331. package/src/components/markup-table/QMarkupTable.json +3 -3
  332. package/src/components/menu/QMenu.json +8 -8
  333. package/src/components/no-ssr/QNoSsr.json +3 -3
  334. package/src/components/option-group/QOptionGroup.json +11 -13
  335. package/src/components/page/QPage.json +2 -2
  336. package/src/components/page-scroller/QPageScroller.json +3 -3
  337. package/src/components/page-sticky/QPageSticky.json +4 -4
  338. package/src/components/pagination/QPagination.json +20 -20
  339. package/src/components/parallax/QParallax.json +5 -5
  340. package/src/components/popup-edit/QPopupEdit.json +17 -19
  341. package/src/components/popup-proxy/QPopupProxy.json +2 -2
  342. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -1
  343. package/src/components/radio/QRadio.json +5 -5
  344. package/src/components/range/QRange.json +3 -7
  345. package/src/components/rating/QRating.json +16 -19
  346. package/src/components/resize-observer/QResizeObserver.json +2 -2
  347. package/src/components/scroll-area/QScrollArea.js +1 -1
  348. package/src/components/scroll-area/QScrollArea.json +12 -12
  349. package/src/components/scroll-observer/QScrollObserver.json +4 -4
  350. package/src/components/select/QSelect.js +0 -0
  351. package/src/components/select/QSelect.json +55 -59
  352. package/src/components/select/__tests__/QSelect.cy.js +21 -1
  353. package/src/components/separator/QSeparator.json +3 -5
  354. package/src/components/skeleton/QSkeleton.json +14 -16
  355. package/src/components/slide-item/QSlideItem.js +1 -1
  356. package/src/components/slide-item/QSlideItem.json +2 -2
  357. package/src/components/slide-transition/QSlideTransition.json +1 -1
  358. package/src/components/slider/QSlider.json +2 -4
  359. package/src/components/slider/use-slider.js +1 -1
  360. package/src/components/slider/use-slider.json +18 -22
  361. package/src/components/spinner/QSpinner.json +1 -1
  362. package/src/components/spinner/QSpinnerAudio.json +1 -1
  363. package/src/components/spinner/QSpinnerBall.json +1 -1
  364. package/src/components/spinner/QSpinnerBars.json +1 -1
  365. package/src/components/spinner/QSpinnerBox.json +1 -1
  366. package/src/components/spinner/QSpinnerClock.json +1 -1
  367. package/src/components/spinner/QSpinnerComment.json +1 -1
  368. package/src/components/spinner/QSpinnerCube.json +1 -1
  369. package/src/components/spinner/QSpinnerDots.json +1 -1
  370. package/src/components/spinner/QSpinnerFacebook.json +1 -1
  371. package/src/components/spinner/QSpinnerGears.json +1 -1
  372. package/src/components/spinner/QSpinnerGrid.json +1 -1
  373. package/src/components/spinner/QSpinnerHearts.json +1 -1
  374. package/src/components/spinner/QSpinnerHourglass.json +1 -1
  375. package/src/components/spinner/QSpinnerInfinity.json +1 -1
  376. package/src/components/spinner/QSpinnerIos.json +1 -1
  377. package/src/components/spinner/QSpinnerOrbit.json +1 -1
  378. package/src/components/spinner/QSpinnerOval.json +1 -1
  379. package/src/components/spinner/QSpinnerPie.json +1 -1
  380. package/src/components/spinner/QSpinnerPuff.json +1 -1
  381. package/src/components/spinner/QSpinnerRadio.json +1 -1
  382. package/src/components/spinner/QSpinnerRings.json +1 -1
  383. package/src/components/spinner/QSpinnerTail.json +1 -1
  384. package/src/components/splitter/QSplitter.js +1 -1
  385. package/src/components/splitter/QSplitter.json +14 -14
  386. package/src/components/stepper/QStep.json +4 -10
  387. package/src/components/stepper/QStepper.json +1 -3
  388. package/src/components/stepper/StepHeader.js +1 -1
  389. package/src/components/table/QTable.js +1 -1
  390. package/src/components/table/QTable.json +113 -126
  391. package/src/components/table/QTd.json +1 -1
  392. package/src/components/table/QTh.json +1 -1
  393. package/src/components/table/QTr.json +1 -1
  394. package/src/components/tabs/QRouteTab.json +1 -1
  395. package/src/components/tabs/QTab.json +6 -13
  396. package/src/components/tabs/QTabs.json +8 -8
  397. package/src/components/tabs/use-tab.js +1 -1
  398. package/src/components/time/QTime.js +1 -1
  399. package/src/components/time/QTime.json +10 -22
  400. package/src/components/timeline/QTimeline.json +4 -4
  401. package/src/components/timeline/QTimelineEntry.json +11 -11
  402. package/src/components/tooltip/QTooltip.json +17 -20
  403. package/src/components/tree/QTree.json +26 -26
  404. package/src/components/uploader/QUploader.json +4 -4
  405. package/src/components/uploader/xhr-uploader-plugin.json +12 -12
  406. package/src/components/video/QVideo.json +15 -19
  407. package/src/components/virtual-scroll/QVirtualScroll.json +7 -10
  408. package/src/components/virtual-scroll/use-virtual-scroll.json +9 -8
  409. package/src/composables/private/use-anchor.json +6 -6
  410. package/src/composables/private/use-field.json +8 -11
  411. package/src/composables/private/use-file.js +1 -1
  412. package/src/composables/private/use-file.json +6 -8
  413. package/src/composables/private/use-form.json +1 -1
  414. package/src/composables/private/use-form.test.js +93 -0
  415. package/src/composables/private/use-fullscreen.json +1 -3
  416. package/src/composables/private/use-key-composition.js +1 -1
  417. package/src/composables/private/use-panel.child.json +1 -3
  418. package/src/composables/private/use-panel.js +1 -1
  419. package/src/composables/private/use-panel.json +12 -12
  420. package/src/composables/private/use-portal.js +16 -1
  421. package/src/composables/private/use-ratio.json +4 -3
  422. package/src/composables/private/use-ratio.test.js +27 -0
  423. package/src/composables/private/use-router-link.json +6 -6
  424. package/src/composables/private/use-size.json +1 -1
  425. package/src/composables/private/use-size.test.js +22 -0
  426. package/src/composables/private/use-transition.json +3 -3
  427. package/src/composables/private/use-validate.json +6 -6
  428. package/src/composables/use-hydration.js +1 -1
  429. package/src/composables/use-id.js +1 -1
  430. package/src/composables/use-id.test.js +55 -0
  431. package/src/composables/use-interval.js +36 -0
  432. package/src/composables/use-meta.js +1 -1
  433. package/src/composables/use-timeout.js +4 -1
  434. package/src/composables.js +2 -0
  435. package/src/css/index.sass +6 -6
  436. package/src/directives/{ClosePopup.js → close-popup/ClosePopup.js} +4 -4
  437. package/src/directives/{ClosePopup.json → close-popup/ClosePopup.json} +5 -5
  438. package/src/directives/{Intersection.js → intersection/Intersection.js} +3 -3
  439. package/src/directives/{Intersection.json → intersection/Intersection.json} +4 -6
  440. package/src/directives/{Morph.js → morph/Morph.js} +2 -2
  441. package/src/directives/{Morph.json → morph/Morph.json} +20 -20
  442. package/src/directives/{Mutation.js → mutation/Mutation.js} +2 -2
  443. package/src/directives/{Mutation.json → mutation/Mutation.json} +10 -12
  444. package/src/directives/{Ripple.js → ripple/Ripple.js} +6 -6
  445. package/src/directives/{Ripple.json → ripple/Ripple.json} +7 -13
  446. package/src/directives/{Scroll.js → scroll/Scroll.js} +4 -4
  447. package/src/directives/{Scroll.json → scroll/Scroll.json} +2 -2
  448. package/src/directives/{ScrollFire.js → scroll-fire/ScrollFire.js} +6 -6
  449. package/src/directives/{ScrollFire.json → scroll-fire/ScrollFire.json} +1 -1
  450. package/src/directives/{TouchHold.js → touch-hold/TouchHold.js} +5 -5
  451. package/src/directives/{TouchHold.json → touch-hold/TouchHold.json} +6 -6
  452. package/src/directives/{TouchPan.js → touch-pan/TouchPan.js} +6 -6
  453. package/src/directives/{TouchPan.json → touch-pan/TouchPan.json} +4 -4
  454. package/src/directives/{TouchRepeat.js → touch-repeat/TouchRepeat.js} +6 -6
  455. package/src/directives/{TouchRepeat.json → touch-repeat/TouchRepeat.json} +4 -4
  456. package/src/directives/{TouchSwipe.js → touch-swipe/TouchSwipe.js} +6 -6
  457. package/src/directives/{TouchSwipe.json → touch-swipe/TouchSwipe.json} +4 -4
  458. package/src/directives.js +11 -11
  459. package/src/history.js +1 -1
  460. package/src/install-quasar.js +3 -3
  461. package/src/plugins/{AddressbarColor.js → addressbar/AddressbarColor.js} +3 -3
  462. package/src/plugins/{AddressbarColor.json → addressbar/AddressbarColor.json} +1 -1
  463. package/src/plugins/{AppFullscreen.js → app-fullscreen/AppFullscreen.js} +2 -2
  464. package/src/plugins/{AppVisibility.js → app-visibility/AppVisibility.js} +2 -2
  465. package/src/plugins/{BottomSheet.js → bottom-sheet/BottomSheet.js} +2 -2
  466. package/src/plugins/{BottomSheet.json → bottom-sheet/BottomSheet.json} +10 -10
  467. package/src/{components/dialog-bottom-sheet/BottomSheet.js → plugins/bottom-sheet/component/BottomSheetComponent.js} +10 -10
  468. package/src/plugins/{Cookies.json → cookies/Cookies.json} +14 -16
  469. package/src/plugins/{Dark.js → dark/Dark.js} +1 -1
  470. package/src/plugins/{Dark.json → dark/Dark.json} +3 -3
  471. package/src/plugins/{Dialog.js → dialog/Dialog.js} +2 -2
  472. package/src/plugins/{Dialog.json → dialog/Dialog.json} +15 -15
  473. package/src/{components/dialog-plugin/DialogPlugin.js → plugins/dialog/component/DialogPluginComponent.js} +14 -14
  474. package/src/plugins/{Loading.js → loading/Loading.js} +7 -6
  475. package/src/plugins/{Loading.json → loading/Loading.json} +15 -15
  476. package/src/plugins/{LoadingBar.js → loading-bar/LoadingBar.js} +6 -6
  477. package/src/plugins/{LoadingBar.json → loading-bar/LoadingBar.json} +1 -1
  478. package/src/plugins/{LocalStorage.js → local-storage/LocalStorage.js} +2 -2
  479. package/src/plugins/{Meta.js → meta/Meta.js} +2 -2
  480. package/src/plugins/{Notify.js → notify/Notify.js} +11 -10
  481. package/src/plugins/{Notify.json → notify/Notify.json} +52 -68
  482. package/src/plugins/{Platform.js → platform/Platform.js} +3 -9
  483. package/src/plugins/{Platform.json → platform/Platform.json} +6 -10
  484. package/src/plugins/{Screen.js → screen/Screen.js} +4 -4
  485. package/src/plugins/{Screen.json → screen/Screen.json} +6 -12
  486. package/src/plugins/{SessionStorage.js → session-storage/SessionStorage.js} +2 -2
  487. package/src/plugins.js +15 -15
  488. package/src/utils/create-meta-mixin.js +1 -1
  489. package/src/utils/open-url.js +1 -1
  490. package/src/utils/prevent-scroll.js +1 -1
  491. package/src/utils/private/escape-key.js +1 -1
  492. package/src/utils/private/focusout.js +1 -1
  493. package/src/utils/private/global-dialog.json +2 -2
  494. package/src/utils/private/position-engine.js +1 -1
  495. package/src/utils/private/selection.js +1 -1
  496. package/src/utils/private/web-storage.json +8 -10
  497. package/src/components/avatar/__tests__/QAvatar.cy.js +0 -120
  498. package/src/components/badge/__tests__/QBadge.cy.js +0 -148
  499. package/src/components/banner/__tests__/QBanner.cy.js +0 -106
  500. package/src/components/bar/__tests__/QBar.cy.js +0 -45
  501. package/src/components/breadcrumbs/__tests__/QBreadcrumbs.cy.js +0 -111
  502. package/src/components/breadcrumbs/__tests__/QBreadcrumbsEl.cy.js +0 -87
  503. package/src/components/btn/__tests__/QBtn.cy.js +0 -128
  504. package/src/components/btn/__tests__/use-btn.cy.js +0 -517
  505. package/src/components/chip/__tests__/QChip.cy.js +0 -480
  506. package/src/components/dialog/__tests__/DialogWrapper.vue +0 -33
  507. package/src/components/dialog/__tests__/QDialog.cy.js +0 -543
  508. package/src/components/tabs/__tests__/QRouteTab.cy.js +0 -9
  509. /package/src/components/breadcrumbs/{__tests__ → test}/BasicBreadcrumbs.vue +0 -0
  510. /package/src/components/breadcrumbs/{__tests__ → test}/BreadcrumbWithSeparatorSlot.vue +0 -0
  511. /package/src/components/spinner/{__spinner-mixin.json → spinner.json} +0 -0
  512. /package/src/directives/{Morph.sass → morph/Morph.sass} +0 -0
  513. /package/src/directives/{Ripple.sass → ripple/Ripple.sass} +0 -0
  514. /package/src/plugins/{AppFullscreen.json → app-fullscreen/AppFullscreen.json} +0 -0
  515. /package/src/plugins/{AppVisibility.json → app-visibility/AppVisibility.json} +0 -0
  516. /package/src/{components/dialog-bottom-sheet/BottomSheet.sass → plugins/bottom-sheet/component/BottomSheetComponent.sass} +0 -0
  517. /package/src/plugins/{Cookies.js → cookies/Cookies.js} +0 -0
  518. /package/src/{components/dialog-plugin/DialogPlugin.sass → plugins/dialog/component/DialogPluginComponent.sass} +0 -0
  519. /package/src/plugins/{Loading.sass → loading/Loading.sass} +0 -0
  520. /package/src/plugins/{LocalStorage.json → local-storage/LocalStorage.json} +0 -0
  521. /package/src/plugins/{Meta.json → meta/Meta.json} +0 -0
  522. /package/src/plugins/{Notify.sass → notify/Notify.sass} +0 -0
  523. /package/src/plugins/{SessionStorage.json → session-storage/SessionStorage.json} +0 -0
@@ -0,0 +1,590 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import { describe, test, expect } from 'vitest'
3
+
4
+ import { createMemoryHistory, createRouter } from 'vue-router'
5
+ import { alignMap, alignValues } from '../../composables/private/use-align.js'
6
+ import QBtn from './QBtn.js'
7
+ import { btnPadding as paddingMap } from './use-btn.js'
8
+
9
+ const defaultOptions = {
10
+ label: 'simple Btn'
11
+ }
12
+
13
+ const typesValues = [ 'button', 'submit', 'reset' ]
14
+
15
+ const paddingValues = Object.keys(paddingMap)
16
+
17
+ function mountQBtn (options = {}) {
18
+ // Setup options object
19
+ options.global = options.global || {}
20
+ options.global.plugins = options.global.plugins || []
21
+
22
+ options.props = {
23
+ ...defaultOptions,
24
+ ...options.props
25
+ }
26
+
27
+ if (!options.router) {
28
+ options.router = createRouter({
29
+ routes: [],
30
+ history: createMemoryHistory()
31
+ })
32
+ }
33
+
34
+ // Add router plugin
35
+ options.global.plugins.push({
36
+ install (app) {
37
+ app.use(options.router)
38
+ }
39
+ })
40
+
41
+ return mount(QBtn, options)
42
+ }
43
+
44
+ describe('[useBtn API]', () => {
45
+ describe('[Props]', () => {
46
+ describe('[(prop)loading]', () => {
47
+ test('should render a button with "loading" slot when "loading" prop is set to true', () => {
48
+ const wrapper = mountQBtn({
49
+ props: {
50
+ loading: true
51
+ }
52
+ })
53
+
54
+ expect(
55
+ wrapper.get('.q-btn')
56
+ .find('.q-spinner')
57
+ .exists()
58
+ ).toBe(true)
59
+ })
60
+ })
61
+
62
+ describe('[(prop)label]', () => {
63
+ test('should render a label inside the button', () => {
64
+ const label = 'Custom Label'
65
+ const wrapper = mountQBtn({
66
+ props: {
67
+ label
68
+ }
69
+ })
70
+
71
+ expect(
72
+ wrapper.get('.q-btn')
73
+ .text()
74
+ ).toContain(label)
75
+ })
76
+ })
77
+
78
+ describe('[(prop)icon]', () => {
79
+ test('should render an icon on the left', () => {
80
+ const icon = 'home'
81
+ const wrapper = mountQBtn({
82
+ props: {
83
+ icon
84
+ }
85
+ })
86
+
87
+ expect(
88
+ wrapper.get('.q-btn .on-left')
89
+ .text()
90
+ ).toContain(icon)
91
+ })
92
+ })
93
+
94
+ describe('[(prop)icon-right]', () => {
95
+ test('should render an icon on the right', () => {
96
+ const iconRight = 'home'
97
+ const wrapper = mountQBtn({
98
+ props: {
99
+ iconRight
100
+ }
101
+ })
102
+
103
+ expect(
104
+ wrapper.get('.q-btn .on-right')
105
+ .text()
106
+ ).toContain(iconRight)
107
+ })
108
+ })
109
+
110
+ describe('[(prop)no-caps]', () => {
111
+ test('should render a button with no uppercase text', () => {
112
+ const wrapper = mountQBtn({
113
+ props: {
114
+ noCaps: true
115
+ }
116
+ })
117
+
118
+ expect(
119
+ wrapper.get('.q-btn')
120
+ .classes()
121
+ ).toContain('q-btn--no-uppercase')
122
+ })
123
+ })
124
+
125
+ describe('[(prop)no-wrap]', () => {
126
+ test('should render a button with no wrapping text', () => {
127
+ const wrapper = mountQBtn({
128
+ props: {
129
+ noWrap: true
130
+ }
131
+ })
132
+
133
+ const cls = wrapper.get('.q-btn .q-btn__content').classes()
134
+ expect(cls).toContain('no-wrap')
135
+ expect(cls).toContain('text-no-wrap')
136
+ })
137
+ })
138
+
139
+ describe('[(prop)align]', () => {
140
+ test(`should render a badge aligned based on defined values: ${ alignValues.join(', ') }`, () => {
141
+ for (const align of alignValues) {
142
+ const wrapper = mountQBtn({
143
+ props: { align }
144
+ })
145
+
146
+ expect(
147
+ wrapper.get('.q-btn .q-btn__content')
148
+ .classes()
149
+ ).toContain(`justify-${ alignMap[ align ] }`)
150
+ }
151
+ })
152
+ })
153
+
154
+ describe('[(prop)stack]', () => {
155
+ test('should render a button with icon and label stacked vertically', () => {
156
+ const wrapper = mountQBtn({
157
+ props: {
158
+ stack: true
159
+ }
160
+ })
161
+
162
+ expect(
163
+ wrapper.get('.q-btn .q-btn__content')
164
+ .classes()
165
+ ).toContain('column')
166
+ })
167
+ })
168
+
169
+ describe('[(prop)stretch]', () => {
170
+ test('should render stretch height button when used in flexbox container', () => {
171
+ const wrapper = mountQBtn({
172
+ props: {
173
+ stretch: true
174
+ }
175
+ })
176
+
177
+ const cls = wrapper.get('.q-btn').classes()
178
+ expect(cls).toContain('no-border-radius')
179
+ expect(cls).toContain('self-stretch')
180
+ })
181
+ })
182
+
183
+ describe('[(prop)type]', () => {
184
+ test(`should render a button with a type based on defined values: ${ typesValues.join(', ') }`, () => {
185
+ for (const type of typesValues) {
186
+ const wrapper = mountQBtn({
187
+ props: { type }
188
+ })
189
+
190
+ expect(
191
+ wrapper.get('.q-btn')
192
+ .attributes('type')
193
+ ).toBe(type)
194
+ }
195
+ })
196
+
197
+ test('should render a component with <a> tag when "type" prop is set to "a"', () => {
198
+ const wrapper = mountQBtn({
199
+ props: {
200
+ type: 'a'
201
+ }
202
+ })
203
+
204
+ expect(
205
+ wrapper.get('.q-btn')
206
+ .element.tagName
207
+ ).toBe('A')
208
+ })
209
+ })
210
+
211
+ describe('[(prop)tabindex]', () => {
212
+ test('should set the tabindex', () => {
213
+ const tabindex = 1
214
+ const wrapper = mountQBtn({
215
+ props: {
216
+ tabindex
217
+ }
218
+ })
219
+
220
+ expect(
221
+ wrapper.get('.q-btn')
222
+ .attributes('tabindex')
223
+ ).toBe(tabindex.toString())
224
+ })
225
+ })
226
+
227
+ describe('[(prop)to]', () => {
228
+ test('should render a component with <a> tag when "to" prop is set', () => {
229
+ const link = '/test'
230
+ const wrapper = mountQBtn({
231
+ props: {
232
+ to: link
233
+ }
234
+ })
235
+
236
+ expect(
237
+ wrapper.get('.q-btn')
238
+ .attributes('href')
239
+ ).toBe(link)
240
+
241
+ expect(
242
+ wrapper.get('.q-btn')
243
+ .element.tagName
244
+ ).toBe('A')
245
+ })
246
+ })
247
+
248
+ describe('[(prop)replace]', () => {
249
+ test('should render a component with <a> tag when "replace" prop is set', () => {
250
+ const link = '/test'
251
+ const wrapper = mountQBtn({
252
+ props: {
253
+ to: link,
254
+ replace: true
255
+ }
256
+ })
257
+
258
+ expect(
259
+ wrapper.get('.q-btn')
260
+ .attributes('href')
261
+ ).toBe(link)
262
+
263
+ expect(
264
+ wrapper.get('.q-btn')
265
+ .element.tagName
266
+ ).toBe('A')
267
+ })
268
+ })
269
+
270
+ describe('[(prop)href]', () => {
271
+ test('should render a component with <a> tag when "href" attribute is set', () => {
272
+ const href = 'https://quasar.dev'
273
+ const wrapper = mountQBtn({
274
+ props: {
275
+ href
276
+ }
277
+ })
278
+
279
+ expect(
280
+ wrapper.get('.q-btn')
281
+ .attributes('href')
282
+ ).toBe(href)
283
+
284
+ expect(
285
+ wrapper.get('.q-btn')
286
+ .element.tagName
287
+ ).toBe('A')
288
+ })
289
+ })
290
+
291
+ describe('[(prop)target]', () => {
292
+ test('should render a component with <a> tag when "href" and "target" attributes are set', () => {
293
+ const href = 'https://quasar.dev'
294
+ const wrapper = mountQBtn({
295
+ props: {
296
+ href,
297
+ target: '_blank'
298
+ }
299
+ })
300
+
301
+ expect(
302
+ wrapper.get('.q-btn')
303
+ .attributes('href')
304
+ ).toBe(href)
305
+
306
+ expect(
307
+ wrapper.get('.q-btn')
308
+ .element.tagName
309
+ ).toBe('A')
310
+ })
311
+ })
312
+
313
+ describe('[(prop)disable]', () => {
314
+ test('should render a disabled button', () => {
315
+ const wrapper = mountQBtn({
316
+ props: {
317
+ disable: true
318
+ }
319
+ })
320
+
321
+ expect(
322
+ wrapper.get('.q-btn')
323
+ .attributes('disabled')
324
+ ).toBeDefined()
325
+
326
+ expect(
327
+ wrapper.get('.q-btn')
328
+ .classes()
329
+ ).toContain('disabled')
330
+ })
331
+ })
332
+
333
+ describe('[(prop)outline]', () => {
334
+ test('should render a button with outline style', () => {
335
+ const wrapper = mountQBtn({
336
+ props: {
337
+ outline: true
338
+ }
339
+ })
340
+
341
+ expect(
342
+ wrapper.get('.q-btn')
343
+ .classes()
344
+ ).toContain('q-btn--outline')
345
+ })
346
+ })
347
+
348
+ describe('[(prop)flat]', () => {
349
+ test('should render a button with flat style', () => {
350
+ const wrapper = mountQBtn({
351
+ props: {
352
+ flat: true
353
+ }
354
+ })
355
+
356
+ expect(
357
+ wrapper.get('.q-btn')
358
+ .classes()
359
+ ).toContain('q-btn--flat')
360
+ })
361
+ })
362
+
363
+ describe('[(prop)unelevated]', () => {
364
+ test('should render a button with unelevated style', () => {
365
+ const wrapper = mountQBtn({
366
+ props: {
367
+ unelevated: true
368
+ }
369
+ })
370
+
371
+ expect(
372
+ wrapper.get('.q-btn')
373
+ .classes()
374
+ ).toContain('q-btn--unelevated')
375
+ })
376
+ })
377
+
378
+ describe('[(prop)rounded]', () => {
379
+ test('should render a button with rounded style', () => {
380
+ const wrapper = mountQBtn({
381
+ props: {
382
+ rounded: true
383
+ }
384
+ })
385
+
386
+ expect(
387
+ wrapper.get('.q-btn')
388
+ .classes()
389
+ ).toContain('q-btn--rounded')
390
+ })
391
+ })
392
+
393
+ describe('[(prop)push]', () => {
394
+ test('should render a button with push style', () => {
395
+ const wrapper = mountQBtn({
396
+ props: {
397
+ push: true
398
+ }
399
+ })
400
+
401
+ expect(
402
+ wrapper.get('.q-btn')
403
+ .classes()
404
+ ).toContain('q-btn--push')
405
+ })
406
+ })
407
+
408
+ describe('[(prop)square]', () => {
409
+ test('should render a button with square style', () => {
410
+ const wrapper = mountQBtn({
411
+ props: {
412
+ square: true
413
+ }
414
+ })
415
+
416
+ expect(
417
+ wrapper.get('.q-btn')
418
+ .classes()
419
+ ).toContain('q-btn--square')
420
+ })
421
+ })
422
+
423
+ describe('[(prop)glossy]', () => {
424
+ test('should render a button with glossy style', () => {
425
+ const wrapper = mountQBtn({
426
+ props: {
427
+ glossy: true
428
+ }
429
+ })
430
+
431
+ expect(
432
+ wrapper.get('.q-btn')
433
+ .classes()
434
+ ).toContain('glossy')
435
+ })
436
+ })
437
+
438
+ describe('[(prop)fab]', () => {
439
+ test('should render a button with fab style', () => {
440
+ const wrapper = mountQBtn({
441
+ props: {
442
+ fab: true
443
+ }
444
+ })
445
+
446
+ expect(
447
+ wrapper.get('.q-btn')
448
+ .classes()
449
+ ).toContain('q-btn--fab')
450
+ })
451
+ })
452
+
453
+ describe('[(prop)fab-mini]', () => {
454
+ test('should render a button with fab-mini style', () => {
455
+ const wrapper = mountQBtn({
456
+ props: {
457
+ fabMini: true
458
+ }
459
+ })
460
+
461
+ expect(
462
+ wrapper.get('.q-btn')
463
+ .classes()
464
+ ).toContain('q-btn--fab-mini')
465
+ })
466
+ })
467
+
468
+ describe('[(prop)padding]', () => {
469
+ test(`should render a button with padding based on defined values: ${ paddingValues.join(', ') }`, () => {
470
+ for (const padding of paddingValues) {
471
+ const wrapper = mountQBtn({
472
+ props: { padding }
473
+ })
474
+
475
+ expect(
476
+ wrapper.get('.q-btn')
477
+ .$style()
478
+ ).toContain(`padding: ${ paddingMap[ padding ] }px`)
479
+ }
480
+ })
481
+
482
+ test('should render a button with padding based custom value', () => {
483
+ const padding = '10px'
484
+ const wrapper = mountQBtn({
485
+ props: { padding }
486
+ })
487
+
488
+ expect(
489
+ wrapper.get('.q-btn')
490
+ .$style()
491
+ ).toContain(`padding: ${ padding }`)
492
+ })
493
+
494
+ test('should render a button with padding vertically and horizontally based on defined values" ', () => {
495
+ for (const paddingVertically of paddingValues) {
496
+ for (const paddingHorizontally of paddingValues) {
497
+ if (paddingVertically === paddingHorizontally) { continue }
498
+ const padding = `${ paddingVertically } ${ paddingHorizontally }`
499
+ const wrapper = mountQBtn({
500
+ props: { padding }
501
+ })
502
+
503
+ expect(
504
+ wrapper.get('.q-btn')
505
+ .$style()
506
+ ).toContain(`padding: ${ paddingMap[ paddingVertically ] }px ${ paddingMap[ paddingHorizontally ] }px`)
507
+ }
508
+ }
509
+ })
510
+
511
+ test('should render a button with "minWidth" and "minHeight" props set to "0"', () => {
512
+ const wrapper = mountQBtn({
513
+ props: { padding: '0' }
514
+ })
515
+
516
+ expect(
517
+ wrapper.get('.q-btn')
518
+ .$style()
519
+ ).toContain('min-width: 0')
520
+
521
+ expect(
522
+ wrapper.get('.q-btn')
523
+ .$style()
524
+ ).toContain('min-height: 0')
525
+ })
526
+ })
527
+
528
+ describe('[(prop)color]', () => {
529
+ test('should change text color based on Quasar Color Palette', () => {
530
+ const color = 'red'
531
+ const wrapper = mountQBtn({
532
+ props: { color }
533
+ })
534
+
535
+ expect(
536
+ wrapper.get('.q-btn')
537
+ .classes()
538
+ ).toContain(`bg-${ color }`)
539
+ })
540
+ })
541
+
542
+ describe('[(prop)text-color]', () => {
543
+ test('should change text color based on Quasar Color Palette', () => {
544
+ const textColor = 'red'
545
+ const wrapper = mountQBtn({
546
+ props: { textColor }
547
+ })
548
+
549
+ expect(
550
+ wrapper.get('.q-btn')
551
+ .classes()
552
+ ).toContain(`text-${ textColor }`)
553
+ })
554
+ })
555
+
556
+ describe('[(prop)dense]', () => {
557
+ test('should render a button with dense style', () => {
558
+ const wrapper = mountQBtn({
559
+ props: {
560
+ dense: true
561
+ }
562
+ })
563
+
564
+ expect(
565
+ wrapper.get('.q-btn')
566
+ .classes()
567
+ ).toContain('q-btn--dense')
568
+ })
569
+ })
570
+
571
+ describe('[(prop)ripple]', () => {
572
+ test('should render a button with ripple effect', () => {
573
+ const wrapper = mountQBtn({
574
+ props: {
575
+ ripple: true
576
+ }
577
+ })
578
+
579
+ wrapper.get('.q-btn')
580
+ .trigger('click')
581
+
582
+ expect(
583
+ wrapper.get('.q-btn')
584
+ .find('.q-ripple')
585
+ .exists()
586
+ ).toBe(true)
587
+ })
588
+ })
589
+ })
590
+ })
@@ -11,7 +11,7 @@
11
11
  "type": "Boolean",
12
12
  "desc": "Controls Menu show/hidden state; Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
13
13
  "required": false,
14
- "examples": [ "v-model=\"menuState\"" ]
14
+ "examples": [ "# v-model=\"menuState\"" ]
15
15
  },
16
16
 
17
17
  "split": {
@@ -47,8 +47,8 @@
47
47
  "tsType": "VueStyleProp",
48
48
  "desc": "Style definitions to be attributed to the menu",
49
49
  "examples": [
50
- "background-color: #ff0000",
51
- ":content-style=\"{ backgroundColor: '#ff0000' }\""
50
+ "'background-color: #ff0000'",
51
+ "{ backgroundColor: '#ff0000' }"
52
52
  ],
53
53
  "category": "style"
54
54
  },
@@ -58,8 +58,8 @@
58
58
  "tsType": "VueClassProp",
59
59
  "desc": "Class definitions to be attributed to the menu",
60
60
  "examples": [
61
- "my-special-class",
62
- ":content-class=\"{ 'my-special-class': <condition> }\""
61
+ "'my-special-class'",
62
+ "{ 'my-special-class': <condition> }"
63
63
  ],
64
64
  "category": "style"
65
65
  },
@@ -92,11 +92,11 @@
92
92
  "type": "String",
93
93
  "desc": "Two values setting the starting position or anchor point of the menu relative to its target",
94
94
  "values": [
95
- "top left", "top middle", "top right", "top start", "top end",
96
- "center left", "center middle", "center right", "center start", "center end",
97
- "bottom left", "bottom middle", "bottom right", "bottom start", "bottom end"
95
+ "'top left'", "'top middle'", "'top right'", "'top start'", "'top end'",
96
+ "'center left'", "'center middle'", "'center right'", "'center start'", "'center end'",
97
+ "'bottom left'", "'bottom middle'", "'bottom right'", "'bottom start'", "'bottom end'"
98
98
  ],
99
- "default": "bottom end",
99
+ "default": "'bottom end'",
100
100
  "category": "position"
101
101
  },
102
102
 
@@ -104,11 +104,11 @@
104
104
  "type": "String",
105
105
  "desc": "Two values setting the menu's own position relative to its target",
106
106
  "values": [
107
- "top left", "top middle", "top right", "top start", "top end",
108
- "center left", "center middle", "center right", "center start", "center end",
109
- "bottom left", "bottom middle", "bottom right", "bottom start", "bottom end"
107
+ "'top left'", "'top middle'", "'top right'", "'top start'", "'top end'",
108
+ "'center left'", "'center middle'", "'center right'", "'center start'", "'center end'",
109
+ "'bottom left'", "'bottom middle'", "'bottom right'", "'bottom start'", "'bottom end'"
110
110
  ],
111
- "default": "top end",
111
+ "default": "'top end'",
112
112
  "category": "position"
113
113
  },
114
114
 
@@ -122,7 +122,7 @@
122
122
  "toggle-aria-label": {
123
123
  "type": "String",
124
124
  "desc": "aria-label to be used on the dropdown toggle element",
125
- "examples": [ "Open menu" ],
125
+ "examples": [ "'Open menu'" ],
126
126
  "category": "accessibility",
127
127
  "addedIn": "v2.8.4"
128
128
  }
@@ -10,7 +10,7 @@
10
10
  "extends": "model-value",
11
11
  "type": "Any",
12
12
  "desc": "Model of the component; Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
13
- "examples": [ "v-model=\"selected\"" ]
13
+ "examples": [ "# v-model=\"selected\"" ]
14
14
  },
15
15
 
16
16
  "options": {
@@ -27,7 +27,7 @@
27
27
  "label": {
28
28
  "type": "String",
29
29
  "desc": "Label of option button; Use this prop and/or 'icon', but at least one is required",
30
- "examples": [ "Option 1" ]
30
+ "examples": [ "'Option 1'" ]
31
31
  },
32
32
  "icon": {
33
33
  "extends": "icon",
@@ -41,7 +41,7 @@
41
41
  "slot": {
42
42
  "type": "String",
43
43
  "desc": "Slot name to use for this button content; Useful for customizing content or even add tooltips",
44
- "examples": [ "mySlot" ]
44
+ "examples": [ "'mySlot'" ]
45
45
  },
46
46
  "...props": {
47
47
  "type": "Any",
@@ -64,7 +64,7 @@
64
64
 
65
65
  "toggle-color": {
66
66
  "extends": "color",
67
- "default": "primary"
67
+ "default": "'primary'"
68
68
  },
69
69
 
70
70
  "toggle-text-color": {
@@ -116,14 +116,14 @@
116
116
  "size": {
117
117
  "type": "String",
118
118
  "desc": "Button size name or a CSS unit including unit name",
119
- "examples": [ "xs", "sm", "md", "lg", "xl", "25px", "2rem" ],
119
+ "examples": [ "'xs'", "'sm'", "'md'", "'lg'", "'xl'", "'25px'", "'2rem'" ],
120
120
  "category": "style"
121
121
  },
122
122
 
123
123
  "padding": {
124
124
  "type": "String",
125
125
  "desc": "Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set",
126
- "examples": [ "16px", "10px 5px", "2rem", "xs", "md lg", "2px 2px 5px 7px" ],
126
+ "examples": [ "'16px'", "'10px 5px'", "'2rem'", "'xs'", "'md lg'", "'2px 2px 5px 7px'" ],
127
127
  "category": "style"
128
128
  },
129
129