quasar 2.15.1 → 2.15.3

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 (795) hide show
  1. package/dist/api/AddressbarColor.json +1 -1
  2. package/dist/api/AppFullscreen.json +1 -1
  3. package/dist/api/BottomSheet.json +1 -1
  4. package/dist/api/ClosePopup.json +1 -1
  5. package/dist/api/Cookies.json +1 -1
  6. package/dist/api/Dark.json +1 -1
  7. package/dist/api/Dialog.json +1 -1
  8. package/dist/api/IconSet.json +1 -0
  9. package/dist/api/Intersection.json +1 -1
  10. package/dist/api/Lang.json +1 -1
  11. package/dist/api/Loading.json +1 -1
  12. package/dist/api/LoadingBar.json +1 -1
  13. package/dist/api/LocalStorage.json +1 -1
  14. package/dist/api/Morph.json +1 -1
  15. package/dist/api/Mutation.json +1 -1
  16. package/dist/api/Notify.json +1 -1
  17. package/dist/api/Platform.json +1 -1
  18. package/dist/api/QAjaxBar.json +1 -1
  19. package/dist/api/QAvatar.json +1 -1
  20. package/dist/api/QBadge.json +1 -1
  21. package/dist/api/QBanner.json +1 -1
  22. package/dist/api/QBar.json +1 -1
  23. package/dist/api/QBreadcrumbs.json +1 -1
  24. package/dist/api/QBreadcrumbsEl.json +1 -1
  25. package/dist/api/QBtn.json +1 -1
  26. package/dist/api/QBtnDropdown.json +1 -1
  27. package/dist/api/QBtnToggle.json +1 -1
  28. package/dist/api/QCard.json +1 -1
  29. package/dist/api/QCardActions.json +1 -1
  30. package/dist/api/QCardSection.json +1 -1
  31. package/dist/api/QCarousel.json +1 -1
  32. package/dist/api/QCarouselControl.json +1 -1
  33. package/dist/api/QCarouselSlide.json +1 -1
  34. package/dist/api/QChatMessage.json +1 -1
  35. package/dist/api/QCheckbox.json +1 -1
  36. package/dist/api/QChip.json +1 -1
  37. package/dist/api/QCircularProgress.json +1 -1
  38. package/dist/api/QColor.json +1 -1
  39. package/dist/api/QDate.json +1 -1
  40. package/dist/api/QDialog.json +1 -1
  41. package/dist/api/QDrawer.json +1 -1
  42. package/dist/api/QEditor.json +1 -1
  43. package/dist/api/QExpansionItem.json +1 -1
  44. package/dist/api/QFab.json +1 -1
  45. package/dist/api/QFabAction.json +1 -1
  46. package/dist/api/QField.json +1 -1
  47. package/dist/api/QFile.json +1 -1
  48. package/dist/api/QFooter.json +1 -1
  49. package/dist/api/QForm.json +1 -1
  50. package/dist/api/QFormChildMixin.json +1 -1
  51. package/dist/api/QHeader.json +1 -1
  52. package/dist/api/QIcon.json +1 -1
  53. package/dist/api/QImg.json +1 -1
  54. package/dist/api/QInfiniteScroll.json +1 -1
  55. package/dist/api/QInnerLoading.json +1 -1
  56. package/dist/api/QInput.json +1 -1
  57. package/dist/api/QIntersection.json +1 -1
  58. package/dist/api/QItem.json +1 -1
  59. package/dist/api/QKnob.json +1 -1
  60. package/dist/api/QLayout.json +1 -1
  61. package/dist/api/QLinearProgress.json +1 -1
  62. package/dist/api/QList.json +1 -1
  63. package/dist/api/QMarkupTable.json +1 -1
  64. package/dist/api/QMenu.json +1 -1
  65. package/dist/api/QNoSsr.json +1 -1
  66. package/dist/api/QOptionGroup.json +1 -1
  67. package/dist/api/QPage.json +1 -1
  68. package/dist/api/QPageScroller.json +1 -1
  69. package/dist/api/QPageSticky.json +1 -1
  70. package/dist/api/QPagination.json +1 -1
  71. package/dist/api/QParallax.json +1 -1
  72. package/dist/api/QPopupEdit.json +1 -1
  73. package/dist/api/QPopupProxy.json +1 -1
  74. package/dist/api/QPullToRefresh.json +1 -1
  75. package/dist/api/QRadio.json +1 -1
  76. package/dist/api/QRange.json +1 -1
  77. package/dist/api/QRating.json +1 -1
  78. package/dist/api/QResizeObserver.json +1 -1
  79. package/dist/api/QResponsive.json +1 -1
  80. package/dist/api/QRouteTab.json +1 -1
  81. package/dist/api/QScrollArea.json +1 -1
  82. package/dist/api/QScrollObserver.json +1 -1
  83. package/dist/api/QSelect.json +1 -1
  84. package/dist/api/QSeparator.json +1 -1
  85. package/dist/api/QSkeleton.json +1 -1
  86. package/dist/api/QSlideItem.json +1 -1
  87. package/dist/api/QSlideTransition.json +1 -1
  88. package/dist/api/QSlider.json +1 -1
  89. package/dist/api/QSpinner.json +1 -1
  90. package/dist/api/QSpinnerAudio.json +1 -1
  91. package/dist/api/QSpinnerBall.json +1 -1
  92. package/dist/api/QSpinnerBars.json +1 -1
  93. package/dist/api/QSpinnerBox.json +1 -1
  94. package/dist/api/QSpinnerClock.json +1 -1
  95. package/dist/api/QSpinnerComment.json +1 -1
  96. package/dist/api/QSpinnerCube.json +1 -1
  97. package/dist/api/QSpinnerDots.json +1 -1
  98. package/dist/api/QSpinnerFacebook.json +1 -1
  99. package/dist/api/QSpinnerGears.json +1 -1
  100. package/dist/api/QSpinnerGrid.json +1 -1
  101. package/dist/api/QSpinnerHearts.json +1 -1
  102. package/dist/api/QSpinnerHourglass.json +1 -1
  103. package/dist/api/QSpinnerInfinity.json +1 -1
  104. package/dist/api/QSpinnerIos.json +1 -1
  105. package/dist/api/QSpinnerOrbit.json +1 -1
  106. package/dist/api/QSpinnerOval.json +1 -1
  107. package/dist/api/QSpinnerPie.json +1 -1
  108. package/dist/api/QSpinnerPuff.json +1 -1
  109. package/dist/api/QSpinnerRadio.json +1 -1
  110. package/dist/api/QSpinnerRings.json +1 -1
  111. package/dist/api/QSpinnerTail.json +1 -1
  112. package/dist/api/QSplitter.json +1 -1
  113. package/dist/api/QStep.json +1 -1
  114. package/dist/api/QStepper.json +1 -1
  115. package/dist/api/QTab.json +1 -1
  116. package/dist/api/QTabPanel.json +1 -1
  117. package/dist/api/QTabPanels.json +1 -1
  118. package/dist/api/QTable.json +1 -1
  119. package/dist/api/QTabs.json +1 -1
  120. package/dist/api/QTd.json +1 -1
  121. package/dist/api/QTh.json +1 -1
  122. package/dist/api/QTime.json +1 -1
  123. package/dist/api/QTimeline.json +1 -1
  124. package/dist/api/QTimelineEntry.json +1 -1
  125. package/dist/api/QToggle.json +1 -1
  126. package/dist/api/QTooltip.json +1 -1
  127. package/dist/api/QTr.json +1 -1
  128. package/dist/api/QTree.json +1 -1
  129. package/dist/api/QUploader.json +1 -1
  130. package/dist/api/QVideo.json +1 -1
  131. package/dist/api/QVirtualScroll.json +1 -1
  132. package/dist/api/Ripple.json +1 -1
  133. package/dist/api/Screen.json +1 -1
  134. package/dist/api/Scroll.json +1 -1
  135. package/dist/api/ScrollFire.json +1 -1
  136. package/dist/api/SessionStorage.json +1 -1
  137. package/dist/api/TouchHold.json +1 -1
  138. package/dist/api/TouchPan.json +1 -1
  139. package/dist/api/TouchRepeat.json +1 -1
  140. package/dist/api/TouchSwipe.json +1 -1
  141. package/dist/icon-set/bootstrap-icons.umd.prod.js +2 -2
  142. package/dist/icon-set/eva-icons.umd.prod.js +2 -2
  143. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +2 -2
  144. package/dist/icon-set/fontawesome-v5.umd.prod.js +2 -2
  145. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +2 -2
  146. package/dist/icon-set/fontawesome-v6.umd.prod.js +2 -2
  147. package/dist/icon-set/ionicons-v4.umd.prod.js +2 -2
  148. package/dist/icon-set/line-awesome.umd.prod.js +2 -2
  149. package/dist/icon-set/material-icons-outlined.umd.prod.js +2 -2
  150. package/dist/icon-set/material-icons-round.umd.prod.js +2 -2
  151. package/dist/icon-set/material-icons-sharp.umd.prod.js +2 -2
  152. package/dist/icon-set/material-icons.umd.prod.js +2 -2
  153. package/dist/icon-set/material-symbols-outlined.umd.prod.js +2 -2
  154. package/dist/icon-set/material-symbols-rounded.umd.prod.js +2 -2
  155. package/dist/icon-set/material-symbols-sharp.umd.prod.js +2 -2
  156. package/dist/icon-set/mdi-v3.umd.prod.js +2 -2
  157. package/dist/icon-set/mdi-v4.umd.prod.js +2 -2
  158. package/dist/icon-set/mdi-v5.umd.prod.js +2 -2
  159. package/dist/icon-set/mdi-v6.umd.prod.js +2 -2
  160. package/dist/icon-set/mdi-v7.umd.prod.js +2 -2
  161. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +2 -2
  162. package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
  163. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +2 -2
  164. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +2 -2
  165. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +2 -2
  166. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +2 -2
  167. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +2 -2
  168. package/dist/icon-set/svg-line-awesome.umd.prod.js +2 -2
  169. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +2 -2
  170. package/dist/icon-set/svg-material-icons-round.umd.prod.js +2 -2
  171. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +2 -2
  172. package/dist/icon-set/svg-material-icons.umd.prod.js +2 -2
  173. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  174. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +2 -2
  175. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
  176. package/dist/icon-set/svg-mdi-v6.umd.prod.js +2 -2
  177. package/dist/icon-set/svg-mdi-v7.umd.prod.js +2 -2
  178. package/dist/icon-set/svg-themify.umd.prod.js +2 -2
  179. package/dist/icon-set/themify.umd.prod.js +2 -2
  180. package/dist/lang/ar-TN.umd.prod.js +2 -2
  181. package/dist/lang/ar.umd.prod.js +2 -2
  182. package/dist/lang/az-Latn.umd.prod.js +2 -2
  183. package/dist/lang/bg.umd.prod.js +2 -2
  184. package/dist/lang/bn.umd.prod.js +2 -2
  185. package/dist/lang/ca.umd.prod.js +2 -2
  186. package/dist/lang/cs.umd.prod.js +2 -2
  187. package/dist/lang/da.umd.prod.js +2 -2
  188. package/dist/lang/de-CH.umd.prod.js +2 -2
  189. package/dist/lang/de-DE.umd.prod.js +2 -2
  190. package/dist/lang/de.umd.prod.js +2 -2
  191. package/dist/lang/el.umd.prod.js +2 -2
  192. package/dist/lang/en-GB.umd.prod.js +2 -2
  193. package/dist/lang/en-US.umd.prod.js +2 -2
  194. package/dist/lang/eo.umd.prod.js +2 -2
  195. package/dist/lang/es.umd.prod.js +2 -2
  196. package/dist/lang/et.umd.prod.js +2 -2
  197. package/dist/lang/eu.umd.prod.js +2 -2
  198. package/dist/lang/fa-IR.umd.prod.js +2 -2
  199. package/dist/lang/fa.umd.prod.js +2 -2
  200. package/dist/lang/fi.umd.prod.js +2 -2
  201. package/dist/lang/fr.umd.prod.js +2 -2
  202. package/dist/lang/gn.umd.prod.js +2 -2
  203. package/dist/lang/he.umd.prod.js +2 -2
  204. package/dist/lang/hi.umd.prod.js +2 -2
  205. package/dist/lang/hr.umd.prod.js +2 -2
  206. package/dist/lang/hu.umd.prod.js +2 -2
  207. package/dist/lang/id.umd.prod.js +2 -2
  208. package/dist/lang/is.umd.prod.js +2 -2
  209. package/dist/lang/it.umd.prod.js +2 -2
  210. package/dist/lang/ja.umd.prod.js +2 -2
  211. package/dist/lang/kk.umd.prod.js +2 -2
  212. package/dist/lang/km.umd.prod.js +2 -2
  213. package/dist/lang/ko-KR.umd.prod.js +2 -2
  214. package/dist/lang/kur-CKB.umd.prod.js +2 -2
  215. package/dist/lang/lt.umd.prod.js +2 -2
  216. package/dist/lang/lu.umd.prod.js +2 -2
  217. package/dist/lang/lv.umd.prod.js +2 -2
  218. package/dist/lang/mk.umd.prod.js +2 -2
  219. package/dist/lang/ml.umd.prod.js +2 -2
  220. package/dist/lang/mm.umd.prod.js +2 -2
  221. package/dist/lang/ms-MY.umd.prod.js +2 -2
  222. package/dist/lang/ms.umd.prod.js +2 -2
  223. package/dist/lang/my.umd.prod.js +2 -2
  224. package/dist/lang/nb-NO.umd.prod.js +2 -2
  225. package/dist/lang/nl.umd.prod.js +2 -2
  226. package/dist/lang/pl.umd.prod.js +2 -2
  227. package/dist/lang/pt-BR.umd.prod.js +2 -2
  228. package/dist/lang/pt.umd.prod.js +2 -2
  229. package/dist/lang/ro.umd.prod.js +2 -2
  230. package/dist/lang/ru.umd.prod.js +2 -2
  231. package/dist/lang/sk.umd.prod.js +2 -2
  232. package/dist/lang/sl.umd.prod.js +2 -2
  233. package/dist/lang/sm.umd.prod.js +2 -2
  234. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  235. package/dist/lang/sr.umd.prod.js +2 -2
  236. package/dist/lang/sv.umd.prod.js +2 -2
  237. package/dist/lang/ta.umd.prod.js +2 -2
  238. package/dist/lang/th.umd.prod.js +2 -2
  239. package/dist/lang/tl.umd.prod.js +2 -2
  240. package/dist/lang/tr.umd.prod.js +2 -2
  241. package/dist/lang/ug.umd.prod.js +2 -2
  242. package/dist/lang/uk.umd.prod.js +2 -2
  243. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  244. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  245. package/dist/lang/vi.umd.prod.js +2 -2
  246. package/dist/lang/zh-CN.umd.prod.js +2 -2
  247. package/dist/lang/zh-TW.umd.prod.js +2 -2
  248. package/dist/quasar.addon.prod.css +1 -1
  249. package/dist/quasar.addon.rtl.prod.css +1 -1
  250. package/dist/quasar.cjs.prod.js +19 -19
  251. package/dist/quasar.css +53 -53
  252. package/dist/quasar.esm.js +634 -559
  253. package/dist/quasar.esm.prod.js +14 -14
  254. package/dist/quasar.prod.css +1 -1
  255. package/dist/quasar.rtl.css +65 -65
  256. package/dist/quasar.rtl.prod.css +1 -1
  257. package/dist/quasar.sass +37 -37
  258. package/dist/quasar.umd.js +619 -544
  259. package/dist/quasar.umd.prod.js +23 -23
  260. package/dist/transforms/api-list.json +1 -1
  261. package/dist/transforms/import-map.json +1 -1
  262. package/dist/types/config.d.ts +3 -3
  263. package/dist/types/globals.d.ts +1 -1
  264. package/dist/types/index.d.ts +2245 -336
  265. package/dist/vetur/quasar-attributes.json +1 -1
  266. package/dist/vetur/quasar-tags.json +1 -1
  267. package/dist/web-types/web-types.json +1 -1
  268. package/lang/uk.js +1 -1
  269. package/lang/uk.mjs +1 -1
  270. package/package.json +28 -42
  271. package/src/api.extends.json +23 -21
  272. package/src/components/ajax-bar/QAjaxBar.js +2 -2
  273. package/src/components/ajax-bar/QAjaxBar.json +6 -5
  274. package/src/components/avatar/QAvatar.js +3 -3
  275. package/src/components/avatar/QAvatar.json +2 -2
  276. package/src/components/avatar/QAvatar.test.js +232 -0
  277. package/src/components/badge/QBadge.js +2 -2
  278. package/src/components/badge/QBadge.json +2 -2
  279. package/src/components/badge/QBadge.test.js +267 -0
  280. package/src/components/banner/QBanner.js +3 -3
  281. package/src/components/banner/QBanner.test.js +161 -0
  282. package/src/components/bar/QBar.js +3 -3
  283. package/src/components/bar/QBar.test.js +80 -0
  284. package/src/components/breadcrumbs/QBreadcrumbs.js +6 -4
  285. package/src/components/breadcrumbs/QBreadcrumbs.json +7 -7
  286. package/src/components/breadcrumbs/QBreadcrumbs.test.js +198 -0
  287. package/src/components/breadcrumbs/QBreadcrumbsEl.js +3 -3
  288. package/src/components/breadcrumbs/QBreadcrumbsEl.json +5 -5
  289. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +564 -0
  290. package/src/components/btn/QBtn.js +12 -6
  291. package/src/components/btn/QBtn.json +3 -2
  292. package/src/components/btn/QBtn.test.js +1529 -0
  293. package/src/components/btn/use-btn.js +8 -6
  294. package/src/components/btn/use-btn.json +14 -14
  295. package/src/components/btn/use-btn.test.js +134 -0
  296. package/src/components/btn-dropdown/QBtnDropdown.js +9 -10
  297. package/src/components/btn-dropdown/QBtnDropdown.json +16 -16
  298. package/src/components/btn-group/QBtnGroup.js +2 -2
  299. package/src/components/btn-toggle/QBtnToggle.js +3 -3
  300. package/src/components/btn-toggle/QBtnToggle.json +8 -8
  301. package/src/components/card/QCard.js +3 -3
  302. package/src/components/card/QCard.json +2 -2
  303. package/src/components/card/QCardActions.js +3 -3
  304. package/src/components/card/QCardActions.json +3 -3
  305. package/src/components/card/QCardSection.js +2 -2
  306. package/src/components/card/QCardSection.json +2 -2
  307. package/src/components/carousel/QCarousel.js +6 -6
  308. package/src/components/carousel/QCarousel.json +10 -10
  309. package/src/components/carousel/QCarouselControl.js +2 -2
  310. package/src/components/carousel/QCarouselControl.json +6 -6
  311. package/src/components/carousel/QCarouselSlide.js +3 -3
  312. package/src/components/carousel/QCarouselSlide.json +5 -8
  313. package/src/components/chat/QChatMessage.js +2 -2
  314. package/src/components/chat/QChatMessage.json +9 -9
  315. package/src/components/checkbox/QCheckbox.js +1 -1
  316. package/src/components/checkbox/use-checkbox.js +8 -8
  317. package/src/components/checkbox/use-checkbox.json +18 -16
  318. package/src/components/chip/QChip.js +7 -6
  319. package/src/components/chip/QChip.json +10 -8
  320. package/src/components/chip/QChip.test.js +902 -0
  321. package/src/components/circular-progress/QCircularProgress.js +5 -5
  322. package/src/components/circular-progress/QCircularProgress.json +9 -9
  323. package/src/components/circular-progress/{use-circular-progress.js → circular-progress.js} +1 -1
  324. package/src/components/circular-progress/circular-progress.test.js +14 -0
  325. package/src/components/color/QColor.js +10 -10
  326. package/src/components/color/QColor.json +9 -11
  327. package/src/components/date/QDate.js +9 -9
  328. package/src/components/date/QDate.json +42 -35
  329. package/src/components/date/use-datetime.js +2 -2
  330. package/src/components/date/use-datetime.json +8 -8
  331. package/src/components/dialog/QDialog.js +33 -22
  332. package/src/components/dialog/QDialog.json +18 -16
  333. package/src/components/dialog/QDialog.test.js +1264 -0
  334. package/src/components/dialog/test/DialogWrapper.vue +17 -0
  335. package/src/components/drawer/QDrawer.js +12 -12
  336. package/src/components/drawer/QDrawer.json +15 -16
  337. package/src/components/editor/QEditor.js +9 -9
  338. package/src/components/editor/QEditor.json +41 -49
  339. package/src/components/editor/editor-caret.js +1 -1
  340. package/src/components/editor/editor-utils.js +3 -3
  341. package/src/components/expansion-item/QExpansionItem.js +9 -9
  342. package/src/components/expansion-item/QExpansionItem.json +15 -15
  343. package/src/components/fab/QFab.js +5 -5
  344. package/src/components/fab/QFab.json +5 -5
  345. package/src/components/fab/QFabAction.js +4 -4
  346. package/src/components/fab/QFabAction.json +5 -6
  347. package/src/components/fab/use-fab.json +10 -12
  348. package/src/components/field/QField.js +2 -2
  349. package/src/components/field/QField.json +12 -8
  350. package/src/components/file/QFile.js +9 -9
  351. package/src/components/file/QFile.json +19 -14
  352. package/src/components/footer/QFooter.js +4 -4
  353. package/src/components/footer/QFooter.json +3 -5
  354. package/src/components/form/QForm.js +6 -6
  355. package/src/components/form/QForm.json +12 -7
  356. package/src/components/form/QFormChildMixin.js +2 -2
  357. package/src/components/form/QFormChildMixin.json +5 -4
  358. package/src/components/header/QHeader.js +3 -3
  359. package/src/components/header/QHeader.json +4 -6
  360. package/src/components/icon/QIcon.js +3 -3
  361. package/src/components/icon/QIcon.json +3 -3
  362. package/src/components/img/QImg.js +6 -6
  363. package/src/components/img/QImg.json +46 -60
  364. package/src/components/infinite-scroll/QInfiniteScroll.js +6 -6
  365. package/src/components/infinite-scroll/QInfiniteScroll.json +23 -10
  366. package/src/components/inner-loading/QInnerLoading.js +3 -3
  367. package/src/components/inner-loading/QInnerLoading.json +6 -8
  368. package/src/components/input/QInput.js +9 -9
  369. package/src/components/input/QInput.json +25 -14
  370. package/src/components/input/use-mask.js +1 -1
  371. package/src/components/input/use-mask.json +1 -1
  372. package/src/components/intersection/QIntersection.js +4 -4
  373. package/src/components/intersection/QIntersection.json +7 -7
  374. package/src/components/item/QItem.js +6 -6
  375. package/src/components/item/QItem.json +6 -6
  376. package/src/components/item/QItemLabel.js +2 -2
  377. package/src/components/item/QItemSection.js +2 -2
  378. package/src/components/item/QList.js +3 -3
  379. package/src/components/item/QList.json +2 -2
  380. package/src/components/knob/QKnob.js +7 -7
  381. package/src/components/knob/QKnob.json +7 -7
  382. package/src/components/layout/QLayout.js +5 -5
  383. package/src/components/layout/QLayout.json +3 -5
  384. package/src/components/linear-progress/QLinearProgress.js +4 -4
  385. package/src/components/linear-progress/QLinearProgress.json +3 -3
  386. package/src/components/markup-table/QMarkupTable.js +3 -3
  387. package/src/components/markup-table/QMarkupTable.json +3 -3
  388. package/src/components/menu/QMenu.js +20 -20
  389. package/src/components/menu/QMenu.json +16 -12
  390. package/src/components/no-ssr/QNoSsr.js +3 -3
  391. package/src/components/no-ssr/QNoSsr.json +3 -3
  392. package/src/components/option-group/QOptionGroup.js +2 -2
  393. package/src/components/option-group/QOptionGroup.json +15 -17
  394. package/src/components/page/QPage.js +3 -3
  395. package/src/components/page/QPage.json +2 -2
  396. package/src/components/page/QPageContainer.js +3 -3
  397. package/src/components/page-scroller/QPageScroller.js +2 -2
  398. package/src/components/page-scroller/QPageScroller.json +3 -3
  399. package/src/components/page-sticky/QPageSticky.js +1 -1
  400. package/src/components/page-sticky/QPageSticky.json +5 -5
  401. package/src/components/page-sticky/use-page-sticky.js +2 -2
  402. package/src/components/pagination/QPagination.js +4 -4
  403. package/src/components/pagination/QPagination.json +24 -22
  404. package/src/components/parallax/QParallax.js +6 -6
  405. package/src/components/parallax/QParallax.json +5 -5
  406. package/src/components/popup-edit/QPopupEdit.js +4 -4
  407. package/src/components/popup-edit/QPopupEdit.json +47 -33
  408. package/src/components/popup-proxy/QPopupProxy.js +3 -3
  409. package/src/components/popup-proxy/QPopupProxy.json +11 -7
  410. package/src/components/pull-to-refresh/QPullToRefresh.js +6 -6
  411. package/src/components/pull-to-refresh/QPullToRefresh.json +6 -2
  412. package/src/components/radio/QRadio.js +9 -9
  413. package/src/components/radio/QRadio.json +9 -7
  414. package/src/components/range/QRange.js +3 -3
  415. package/src/components/range/QRange.json +3 -7
  416. package/src/components/rating/QRating.js +6 -6
  417. package/src/components/rating/QRating.json +17 -20
  418. package/src/components/resize-observer/QResizeObserver.js +3 -3
  419. package/src/components/resize-observer/QResizeObserver.json +4 -3
  420. package/src/components/responsive/QResponsive.js +3 -3
  421. package/src/components/responsive/QResponsive.json +1 -1
  422. package/src/components/scroll-area/QScrollArea.js +7 -7
  423. package/src/components/scroll-area/QScrollArea.json +20 -14
  424. package/src/components/scroll-observer/QScrollObserver.js +3 -3
  425. package/src/components/scroll-observer/QScrollObserver.json +9 -6
  426. package/src/components/select/QSelect.js +10 -10
  427. package/src/components/select/QSelect.json +89 -72
  428. package/src/components/select/__tests__/QSelect.cy.js +21 -1
  429. package/src/components/separator/QSeparator.js +2 -2
  430. package/src/components/separator/QSeparator.json +3 -5
  431. package/src/components/skeleton/QSkeleton.js +3 -3
  432. package/src/components/skeleton/QSkeleton.json +14 -16
  433. package/src/components/slide-item/QSlideItem.js +5 -5
  434. package/src/components/slide-item/QSlideItem.json +5 -3
  435. package/src/components/slide-transition/QSlideTransition.js +1 -1
  436. package/src/components/slide-transition/QSlideTransition.json +1 -1
  437. package/src/components/slider/QSlider.js +4 -4
  438. package/src/components/slider/QSlider.json +2 -4
  439. package/src/components/slider/use-slider.js +7 -7
  440. package/src/components/slider/use-slider.json +19 -23
  441. package/src/components/space/QSpace.js +1 -1
  442. package/src/components/space/QSpace.test.js +17 -0
  443. package/src/components/spinner/QSpinner.js +1 -1
  444. package/src/components/spinner/QSpinner.json +2 -2
  445. package/src/components/spinner/QSpinnerAudio.js +1 -1
  446. package/src/components/spinner/QSpinnerAudio.json +1 -1
  447. package/src/components/spinner/QSpinnerBall.js +1 -1
  448. package/src/components/spinner/QSpinnerBall.json +1 -1
  449. package/src/components/spinner/QSpinnerBars.js +1 -1
  450. package/src/components/spinner/QSpinnerBars.json +1 -1
  451. package/src/components/spinner/QSpinnerBox.js +1 -1
  452. package/src/components/spinner/QSpinnerBox.json +1 -1
  453. package/src/components/spinner/QSpinnerClock.js +1 -1
  454. package/src/components/spinner/QSpinnerClock.json +1 -1
  455. package/src/components/spinner/QSpinnerComment.js +1 -1
  456. package/src/components/spinner/QSpinnerComment.json +1 -1
  457. package/src/components/spinner/QSpinnerCube.js +1 -1
  458. package/src/components/spinner/QSpinnerCube.json +1 -1
  459. package/src/components/spinner/QSpinnerDots.js +1 -1
  460. package/src/components/spinner/QSpinnerDots.json +1 -1
  461. package/src/components/spinner/QSpinnerFacebook.js +1 -1
  462. package/src/components/spinner/QSpinnerFacebook.json +1 -1
  463. package/src/components/spinner/QSpinnerGears.js +1 -1
  464. package/src/components/spinner/QSpinnerGears.json +1 -1
  465. package/src/components/spinner/QSpinnerGrid.js +1 -1
  466. package/src/components/spinner/QSpinnerGrid.json +1 -1
  467. package/src/components/spinner/QSpinnerHearts.js +1 -1
  468. package/src/components/spinner/QSpinnerHearts.json +1 -1
  469. package/src/components/spinner/QSpinnerHourglass.js +1 -1
  470. package/src/components/spinner/QSpinnerHourglass.json +1 -1
  471. package/src/components/spinner/QSpinnerInfinity.js +1 -1
  472. package/src/components/spinner/QSpinnerInfinity.json +1 -1
  473. package/src/components/spinner/QSpinnerIos.js +1 -1
  474. package/src/components/spinner/QSpinnerIos.json +1 -1
  475. package/src/components/spinner/QSpinnerOrbit.js +1 -1
  476. package/src/components/spinner/QSpinnerOrbit.json +1 -1
  477. package/src/components/spinner/QSpinnerOval.js +1 -1
  478. package/src/components/spinner/QSpinnerOval.json +1 -1
  479. package/src/components/spinner/QSpinnerPie.js +1 -1
  480. package/src/components/spinner/QSpinnerPie.json +1 -1
  481. package/src/components/spinner/QSpinnerPuff.js +1 -1
  482. package/src/components/spinner/QSpinnerPuff.json +1 -1
  483. package/src/components/spinner/QSpinnerRadio.js +1 -1
  484. package/src/components/spinner/QSpinnerRadio.json +1 -1
  485. package/src/components/spinner/QSpinnerRings.js +1 -1
  486. package/src/components/spinner/QSpinnerRings.json +1 -1
  487. package/src/components/spinner/QSpinnerTail.js +1 -1
  488. package/src/components/spinner/QSpinnerTail.json +1 -1
  489. package/src/components/spinner/{__spinner-mixin.json → spinner.json} +1 -1
  490. package/src/components/spinner/use-spinner.js +1 -1
  491. package/src/components/splitter/QSplitter.js +4 -4
  492. package/src/components/splitter/QSplitter.json +14 -14
  493. package/src/components/stepper/QStep.js +5 -5
  494. package/src/components/stepper/QStep.json +5 -11
  495. package/src/components/stepper/QStepper.js +5 -5
  496. package/src/components/stepper/QStepper.json +2 -4
  497. package/src/components/stepper/QStepperNavigation.js +2 -2
  498. package/src/components/stepper/StepHeader.js +2 -2
  499. package/src/components/tab-panels/QTabPanel.js +3 -3
  500. package/src/components/tab-panels/QTabPanel.json +1 -7
  501. package/src/components/tab-panels/QTabPanels.js +4 -4
  502. package/src/components/tab-panels/QTabPanels.json +1 -1
  503. package/src/components/table/QTable.js +8 -8
  504. package/src/components/table/QTable.json +148 -142
  505. package/src/components/table/QTd.js +2 -2
  506. package/src/components/table/QTd.json +1 -1
  507. package/src/components/table/QTh.js +2 -2
  508. package/src/components/table/QTh.json +1 -1
  509. package/src/components/table/QTr.js +2 -2
  510. package/src/components/table/QTr.json +1 -1
  511. package/src/components/table/table-column-selection.js +1 -1
  512. package/src/components/table/table-sort.js +2 -2
  513. package/src/components/tabs/QRouteTab.js +2 -2
  514. package/src/components/tabs/QRouteTab.json +2 -2
  515. package/src/components/tabs/QTab.js +1 -1
  516. package/src/components/tabs/QTab.json +6 -13
  517. package/src/components/tabs/QTabs.js +6 -6
  518. package/src/components/tabs/QTabs.json +8 -8
  519. package/src/components/tabs/use-tab.js +8 -8
  520. package/src/components/time/QTime.js +9 -9
  521. package/src/components/time/QTime.json +13 -23
  522. package/src/components/timeline/QTimeline.js +4 -4
  523. package/src/components/timeline/QTimeline.json +4 -4
  524. package/src/components/timeline/QTimelineEntry.js +3 -3
  525. package/src/components/timeline/QTimelineEntry.json +11 -11
  526. package/src/components/toggle/QToggle.js +1 -1
  527. package/src/components/toolbar/QToolbar.js +2 -2
  528. package/src/components/toolbar/QToolbarTitle.js +2 -2
  529. package/src/components/tooltip/QTooltip.js +15 -15
  530. package/src/components/tooltip/QTooltip.json +22 -24
  531. package/src/components/tree/QTree.js +5 -5
  532. package/src/components/tree/QTree.json +38 -30
  533. package/src/components/uploader/QUploader.js +1 -1
  534. package/src/components/uploader/QUploader.json +29 -14
  535. package/src/components/uploader/QUploaderAddTrigger.js +2 -2
  536. package/src/components/uploader/uploader-core.js +8 -8
  537. package/src/components/uploader/xhr-uploader-plugin.js +3 -1
  538. package/src/components/uploader/xhr-uploader-plugin.json +19 -19
  539. package/src/components/video/QVideo.js +2 -2
  540. package/src/components/video/QVideo.json +16 -20
  541. package/src/components/video/QVideo.test.js +183 -0
  542. package/src/components/virtual-scroll/QVirtualScroll.js +4 -4
  543. package/src/components/virtual-scroll/QVirtualScroll.json +8 -10
  544. package/src/components/virtual-scroll/use-virtual-scroll.js +3 -3
  545. package/src/components/virtual-scroll/use-virtual-scroll.json +16 -11
  546. package/src/composables/private.use-align/use-align.test.js +62 -0
  547. package/src/composables/{private → private.use-anchor}/use-anchor.js +3 -3
  548. package/src/composables/{private → private.use-anchor}/use-anchor.json +5 -6
  549. package/src/composables/private.use-dark/use-dark.test.js +68 -0
  550. package/src/composables/{private → private.use-field}/use-field.js +8 -8
  551. package/src/composables/{private → private.use-field}/use-field.json +14 -20
  552. package/src/composables/{private → private.use-file}/use-file.js +2 -2
  553. package/src/composables/{private → private.use-file}/use-file.json +10 -10
  554. package/src/composables/{private → private.use-fullscreen}/use-fullscreen.js +2 -2
  555. package/src/composables/{private → private.use-fullscreen}/use-fullscreen.json +10 -6
  556. package/src/composables/{private → private.use-history}/use-history.js +1 -1
  557. package/src/composables/private.use-history/use-history.test.js +116 -0
  558. package/src/composables/{private → private.use-key-composition}/use-key-composition.js +1 -1
  559. package/src/composables/{private → private.use-model-toggle}/use-model-toggle.js +1 -1
  560. package/src/composables/{private → private.use-panel}/use-panel.child.json +1 -3
  561. package/src/composables/{private → private.use-panel}/use-panel.js +4 -4
  562. package/src/composables/{private → private.use-panel}/use-panel.json +20 -15
  563. package/src/composables/{private → private.use-portal}/use-portal.js +21 -6
  564. package/src/composables/{private → private.use-prevent-scroll}/use-prevent-scroll.js +1 -1
  565. package/src/composables/{private → private.use-ratio}/use-ratio.json +4 -3
  566. package/src/composables/private.use-ratio/use-ratio.test.js +40 -0
  567. package/src/composables/{private → private.use-router-link}/use-router-link.js +1 -1
  568. package/src/composables/{private → private.use-router-link}/use-router-link.json +6 -6
  569. package/src/composables/{private → private.use-scroll-target}/use-scroll-target.js +2 -5
  570. package/src/composables/{private → private.use-size}/use-size.json +1 -1
  571. package/src/composables/private.use-size/use-size.test.js +40 -0
  572. package/src/composables/{private → private.use-transition}/use-transition.json +3 -3
  573. package/src/composables/private.use-transition/use-transition.test.js +118 -0
  574. package/src/composables/{private → private.use-validate}/use-validate.js +4 -4
  575. package/src/composables/{private → private.use-validate}/use-validate.json +9 -7
  576. package/src/composables/{use-dialog-plugin-component.js → use-dialog-plugin-component/use-dialog-plugin-component.js} +2 -4
  577. package/src/composables/{private/use-form.json → use-form/private.use-form.json} +1 -1
  578. package/src/composables/use-form/private.use-form.test.js +107 -0
  579. package/src/composables/{use-form-child.js → use-form/use-form-child.js} +1 -1
  580. package/src/composables/{use-hydration.js → use-hydration/use-hydration.js} +1 -1
  581. package/src/composables/use-hydration/use-hydration.test.js +27 -0
  582. package/src/composables/{use-id.js → use-id/use-id.js} +2 -2
  583. package/src/composables/use-id/use-id.test.js +72 -0
  584. package/src/composables/{use-interval.js → use-interval/use-interval.js} +1 -1
  585. package/src/composables/{use-meta.js → use-meta/use-meta.js} +1 -1
  586. package/src/composables/{use-quasar.js → use-quasar/use-quasar.js} +2 -1
  587. package/src/composables/use-quasar/use-quasar.test.js +35 -0
  588. package/src/composables/{use-tick.js → use-tick/use-tick.js} +1 -1
  589. package/src/composables/{use-timeout.js → use-timeout/use-timeout.js} +1 -1
  590. package/src/composables.js +12 -10
  591. package/src/css/index.sass +7 -7
  592. package/src/directives/{ClosePopup.js → close-popup/ClosePopup.js} +4 -4
  593. package/src/directives/{ClosePopup.json → close-popup/ClosePopup.json} +5 -5
  594. package/src/directives/{Intersection.js → intersection/Intersection.js} +3 -3
  595. package/src/directives/{Intersection.json → intersection/Intersection.json} +4 -6
  596. package/src/directives/{Morph.js → morph/Morph.js} +2 -2
  597. package/src/directives/{Morph.json → morph/Morph.json} +21 -21
  598. package/src/directives/{Mutation.js → mutation/Mutation.js} +2 -2
  599. package/src/directives/{Mutation.json → mutation/Mutation.json} +10 -12
  600. package/src/directives/{Ripple.js → ripple/Ripple.js} +6 -6
  601. package/src/directives/{Ripple.json → ripple/Ripple.json} +9 -15
  602. package/src/directives/ripple/Ripple.test.js +340 -0
  603. package/src/directives/{Scroll.js → scroll/Scroll.js} +4 -4
  604. package/src/directives/{Scroll.json → scroll/Scroll.json} +2 -2
  605. package/src/directives/{ScrollFire.js → scroll-fire/ScrollFire.js} +6 -6
  606. package/src/directives/{ScrollFire.json → scroll-fire/ScrollFire.json} +1 -1
  607. package/src/directives/{TouchHold.js → touch-hold/TouchHold.js} +5 -5
  608. package/src/directives/{TouchHold.json → touch-hold/TouchHold.json} +6 -6
  609. package/src/directives/{TouchPan.js → touch-pan/TouchPan.js} +6 -6
  610. package/src/directives/{TouchPan.json → touch-pan/TouchPan.json} +4 -4
  611. package/src/directives/{TouchRepeat.js → touch-repeat/TouchRepeat.js} +6 -6
  612. package/src/directives/{TouchRepeat.json → touch-repeat/TouchRepeat.json} +4 -4
  613. package/src/directives/{TouchSwipe.js → touch-swipe/TouchSwipe.js} +6 -6
  614. package/src/directives/{TouchSwipe.json → touch-swipe/TouchSwipe.json} +4 -4
  615. package/src/directives.js +11 -11
  616. package/src/index.dev.js +10 -4
  617. package/src/index.prod.js +11 -4
  618. package/src/index.ssr.js +11 -4
  619. package/src/index.umd.js +12 -4
  620. package/src/install-quasar.js +17 -12
  621. package/src/plugins/{AddressbarColor.js → addressbar/AddressbarColor.js} +3 -3
  622. package/src/plugins/{AddressbarColor.json → addressbar/AddressbarColor.json} +3 -2
  623. package/src/plugins/{AppFullscreen.js → app-fullscreen/AppFullscreen.js} +3 -3
  624. package/src/plugins/{AppFullscreen.json → app-fullscreen/AppFullscreen.json} +1 -0
  625. package/src/plugins/{AppVisibility.js → app-visibility/AppVisibility.js} +3 -3
  626. package/src/plugins/bottom-sheet/BottomSheet.js +8 -0
  627. package/src/plugins/{BottomSheet.json → bottom-sheet/BottomSheet.json} +11 -11
  628. package/src/{components/dialog-bottom-sheet/BottomSheet.js → plugins/bottom-sheet/component/BottomSheetComponent.js} +10 -10
  629. package/src/plugins/{Cookies.json → cookies/Cookies.json} +19 -18
  630. package/src/plugins/{Dark.js → dark/Dark.js} +2 -2
  631. package/src/plugins/{Dark.json → dark/Dark.json} +8 -5
  632. package/src/plugins/dialog/Dialog.js +8 -0
  633. package/src/plugins/{Dialog.json → dialog/Dialog.json} +17 -17
  634. package/src/{components/dialog-plugin/DialogPlugin.js → plugins/dialog/component/DialogPluginComponent.js} +14 -14
  635. package/src/{icon-set.js → plugins/icon-set/IconSet.js} +29 -10
  636. package/src/plugins/icon-set/IconSet.json +1417 -0
  637. package/src/plugins/icon-set/IconSet.test.js +346 -0
  638. package/src/{lang.js → plugins/lang/Lang.js} +25 -15
  639. package/src/plugins/lang/Lang.json +1100 -0
  640. package/src/plugins/lang/Lang.test.js +267 -0
  641. package/src/plugins/{Loading.js → loading/Loading.js} +8 -7
  642. package/src/plugins/{Loading.json → loading/Loading.json} +19 -17
  643. package/src/plugins/{LoadingBar.js → loading-bar/LoadingBar.js} +7 -7
  644. package/src/plugins/{LoadingBar.json → loading-bar/LoadingBar.json} +10 -5
  645. package/src/plugins/{Meta.js → meta/Meta.js} +2 -2
  646. package/src/plugins/{Notify.js → notify/Notify.js} +11 -10
  647. package/src/plugins/{Notify.json → notify/Notify.json} +60 -74
  648. package/src/plugins/{Platform.js → platform/Platform.js} +5 -12
  649. package/src/plugins/{Platform.json → platform/Platform.json} +12 -10
  650. package/src/plugins/platform/Platform.test.js +104 -0
  651. package/src/{body.js → plugins/private.body/Body.js} +5 -4
  652. package/src/{history.js → plugins/private.history/History.js} +2 -2
  653. package/src/plugins/{Screen.js → screen/Screen.js} +5 -5
  654. package/src/plugins/{Screen.json → screen/Screen.json} +10 -14
  655. package/src/plugins/{LocalStorage.js → storage/LocalStorage.js} +2 -2
  656. package/src/plugins/storage/LocalStorage.json +5 -0
  657. package/src/plugins/storage/LocalStorage.test.js +323 -0
  658. package/src/plugins/{SessionStorage.js → storage/SessionStorage.js} +2 -2
  659. package/src/plugins/storage/SessionStorage.json +5 -0
  660. package/src/plugins/storage/SessionStorage.test.js +323 -0
  661. package/src/{utils/private → plugins/storage/engine}/web-storage.js +21 -10
  662. package/src/{utils/private → plugins/storage/engine}/web-storage.json +29 -20
  663. package/src/plugins/storage/engine/web-storage.test.js +43 -0
  664. package/src/plugins.js +20 -16
  665. package/src/utils/EventBus/EventBus.test.js +108 -0
  666. package/src/utils/clone/clone.test.js +111 -0
  667. package/src/utils/colors/colors.test.js +459 -0
  668. package/src/utils/{copy-to-clipboard.js → copy-to-clipboard/copy-to-clipboard.js} +1 -1
  669. package/src/utils/{create-meta-mixin.js → create-meta-mixin/create-meta-mixin.js} +1 -1
  670. package/src/utils/{create-uploader-component.js → create-uploader-component/create-uploader-component.js} +4 -4
  671. package/src/utils/css-var/get-css-var.test.js +32 -0
  672. package/src/utils/css-var/set-css-var.test.js +36 -0
  673. package/src/utils/{date.js → date/date.js} +6 -6
  674. package/src/utils/debounce/debounce.test.js +188 -0
  675. package/src/utils/extend/extend.test.js +93 -0
  676. package/src/utils/{format.js → format/format.js} +2 -2
  677. package/src/utils/format/format.test.js +107 -0
  678. package/src/utils/{frame-debounce.js → frame-debounce/frame-debounce.js} +1 -1
  679. package/src/utils/frame-debounce/frame-debounce.test.js +127 -0
  680. package/src/utils/is/is.test.js +125 -0
  681. package/src/utils/{morph.js → morph/morph.js} +1 -1
  682. package/src/utils/{open-url.js → open-url/open-url.js} +3 -3
  683. package/src/utils/patterns/patterns.test.js +403 -0
  684. package/src/utils/{private → private.click-outside}/click-outside.js +2 -2
  685. package/src/utils/{private/define-reactive-plugin.js → private.create/create.js} +6 -3
  686. package/src/utils/private.create/create.test.js +58 -0
  687. package/src/utils/private.focus/focus-manager.test.js +190 -0
  688. package/src/utils/{private → private.focus}/focusout.js +1 -1
  689. package/src/utils/private.focus/focusout.test.js +114 -0
  690. package/src/utils/private.get-emits-object/get-emits-object.test.js +29 -0
  691. package/src/utils/private.global/global-config.test.js +54 -0
  692. package/src/utils/{private → private.global}/global-dialog.js +1 -1
  693. package/src/utils/{private → private.global}/global-dialog.json +3 -3
  694. package/src/utils/{private → private.global}/global-nodes.js +1 -1
  695. package/src/utils/private.global/global-nodes.test.js +110 -0
  696. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +104 -0
  697. package/src/utils/{private → private.keyboard}/escape-key.js +2 -2
  698. package/src/utils/private.keyboard/escape-key.test.js +117 -0
  699. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.test.js +14 -0
  700. package/src/utils/{private → private.portal}/portal.js +1 -1
  701. package/src/utils/{private → private.position-engine}/position-engine.js +2 -2
  702. package/src/utils/private.rtl/rtl.test.js +13 -0
  703. package/src/utils/{private → private.selection}/selection.js +1 -1
  704. package/src/utils/private.sort/sort.test.js +25 -0
  705. package/src/utils/{private → private.symbols}/symbols.js +1 -1
  706. package/src/utils/private.touch/touch.test.js +102 -0
  707. package/src/utils/{prevent-scroll.js → scroll/prevent-scroll.js} +3 -3
  708. package/src/utils/{scroll.js → scroll/scroll.js} +1 -1
  709. package/src/utils/throttle/throttle.test.js +146 -0
  710. package/src/utils/uid/uid.test.js +17 -0
  711. package/src/utils.js +24 -24
  712. package/src/vue-plugin.js +12 -4
  713. package/src/Lang.json +0 -19
  714. package/src/api-file-example.json +0 -94
  715. package/src/components/avatar/__tests__/QAvatar.cy.js +0 -120
  716. package/src/components/badge/__tests__/QBadge.cy.js +0 -148
  717. package/src/components/banner/__tests__/QBanner.cy.js +0 -106
  718. package/src/components/bar/__tests__/QBar.cy.js +0 -45
  719. package/src/components/breadcrumbs/__tests__/QBreadcrumbs.cy.js +0 -111
  720. package/src/components/breadcrumbs/__tests__/QBreadcrumbsEl.cy.js +0 -87
  721. package/src/components/btn/__tests__/QBtn.cy.js +0 -128
  722. package/src/components/btn/__tests__/use-btn.cy.js +0 -517
  723. package/src/components/chip/__tests__/QChip.cy.js +0 -480
  724. package/src/components/dialog/__tests__/DialogWrapper.vue +0 -33
  725. package/src/components/dialog/__tests__/QDialog.cy.js +0 -543
  726. package/src/components/tabs/__tests__/QRouteTab.cy.js +0 -9
  727. package/src/composables/private/__tests__/use-form.cy.js +0 -11
  728. package/src/composables/private/__tests__/use-size.cy.js +0 -36
  729. package/src/composables/private/__tests__/use-transition.cy.js +0 -111
  730. package/src/plugins/BottomSheet.js +0 -11
  731. package/src/plugins/Dialog.js +0 -11
  732. package/src/plugins/LocalStorage.json +0 -5
  733. package/src/plugins/SessionStorage.json +0 -5
  734. package/src/utils/private/create.js +0 -4
  735. /package/src/components/breadcrumbs/{__tests__ → test}/BasicBreadcrumbs.vue +0 -0
  736. /package/src/components/breadcrumbs/{__tests__ → test}/BreadcrumbWithSeparatorSlot.vue +0 -0
  737. /package/src/composables/{private/__tests__ → __tests__}/FieldWrapper.vue +0 -0
  738. /package/src/composables/{private/__tests__ → __tests__}/use-anchor.cy.js +0 -0
  739. /package/src/composables/{private/__tests__ → __tests__}/use-field.cy.js +0 -0
  740. /package/src/composables/{private/__tests__ → __tests__}/use-file.cy.js +0 -0
  741. /package/src/composables/{private/__tests__ → __tests__}/use-fullscreen.cy.js +0 -0
  742. /package/src/composables/{private/__tests__ → __tests__}/use-model-toggle.cy.js +0 -0
  743. /package/src/composables/{private/__tests__ → __tests__}/use-portal.cy.js +0 -0
  744. /package/src/composables/{private/__tests__ → __tests__}/use-router-link.cy.js +0 -0
  745. /package/src/composables/{private/__tests__ → __tests__}/use-validate.cy.js +0 -0
  746. /package/src/composables/{private → private.use-align}/use-align.js +0 -0
  747. /package/src/composables/{private → private.use-dark}/use-dark.js +0 -0
  748. /package/src/composables/{private → private.use-file}/use-file-dom-props.js +0 -0
  749. /package/src/composables/{private → private.use-model-toggle}/use-model-toggle.json +0 -0
  750. /package/src/composables/{private → private.use-panel}/use-panel.sass +0 -0
  751. /package/src/composables/{private → private.use-portal}/use-portal.json +0 -0
  752. /package/src/composables/{private → private.use-ratio}/use-ratio.js +0 -0
  753. /package/src/composables/{private → private.use-refocus-target}/use-refocus-target.js +0 -0
  754. /package/src/composables/{private → private.use-size}/use-size.js +0 -0
  755. /package/src/composables/{private → private.use-transition}/use-transition.js +0 -0
  756. /package/src/composables/{private/use-form.js → use-form/private.use-form.js} +0 -0
  757. /package/src/composables/{use-render-cache.js → use-render-cache/use-render-cache.js} +0 -0
  758. /package/src/composables/{use-split-attrs.js → use-split-attrs/use-split-attrs.js} +0 -0
  759. /package/src/directives/{Morph.sass → morph/Morph.sass} +0 -0
  760. /package/src/directives/{Ripple.sass → ripple/Ripple.sass} +0 -0
  761. /package/src/plugins/{AppVisibility.json → app-visibility/AppVisibility.json} +0 -0
  762. /package/src/{components/dialog-bottom-sheet/BottomSheet.sass → plugins/bottom-sheet/component/BottomSheetComponent.sass} +0 -0
  763. /package/src/plugins/{Cookies.js → cookies/Cookies.js} +0 -0
  764. /package/src/{components/dialog-plugin/DialogPlugin.sass → plugins/dialog/component/DialogPluginComponent.sass} +0 -0
  765. /package/src/plugins/{Loading.sass → loading/Loading.sass} +0 -0
  766. /package/src/plugins/{Meta.json → meta/Meta.json} +0 -0
  767. /package/src/plugins/{Notify.sass → notify/Notify.sass} +0 -0
  768. /package/src/utils/{EventBus.js → EventBus/EventBus.js} +0 -0
  769. /package/src/utils/{clone.js → clone/clone.js} +0 -0
  770. /package/src/utils/{colors.js → colors/colors.js} +0 -0
  771. /package/src/utils/{get-css-var.js → css-var/get-css-var.js} +0 -0
  772. /package/src/utils/{set-css-var.js → css-var/set-css-var.js} +0 -0
  773. /package/src/utils/{private/date-persian.js → date/private.persian.js} +0 -0
  774. /package/src/utils/{debounce.js → debounce/debounce.js} +0 -0
  775. /package/src/utils/{dom.js → dom/dom.js} +0 -0
  776. /package/src/utils/{event.js → event/event.js} +0 -0
  777. /package/src/utils/{export-file.js → export-file/export-file.js} +0 -0
  778. /package/src/utils/{extend.js → extend/extend.js} +0 -0
  779. /package/src/utils/{is.js → is/is.js} +0 -0
  780. /package/src/utils/{patterns.js → patterns/patterns.js} +0 -0
  781. /package/src/utils/{private → private.focus}/focus-manager.js +0 -0
  782. /package/src/utils/{private → private.get-emits-object}/get-emits-object.js +0 -0
  783. /package/src/utils/{private → private.global}/global-config.js +0 -0
  784. /package/src/utils/{private → private.inject-obj-prop}/inject-obj-prop.js +0 -0
  785. /package/src/utils/{private → private.keyboard}/key-composition.js +0 -0
  786. /package/src/utils/{private → private.noop-ssr-directive-transform}/noop-ssr-directive-transform.js +0 -0
  787. /package/src/utils/{private → private.option-sizes}/option-sizes.js +0 -0
  788. /package/src/utils/{private → private.render}/render.js +0 -0
  789. /package/src/utils/{private → private.rtl}/rtl.js +0 -0
  790. /package/src/utils/{private → private.sort}/sort.js +0 -0
  791. /package/src/utils/{private → private.touch}/touch.js +0 -0
  792. /package/src/utils/{private → private.vm}/vm.js +0 -0
  793. /package/src/utils/{run-sequential-promises.js → run-sequential-promises/run-sequential-promises.js} +0 -0
  794. /package/src/utils/{throttle.js → throttle/throttle.js} +0 -0
  795. /package/src/utils/{uid.js → uid/uid.js} +0 -0
@@ -0,0 +1,1264 @@
1
+ import { mount, flushPromises } from '@vue/test-utils'
2
+ import {
3
+ describe, test, expect, vi,
4
+ beforeEach, afterEach, onTestFinished
5
+ } from 'vitest'
6
+
7
+ import QDialog from './QDialog.js'
8
+ import { getRouter } from 'testing/runtime/router.js'
9
+ import DialogWrapper from './test/DialogWrapper.vue'
10
+
11
+ let wrapper = null
12
+
13
+ beforeEach(() => {
14
+ vi.useFakeTimers()
15
+
16
+ if (wrapper !== null) {
17
+ wrapper.unmount()
18
+ wrapper = null
19
+ }
20
+ })
21
+
22
+ afterEach(() => {
23
+ vi.clearAllTimers()
24
+ vi.restoreAllMocks()
25
+ })
26
+
27
+ async function triggerBackdropClick (wrapper) {
28
+ await wrapper.findComponent({ name: 'QPortal' })
29
+ .find('.q-dialog__backdrop')
30
+ .trigger('click')
31
+ }
32
+
33
+ async function triggerEscKey (wrapper) {
34
+ const portal = await wrapper.findComponent({ name: 'QPortal' })
35
+ await portal.trigger('keydown', { keyCode: 27 })
36
+ await portal.trigger('keyup', { keyCode: 27 })
37
+ }
38
+
39
+ function createFocusEl () {
40
+ const el = document.createElement('div')
41
+ el.setAttribute('tabindex', '0')
42
+ document.body.appendChild(el)
43
+
44
+ onTestFinished(() => { el.remove() })
45
+
46
+ return el
47
+ }
48
+
49
+ describe('[QDialog API]', () => {
50
+ describe('[Props]', () => {
51
+ describe('[(prop)transition-show]', () => {
52
+ test('is defined correctly', () => {
53
+ expect(QDialog.props.transitionShow).toBeDefined()
54
+ })
55
+
56
+ test('type String has effect', async () => {
57
+ wrapper = mount(QDialog, {
58
+ props: {
59
+ modelValue: true,
60
+ transitionShow: 'flip'
61
+ }
62
+ })
63
+
64
+ await flushPromises()
65
+ const content = wrapper.findComponent({ name: 'QPortal' })
66
+
67
+ expect(
68
+ content.get('transition-stub[enterfromclass]')
69
+ .attributes('enterfromclass')
70
+ ).toBe('q-transition--flip-enter-from')
71
+ })
72
+ })
73
+
74
+ describe('[(prop)transition-hide]', () => {
75
+ test('is defined correctly', () => {
76
+ expect(QDialog.props.transitionHide).toBeDefined()
77
+ })
78
+
79
+ test('type String has effect', async () => {
80
+ wrapper = mount(QDialog, {
81
+ props: {
82
+ modelValue: true,
83
+ transitionHide: 'flip'
84
+ }
85
+ })
86
+
87
+ await flushPromises()
88
+ let content = wrapper.findComponent({ name: 'QPortal' })
89
+
90
+ expect(
91
+ content.get('transition-stub[enterfromclass]')
92
+ .attributes('enterfromclass')
93
+ ).toBe('q-transition--scale-enter-from')
94
+
95
+ wrapper.vm.hide()
96
+ await flushPromises()
97
+
98
+ content = wrapper.findComponent({ name: 'QPortal' })
99
+
100
+ expect(
101
+ content.get('transition-stub[leavefromclass]')
102
+ .attributes('leavefromclass')
103
+ ).toBe('q-transition--flip-leave-from')
104
+ })
105
+ })
106
+
107
+ describe('[(prop)transition-duration]', () => {
108
+ test('is defined correctly', () => {
109
+ expect(QDialog.props.transitionDuration).toBeDefined()
110
+ })
111
+
112
+ test.each([
113
+ [ 'String', '1000' ],
114
+ [ 'Number', 1000 ]
115
+ ])('type %s has effect', async (_, propVal) => {
116
+ const onShowFn = vi.fn()
117
+ wrapper = mount(QDialog, {
118
+ props: {
119
+ modelValue: true,
120
+ transitionDuration: propVal,
121
+ onShow: onShowFn
122
+ }
123
+ })
124
+
125
+ await flushPromises()
126
+ expect(onShowFn).not.toHaveBeenCalled()
127
+
128
+ vi.advanceTimersByTime(999)
129
+ expect(onShowFn).not.toHaveBeenCalled()
130
+
131
+ vi.advanceTimersByTime(1)
132
+ expect(onShowFn).toHaveBeenCalledTimes(1)
133
+ })
134
+ })
135
+
136
+ describe('[(prop)model-value]', () => {
137
+ test('is defined correctly', () => {
138
+ expect(QDialog.props.modelValue).toBeDefined()
139
+ })
140
+
141
+ test('type Boolean has effect', async () => {
142
+ wrapper = mount(QDialog, {
143
+ props: {
144
+ modelValue: false
145
+ }
146
+ })
147
+
148
+ expect(
149
+ wrapper.findComponent({ name: 'QPortal' })
150
+ .exists()
151
+ ).toBe(false)
152
+
153
+ await wrapper.setProps({ modelValue: true })
154
+ await flushPromises()
155
+ await vi.runAllTimers()
156
+
157
+ expect(
158
+ wrapper.findComponent({ name: 'QPortal' })
159
+ .exists()
160
+ ).toBe(true)
161
+ })
162
+ })
163
+
164
+ describe('[(prop)persistent]', () => {
165
+ test('is defined correctly', () => {
166
+ expect(QDialog.props.persistent).toBeDefined()
167
+ })
168
+
169
+ test.each([
170
+ [ 'Backdrop click', triggerBackdropClick ],
171
+ [ 'ESC key', triggerEscKey ]
172
+ ])('handles %s correctly', async (_, trigger) => {
173
+ wrapper = mount(QDialog, {
174
+ props: {
175
+ persistent: false
176
+ }
177
+ })
178
+
179
+ wrapper.vm.show()
180
+ await flushPromises()
181
+
182
+ await trigger(wrapper)
183
+
184
+ await flushPromises()
185
+ await vi.runAllTimers()
186
+
187
+ expect(
188
+ wrapper.findComponent({ name: 'QPortal' })
189
+ .exists()
190
+ ).toBe(false)
191
+
192
+ await wrapper.setProps({ persistent: true })
193
+
194
+ wrapper.vm.show()
195
+ await flushPromises()
196
+ await vi.runAllTimers()
197
+
198
+ await trigger(wrapper)
199
+
200
+ await flushPromises()
201
+ await vi.runAllTimers()
202
+
203
+ expect(
204
+ wrapper.findComponent({ name: 'QPortal' })
205
+ .exists()
206
+ ).toBe(true)
207
+ })
208
+ })
209
+
210
+ describe('[(prop)no-esc-dismiss]', () => {
211
+ test('is defined correctly', () => {
212
+ expect(QDialog.props.noEscDismiss).toBeDefined()
213
+ })
214
+
215
+ test('type Boolean has effect', async () => {
216
+ wrapper = mount(QDialog, {
217
+ props: {
218
+ noEscDismiss: false
219
+ }
220
+ })
221
+
222
+ wrapper.vm.show()
223
+ await flushPromises()
224
+
225
+ await triggerEscKey(wrapper)
226
+
227
+ await flushPromises()
228
+ await vi.runAllTimers()
229
+
230
+ expect(
231
+ wrapper.findComponent({ name: 'QPortal' })
232
+ .exists()
233
+ ).toBe(false)
234
+
235
+ await wrapper.setProps({ noEscDismiss: true })
236
+
237
+ wrapper.vm.show()
238
+ await flushPromises()
239
+ await vi.runAllTimers()
240
+
241
+ await triggerEscKey(wrapper)
242
+
243
+ await flushPromises()
244
+ await vi.runAllTimers()
245
+
246
+ expect(
247
+ wrapper.findComponent({ name: 'QPortal' })
248
+ .exists()
249
+ ).toBe(true)
250
+ })
251
+ })
252
+
253
+ describe('[(prop)no-backdrop-dismiss]', () => {
254
+ test('is defined correctly', () => {
255
+ expect(QDialog.props.noBackdropDismiss).toBeDefined()
256
+ })
257
+
258
+ test('type Boolean has effect', async () => {
259
+ wrapper = mount(QDialog, {
260
+ props: {
261
+ noBackdropDismiss: false
262
+ }
263
+ })
264
+
265
+ wrapper.vm.show()
266
+ await flushPromises()
267
+
268
+ await triggerBackdropClick(wrapper)
269
+
270
+ await flushPromises()
271
+ await vi.runAllTimers()
272
+
273
+ expect(
274
+ wrapper.findComponent({ name: 'QPortal' })
275
+ .exists()
276
+ ).toBe(false)
277
+
278
+ await wrapper.setProps({ noBackdropDismiss: true })
279
+
280
+ wrapper.vm.show()
281
+ await flushPromises()
282
+ await vi.runAllTimers()
283
+
284
+ await triggerBackdropClick(wrapper)
285
+
286
+ await flushPromises()
287
+ await vi.runAllTimers()
288
+
289
+ expect(
290
+ wrapper.findComponent({ name: 'QPortal' })
291
+ .exists()
292
+ ).toBe(true)
293
+ })
294
+ })
295
+
296
+ describe('[(prop)no-route-dismiss]', () => {
297
+ test('is defined correctly', () => {
298
+ expect(QDialog.props.noRouteDismiss).toBeDefined()
299
+ })
300
+
301
+ test('type Boolean has effect', async () => {
302
+ const router = await getRouter([ '/home', '/account' ])
303
+
304
+ wrapper = mount(QDialog, {
305
+ props: {
306
+ noRouteDismiss: true
307
+ },
308
+ global: {
309
+ plugins: [ router ]
310
+ }
311
+ })
312
+
313
+ wrapper.vm.show()
314
+ await flushPromises()
315
+ await vi.runAllTimers()
316
+
317
+ await router.push('/home')
318
+ await flushPromises()
319
+ await vi.runAllTimers()
320
+
321
+ expect(
322
+ wrapper.findComponent({ name: 'QPortal' })
323
+ .exists()
324
+ ).toBe(true)
325
+
326
+ await wrapper.setProps({ noRouteDismiss: false })
327
+ await flushPromises()
328
+
329
+ await router.push('/account')
330
+ await flushPromises()
331
+ await vi.runAllTimers()
332
+
333
+ expect(
334
+ wrapper.findComponent({ name: 'QPortal' })
335
+ .exists()
336
+ ).toBe(false)
337
+ })
338
+ })
339
+
340
+ describe('[(prop)auto-close]', () => {
341
+ test('is defined correctly', () => {
342
+ expect(QDialog.props.autoClose).toBeDefined()
343
+ })
344
+
345
+ test('type Boolean has effect', async () => {
346
+ wrapper = mount(DialogWrapper, {
347
+ props: {
348
+ autoClose: false
349
+ }
350
+ })
351
+
352
+ wrapper.findComponent({ name: 'QDialog' })
353
+ .vm.show()
354
+
355
+ await flushPromises()
356
+
357
+ await wrapper.findComponent({ name: 'QBtn' })
358
+ .trigger('click')
359
+
360
+ await flushPromises()
361
+ await vi.runAllTimers()
362
+
363
+ expect(
364
+ wrapper.findComponent({ name: 'QPortal' })
365
+ .exists()
366
+ ).toBe(true)
367
+
368
+ await wrapper.setProps({ autoClose: true })
369
+
370
+ wrapper.findComponent({ name: 'QDialog' })
371
+ .vm.show()
372
+
373
+ await flushPromises()
374
+ await vi.runAllTimers()
375
+
376
+ await wrapper.findComponent({ name: 'QBtn' })
377
+ .trigger('click')
378
+
379
+ await flushPromises()
380
+ await vi.runAllTimers()
381
+
382
+ expect(
383
+ wrapper.findComponent({ name: 'QPortal' })
384
+ .exists()
385
+ ).toBe(false)
386
+ })
387
+ })
388
+
389
+ describe('[(prop)seamless]', () => {
390
+ test('is defined correctly', () => {
391
+ expect(QDialog.props.seamless).toBeDefined()
392
+ })
393
+
394
+ test('type Boolean has effect', async () => {
395
+ wrapper = mount(QDialog, {
396
+ props: {
397
+ modelValue: true,
398
+ seamless: true
399
+ }
400
+ })
401
+
402
+ await flushPromises()
403
+ await vi.runAllTimers()
404
+
405
+ expect(
406
+ wrapper.findComponent({ name: 'QPortal' })
407
+ .get('.q-dialog')
408
+ .classes()
409
+ ).toContain('q-dialog--seamless')
410
+
411
+ await wrapper.setProps({ seamless: false })
412
+ await flushPromises()
413
+
414
+ expect(
415
+ wrapper.findComponent({ name: 'QPortal' })
416
+ .get('.q-dialog')
417
+ .classes()
418
+ ).not.toContain('q-dialog--seamless')
419
+ })
420
+ })
421
+
422
+ describe('[(prop)backdrop-filter]', () => {
423
+ test('is defined correctly', () => {
424
+ expect(QDialog.props.backdropFilter).toBeDefined()
425
+ })
426
+
427
+ // Commented because jsdom doesn't understand backdrop-filter
428
+
429
+ // test('type String has effect', async () => {
430
+ // const propVal = 'blur(4px)'
431
+ // wrapper = mount(QDialog, {
432
+ // props: {
433
+ // modelValue: true,
434
+ // backdropFilter: propVal
435
+ // }
436
+ // })
437
+
438
+ // await flushPromises()
439
+ // await vi.runAllTimers()
440
+
441
+ // expect(
442
+ // wrapper.findComponent({ name: 'QPortal' })
443
+ // .get('.q-dialog__backdrop')
444
+ // .$style('backdrop-filter')
445
+ // ).toBe(propVal)
446
+
447
+ // await wrapper.setProps({ backdropFilter: void 0 })
448
+ // await flushPromises()
449
+
450
+ // expect(
451
+ // wrapper.findComponent({ name: 'QPortal' })
452
+ // .get('.q-dialog__backdrop')
453
+ // .$style('backdrop-filter')
454
+ // ).toBeUndefined()
455
+ // })
456
+ })
457
+
458
+ describe('[(prop)maximized]', () => {
459
+ test('is defined correctly', () => {
460
+ expect(QDialog.props.maximized).toBeDefined()
461
+ })
462
+
463
+ test('type Boolean has effect', async () => {
464
+ wrapper = mount(QDialog, {
465
+ props: {
466
+ modelValue: true,
467
+ maximized: true
468
+ }
469
+ })
470
+
471
+ await flushPromises()
472
+ await vi.runAllTimers()
473
+
474
+ expect(
475
+ wrapper.findComponent({ name: 'QPortal' })
476
+ .get('.q-dialog__inner')
477
+ .classes()
478
+ ).toContain('q-dialog__inner--maximized')
479
+
480
+ await wrapper.setProps({ maximized: false })
481
+ await flushPromises()
482
+
483
+ expect(
484
+ wrapper.findComponent({ name: 'QPortal' })
485
+ .get('.q-dialog__inner')
486
+ .classes()
487
+ ).not.toContain('q-dialog__inner--maximized')
488
+ })
489
+ })
490
+
491
+ describe('[(prop)full-width]', () => {
492
+ test('is defined correctly', () => {
493
+ expect(QDialog.props.fullWidth).toBeDefined()
494
+ })
495
+
496
+ test('type Boolean has effect', async () => {
497
+ wrapper = mount(QDialog, {
498
+ props: {
499
+ modelValue: true,
500
+ fullWidth: true
501
+ }
502
+ })
503
+
504
+ await flushPromises()
505
+ await vi.runAllTimers()
506
+
507
+ expect(
508
+ wrapper.findComponent({ name: 'QPortal' })
509
+ .get('.q-dialog__inner')
510
+ .classes()
511
+ ).toContain('q-dialog__inner--fullwidth')
512
+
513
+ await wrapper.setProps({ fullWidth: false })
514
+ await flushPromises()
515
+
516
+ expect(
517
+ wrapper.findComponent({ name: 'QPortal' })
518
+ .get('.q-dialog__inner')
519
+ .classes()
520
+ ).not.toContain('q-dialog__inner--fullwidth')
521
+ })
522
+ })
523
+
524
+ describe('[(prop)full-height]', () => {
525
+ test('is defined correctly', () => {
526
+ expect(QDialog.props.fullHeight).toBeDefined()
527
+ })
528
+
529
+ test('type Boolean has effect', async () => {
530
+ wrapper = mount(QDialog, {
531
+ props: {
532
+ modelValue: true,
533
+ fullHeight: true
534
+ }
535
+ })
536
+
537
+ await flushPromises()
538
+ await vi.runAllTimers()
539
+
540
+ expect(
541
+ wrapper.findComponent({ name: 'QPortal' })
542
+ .get('.q-dialog__inner')
543
+ .classes()
544
+ ).toContain('q-dialog__inner--fullheight')
545
+
546
+ await wrapper.setProps({ fullHeight: false })
547
+ await flushPromises()
548
+
549
+ expect(
550
+ wrapper.findComponent({ name: 'QPortal' })
551
+ .get('.q-dialog__inner')
552
+ .classes()
553
+ ).not.toContain('q-dialog__inner--fullheight')
554
+ })
555
+ })
556
+
557
+ describe('[(prop)position]', () => {
558
+ test('is defined correctly', () => {
559
+ expect(QDialog.props.position).toBeDefined()
560
+ })
561
+
562
+ test('type String has effect', async () => {
563
+ wrapper = mount(QDialog, {
564
+ props: {
565
+ modelValue: true
566
+ }
567
+ })
568
+
569
+ await flushPromises()
570
+ await vi.runAllTimers()
571
+
572
+ const positionList = [ 'top', 'right', 'bottom', 'left' ]
573
+ const target = wrapper.findComponent({ name: 'QPortal' })
574
+ .get('.q-dialog__inner')
575
+
576
+ for (const position of positionList) {
577
+ await wrapper.setProps({ position })
578
+ await flushPromises()
579
+
580
+ const cls = target.classes()
581
+ expect(cls).toContain(`q-dialog__inner--${ position }`)
582
+ expect(cls).toContain(`fixed-${ position }`)
583
+ }
584
+ })
585
+ })
586
+
587
+ describe('[(prop)square]', () => {
588
+ test('is defined correctly', () => {
589
+ expect(QDialog.props.square).toBeDefined()
590
+ })
591
+
592
+ test('type Boolean has effect', async () => {
593
+ wrapper = mount(DialogWrapper, {
594
+ props: {
595
+ modelValue: true,
596
+ square: true
597
+ }
598
+ })
599
+
600
+ await flushPromises()
601
+ await vi.runAllTimers()
602
+
603
+ expect(
604
+ wrapper
605
+ .findComponent({ name: 'QCard' })
606
+ .get('.q-card')
607
+ .$computedStyle('border-radius')
608
+ ).toBe('0')
609
+
610
+ await wrapper.setProps({ square: false })
611
+ await flushPromises()
612
+
613
+ expect(
614
+ wrapper
615
+ .findComponent({ name: 'QCard' })
616
+ .get('.q-card')
617
+ .$computedStyle('border-radius')
618
+ ).not.toBe('0')
619
+ })
620
+ })
621
+
622
+ describe('[(prop)no-refocus]', () => {
623
+ test('is defined correctly', () => {
624
+ expect(QDialog.props.noRefocus).toBeDefined()
625
+ })
626
+
627
+ test('type Boolean has effect', async () => {
628
+ const el = createFocusEl()
629
+
630
+ el.focus()
631
+
632
+ wrapper = mount(QDialog)
633
+
634
+ wrapper.findComponent({ name: 'QDialog' })
635
+ .vm.show()
636
+
637
+ await flushPromises()
638
+ await vi.runAllTimers()
639
+
640
+ expect(
641
+ document.activeElement
642
+ ).not.toBe(
643
+ el
644
+ )
645
+
646
+ wrapper.findComponent({ name: 'QDialog' })
647
+ .vm.hide()
648
+
649
+ await flushPromises()
650
+ await vi.runAllTimers()
651
+
652
+ expect(
653
+ document.activeElement
654
+ ).toBe(
655
+ el
656
+ )
657
+
658
+ await wrapper.setProps({ noRefocus: true })
659
+
660
+ wrapper.findComponent({ name: 'QDialog' })
661
+ .vm.show()
662
+
663
+ await flushPromises()
664
+ await vi.runAllTimers()
665
+
666
+ wrapper.findComponent({ name: 'QDialog' })
667
+ .vm.hide()
668
+
669
+ await flushPromises()
670
+ await vi.runAllTimers()
671
+
672
+ expect(
673
+ document.activeElement
674
+ ).not.toBe(
675
+ el
676
+ )
677
+ })
678
+ })
679
+
680
+ describe('[(prop)no-focus]', () => {
681
+ test('is defined correctly', () => {
682
+ expect(QDialog.props.noFocus).toBeDefined()
683
+ })
684
+
685
+ test('type Boolean has effect', async () => {
686
+ const el = createFocusEl()
687
+
688
+ el.focus()
689
+
690
+ wrapper = mount(QDialog)
691
+
692
+ wrapper.findComponent({ name: 'QDialog' })
693
+ .vm.show()
694
+
695
+ await flushPromises()
696
+ await vi.runAllTimers()
697
+
698
+ expect(
699
+ document.activeElement
700
+ ).not.toBe(
701
+ el
702
+ )
703
+
704
+ wrapper.findComponent({ name: 'QDialog' })
705
+ .vm.hide()
706
+
707
+ await flushPromises()
708
+ await vi.runAllTimers()
709
+
710
+ expect(
711
+ document.activeElement
712
+ ).toBe(
713
+ el
714
+ )
715
+
716
+ await wrapper.setProps({ noFocus: true })
717
+
718
+ wrapper.findComponent({ name: 'QDialog' })
719
+ .vm.show()
720
+
721
+ await flushPromises()
722
+ await vi.runAllTimers()
723
+
724
+ expect(
725
+ document.activeElement
726
+ ).toBe(
727
+ el
728
+ )
729
+ })
730
+ })
731
+
732
+ describe('[(prop)no-shake]', () => {
733
+ test('is defined correctly', () => {
734
+ expect(QDialog.props.noShake).toBeDefined()
735
+ })
736
+
737
+ test('type Boolean has effect', async () => {
738
+ wrapper = mount(QDialog, {
739
+ props: {
740
+ modelValue: true,
741
+ noShake: true,
742
+ persistent: true
743
+ }
744
+ })
745
+
746
+ await flushPromises()
747
+ await vi.runAllTimers()
748
+
749
+ await triggerBackdropClick(wrapper)
750
+
751
+ await flushPromises()
752
+
753
+ expect(
754
+ wrapper.findComponent({ name: 'QPortal' })
755
+ .get('.q-dialog__inner')
756
+ .classes()
757
+ ).not.toContain('q-animate--scale')
758
+
759
+ await wrapper.setProps({ noShake: false })
760
+ await flushPromises()
761
+
762
+ await triggerBackdropClick(wrapper)
763
+
764
+ expect(
765
+ wrapper.findComponent({ name: 'QPortal' })
766
+ .get('.q-dialog__inner')
767
+ .classes()
768
+ ).toContain('q-animate--scale')
769
+ })
770
+ })
771
+
772
+ describe('[(prop)allow-focus-outside]', () => {
773
+ test('is defined correctly', () => {
774
+ expect(QDialog.props.allowFocusOutside).toBeDefined()
775
+ })
776
+
777
+ test('type Boolean has effect', async () => {
778
+ const el = createFocusEl()
779
+
780
+ wrapper = mount(QDialog, {
781
+ props: {
782
+ modelValue: true,
783
+ allowFocusOutside: false
784
+ }
785
+ })
786
+
787
+ await flushPromises()
788
+ await vi.runAllTimers()
789
+
790
+ el.focus()
791
+
792
+ await flushPromises()
793
+
794
+ expect(
795
+ document.activeElement
796
+ ).not.toBe(
797
+ el
798
+ )
799
+
800
+ await wrapper.setProps({ allowFocusOutside: true })
801
+ await flushPromises()
802
+
803
+ el.focus()
804
+
805
+ await flushPromises()
806
+ await vi.runAllTimers()
807
+
808
+ expect(
809
+ document.activeElement
810
+ ).toBe(
811
+ el
812
+ )
813
+ })
814
+ })
815
+ })
816
+
817
+ describe('[Slots]', () => {
818
+ describe('[(slot)default]', () => {
819
+ test('renders the content', async () => {
820
+ const slotContent = 'some-slot-content'
821
+ wrapper = mount(QDialog, {
822
+ props: {
823
+ modelValue: true
824
+ },
825
+ slots: {
826
+ default: () => slotContent
827
+ }
828
+ })
829
+
830
+ await flushPromises()
831
+ await vi.runAllTimers()
832
+
833
+ expect(
834
+ wrapper.findComponent({ name: 'QPortal' })
835
+ .html()
836
+ ).toContain(slotContent)
837
+ })
838
+ })
839
+ })
840
+
841
+ describe('[Events]', () => {
842
+ describe('[(event)update:model-value]', () => {
843
+ test('is defined correctly', () => {
844
+ expect(
845
+ QDialog.emits?.includes('update:modelValue')
846
+ ^ (QDialog.props?.[ 'onUpdate:modelValue' ] !== void 0)
847
+ ).toBe(1)
848
+ })
849
+
850
+ test('is emitting', async () => {
851
+ wrapper = mount(QDialog, {
852
+ props: {
853
+ modelValue: false,
854
+ 'onUpdate:modelValue': val => {
855
+ wrapper.setProps({ modelValue: val })
856
+ }
857
+ }
858
+ })
859
+
860
+ await flushPromises()
861
+ await vi.runAllTimers()
862
+
863
+ wrapper.findComponent({ name: 'QDialog' })
864
+ .vm.show()
865
+
866
+ await flushPromises()
867
+ await vi.runAllTimers()
868
+
869
+ const eventList = wrapper.emitted()
870
+ expect(eventList).toHaveProperty('update:modelValue')
871
+ expect(eventList[ 'update:modelValue' ]).toHaveLength(1)
872
+
873
+ const [ value ] = eventList[ 'update:modelValue' ][ 0 ]
874
+ expect(value).toBeTypeOf('boolean')
875
+ })
876
+ })
877
+
878
+ describe('[(event)show]', () => {
879
+ test('is defined correctly', () => {
880
+ expect(
881
+ QDialog.emits?.includes('show')
882
+ ^ (QDialog.props?.onShow !== void 0)
883
+ ).toBe(1)
884
+ })
885
+
886
+ test('is emitting', async () => {
887
+ wrapper = mount(QDialog)
888
+ const event = new MouseEvent('click')
889
+
890
+ await flushPromises()
891
+ await vi.runAllTimers()
892
+
893
+ wrapper.findComponent({ name: 'QDialog' })
894
+ .vm.show(event)
895
+
896
+ await flushPromises()
897
+ await vi.runAllTimers()
898
+
899
+ const eventList = wrapper.emitted()
900
+ expect(eventList).toHaveProperty('show')
901
+ expect(eventList.show).toHaveLength(1)
902
+
903
+ const [ evt ] = eventList.show[ 0 ]
904
+ expect(evt).toBe(evt)
905
+ })
906
+ })
907
+
908
+ describe('[(event)before-show]', () => {
909
+ test('is defined correctly', () => {
910
+ expect(
911
+ QDialog.emits?.includes('beforeShow')
912
+ ^ (QDialog.props?.onBeforeShow !== void 0)
913
+ ).toBe(1)
914
+ })
915
+
916
+ test('is emitting', async () => {
917
+ wrapper = mount(QDialog)
918
+ const event = new MouseEvent('click')
919
+
920
+ await flushPromises()
921
+ await vi.runAllTimers()
922
+
923
+ wrapper.findComponent({ name: 'QDialog' })
924
+ .vm.show(event)
925
+
926
+ await flushPromises()
927
+ await vi.runAllTimers()
928
+
929
+ const eventList = wrapper.emitted()
930
+ expect(eventList).toHaveProperty('beforeShow')
931
+ expect(eventList.beforeShow).toHaveLength(1)
932
+
933
+ const [ evt ] = eventList.beforeShow[ 0 ]
934
+ expect(evt).toBe(event)
935
+ })
936
+ })
937
+
938
+ describe('[(event)hide]', () => {
939
+ test('is defined correctly', () => {
940
+ expect(
941
+ QDialog.emits?.includes('hide')
942
+ ^ (QDialog.props?.onHide !== void 0)
943
+ ).toBe(1)
944
+ })
945
+
946
+ test('is emitting', async () => {
947
+ wrapper = mount(QDialog, {
948
+ props: {
949
+ modelValue: true,
950
+ 'onUpdate:modelValue': val => {
951
+ wrapper.setProps({ modelValue: val })
952
+ }
953
+ }
954
+ })
955
+ const event = new MouseEvent('click')
956
+
957
+ await flushPromises()
958
+ await vi.runAllTimers()
959
+
960
+ wrapper.findComponent({ name: 'QDialog' })
961
+ .vm.hide(event)
962
+
963
+ await flushPromises()
964
+ await vi.runAllTimers()
965
+
966
+ const eventList = wrapper.emitted()
967
+ expect(eventList).toHaveProperty('hide')
968
+ expect(eventList.hide).toHaveLength(1)
969
+
970
+ const [ evt ] = eventList.hide[ 0 ]
971
+ expect(evt).toBe(event)
972
+ })
973
+ })
974
+
975
+ describe('[(event)before-hide]', () => {
976
+ test('is defined correctly', () => {
977
+ expect(
978
+ QDialog.emits?.includes('beforeHide')
979
+ ^ (QDialog.props?.onBeforeHide !== void 0)
980
+ ).toBe(1)
981
+ })
982
+
983
+ test('is emitting', async () => {
984
+ wrapper = mount(QDialog, {
985
+ props: {
986
+ modelValue: true,
987
+ 'onUpdate:modelValue': val => {
988
+ wrapper.setProps({ modelValue: val })
989
+ }
990
+ }
991
+ })
992
+ const event = new MouseEvent('click')
993
+
994
+ await flushPromises()
995
+ await vi.runAllTimers()
996
+
997
+ wrapper.findComponent({ name: 'QDialog' })
998
+ .vm.hide(event)
999
+
1000
+ await flushPromises()
1001
+ await vi.runAllTimers()
1002
+
1003
+ const eventList = wrapper.emitted()
1004
+ expect(eventList).toHaveProperty('beforeHide')
1005
+ expect(eventList.beforeHide).toHaveLength(1)
1006
+
1007
+ const [ evt ] = eventList.beforeHide[ 0 ]
1008
+ expect(evt).toBe(event)
1009
+ })
1010
+ })
1011
+
1012
+ describe('[(event)shake]', () => {
1013
+ test('is defined correctly', () => {
1014
+ expect(
1015
+ QDialog.emits?.includes('shake')
1016
+ ^ (QDialog.props?.onShake !== void 0)
1017
+ ).toBe(1)
1018
+ })
1019
+
1020
+ test('is emitting', async () => {
1021
+ wrapper = mount(QDialog, {
1022
+ props: {
1023
+ modelValue: true,
1024
+ persistent: true
1025
+ }
1026
+ })
1027
+
1028
+ await flushPromises()
1029
+ await vi.runAllTimers()
1030
+
1031
+ await triggerEscKey(wrapper)
1032
+
1033
+ expect(
1034
+ wrapper.findComponent({ name: 'QPortal' })
1035
+ .get('.q-dialog__inner')
1036
+ .classes()
1037
+ ).toContain('q-animate--scale')
1038
+
1039
+ const eventList = wrapper.emitted()
1040
+ expect(eventList).toHaveProperty('shake')
1041
+ expect(eventList.shake).toHaveLength(1)
1042
+
1043
+ expect(eventList.shake[ 0 ]).toHaveLength(0)
1044
+ })
1045
+ })
1046
+
1047
+ describe('[(event)escape-key]', () => {
1048
+ test('is defined correctly', () => {
1049
+ expect(
1050
+ QDialog.emits?.includes('escapeKey')
1051
+ ^ (QDialog.props?.onEscapeKey !== void 0)
1052
+ ).toBe(1)
1053
+ })
1054
+
1055
+ test('is emitting', async () => {
1056
+ wrapper = mount(QDialog, {
1057
+ props: {
1058
+ modelValue: true
1059
+ }
1060
+ })
1061
+
1062
+ await flushPromises()
1063
+ await vi.runAllTimers()
1064
+
1065
+ await triggerEscKey(wrapper)
1066
+
1067
+ const eventList = wrapper.emitted()
1068
+ expect(eventList).toHaveProperty('escapeKey')
1069
+ expect(eventList.escapeKey).toHaveLength(1)
1070
+
1071
+ expect(eventList.escapeKey[ 0 ]).toHaveLength(0)
1072
+ })
1073
+ })
1074
+ })
1075
+
1076
+ describe('[Methods]', () => {
1077
+ describe('[(method)show]', () => {
1078
+ test('should be callable', async () => {
1079
+ wrapper = mount(QDialog)
1080
+
1081
+ expect(
1082
+ wrapper.findComponent({ name: 'QPortal' })
1083
+ .exists()
1084
+ ).toBe(false)
1085
+
1086
+ expect(
1087
+ wrapper.vm.show()
1088
+ ).toBeUndefined()
1089
+
1090
+ await flushPromises()
1091
+ await vi.runAllTimers()
1092
+
1093
+ expect(
1094
+ wrapper.findComponent({ name: 'QPortal' })
1095
+ .exists()
1096
+ ).toBe(true)
1097
+ })
1098
+ })
1099
+
1100
+ describe('[(method)hide]', () => {
1101
+ test('should be callable', async () => {
1102
+ wrapper = mount(QDialog, {
1103
+ props: {
1104
+ modelValue: true
1105
+ }
1106
+ })
1107
+
1108
+ await flushPromises()
1109
+ await vi.runAllTimers()
1110
+
1111
+ expect(
1112
+ wrapper.findComponent({ name: 'QPortal' })
1113
+ .exists()
1114
+ ).toBe(true)
1115
+
1116
+ expect(
1117
+ wrapper.vm.hide()
1118
+ ).toBeUndefined()
1119
+
1120
+ await flushPromises()
1121
+ await vi.runAllTimers()
1122
+
1123
+ expect(
1124
+ wrapper.findComponent({ name: 'QPortal' })
1125
+ .exists()
1126
+ ).toBe(false)
1127
+ })
1128
+ })
1129
+
1130
+ describe('[(method)toggle]', () => {
1131
+ test('should be callable', async () => {
1132
+ wrapper = mount(QDialog, {
1133
+ props: {
1134
+ modelValue: true
1135
+ }
1136
+ })
1137
+
1138
+ await flushPromises()
1139
+ await vi.runAllTimers()
1140
+
1141
+ expect(
1142
+ wrapper.findComponent({ name: 'QPortal' })
1143
+ .exists()
1144
+ ).toBe(true)
1145
+
1146
+ expect(
1147
+ wrapper.vm.toggle()
1148
+ ).toBeUndefined()
1149
+
1150
+ await flushPromises()
1151
+ await vi.runAllTimers()
1152
+
1153
+ expect(
1154
+ wrapper.findComponent({ name: 'QPortal' })
1155
+ .exists()
1156
+ ).toBe(false)
1157
+
1158
+ expect(
1159
+ wrapper.vm.toggle()
1160
+ ).toBeUndefined()
1161
+
1162
+ await flushPromises()
1163
+ await vi.runAllTimers()
1164
+
1165
+ expect(
1166
+ wrapper.findComponent({ name: 'QPortal' })
1167
+ .exists()
1168
+ ).toBe(true)
1169
+ })
1170
+ })
1171
+
1172
+ describe('[(method)focus]', () => {
1173
+ test('should focus with a selector', async () => {
1174
+ wrapper = mount(DialogWrapper, {
1175
+ props: {
1176
+ modelValue: true
1177
+ }
1178
+ })
1179
+
1180
+ await flushPromises()
1181
+ await vi.runAllTimers()
1182
+
1183
+ expect(
1184
+ wrapper.findComponent({ name: 'QDialog' })
1185
+ .vm.focus('.q-btn')
1186
+ ).toBeUndefined()
1187
+
1188
+ await flushPromises()
1189
+
1190
+ expect(
1191
+ document.activeElement
1192
+ ).toBe(
1193
+ wrapper.findComponent({ name: 'QBtn' }).element
1194
+ )
1195
+ })
1196
+
1197
+ test('should focus without a selector', async () => {
1198
+ wrapper = mount(DialogWrapper, {
1199
+ props: {
1200
+ modelValue: true
1201
+ }
1202
+ })
1203
+
1204
+ await flushPromises()
1205
+ await vi.runAllTimers()
1206
+
1207
+ expect(
1208
+ wrapper.findComponent({ name: 'QDialog' })
1209
+ .vm.focus()
1210
+ ).toBeUndefined()
1211
+
1212
+ await flushPromises()
1213
+
1214
+ expect(
1215
+ document.activeElement
1216
+ ).toBe(
1217
+ wrapper.findComponent({ name: 'QPortal' })
1218
+ .get('.q-dialog__inner').element
1219
+ )
1220
+ })
1221
+ })
1222
+
1223
+ describe('[(method)shake]', () => {
1224
+ test('should be callable', async () => {
1225
+ wrapper = mount(QDialog, {
1226
+ props: {
1227
+ modelValue: true
1228
+ }
1229
+ })
1230
+
1231
+ await flushPromises()
1232
+ await vi.runAllTimers()
1233
+
1234
+ wrapper.findComponent({ name: 'QDialog' })
1235
+ .vm.shake()
1236
+
1237
+ expect(
1238
+ wrapper.findComponent({ name: 'QPortal' })
1239
+ .get('.q-dialog__inner')
1240
+ .classes()
1241
+ ).toContain('q-animate--scale')
1242
+ })
1243
+ })
1244
+ })
1245
+
1246
+ describe('[Computed props]', () => {
1247
+ describe('[(computedProp)contentEl]', () => {
1248
+ test('should be exposed', async () => {
1249
+ wrapper = mount(QDialog, {
1250
+ props: {
1251
+ modelValue: true
1252
+ }
1253
+ })
1254
+
1255
+ await flushPromises()
1256
+ await vi.runAllTimers()
1257
+
1258
+ expect(
1259
+ wrapper.vm.contentEl
1260
+ ).toBeInstanceOf(Element)
1261
+ })
1262
+ })
1263
+ })
1264
+ })