quasar 2.19.3 → 2.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/dist/api/Lang.json +1 -1
  2. package/dist/api/QCarouselSlide.json +1 -1
  3. package/dist/api/QChatMessage.json +1 -1
  4. package/dist/api/QImg.json +1 -1
  5. package/dist/api/QParallax.json +1 -1
  6. package/dist/api/QRange.json +1 -1
  7. package/dist/api/QSlider.json +1 -1
  8. package/dist/api/QTimelineEntry.json +1 -1
  9. package/dist/api/QTree.json +1 -1
  10. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  11. package/dist/icon-set/eva-icons.umd.prod.js +2 -2
  12. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +5 -5
  13. package/dist/icon-set/fontawesome-v5.umd.prod.js +5 -5
  14. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +5 -5
  15. package/dist/icon-set/fontawesome-v6.umd.prod.js +5 -5
  16. package/dist/icon-set/fontawesome-v7-pro.umd.prod.js +1 -1
  17. package/dist/icon-set/fontawesome-v7.umd.prod.js +1 -1
  18. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  22. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  23. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  25. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  26. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  27. package/dist/icon-set/mdi-v3.umd.prod.js +5 -5
  28. package/dist/icon-set/mdi-v4.umd.prod.js +5 -5
  29. package/dist/icon-set/mdi-v5.umd.prod.js +5 -5
  30. package/dist/icon-set/mdi-v6.umd.prod.js +5 -5
  31. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
  34. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +5 -5
  35. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +5 -5
  36. package/dist/icon-set/svg-fontawesome-v7.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +5 -5
  39. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +5 -5
  40. package/dist/icon-set/svg-ionicons-v7.umd.prod.js +5 -5
  41. package/dist/icon-set/svg-ionicons-v8.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  44. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  45. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  46. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  47. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  48. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  49. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  50. package/dist/icon-set/svg-mdi-v6.umd.prod.js +5 -5
  51. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  52. package/dist/icon-set/svg-themify.umd.prod.js +2 -2
  53. package/dist/icon-set/themify.umd.prod.js +2 -2
  54. package/dist/lang/ar-TN.umd.prod.js +2 -2
  55. package/dist/lang/ar.umd.prod.js +2 -2
  56. package/dist/lang/az-Latn.umd.prod.js +2 -2
  57. package/dist/lang/bg.umd.prod.js +2 -2
  58. package/dist/lang/bn.umd.prod.js +2 -2
  59. package/dist/lang/bs-BA.umd.prod.js +2 -2
  60. package/dist/lang/ca.umd.prod.js +2 -2
  61. package/dist/lang/cs.umd.prod.js +2 -2
  62. package/dist/lang/da.umd.prod.js +2 -2
  63. package/dist/lang/de-CH.umd.prod.js +2 -2
  64. package/dist/lang/de-DE.umd.prod.js +2 -2
  65. package/dist/lang/de.umd.prod.js +2 -2
  66. package/dist/lang/el.umd.prod.js +2 -2
  67. package/dist/lang/en-GB.umd.prod.js +2 -2
  68. package/dist/lang/en-US.umd.prod.js +2 -2
  69. package/dist/lang/eo.umd.prod.js +2 -2
  70. package/dist/lang/es.umd.prod.js +2 -2
  71. package/dist/lang/et.umd.prod.js +2 -2
  72. package/dist/lang/eu.umd.prod.js +2 -2
  73. package/dist/lang/fa-IR.umd.prod.js +2 -2
  74. package/dist/lang/fa.umd.prod.js +2 -2
  75. package/dist/lang/fi.umd.prod.js +2 -2
  76. package/dist/lang/fr.umd.prod.js +2 -2
  77. package/dist/lang/gn.umd.prod.js +2 -2
  78. package/dist/lang/he.umd.prod.js +2 -2
  79. package/dist/lang/hi.umd.prod.js +2 -2
  80. package/dist/lang/hr.umd.prod.js +2 -2
  81. package/dist/lang/hu.umd.prod.js +2 -2
  82. package/dist/lang/id.umd.prod.js +2 -2
  83. package/dist/lang/is.umd.prod.js +2 -2
  84. package/dist/lang/it.umd.prod.js +2 -2
  85. package/dist/lang/ja.umd.prod.js +2 -2
  86. package/dist/lang/kk.umd.prod.js +2 -2
  87. package/dist/lang/km.umd.prod.js +2 -2
  88. package/dist/lang/ko-KR.umd.prod.js +1 -1
  89. package/dist/lang/kur-CKB.umd.prod.js +2 -2
  90. package/dist/lang/lt.umd.prod.js +2 -2
  91. package/dist/lang/lu.umd.prod.js +2 -2
  92. package/dist/lang/lv.umd.prod.js +2 -2
  93. package/dist/lang/mk.umd.prod.js +2 -2
  94. package/dist/lang/ml.umd.prod.js +2 -2
  95. package/dist/lang/mm.umd.prod.js +2 -2
  96. package/dist/lang/ms-MY.umd.prod.js +2 -2
  97. package/dist/lang/ms.umd.prod.js +2 -2
  98. package/dist/lang/my.umd.prod.js +2 -2
  99. package/dist/lang/nb-NO.umd.prod.js +2 -2
  100. package/dist/lang/nl.umd.prod.js +2 -2
  101. package/dist/lang/pl.umd.prod.js +2 -2
  102. package/dist/lang/pt-BR.umd.prod.js +2 -2
  103. package/dist/lang/pt.umd.prod.js +2 -2
  104. package/dist/lang/ro.umd.prod.js +2 -2
  105. package/dist/lang/ru.umd.prod.js +2 -2
  106. package/dist/lang/sk.umd.prod.js +2 -2
  107. package/dist/lang/sl.umd.prod.js +2 -2
  108. package/dist/lang/sm.umd.prod.js +2 -2
  109. package/dist/lang/sq.umd.prod.js +2 -2
  110. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  111. package/dist/lang/sr.umd.prod.js +2 -2
  112. package/dist/lang/sv.umd.prod.js +2 -2
  113. package/dist/lang/ta.umd.prod.js +2 -2
  114. package/dist/lang/th.umd.prod.js +2 -2
  115. package/dist/lang/tl.umd.prod.js +2 -2
  116. package/dist/lang/tr.umd.prod.js +2 -2
  117. package/dist/lang/ug.umd.prod.js +2 -2
  118. package/dist/lang/uk.umd.prod.js +2 -2
  119. package/dist/lang/ur-PK.umd.prod.js +2 -2
  120. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  121. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  122. package/dist/lang/vi.umd.prod.js +2 -2
  123. package/dist/lang/zh-CN.umd.prod.js +2 -2
  124. package/dist/lang/zh-TW.umd.prod.js +2 -2
  125. package/dist/quasar.client.js +2621 -2604
  126. package/dist/quasar.sass +1 -1
  127. package/dist/quasar.server.prod.cjs +11 -11
  128. package/dist/quasar.server.prod.js +25 -25
  129. package/dist/quasar.umd.js +2616 -2599
  130. package/dist/quasar.umd.prod.js +23 -23
  131. package/dist/types/api/dialog.d.ts +1 -1
  132. package/dist/types/api/qnotify.d.ts +1 -1
  133. package/dist/types/api/qpopupproxy.d.ts +1 -1
  134. package/dist/types/feature-flag.d.ts +2 -2
  135. package/dist/types/globals.d.ts +2 -2
  136. package/dist/types/icon-set.d.ts +16 -16
  137. package/dist/types/shim-icon-set.d.ts +1 -2
  138. package/dist/types/shim-lang.d.ts +1 -2
  139. package/dist/types/ts-helpers.d.ts +3 -3
  140. package/dist/types/tsconfig.json +1 -1
  141. package/dist/types/utils/scroll.d.ts +1 -1
  142. package/dist/types/utils.d.ts +2 -2
  143. package/dist/web-types/web-types.json +1 -1
  144. package/icon-set/bootstrap-icons.js +1 -1
  145. package/icon-set/eva-icons.js +22 -22
  146. package/icon-set/ionicons-v4.js +16 -16
  147. package/icon-set/svg-bootstrap-icons.js +1 -1
  148. package/icon-set/svg-eva-icons.js +22 -22
  149. package/icon-set/svg-fontawesome-v5.js +1 -1
  150. package/icon-set/svg-ionicons-v4.js +16 -16
  151. package/icon-set/svg-themify.js +7 -7
  152. package/icon-set/themify.js +7 -7
  153. package/lang/ar-TN.js +1 -1
  154. package/lang/ar.js +1 -1
  155. package/lang/az-Latn.js +1 -1
  156. package/lang/bg.js +1 -1
  157. package/lang/bn.js +1 -1
  158. package/lang/bs-BA.js +1 -1
  159. package/lang/ca.js +1 -1
  160. package/lang/cs.js +11 -6
  161. package/lang/da.js +1 -1
  162. package/lang/de-CH.js +1 -1
  163. package/lang/de-DE.js +1 -1
  164. package/lang/de.js +1 -1
  165. package/lang/el.js +1 -1
  166. package/lang/en-GB.js +1 -1
  167. package/lang/en-US.js +1 -1
  168. package/lang/eo.js +1 -1
  169. package/lang/es.js +1 -1
  170. package/lang/et.js +1 -1
  171. package/lang/eu.js +1 -1
  172. package/lang/fa-IR.js +1 -1
  173. package/lang/fa.js +1 -1
  174. package/lang/fi.js +1 -1
  175. package/lang/fr.js +1 -1
  176. package/lang/gn.js +1 -1
  177. package/lang/he.js +1 -1
  178. package/lang/hi.js +1 -1
  179. package/lang/hr.js +1 -1
  180. package/lang/hu.js +1 -1
  181. package/lang/id.js +1 -1
  182. package/lang/is.js +1 -1
  183. package/lang/it.js +1 -1
  184. package/lang/ja.js +1 -1
  185. package/lang/kk.js +1 -1
  186. package/lang/km.js +1 -1
  187. package/lang/kur-CKB.js +1 -1
  188. package/lang/lt.js +2 -2
  189. package/lang/lu.js +1 -1
  190. package/lang/lv.js +1 -1
  191. package/lang/mk.js +1 -1
  192. package/lang/ml.js +1 -1
  193. package/lang/mm.js +1 -1
  194. package/lang/ms-MY.js +1 -1
  195. package/lang/ms.js +1 -1
  196. package/lang/my.js +1 -1
  197. package/lang/nb-NO.js +1 -1
  198. package/lang/nl.js +1 -1
  199. package/lang/pl.js +1 -1
  200. package/lang/pt-BR.js +1 -1
  201. package/lang/pt.js +1 -1
  202. package/lang/ro.js +1 -1
  203. package/lang/ru.js +1 -1
  204. package/lang/sk.js +1 -1
  205. package/lang/sl.js +1 -1
  206. package/lang/sm.js +1 -1
  207. package/lang/sq.js +1 -1
  208. package/lang/sr-CYR.js +1 -1
  209. package/lang/sr.js +1 -1
  210. package/lang/sv.js +1 -1
  211. package/lang/ta.js +1 -1
  212. package/lang/th.js +1 -1
  213. package/lang/tl.js +1 -1
  214. package/lang/tr.js +1 -1
  215. package/lang/ug.js +1 -1
  216. package/lang/uk.js +1 -1
  217. package/lang/ur-PK.js +1 -1
  218. package/lang/uz-Cyrl.js +1 -1
  219. package/lang/uz-Latn.js +1 -1
  220. package/lang/vi.js +1 -1
  221. package/lang/zh-CN.js +1 -1
  222. package/lang/zh-TW.js +1 -1
  223. package/package.json +13 -17
  224. package/src/components/ajax-bar/QAjaxBar.js +22 -25
  225. package/src/components/avatar/QAvatar.js +3 -3
  226. package/src/components/avatar/QAvatar.test.js +2 -2
  227. package/src/components/badge/QBadge.js +9 -10
  228. package/src/components/badge/QBadge.test.js +2 -2
  229. package/src/components/banner/QBanner.js +6 -6
  230. package/src/components/banner/QBanner.test.js +2 -2
  231. package/src/components/bar/QBar.js +3 -3
  232. package/src/components/bar/QBar.test.js +2 -2
  233. package/src/components/breadcrumbs/QBreadcrumbs.js +5 -4
  234. package/src/components/breadcrumbs/QBreadcrumbs.test.js +3 -3
  235. package/src/components/breadcrumbs/QBreadcrumbsEl.js +4 -4
  236. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +2 -2
  237. package/src/components/btn/QBtn.js +39 -44
  238. package/src/components/btn/QBtn.test.js +2 -2
  239. package/src/components/btn/use-btn.js +34 -47
  240. package/src/components/btn/use-btn.test.js +5 -5
  241. package/src/components/btn-dropdown/QBtnDropdown.js +15 -16
  242. package/src/components/btn-group/QBtnGroup.js +3 -3
  243. package/src/components/btn-toggle/QBtnToggle.js +5 -9
  244. package/src/components/card/QCard.js +5 -5
  245. package/src/components/card/QCardActions.js +2 -2
  246. package/src/components/card/QCardSection.js +2 -2
  247. package/src/components/carousel/QCarousel.js +32 -38
  248. package/src/components/carousel/QCarouselControl.js +1 -1
  249. package/src/components/carousel/QCarouselSlide.js +1 -1
  250. package/src/components/carousel/QCarouselSlide.json +1 -1
  251. package/src/components/chat/QChatMessage.js +13 -14
  252. package/src/components/chat/QChatMessage.json +1 -1
  253. package/src/components/checkbox/QCheckbox.js +5 -5
  254. package/src/components/checkbox/use-checkbox.js +38 -50
  255. package/src/components/chip/QChip.js +26 -34
  256. package/src/components/chip/QChip.test.js +2 -2
  257. package/src/components/circular-progress/QCircularProgress.js +8 -11
  258. package/src/components/circular-progress/circular-progress.test.js +1 -1
  259. package/src/components/color/QColor.js +75 -98
  260. package/src/components/date/QDate.js +128 -140
  261. package/src/components/date/use-datetime.js +3 -6
  262. package/src/components/dialog/QDialog.js +44 -51
  263. package/src/components/dialog/QDialog.test.js +7 -7
  264. package/src/components/drawer/QDrawer.js +110 -152
  265. package/src/components/editor/QEditor.js +44 -37
  266. package/src/components/editor/editor-caret.js +27 -31
  267. package/src/components/editor/editor-utils.js +9 -5
  268. package/src/components/expansion-item/QExpansionItem.js +36 -48
  269. package/src/components/fab/QFab.js +11 -11
  270. package/src/components/fab/QFabAction.js +2 -4
  271. package/src/components/fab/use-fab.js +6 -7
  272. package/src/components/field/QField.js +2 -2
  273. package/src/components/file/QFile.js +26 -33
  274. package/src/components/footer/QFooter.js +40 -53
  275. package/src/components/form/QForm.js +37 -43
  276. package/src/components/form/QFormChildMixin.js +3 -3
  277. package/src/components/header/QHeader.js +35 -47
  278. package/src/components/icon/QIcon.js +19 -19
  279. package/src/components/img/QImg.js +24 -24
  280. package/src/components/img/QImg.json +3 -3
  281. package/src/components/infinite-scroll/QInfiniteScroll.js +38 -52
  282. package/src/components/inner-loading/QInnerLoading.js +3 -3
  283. package/src/components/input/QInput.js +53 -52
  284. package/src/components/input/use-mask.js +56 -54
  285. package/src/components/intersection/QIntersection.js +6 -8
  286. package/src/components/item/QItem.js +20 -30
  287. package/src/components/item/QItemLabel.js +5 -7
  288. package/src/components/item/QItemSection.js +6 -6
  289. package/src/components/item/QList.js +6 -6
  290. package/src/components/item/QList.test.js +2 -2
  291. package/src/components/knob/QKnob.js +39 -44
  292. package/src/components/layout/QLayout.js +30 -34
  293. package/src/components/linear-progress/QLinearProgress.js +14 -23
  294. package/src/components/markup-table/QMarkupTable.js +7 -9
  295. package/src/components/menu/QMenu.js +36 -37
  296. package/src/components/no-ssr/QNoSsr.js +1 -1
  297. package/src/components/option-group/QOptionGroup.js +5 -5
  298. package/src/components/page/QPage.js +16 -18
  299. package/src/components/page/QPageContainer.js +9 -9
  300. package/src/components/page-scroller/QPageScroller.js +11 -13
  301. package/src/components/page-sticky/use-page-sticky.js +18 -18
  302. package/src/components/pagination/QPagination.js +24 -26
  303. package/src/components/parallax/QParallax.js +15 -9
  304. package/src/components/parallax/QParallax.json +1 -1
  305. package/src/components/popup-edit/QPopupEdit.js +10 -13
  306. package/src/components/popup-proxy/QPopupProxy.js +5 -7
  307. package/src/components/pull-to-refresh/QPullToRefresh.js +15 -17
  308. package/src/components/radio/QRadio.js +24 -29
  309. package/src/components/range/QRange.js +33 -37
  310. package/src/components/rating/QRating.js +59 -61
  311. package/src/components/resize-observer/QResizeObserver.js +55 -62
  312. package/src/components/scroll-area/QScrollArea.js +32 -36
  313. package/src/components/scroll-observer/QScrollObserver.js +3 -3
  314. package/src/components/select/QSelect.js +208 -269
  315. package/src/components/separator/QSeparator.js +7 -10
  316. package/src/components/skeleton/QSkeleton.js +4 -4
  317. package/src/components/slide-item/QSlideItem.js +7 -7
  318. package/src/components/slide-transition/QSlideTransition.js +4 -4
  319. package/src/components/slider/QSlider.js +13 -16
  320. package/src/components/slider/use-slider.js +53 -81
  321. package/src/components/slider/use-slider.json +3 -3
  322. package/src/components/space/QSpace.test.js +1 -1
  323. package/src/components/spinner/QSpinner.test.js +2 -2
  324. package/src/components/spinner/QSpinnerAudio.test.js +2 -2
  325. package/src/components/spinner/QSpinnerBall.test.js +2 -2
  326. package/src/components/spinner/QSpinnerBars.test.js +2 -2
  327. package/src/components/spinner/QSpinnerBox.test.js +2 -2
  328. package/src/components/spinner/QSpinnerClock.test.js +2 -2
  329. package/src/components/spinner/QSpinnerComment.test.js +2 -2
  330. package/src/components/spinner/QSpinnerCube.test.js +2 -2
  331. package/src/components/spinner/QSpinnerDots.test.js +2 -2
  332. package/src/components/spinner/QSpinnerFacebook.test.js +2 -2
  333. package/src/components/spinner/QSpinnerGears.test.js +2 -2
  334. package/src/components/spinner/QSpinnerGrid.test.js +2 -2
  335. package/src/components/spinner/QSpinnerHearts.test.js +2 -2
  336. package/src/components/spinner/QSpinnerHourglass.test.js +2 -2
  337. package/src/components/spinner/QSpinnerInfinity.test.js +2 -2
  338. package/src/components/spinner/QSpinnerIos.test.js +2 -2
  339. package/src/components/spinner/QSpinnerOrbit.test.js +2 -2
  340. package/src/components/spinner/QSpinnerOval.test.js +2 -2
  341. package/src/components/spinner/QSpinnerPie.test.js +2 -2
  342. package/src/components/spinner/QSpinnerPuff.test.js +2 -2
  343. package/src/components/spinner/QSpinnerRadio.test.js +2 -2
  344. package/src/components/spinner/QSpinnerRings.test.js +2 -2
  345. package/src/components/spinner/QSpinnerTail.test.js +2 -2
  346. package/src/components/spinner/use-spinner.test.js +1 -1
  347. package/src/components/splitter/QSplitter.js +19 -21
  348. package/src/components/stepper/QStep.js +12 -14
  349. package/src/components/stepper/QStepper.js +13 -14
  350. package/src/components/stepper/StepHeader.js +34 -35
  351. package/src/components/tab-panels/QTabPanels.js +3 -3
  352. package/src/components/table/QTable.js +82 -100
  353. package/src/components/table/QTd.js +3 -3
  354. package/src/components/table/QTh.js +5 -6
  355. package/src/components/table/QTr.js +3 -3
  356. package/src/components/table/table-column-selection.js +4 -6
  357. package/src/components/table/table-filter.js +2 -2
  358. package/src/components/table/table-pagination.js +14 -20
  359. package/src/components/table/table-row-expand.js +3 -3
  360. package/src/components/table/table-row-selection.js +10 -20
  361. package/src/components/table/table-sort.js +7 -7
  362. package/src/components/tabs/QRouteTab.js +1 -1
  363. package/src/components/tabs/QTab.js +1 -1
  364. package/src/components/tabs/QTabs.js +82 -109
  365. package/src/components/tabs/use-tab.js +36 -38
  366. package/src/components/time/QTime.js +109 -132
  367. package/src/components/timeline/QTimeline.js +7 -4
  368. package/src/components/timeline/QTimelineEntry.js +7 -6
  369. package/src/components/timeline/QTimelineEntry.json +1 -1
  370. package/src/components/toggle/QToggle.js +6 -8
  371. package/src/components/toolbar/QToolbar.js +2 -2
  372. package/src/components/toolbar/QToolbar.test.js +2 -2
  373. package/src/components/toolbar/QToolbarTitle.js +2 -4
  374. package/src/components/toolbar/QToolbarTitle.test.js +2 -2
  375. package/src/components/tooltip/QTooltip.js +27 -28
  376. package/src/components/tree/QTree.js +96 -114
  377. package/src/components/tree/QTree.json +1 -1
  378. package/src/components/uploader/QUploaderAddTrigger.js +2 -2
  379. package/src/components/uploader/uploader-core.js +44 -51
  380. package/src/components/uploader/xhr-uploader-plugin.js +13 -17
  381. package/src/components/video/QVideo.js +1 -1
  382. package/src/components/video/QVideo.test.js +2 -2
  383. package/src/components/virtual-scroll/QVirtualScroll.js +9 -10
  384. package/src/components/virtual-scroll/use-virtual-scroll.js +42 -50
  385. package/src/composables/private.use-align/use-align.js +2 -2
  386. package/src/composables/private.use-align/use-align.test.js +1 -1
  387. package/src/composables/private.use-anchor/use-anchor.js +23 -32
  388. package/src/composables/private.use-dark/use-dark.test.js +1 -1
  389. package/src/composables/private.use-field/use-field.js +79 -99
  390. package/src/composables/private.use-file/use-file-dom-props.js +2 -2
  391. package/src/composables/private.use-file/use-file.js +27 -27
  392. package/src/composables/private.use-fullscreen/use-fullscreen.js +15 -20
  393. package/src/composables/private.use-history/use-history.js +2 -2
  394. package/src/composables/private.use-history/use-history.test.js +1 -1
  395. package/src/composables/private.use-key-composition/use-key-composition.js +11 -12
  396. package/src/composables/private.use-model-toggle/use-model-toggle.js +16 -25
  397. package/src/composables/private.use-panel/use-panel.js +25 -27
  398. package/src/composables/private.use-portal/use-portal.js +11 -9
  399. package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +1 -4
  400. package/src/composables/private.use-ratio/use-ratio.js +6 -5
  401. package/src/composables/private.use-ratio/use-ratio.test.js +1 -1
  402. package/src/composables/private.use-refocus-target/use-refocus-target.js +2 -4
  403. package/src/composables/private.use-router-link/use-router-link.js +44 -55
  404. package/src/composables/private.use-scroll-target/use-scroll-target.js +1 -1
  405. package/src/composables/private.use-size/use-size.test.js +1 -1
  406. package/src/composables/private.use-transition/use-transition.test.js +1 -1
  407. package/src/composables/private.use-validate/use-validate.js +23 -36
  408. package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +1 -1
  409. package/src/composables/use-form/private.use-form.js +1 -1
  410. package/src/composables/use-form/private.use-form.test.js +3 -3
  411. package/src/composables/use-form/use-form-child.js +7 -7
  412. package/src/composables/use-hydration/use-hydration.js +2 -2
  413. package/src/composables/use-hydration/use-hydration.test.js +1 -1
  414. package/src/composables/use-id/use-id.js +4 -8
  415. package/src/composables/use-id/use-id.test.js +1 -1
  416. package/src/composables/use-interval/use-interval.js +2 -2
  417. package/src/composables/use-interval/use-interval.test.js +1 -1
  418. package/src/composables/use-meta/use-meta.js +3 -3
  419. package/src/composables/use-quasar/use-quasar.test.js +1 -1
  420. package/src/composables/use-render-cache/use-render-cache.js +1 -1
  421. package/src/composables/use-render-cache/use-render-cache.test.js +1 -1
  422. package/src/composables/use-split-attrs/use-split-attrs.js +3 -7
  423. package/src/composables/use-split-attrs/use-split-attrs.test.js +1 -1
  424. package/src/composables/use-tick/use-tick.js +3 -3
  425. package/src/composables/use-tick/use-tick.test.js +2 -2
  426. package/src/composables/use-timeout/use-timeout.js +2 -2
  427. package/src/composables/use-timeout/use-timeout.test.js +1 -1
  428. package/src/directives/close-popup/ClosePopup.js +4 -9
  429. package/src/directives/intersection/Intersection.js +5 -8
  430. package/src/directives/morph/Morph.js +12 -18
  431. package/src/directives/ripple/Ripple.js +19 -26
  432. package/src/directives/ripple/Ripple.test.js +2 -2
  433. package/src/directives/scroll/Scroll.js +2 -2
  434. package/src/directives/touch-hold/TouchHold.js +22 -28
  435. package/src/directives/touch-pan/TouchPan.js +68 -84
  436. package/src/directives/touch-repeat/TouchRepeat.js +28 -39
  437. package/src/directives/touch-swipe/TouchSwipe.js +30 -33
  438. package/src/index.ssr.js +2 -0
  439. package/src/index.umd.js +2 -0
  440. package/src/install-quasar.js +9 -9
  441. package/src/plugins/addressbar/AddressbarColor.js +9 -9
  442. package/src/plugins/addressbar/AddressbarColor.test.js +2 -2
  443. package/src/plugins/app-fullscreen/AppFullscreen.js +11 -10
  444. package/src/plugins/app-fullscreen/AppFullscreen.test.js +2 -2
  445. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +2 -2
  446. package/src/plugins/app-visibility/AppVisibility.js +5 -5
  447. package/src/plugins/app-visibility/AppVisibility.test.js +2 -2
  448. package/src/plugins/bottom-sheet/BottomSheet.js +2 -2
  449. package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +4 -4
  450. package/src/plugins/cookies/Cookies.js +50 -62
  451. package/src/plugins/dark/Dark.js +3 -5
  452. package/src/plugins/dark/Dark.test.js +1 -1
  453. package/src/plugins/dialog/Dialog.js +2 -2
  454. package/src/plugins/dialog/component/DialogPluginComponent.js +17 -20
  455. package/src/plugins/icon-set/IconSet.js +2 -4
  456. package/src/plugins/icon-set/IconSet.test.js +1 -1
  457. package/src/plugins/lang/Lang.js +7 -10
  458. package/src/plugins/lang/Lang.json +2 -2
  459. package/src/plugins/lang/Lang.test.js +2 -2
  460. package/src/plugins/loading/Loading.js +10 -12
  461. package/src/plugins/loading-bar/LoadingBar.js +4 -4
  462. package/src/plugins/meta/Meta.js +10 -11
  463. package/src/plugins/notify/Notify.js +67 -72
  464. package/src/plugins/platform/Platform.js +19 -21
  465. package/src/plugins/platform/Platform.test.js +1 -1
  466. package/src/plugins/private.body/Body.js +23 -29
  467. package/src/plugins/private.body/Body.test.js +1 -1
  468. package/src/plugins/private.history/History.js +17 -25
  469. package/src/plugins/private.history/History.test.js +1 -1
  470. package/src/plugins/screen/Screen.js +16 -16
  471. package/src/plugins/screen/Screen.test.js +1 -1
  472. package/src/plugins/storage/LocalStorage.js +3 -4
  473. package/src/plugins/storage/LocalStorage.test.js +2 -2
  474. package/src/plugins/storage/SessionStorage.js +3 -4
  475. package/src/plugins/storage/SessionStorage.test.js +2 -2
  476. package/src/plugins/storage/engine/web-storage.js +30 -23
  477. package/src/plugins/storage/engine/web-storage.test.js +1 -1
  478. package/src/utils/EventBus/EventBus.js +3 -4
  479. package/src/utils/EventBus/EventBus.test.js +1 -1
  480. package/src/utils/clone/clone.test.js +4 -8
  481. package/src/utils/colors/colors.js +38 -29
  482. package/src/utils/colors/colors.test.js +2 -2
  483. package/src/utils/copy-to-clipboard/copy-to-clipboard.js +6 -11
  484. package/src/utils/create-meta-mixin/create-meta-mixin.js +2 -2
  485. package/src/utils/create-uploader-component/create-uploader-component.js +12 -7
  486. package/src/utils/css-var/get-css-var.test.js +2 -2
  487. package/src/utils/css-var/set-css-var.test.js +2 -2
  488. package/src/utils/date/date.js +229 -172
  489. package/src/utils/date/private.persian.js +11 -11
  490. package/src/utils/debounce/debounce.js +3 -7
  491. package/src/utils/debounce/debounce.test.js +1 -1
  492. package/src/utils/dom/dom.js +2 -4
  493. package/src/utils/dom/dom.test.js +4 -4
  494. package/src/utils/event/event.js +21 -23
  495. package/src/utils/export-file/export-file.js +3 -3
  496. package/src/utils/extend/extend.js +15 -14
  497. package/src/utils/extend/extend.test.js +2 -2
  498. package/src/utils/format/format.js +4 -10
  499. package/src/utils/format/format.test.js +1 -1
  500. package/src/utils/frame-debounce/frame-debounce.js +23 -12
  501. package/src/utils/frame-debounce/frame-debounce.test.js +1 -1
  502. package/src/utils/is/is.js +15 -26
  503. package/src/utils/is/is.test.js +8 -7
  504. package/src/utils/morph/morph.js +57 -48
  505. package/src/utils/open-url/open-url.js +7 -7
  506. package/src/utils/patterns/patterns.js +26 -23
  507. package/src/utils/patterns/patterns.test.js +1 -1
  508. package/src/utils/private.click-outside/click-outside.js +5 -5
  509. package/src/utils/private.config/instance-config.js +2 -0
  510. package/src/utils/private.config/instance-config.test.js +4 -4
  511. package/src/utils/private.config/nodes.js +5 -5
  512. package/src/utils/private.config/nodes.test.js +4 -4
  513. package/src/utils/private.create/create.test.js +1 -1
  514. package/src/utils/private.dialog/create-dialog.js +9 -12
  515. package/src/utils/private.focus/focus-manager.js +5 -1
  516. package/src/utils/private.focus/focus-manager.test.js +4 -4
  517. package/src/utils/private.focus/focusout.js +2 -2
  518. package/src/utils/private.focus/focusout.test.js +1 -1
  519. package/src/utils/private.get-emits-object/get-emits-object.test.js +1 -1
  520. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +2 -2
  521. package/src/utils/private.keyboard/escape-key.js +5 -5
  522. package/src/utils/private.keyboard/escape-key.test.js +1 -1
  523. package/src/utils/private.keyboard/key-composition.js +4 -6
  524. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.js +3 -1
  525. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.test.js +1 -1
  526. package/src/utils/private.portal/portal.js +5 -5
  527. package/src/utils/private.position-engine/position-engine.js +20 -22
  528. package/src/utils/private.render/render.js +5 -7
  529. package/src/utils/private.render/render.test.js +5 -5
  530. package/src/utils/private.rtl/rtl.js +3 -2
  531. package/src/utils/private.rtl/rtl.test.js +1 -1
  532. package/src/utils/private.selection/selection.js +1 -1
  533. package/src/utils/private.selection/selection.test.js +2 -2
  534. package/src/utils/private.sort/sort.test.js +2 -2
  535. package/src/utils/private.touch/touch.js +10 -14
  536. package/src/utils/private.touch/touch.test.js +1 -1
  537. package/src/utils/private.vm/vm.js +2 -2
  538. package/src/utils/private.vm/vm.test.js +4 -4
  539. package/src/utils/run-sequential-promises/run-sequential-promises.js +44 -54
  540. package/src/utils/run-sequential-promises/run-sequential-promises.test.js +183 -0
  541. package/src/utils/scroll/prevent-scroll.js +9 -9
  542. package/src/utils/scroll/scroll.js +11 -12
  543. package/src/utils/throttle/throttle.js +4 -3
  544. package/src/utils/throttle/throttle.test.js +1 -1
  545. package/src/utils/uid/uid.js +51 -77
  546. package/src/utils/uid/uid.test.js +3 -3
  547. package/wrappers/index.cjs +2 -2
  548. package/wrappers/index.js +2 -2
  549. package/dist/vetur/quasar-attributes.json +0 -1
  550. package/dist/vetur/quasar-tags.json +0 -1
@@ -1,4 +1,4 @@
1
- import { h, computed } from 'vue'
1
+ import { computed, h } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
 
@@ -33,9 +33,9 @@ export default createComponent({
33
33
  'q-avatar' +
34
34
  (props.color ? ` bg-${props.color}` : '') +
35
35
  (props.textColor ? ` text-${props.textColor} q-chip--colored` : '') +
36
- (props.square === true
36
+ (props.square
37
37
  ? ' q-avatar--square'
38
- : props.rounded === true
38
+ : props.rounded
39
39
  ? ' rounded-borders'
40
40
  : '')
41
41
  )
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test } from 'vitest'
3
3
 
4
4
  import QAvatar from './QAvatar.js'
5
5
  import { useSizeDefaults } from 'quasar/src/composables/private.use-size/use-size.js'
@@ -1,4 +1,4 @@
1
- import { h, computed } from 'vue'
1
+ import { computed, h } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private.create/create.js'
4
4
  import { hMergeSlot } from '../../utils/private.render/render.js'
@@ -32,23 +32,22 @@ export default createComponent({
32
32
  )
33
33
 
34
34
  const classes = computed(() => {
35
- const text =
36
- props.outline === true
37
- ? props.color || props.textColor
38
- : props.textColor
35
+ const text = props.outline
36
+ ? props.color || props.textColor
37
+ : props.textColor
39
38
 
40
39
  return (
41
40
  'q-badge flex inline items-center no-wrap' +
42
- ` q-badge--${props.multiLine === true ? 'multi' : 'single'}-line` +
43
- (props.outline === true
41
+ ` q-badge--${props.multiLine ? 'multi' : 'single'}-line` +
42
+ (props.outline
44
43
  ? ' q-badge--outline'
45
44
  : props.color !== void 0
46
45
  ? ` bg-${props.color}`
47
46
  : '') +
48
47
  (text !== void 0 ? ` text-${text}` : '') +
49
- (props.floating === true ? ' q-badge--floating' : '') +
50
- (props.rounded === true ? ' q-badge--rounded' : '') +
51
- (props.transparent === true ? ' q-badge--transparent' : '')
48
+ (props.floating ? ' q-badge--floating' : '') +
49
+ (props.rounded ? ' q-badge--rounded' : '') +
50
+ (props.transparent ? ' q-badge--transparent' : '')
52
51
  )
53
52
  })
54
53
 
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test } from 'vitest'
3
3
 
4
4
  import QBadge from './QBadge.js'
5
5
 
@@ -1,4 +1,4 @@
1
- import { h, computed, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance, h } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private.create/create.js'
4
4
  import useDark, {
@@ -27,15 +27,15 @@ export default createComponent({
27
27
  const classes = computed(
28
28
  () =>
29
29
  'q-banner row items-center' +
30
- (props.dense === true ? ' q-banner--dense' : '') +
31
- (isDark.value === true ? ' q-banner--dark q-dark' : '') +
32
- (props.rounded === true ? ' rounded-borders' : '')
30
+ (props.dense ? ' q-banner--dense' : '') +
31
+ (isDark.value ? ' q-banner--dark q-dark' : '') +
32
+ (props.rounded ? ' rounded-borders' : '')
33
33
  )
34
34
 
35
35
  const actionClass = computed(
36
36
  () =>
37
37
  'q-banner__actions row items-center justify-end' +
38
- ` col-${props.inlineActions === true ? 'auto' : 'all'}`
38
+ ` col-${props.inlineActions ? 'auto' : 'all'}`
39
39
  )
40
40
 
41
41
  return () => {
@@ -67,7 +67,7 @@ export default createComponent({
67
67
  {
68
68
  class:
69
69
  classes.value +
70
- (props.inlineActions === false && actions !== void 0
70
+ (!props.inlineActions && actions !== void 0
71
71
  ? ' q-banner--top-padding'
72
72
  : ''),
73
73
  role: 'alert'
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test } from 'vitest'
3
3
 
4
4
  import QBanner from './QBanner.js'
5
5
 
@@ -1,4 +1,4 @@
1
- import { h, computed, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance, h } from 'vue'
2
2
 
3
3
  import useDark, {
4
4
  useDarkProps
@@ -24,8 +24,8 @@ export default createComponent({
24
24
  const classes = computed(
25
25
  () =>
26
26
  'q-bar row no-wrap items-center' +
27
- ` q-bar--${props.dense === true ? 'dense' : 'standard'} ` +
28
- ` q-bar--${isDark.value === true ? 'dark' : 'light'}`
27
+ ` q-bar--${props.dense ? 'dense' : 'standard'} ` +
28
+ ` q-bar--${isDark.value ? 'dark' : 'light'}`
29
29
  )
30
30
 
31
31
  return () =>
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test } from 'vitest'
3
3
 
4
4
  import QBar from './QBar.js'
5
5
 
@@ -1,4 +1,4 @@
1
- import { h, computed } from 'vue'
1
+ import { computed, h } from 'vue'
2
2
 
3
3
  import useAlign, {
4
4
  useAlignProps
@@ -66,9 +66,10 @@ export default createComponent({
66
66
  const middle = els < len
67
67
  const disabled =
68
68
  comp.props !== null && disabledValues.includes(comp.props.disable)
69
+
69
70
  const cls =
70
- (middle === true ? '' : ' q-breadcrumbs--last') +
71
- (disabled !== true && middle === true ? activeClass.value : '')
71
+ (middle ? '' : ' q-breadcrumbs--last') +
72
+ (!disabled && middle ? activeClass.value : '')
72
73
 
73
74
  els++
74
75
 
@@ -82,7 +83,7 @@ export default createComponent({
82
83
  )
83
84
  )
84
85
 
85
- if (middle === true) {
86
+ if (middle) {
86
87
  child.push(
87
88
  h(
88
89
  'div',
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test } from 'vitest'
3
3
 
4
4
  // import QBreadcrumbs from './QBreadcrumbs.js'
5
5
 
@@ -64,7 +64,7 @@ describe('[QBreadcrumbs API]', () => {
64
64
  await flushPromises()
65
65
 
66
66
  expect(wrapper.get('.q-breadcrumbs > div').classes()).toSatisfy(list =>
67
- list.every(cls => cls.startsWith('q-gutter') === false)
67
+ list.every(cls => !cls.startsWith('q-gutter'))
68
68
  )
69
69
  })
70
70
 
@@ -1,4 +1,4 @@
1
- import { h, computed } from 'vue'
1
+ import { computed, h } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
 
@@ -32,9 +32,9 @@ export default createComponent({
32
32
  class:
33
33
  'q-breadcrumbs__el q-link ' +
34
34
  'flex inline items-center relative-position ' +
35
- (props.disable !== true
36
- ? 'q-link--focusable' + linkClass.value
37
- : 'q-breadcrumbs__el--disable'),
35
+ (props.disable
36
+ ? 'q-breadcrumbs__el--disable'
37
+ : 'q-link--focusable' + linkClass.value),
38
38
  ...linkAttrs.value,
39
39
  onClick: navigateOnClick
40
40
  }))
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect, vi } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test, vi } from 'vitest'
3
3
 
4
4
  import QBreadcrumbsEl from './QBreadcrumbsEl.js'
5
5
  import { getRouter } from 'testing/runtime/router.js'
@@ -1,11 +1,11 @@
1
1
  import {
2
- h,
3
- ref,
4
- computed,
5
2
  Transition,
3
+ computed,
4
+ getCurrentInstance,
5
+ h,
6
6
  onBeforeUnmount,
7
- withDirectives,
8
- getCurrentInstance
7
+ ref,
8
+ withDirectives
9
9
  } from 'vue'
10
10
 
11
11
  import QIcon from '../icon/QIcon.js'
@@ -18,10 +18,10 @@ import useBtn, { useBtnProps } from './use-btn.js'
18
18
  import { createComponent } from '../../utils/private.create/create.js'
19
19
  import { hMergeSlot } from '../../utils/private.render/render.js'
20
20
  import {
21
- stop,
21
+ listenOpts,
22
22
  prevent,
23
- stopAndPrevent,
24
- listenOpts
23
+ stop,
24
+ stopAndPrevent
25
25
  } from '../../utils/event/event.js'
26
26
  import { isKeyCode } from '../../utils/private.keyboard/key-composition.js'
27
27
 
@@ -31,6 +31,11 @@ let touchTarget = null,
31
31
  keyboardTarget = null,
32
32
  mouseTarget = null
33
33
 
34
+ function onLoadingEvt(evt) {
35
+ stopAndPrevent(evt)
36
+ evt.qSkipRipple = true
37
+ }
38
+
34
39
  export default createComponent({
35
40
  name: 'QBtn',
36
41
 
@@ -71,10 +76,10 @@ export default createComponent({
71
76
  )
72
77
 
73
78
  const ripple = computed(() =>
74
- props.disable === true || props.ripple === false
79
+ props.disable || props.ripple === false
75
80
  ? false
76
81
  : {
77
- keyCodes: hasLink.value === true ? [13, 32] : [13],
82
+ keyCodes: hasLink.value ? [13, 32] : [13],
78
83
  ...(props.ripple === true ? {} : props.ripple)
79
84
  }
80
85
  )
@@ -92,7 +97,7 @@ export default createComponent({
92
97
  })
93
98
 
94
99
  const onEvents = computed(() => {
95
- if (props.loading === true) {
100
+ if (props.loading) {
96
101
  return {
97
102
  onMousedown: onLoadingEvt,
98
103
  onTouchstart: onLoadingEvt,
@@ -102,14 +107,14 @@ export default createComponent({
102
107
  }
103
108
  }
104
109
 
105
- if (isActionable.value === true) {
110
+ if (isActionable.value) {
106
111
  const acc = {
107
112
  onClick,
108
113
  onKeydown,
109
114
  onMousedown
110
115
  }
111
116
 
112
- if (proxy.$q.platform.has.touch === true) {
117
+ if (proxy.$q.platform.has.touch) {
113
118
  const suffix = props.onTouchstart !== void 0 ? '' : 'Passive'
114
119
 
115
120
  acc[`onTouchstart${suffix}`] = onTouchstart
@@ -137,7 +142,7 @@ export default createComponent({
137
142
  if (rootRef.value === null) return
138
143
 
139
144
  if (e !== void 0) {
140
- if (e.defaultPrevented === true) return
145
+ if (e.defaultPrevented) return
141
146
 
142
147
  const el = document.activeElement
143
148
  // focus button if it came from ENTER on form
@@ -145,11 +150,11 @@ export default createComponent({
145
150
  if (
146
151
  props.type === 'submit' &&
147
152
  el !== document.body &&
148
- rootRef.value.contains(el) === false &&
153
+ !rootRef.value.contains(el) &&
149
154
  // required for iOS and desktop Safari
150
- el.contains(rootRef.value) === false
155
+ !el.contains(rootRef.value)
151
156
  ) {
152
- if (e.qAvoidFocus !== true) rootRef.value.focus()
157
+ if (!e.qAvoidFocus) rootRef.value.focus()
153
158
 
154
159
  const onClickCleanup = () => {
155
160
  document.removeEventListener('keydown', stopAndPrevent, true)
@@ -180,12 +185,12 @@ export default createComponent({
180
185
 
181
186
  emit('keydown', e)
182
187
 
183
- if (isKeyCode(e, [13, 32]) === true && keyboardTarget !== rootRef.value) {
188
+ if (isKeyCode(e, [13, 32]) && keyboardTarget !== rootRef.value) {
184
189
  if (keyboardTarget !== null) cleanup()
185
190
 
186
- if (e.defaultPrevented !== true) {
191
+ if (!e.defaultPrevented) {
187
192
  // focus external button if the focus helper was focused before
188
- if (e.qAvoidFocus !== true) rootRef.value.focus()
193
+ if (!e.qAvoidFocus) rootRef.value.focus()
189
194
 
190
195
  keyboardTarget = rootRef.value
191
196
  rootRef.value.classList.add('q-btn--active')
@@ -203,7 +208,7 @@ export default createComponent({
203
208
 
204
209
  emit('touchstart', e)
205
210
 
206
- if (e.defaultPrevented === true) return
211
+ if (e.defaultPrevented) return
207
212
 
208
213
  if (touchTarget !== rootRef.value) {
209
214
  if (touchTarget !== null) cleanup()
@@ -239,7 +244,7 @@ export default createComponent({
239
244
  e.qSkipRipple = avoidMouseRipple === true
240
245
  emit('mousedown', e)
241
246
 
242
- if (e.defaultPrevented !== true && mouseTarget !== rootRef.value) {
247
+ if (!e.defaultPrevented && mouseTarget !== rootRef.value) {
243
248
  if (mouseTarget !== null) cleanup()
244
249
  mouseTarget = rootRef.value
245
250
  rootRef.value.classList.add('q-btn--active')
@@ -255,15 +260,12 @@ export default createComponent({
255
260
  if (e?.type === 'blur' && document.activeElement === rootRef.value) return
256
261
 
257
262
  if (e?.type === 'keyup') {
258
- if (
259
- keyboardTarget === rootRef.value &&
260
- isKeyCode(e, [13, 32]) === true
261
- ) {
263
+ if (keyboardTarget === rootRef.value && isKeyCode(e, [13, 32])) {
262
264
  // for click trigger
263
265
  const evt = new MouseEvent('click', e)
264
266
  evt.qKeyEvent = true
265
- if (e.defaultPrevented === true) prevent(evt)
266
- if (e.cancelBubble === true) stop(evt)
267
+ if (e.defaultPrevented) prevent(evt)
268
+ if (e.cancelBubble) stop(evt)
267
269
  rootRef.value.dispatchEvent(evt)
268
270
 
269
271
  stopAndPrevent(e)
@@ -282,7 +284,7 @@ export default createComponent({
282
284
  const blurTarget = blurTargetRef.value
283
285
 
284
286
  if (
285
- destroying !== true &&
287
+ !destroying &&
286
288
  (touchTarget === rootRef.value || mouseTarget === rootRef.value) &&
287
289
  blurTarget !== null &&
288
290
  blurTarget !== document.activeElement
@@ -321,11 +323,6 @@ export default createComponent({
321
323
  rootRef.value?.classList.remove('q-btn--active')
322
324
  }
323
325
 
324
- function onLoadingEvt(evt) {
325
- stopAndPrevent(evt)
326
- evt.qSkipRipple = true
327
- }
328
-
329
326
  onBeforeUnmount(() => {
330
327
  cleanup(true)
331
328
  })
@@ -333,9 +330,7 @@ export default createComponent({
333
330
  // expose public methods
334
331
  Object.assign(proxy, {
335
332
  click: e => {
336
- if (isActionable.value === true) {
337
- onClick(e)
338
- }
333
+ if (isActionable.value) onClick(e)
339
334
  }
340
335
  })
341
336
 
@@ -346,23 +341,23 @@ export default createComponent({
346
341
  inner.push(
347
342
  h(QIcon, {
348
343
  name: props.icon,
349
- left: props.stack !== true && hasLabel.value === true,
344
+ left: !props.stack && hasLabel.value,
350
345
  role: 'img'
351
346
  })
352
347
  )
353
348
  }
354
349
 
355
- if (hasLabel.value === true) {
350
+ if (hasLabel.value) {
356
351
  inner.push(h('span', { class: 'block' }, [props.label]))
357
352
  }
358
353
 
359
354
  inner = hMergeSlot(slots.default, inner)
360
355
 
361
- if (props.iconRight !== void 0 && props.round === false) {
356
+ if (props.iconRight !== void 0 && !props.round) {
362
357
  inner.push(
363
358
  h(QIcon, {
364
359
  name: props.iconRight,
365
- right: props.stack !== true && hasLabel.value === true,
360
+ right: !props.stack && hasLabel.value,
366
361
  role: 'img'
367
362
  })
368
363
  )
@@ -375,14 +370,14 @@ export default createComponent({
375
370
  })
376
371
  ]
377
372
 
378
- if (props.loading === true && props.percentage !== void 0) {
373
+ if (props.loading && props.percentage !== void 0) {
379
374
  child.push(
380
375
  h(
381
376
  'span',
382
377
  {
383
378
  class:
384
379
  'q-btn__progress absolute-full overflow-hidden' +
385
- (props.darkPercentage === true ? ' q-btn__progress--dark' : '')
380
+ (props.darkPercentage ? ' q-btn__progress--dark' : '')
386
381
  },
387
382
  [
388
383
  h('span', {
@@ -414,7 +409,7 @@ export default createComponent({
414
409
  name: 'q-transition--fade'
415
410
  },
416
411
  () =>
417
- props.loading === true
412
+ props.loading
418
413
  ? [
419
414
  h(
420
415
  'span',
@@ -1,5 +1,5 @@
1
- import { mount, flushPromises } from '@vue/test-utils'
2
- import { describe, test, expect, vi } from 'vitest'
1
+ import { flushPromises, mount } from '@vue/test-utils'
2
+ import { describe, expect, test, vi } from 'vitest'
3
3
 
4
4
  import QBtn from './QBtn.js'
5
5
 
@@ -33,10 +33,10 @@ const mediaTypeRE = /[^\s]\/[^\s]/
33
33
  export const btnDesignOptions = ['flat', 'outline', 'push', 'unelevated']
34
34
 
35
35
  export function getBtnDesign(props, defaultValue) {
36
- if (props.flat === true) return 'flat'
37
- if (props.outline === true) return 'outline'
38
- if (props.push === true) return 'push'
39
- if (props.unelevated === true) return 'unelevated'
36
+ if (props.flat) return 'flat'
37
+ if (props.outline) return 'outline'
38
+ if (props.push) return 'push'
39
+ if (props.unelevated) return 'unelevated'
40
40
  return defaultValue
41
41
  }
42
42
 
@@ -109,31 +109,27 @@ export default function useBtn(props) {
109
109
  })
110
110
 
111
111
  const style = computed(() => {
112
- const obj =
113
- props.fab === false && props.fabMini === false ? sizeStyle.value : {}
112
+ const obj = props.fab || props.fabMini ? {} : sizeStyle.value
114
113
 
115
114
  return props.padding !== void 0
116
- ? Object.assign({}, obj, {
115
+ ? {
116
+ ...obj,
117
117
  padding: props.padding
118
118
  .split(/\s+/)
119
119
  .map(v => (v in btnPadding ? btnPadding[v] + 'px' : v))
120
120
  .join(' '),
121
121
  minWidth: '0',
122
122
  minHeight: '0'
123
- })
123
+ }
124
124
  : obj
125
125
  })
126
126
 
127
- const isRounded = computed(
128
- () => props.rounded === true || props.fab === true || props.fabMini === true
129
- )
127
+ const isRounded = computed(() => props.rounded || props.fab || props.fabMini)
130
128
 
131
- const isActionable = computed(
132
- () => props.disable !== true && props.loading !== true
133
- )
129
+ const isActionable = computed(() => !props.disable && !props.loading)
134
130
 
135
131
  const tabIndex = computed(() =>
136
- isActionable.value === true ? props.tabindex || 0 : -1
132
+ isActionable.value ? props.tabindex || 0 : -1
137
133
  )
138
134
 
139
135
  const design = computed(() => getBtnDesign(props, 'standard'))
@@ -141,31 +137,28 @@ export default function useBtn(props) {
141
137
  const attributes = computed(() => {
142
138
  const acc = { tabindex: tabIndex.value }
143
139
 
144
- if (hasLink.value === true) {
140
+ if (hasLink.value) {
145
141
  Object.assign(acc, linkAttrs.value)
146
- } else if (formTypes.includes(props.type) === true) {
142
+ } else if (formTypes.includes(props.type)) {
147
143
  acc.type = props.type
148
144
  }
149
145
 
150
146
  if (linkTag.value === 'a') {
151
- if (props.disable === true) {
147
+ if (props.disable) {
152
148
  acc['aria-disabled'] = 'true'
153
149
  } else if (acc.href === void 0) {
154
150
  acc.role = 'button'
155
151
  }
156
152
 
157
- if (
158
- hasRouterLink.value !== true &&
159
- mediaTypeRE.test(props.type) === true
160
- ) {
153
+ if (!hasRouterLink.value && mediaTypeRE.test(props.type)) {
161
154
  acc.type = props.type
162
155
  }
163
- } else if (props.disable === true) {
156
+ } else if (props.disable) {
164
157
  acc.disabled = ''
165
158
  acc['aria-disabled'] = 'true'
166
159
  }
167
160
 
168
- if (props.loading === true && props.percentage !== void 0) {
161
+ if (props.loading && props.percentage !== void 0) {
169
162
  Object.assign(acc, {
170
163
  role: 'progressbar',
171
164
  'aria-valuemin': 0,
@@ -181,37 +174,31 @@ export default function useBtn(props) {
181
174
  let colors
182
175
 
183
176
  if (props.color !== void 0) {
184
- if (props.flat === true || props.outline === true) {
185
- colors = `text-${props.textColor || props.color}`
186
- } else {
187
- colors = `bg-${props.color} text-${props.textColor || 'white'}`
188
- }
177
+ colors =
178
+ props.flat || props.outline
179
+ ? `text-${props.textColor || props.color}`
180
+ : `bg-${props.color} text-${props.textColor || 'white'}`
189
181
  } else if (props.textColor) {
190
182
  colors = `text-${props.textColor}`
191
183
  }
192
184
 
193
- const shape =
194
- props.round === true
195
- ? 'round'
196
- : `rectangle${isRounded.value === true ? ' q-btn--rounded' : props.square === true ? ' q-btn--square' : ''}`
185
+ const shape = props.round
186
+ ? 'round'
187
+ : `rectangle${isRounded.value ? ' q-btn--rounded' : props.square ? ' q-btn--square' : ''}`
197
188
 
198
189
  return (
199
190
  `q-btn--${design.value} q-btn--${shape}` +
200
191
  (colors !== void 0 ? ' ' + colors : '') +
201
- (isActionable.value === true
192
+ (isActionable.value
202
193
  ? ' q-btn--actionable q-focusable q-hoverable'
203
- : props.disable === true
194
+ : props.disable
204
195
  ? ' disabled'
205
196
  : '') +
206
- (props.fab === true
207
- ? ' q-btn--fab'
208
- : props.fabMini === true
209
- ? ' q-btn--fab-mini'
210
- : '') +
211
- (props.noCaps === true ? ' q-btn--no-uppercase' : '') +
212
- (props.dense === true ? ' q-btn--dense' : '') +
213
- (props.stretch === true ? ' no-border-radius self-stretch' : '') +
214
- (props.glossy === true ? ' glossy' : '') +
197
+ (props.fab ? ' q-btn--fab' : props.fabMini ? ' q-btn--fab-mini' : '') +
198
+ (props.noCaps ? ' q-btn--no-uppercase' : '') +
199
+ (props.dense ? ' q-btn--dense' : '') +
200
+ (props.stretch ? ' no-border-radius self-stretch' : '') +
201
+ (props.glossy ? ' glossy' : '') +
215
202
  (props.square ? ' q-btn--square' : '')
216
203
  )
217
204
  })
@@ -219,9 +206,9 @@ export default function useBtn(props) {
219
206
  const innerClasses = computed(
220
207
  () =>
221
208
  alignClass.value +
222
- (props.stack === true ? ' column' : ' row') +
223
- (props.noWrap === true ? ' no-wrap text-no-wrap' : '') +
224
- (props.loading === true ? ' q-btn__content--hidden' : '')
209
+ (props.stack ? ' column' : ' row') +
210
+ (props.noWrap ? ' no-wrap text-no-wrap' : '') +
211
+ (props.loading ? ' q-btn__content--hidden' : '')
225
212
  )
226
213
 
227
214
  return {
@@ -1,15 +1,15 @@
1
1
  import { mount } from '@vue/test-utils'
2
- import { describe, test, expect } from 'vitest'
2
+ import { describe, expect, test } from 'vitest'
3
3
  import { defineComponent } from 'vue'
4
4
 
5
5
  import useBtn, {
6
+ btnDesignOptions,
6
7
  btnPadding,
7
8
  defaultSizes,
8
- btnDesignOptions,
9
- useBtnProps,
10
- nonRoundBtnProps,
11
9
  getBtnDesign,
12
- getBtnDesignAttr
10
+ getBtnDesignAttr,
11
+ nonRoundBtnProps,
12
+ useBtnProps
13
13
  } from './use-btn.js'
14
14
 
15
15
  describe('[useBtn API]', () => {