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, ref, markRaw, TransitionGroup } from 'vue'
1
+ import { TransitionGroup, h, markRaw, ref } from 'vue'
2
2
 
3
3
  import QAvatar from '../../components/avatar/QAvatar.js'
4
4
  import QIcon from '../../components/icon/QIcon.js'
@@ -74,11 +74,9 @@ function addNotification(config, $q, originalApi) {
74
74
  let Api
75
75
  const notif = { textColor: 'white' }
76
76
 
77
- if (config.ignoreDefaults !== true) {
78
- Object.assign(notif, defaults)
79
- }
77
+ if (!config.ignoreDefaults) Object.assign(notif, defaults)
80
78
 
81
- if (isObject(config) === false) {
79
+ if (!isObject(config)) {
82
80
  if (notif.type) {
83
81
  Object.assign(notif, notifTypes[notif.type])
84
82
  }
@@ -95,39 +93,37 @@ function addNotification(config, $q, originalApi) {
95
93
  if (!notif.spinner) {
96
94
  notif.spinner = false
97
95
  } else {
98
- if (notif.spinner === true) {
99
- notif.spinner = QSpinner
100
- }
101
-
102
- notif.spinner = markRaw(notif.spinner)
96
+ notif.spinner = notif.spinner === true ? QSpinner : markRaw(notif.spinner)
103
97
  }
104
98
 
105
99
  notif.meta = {
106
- hasMedia: Boolean(notif.spinner !== false || notif.icon || notif.avatar),
100
+ hasMedia: Boolean(notif.spinner || notif.icon || notif.avatar),
107
101
  hasText: hasContent(notif.message) || hasContent(notif.caption)
108
102
  }
109
103
 
110
104
  if (notif.position) {
111
- if (positionList.includes(notif.position) === false) {
105
+ if (!positionList.includes(notif.position)) {
112
106
  return logError('wrong position', config)
113
107
  }
114
108
  } else {
115
109
  notif.position = 'bottom'
116
110
  }
117
111
 
118
- if (invalidTimeoutValues.includes(notif.timeout) === true) {
112
+ if (invalidTimeoutValues.includes(notif.timeout)) {
119
113
  notif.timeout = 5000
120
114
  } else {
121
- const t = Number(notif.timeout) // we catch exponential notation too with Number() casting
122
- if (isNaN(t) || t < 0) {
115
+ // we catch exponential notation too
116
+ const t = Number.parseFloat(notif.timeout)
117
+ if (!Number.isFinite(t) || t < 0) {
123
118
  return logError('wrong timeout', config)
124
119
  }
125
- notif.timeout = Number.isFinite(t) ? t : 0
120
+
121
+ notif.timeout = t
126
122
  }
127
123
 
128
124
  if (notif.timeout === 0) {
129
125
  notif.progress = false
130
- } else if (notif.progress === true) {
126
+ } else if (notif.progress) {
131
127
  notif.meta.progressClass =
132
128
  'q-notification__progress' +
133
129
  (notif.progressClass ? ` ${notif.progressClass}` : '')
@@ -137,17 +133,15 @@ function addNotification(config, $q, originalApi) {
137
133
  }
138
134
  }
139
135
 
140
- const actions = (Array.isArray(config.actions) === true ? config.actions : [])
141
- .concat(
142
- config.ignoreDefaults !== true && Array.isArray(defaults.actions) === true
143
- ? defaults.actions
144
- : []
145
- )
146
- .concat(
147
- Array.isArray(notifTypes[config.type]?.actions) === true
148
- ? notifTypes[config.type].actions
149
- : []
150
- )
136
+ const actions = [
137
+ ...(Array.isArray(config.actions) ? config.actions : []),
138
+ ...(!config.ignoreDefaults && Array.isArray(defaults.actions)
139
+ ? defaults.actions
140
+ : []),
141
+ ...(Array.isArray(notifTypes[config.type]?.actions)
142
+ ? notifTypes[config.type].actions
143
+ : [])
144
+ ]
151
145
 
152
146
  const { closeBtn } = notif
153
147
  if (closeBtn) {
@@ -163,7 +157,7 @@ function addNotification(config, $q, originalApi) {
163
157
  typeof handler === 'function'
164
158
  ? () => {
165
159
  handler()
166
- if (noDismiss !== true) dismiss()
160
+ if (!noDismiss) dismiss()
167
161
  }
168
162
  : () => {
169
163
  dismiss()
@@ -177,22 +171,20 @@ function addNotification(config, $q, originalApi) {
177
171
  Object.assign(notif.meta, {
178
172
  class:
179
173
  'q-notification row items-stretch' +
180
- ` q-notification--${notif.multiLine === true ? 'multi-line' : 'standard'}` +
174
+ ` q-notification--${notif.multiLine ? 'multi-line' : 'standard'}` +
181
175
  (notif.color !== void 0 ? ` bg-${notif.color}` : '') +
182
176
  (notif.textColor !== void 0 ? ` text-${notif.textColor}` : '') +
183
177
  (notif.classes !== void 0 ? ` ${notif.classes}` : ''),
184
178
 
185
179
  wrapperClass:
186
180
  'q-notification__wrapper col relative-position border-radius-inherit ' +
187
- (notif.multiLine === true
188
- ? 'column no-wrap justify-center'
189
- : 'row items-center'),
181
+ (notif.multiLine ? 'column no-wrap justify-center' : 'row items-center'),
190
182
 
191
183
  contentClass:
192
184
  'q-notification__content row items-center' +
193
- (notif.multiLine === true ? '' : ' col'),
185
+ (notif.multiLine ? '' : ' col'),
194
186
 
195
- leftClass: notif.meta.hasText === true ? 'additional' : 'single',
187
+ leftClass: notif.meta.hasText ? 'additional' : 'single',
196
188
 
197
189
  attrs: {
198
190
  role: 'alert',
@@ -206,9 +198,12 @@ function addNotification(config, $q, originalApi) {
206
198
  } else {
207
199
  if (notif.group === void 0 || notif.group === true) {
208
200
  // do not replace notifications with different buttons
209
- notif.group = [notif.message, notif.caption, notif.multiline]
210
- .concat(notif.actions.map(props => `${props.label}*${props.icon}`))
211
- .join('|')
201
+ notif.group = [
202
+ notif.message,
203
+ notif.caption,
204
+ notif.multiline,
205
+ ...notif.actions.map(props => `${props.label}*${props.icon}`)
206
+ ].join('|')
212
207
  }
213
208
 
214
209
  notif.meta.group = notif.group + '|' + notif.position
@@ -219,10 +214,8 @@ function addNotification(config, $q, originalApi) {
219
214
  } else {
220
215
  notif.meta.actionsClass =
221
216
  'q-notification__actions row items-center ' +
222
- (notif.multiLine === true ? 'justify-end' : 'col-auto') +
223
- (notif.meta.hasMedia === true
224
- ? ' q-notification__actions--with-media'
225
- : '')
217
+ (notif.multiLine ? 'justify-end' : 'col-auto') +
218
+ (notif.meta.hasMedia ? ' q-notification__actions--with-media' : '')
226
219
  }
227
220
 
228
221
  if (originalApi !== void 0) {
@@ -248,14 +241,14 @@ function addNotification(config, $q, originalApi) {
248
241
  notif.meta.uid = uid++
249
242
  notif.meta.badge = 1
250
243
 
251
- if (['left', 'right', 'center'].indexOf(notif.position) !== -1) {
244
+ if (['left', 'right', 'center'].includes(notif.position)) {
252
245
  notificationsList[notif.position].value.splice(
253
246
  Math.floor(notificationsList[notif.position].value.length / 2),
254
247
  0,
255
248
  notif
256
249
  )
257
250
  } else {
258
- const action = notif.position.indexOf('top') !== -1 ? 'unshift' : 'push'
251
+ const action = notif.position.includes('top') ? 'unshift' : 'push'
259
252
  notificationsList[notif.position].value[action](notif)
260
253
  }
261
254
 
@@ -272,11 +265,11 @@ function addNotification(config, $q, originalApi) {
272
265
  }
273
266
 
274
267
  if (notif.badgePosition !== void 0) {
275
- if (badgePositions.includes(notif.badgePosition) === false) {
268
+ if (!badgePositions.includes(notif.badgePosition)) {
276
269
  return logError('wrong badgePosition', config)
277
270
  }
278
271
  } else {
279
- notif.badgePosition = `top-${notif.position.indexOf('left') !== -1 ? 'right' : 'left'}`
272
+ notif.badgePosition = `top-${notif.position.includes('left') ? 'right' : 'left'}`
280
273
  }
281
274
 
282
275
  notif.meta.uid = original.meta.uid
@@ -339,10 +332,12 @@ function addNotification(config, $q, originalApi) {
339
332
  }
340
333
  // otherwise we're updating it
341
334
  else {
342
- const newNotif = Object.assign({}, Api.config, props, {
335
+ const newNotif = {
336
+ ...Api.config,
337
+ ...props,
343
338
  group: false,
344
339
  position: notif.position
345
- })
340
+ }
346
341
 
347
342
  addNotification(newNotif, $q, Api)
348
343
  }
@@ -381,7 +376,7 @@ function removeNotification(notif) {
381
376
  }
382
377
 
383
378
  function hasContent(str) {
384
- return str !== void 0 && str !== null && emptyRE.test(str) !== true
379
+ return str !== void 0 && str !== null && !emptyRE.test(str)
385
380
  }
386
381
 
387
382
  function logError(error, config) {
@@ -415,8 +410,8 @@ function getComponent() {
415
410
  const meta = notif.meta
416
411
  const mainChild = []
417
412
 
418
- if (meta.hasMedia === true) {
419
- if (notif.spinner !== false) {
413
+ if (meta.hasMedia) {
414
+ if (notif.spinner) {
420
415
  mainChild.push(
421
416
  h(notif.spinner, {
422
417
  class:
@@ -457,11 +452,11 @@ function getComponent() {
457
452
  }
458
453
  }
459
454
 
460
- if (meta.hasText === true) {
455
+ if (meta.hasText) {
461
456
  let msgChild
462
457
  const msgData = { class: 'q-notification__message col' }
463
458
 
464
- if (notif.html === true) {
459
+ if (notif.html) {
465
460
  msgData.innerHTML = notif.caption
466
461
  ? `<div>${notif.message}</div><div class="q-notification__caption">${notif.caption}</div>`
467
462
  : notif.message
@@ -484,7 +479,7 @@ function getComponent() {
484
479
  h('div', { class: meta.contentClass }, mainChild)
485
480
  ]
486
481
 
487
- if (notif.progress === true) {
482
+ if (notif.progress) {
488
483
  child.push(
489
484
  h('div', {
490
485
  key: `${meta.uid}|p|${meta.badge}`,
@@ -494,7 +489,7 @@ function getComponent() {
494
489
  )
495
490
  }
496
491
 
497
- if (notif.actions !== void 0) {
492
+ if (notif.actions) {
498
493
  child.push(
499
494
  h(
500
495
  'div',
@@ -542,13 +537,13 @@ function getComponent() {
542
537
 
543
538
  export default {
544
539
  setDefaults(opts) {
545
- if (__QUASAR_SSR_SERVER__ !== true) {
546
- if (isObject(opts) === true) Object.assign(defaults, opts)
540
+ if (!__QUASAR_SSR_SERVER__ && isObject(opts)) {
541
+ Object.assign(defaults, opts)
547
542
  }
548
543
  },
549
544
 
550
545
  registerType(typeName, typeOpts) {
551
- if (__QUASAR_SSR_SERVER__ !== true && isObject(typeOpts) === true) {
546
+ if (!__QUASAR_SSR_SERVER__ && isObject(typeOpts)) {
552
547
  notifTypes[typeName] = typeOpts
553
548
  }
554
549
  },
@@ -565,27 +560,27 @@ export default {
565
560
  this.setDefaults($q.config.notify)
566
561
  }
567
562
 
568
- if (__QUASAR_SSR_SERVER__ !== true && this.__installed !== true) {
563
+ if (!__QUASAR_SSR_SERVER__ && !this.__installed) {
569
564
  positionList.forEach(pos => {
570
565
  notificationsList[pos] = ref([])
571
566
 
572
567
  const vert =
573
- ['left', 'center', 'right'].includes(pos) === true
568
+ pos === 'left' || pos === 'center' || pos === 'right'
574
569
  ? 'center'
575
- : pos.indexOf('top') !== -1
570
+ : pos.includes('top')
576
571
  ? 'top'
577
572
  : 'bottom',
578
- align =
579
- pos.indexOf('left') !== -1
580
- ? 'start'
581
- : pos.indexOf('right') !== -1
582
- ? 'end'
583
- : 'center',
584
- classes = ['left', 'right'].includes(pos)
585
- ? `items-${pos === 'left' ? 'start' : 'end'} justify-center`
586
- : pos === 'center'
587
- ? 'flex-center'
588
- : `items-${align}`
573
+ align = pos.includes('left')
574
+ ? 'start'
575
+ : pos.includes('right')
576
+ ? 'end'
577
+ : 'center',
578
+ classes =
579
+ pos === 'left' || pos === 'right'
580
+ ? `items-${pos === 'left' ? 'start' : 'end'} justify-center`
581
+ : pos === 'center'
582
+ ? 'flex-center'
583
+ : `items-${align}`
589
584
 
590
585
  positionClass[pos] =
591
586
  `q-notifications__list q-notifications__list--${vert} fixed column no-wrap ${classes}`
@@ -1,6 +1,6 @@
1
1
  // oxlint-disable no-useless-escape
2
2
 
3
- import { ref, reactive } from 'vue'
3
+ import { reactive, ref } from 'vue'
4
4
  import { injectProp } from '../../utils/private.inject-obj-prop/inject-obj-prop.js'
5
5
 
6
6
  /**
@@ -15,9 +15,7 @@ export const isRuntimeSsrPreHydration = __QUASAR_SSR_SERVER__
15
15
  ? { value: true }
16
16
  : ref(
17
17
  __QUASAR_SSR_CLIENT__ &&
18
- (__QUASAR_SSR_PWA__
19
- ? document.body.getAttribute('data-server-rendered') !== null
20
- : true)
18
+ (__QUASAR_SSR_PWA__ ? 'serverRendered' in document.body.dataset : true)
21
19
  )
22
20
 
23
21
  let preHydrationBrowser
@@ -117,7 +115,7 @@ function getPlatform(UA) {
117
115
  if (matched.browser) {
118
116
  browser[matched.browser] = true
119
117
  browser.version = matched.version
120
- browser.versionNumber = parseInt(matched.version, 10)
118
+ browser.versionNumber = Number.parseInt(matched.version, 10)
121
119
  }
122
120
 
123
121
  if (matched.platform) {
@@ -138,7 +136,7 @@ function getPlatform(UA) {
138
136
  browser['windows phone']
139
137
 
140
138
  // These are all considered mobile platforms, meaning they run a mobile browser
141
- if (knownMobiles === true || userAgent.indexOf('mobile') !== -1) {
139
+ if (knownMobiles === true || userAgent.includes('mobile')) {
142
140
  browser.mobile = true
143
141
  }
144
142
  // If it's not mobile we should consider it's desktop platform, meaning it runs a desktop browser
@@ -184,7 +182,7 @@ function getPlatform(UA) {
184
182
  browser.safari ||
185
183
  browser.vivaldi ||
186
184
  // we expect unknown, non iOS mobile browsers to be webkit based
187
- (browser.mobile === true && browser.ios !== true && knownMobiles !== true)
185
+ (browser.mobile && !browser.ios && !knownMobiles)
188
186
  ) {
189
187
  browser.webkit = true
190
188
  }
@@ -219,10 +217,10 @@ function getPlatform(UA) {
219
217
  browser.name = matched.browser
220
218
  browser.platform = matched.platform
221
219
 
222
- if (__QUASAR_SSR_SERVER__ !== true) {
223
- if (userAgent.indexOf('electron') !== -1) {
220
+ if (!__QUASAR_SSR_SERVER__) {
221
+ if (userAgent.includes('electron')) {
224
222
  browser.electron = true
225
- } else if (document.location.href.indexOf('-extension://') !== -1) {
223
+ } else if (document.location.href.includes('-extension://')) {
226
224
  browser.bex = true
227
225
  } else {
228
226
  if (window.Capacitor !== void 0) {
@@ -238,7 +236,7 @@ function getPlatform(UA) {
238
236
  browser.nativeMobileWrapper = 'cordova'
239
237
  }
240
238
 
241
- if (isRuntimeSsrPreHydration.value === true) {
239
+ if (isRuntimeSsrPreHydration.value) {
242
240
  /*
243
241
  * We need to remember the current state as
244
242
  * everything that follows can only be corrected client-side,
@@ -257,13 +255,13 @@ function getPlatform(UA) {
257
255
  */
258
256
 
259
257
  if (
260
- hasTouch === true &&
261
- browser.mac === true &&
262
- ((browser.desktop === true && browser.safari === true) ||
263
- (browser.nativeMobile === true &&
264
- browser.android !== true &&
265
- browser.ios !== true &&
266
- browser.ipad !== true))
258
+ hasTouch &&
259
+ browser.mac &&
260
+ ((browser.desktop && browser.safari) ||
261
+ (browser.nativeMobile &&
262
+ !browser.android &&
263
+ !browser.ios &&
264
+ !browser.ipad))
267
265
  ) {
268
266
  /*
269
267
  * Correction needed for iOS since the default
@@ -290,7 +288,7 @@ function getPlatform(UA) {
290
288
  }
291
289
 
292
290
  if (
293
- browser.mobile !== true &&
291
+ !browser.mobile &&
294
292
  window.navigator.userAgentData &&
295
293
  window.navigator.userAgentData.mobile
296
294
  ) {
@@ -344,7 +342,7 @@ const Platform = {
344
342
 
345
343
  if (__QUASAR_SSR_SERVER__) {
346
344
  $q.platform = this.parseSSR(opts.ssrContext)
347
- } else if (isRuntimeSsrPreHydration.value === true) {
345
+ } else if (isRuntimeSsrPreHydration.value) {
348
346
  // takeover should increase accuracy for
349
347
  // the rest of the props; we also avoid
350
348
  // hydration errors
@@ -399,7 +397,7 @@ if (__QUASAR_SSR_SERVER__) {
399
397
 
400
398
  Object.assign(Platform, client)
401
399
 
402
- if (isRuntimeSsrPreHydration.value === true) {
400
+ if (isRuntimeSsrPreHydration.value) {
403
401
  // must match with server-side before
404
402
  // client taking over in order to prevent
405
403
  // hydration errors
@@ -3,7 +3,7 @@
3
3
  * [(method)parseSSR]
4
4
  */
5
5
 
6
- import { describe, test, expect } from 'vitest'
6
+ import { describe, expect, test } from 'vitest'
7
7
  import { mount } from '@vue/test-utils'
8
8
 
9
9
  import Platform from './Platform.js'
@@ -2,43 +2,40 @@ import setCssVar from '../../utils/css-var/set-css-var.js'
2
2
  import { noop } from '../../utils/event/event.js'
3
3
  import { onKeyDownComposition } from '../../utils/private.keyboard/key-composition.js'
4
4
 
5
- import { isRuntimeSsrPreHydration, client } from '../platform/Platform.js'
5
+ import { client, isRuntimeSsrPreHydration } from '../platform/Platform.js'
6
6
 
7
7
  function getMobilePlatform(is) {
8
- if (is.ios === true) return 'ios'
9
- if (is.android === true) return 'android'
8
+ if (is.ios) return 'ios'
9
+ if (is.android) return 'android'
10
10
  }
11
11
 
12
12
  function getBodyClasses({ is, has, within }, cfg) {
13
13
  const cls = [
14
- is.desktop === true ? 'desktop' : 'mobile',
15
- `${has.touch === false ? 'no-' : ''}touch`
14
+ is.desktop ? 'desktop' : 'mobile',
15
+ `${has.touch ? '' : 'no-'}touch`
16
16
  ]
17
17
 
18
- if (is.mobile === true) {
18
+ if (is.mobile) {
19
19
  const mobile = getMobilePlatform(is)
20
20
  if (mobile !== void 0) cls.push('platform-' + mobile)
21
21
  }
22
22
 
23
- if (is.nativeMobile === true) {
23
+ if (is.nativeMobile) {
24
24
  const type = is.nativeMobileWrapper
25
25
 
26
26
  cls.push(type)
27
27
  cls.push('native-mobile')
28
28
 
29
- if (
30
- is.ios === true &&
31
- (cfg[type] === void 0 || cfg[type].iosStatusBarPadding !== false)
32
- ) {
29
+ if (is.ios && (cfg[type] === void 0 || cfg[type].iosStatusBarPadding)) {
33
30
  cls.push('q-ios-padding')
34
31
  }
35
- } else if (is.electron === true) {
32
+ } else if (is.electron) {
36
33
  cls.push('electron')
37
- } else if (is.bex === true) {
34
+ } else if (is.bex) {
38
35
  cls.push('bex')
39
36
  }
40
37
 
41
- if (within.iframe === true) cls.push('within-iframe')
38
+ if (within.iframe) cls.push('within-iframe')
42
39
 
43
40
  return cls
44
41
  }
@@ -47,15 +44,15 @@ function applyClientSsrCorrections() {
47
44
  const { is } = client
48
45
  const classes = document.body.className
49
46
 
50
- const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '))
47
+ const classList = new Set(classes.replaceAll(/ {2}/g, ' ').split(' '))
51
48
 
52
- if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {
53
- if (is.desktop === true) {
49
+ if (!is.nativeMobile && !is.electron && !is.bex) {
50
+ if (is.desktop) {
54
51
  classList.delete('mobile')
55
52
  classList.delete('platform-ios')
56
53
  classList.delete('platform-android')
57
54
  classList.add('desktop')
58
- } else if (is.mobile === true) {
55
+ } else if (is.mobile) {
59
56
  classList.delete('desktop')
60
57
  classList.add('mobile')
61
58
 
@@ -69,20 +66,18 @@ function applyClientSsrCorrections() {
69
66
  }
70
67
  }
71
68
 
72
- if (client.has.touch === true) {
69
+ if (client.has.touch) {
73
70
  classList.delete('no-touch')
74
71
  classList.add('touch')
75
72
  }
76
73
 
77
- if (client.within.iframe === true) {
74
+ if (client.within.iframe) {
78
75
  classList.add('within-iframe')
79
76
  }
80
77
 
81
- const newCls = Array.from(classList).join(' ')
78
+ const newCls = [...classList].join(' ')
82
79
 
83
- if (classes !== newCls) {
84
- document.body.className = newCls
85
- }
80
+ if (classes !== newCls) document.body.className = newCls
86
81
  }
87
82
 
88
83
  function setColors(brand) {
@@ -115,20 +110,19 @@ export default {
115
110
  return
116
111
  }
117
112
 
118
- if (this.__installed === true) return
113
+ if (this.__installed) return
119
114
 
120
- if (isRuntimeSsrPreHydration.value === true) {
115
+ if (isRuntimeSsrPreHydration.value) {
121
116
  applyClientSsrCorrections()
122
117
  } else {
123
118
  const { $q } = opts
124
119
 
125
120
  if ($q.config.brand !== void 0) setColors($q.config.brand)
126
121
 
127
- const cls = getBodyClasses(client, $q.config)
128
- document.body.classList.add.apply(document.body.classList, cls)
122
+ document.body.classList.add(...getBodyClasses(client, $q.config))
129
123
  }
130
124
 
131
- if (client.is.ios === true) {
125
+ if (client.is.ios) {
132
126
  // needed for iOS button active state
133
127
  document.body.addEventListener('touchstart', noop)
134
128
  }
@@ -1,4 +1,4 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
  import { mount } from '@vue/test-utils'
3
3
 
4
4
  import Body from './Body.js'
@@ -10,26 +10,21 @@ function filterInvalidPath(path) {
10
10
  }
11
11
 
12
12
  function normalizeExitPath(path) {
13
- if (path.startsWith('#') === true) path = path.substring(1)
14
- if (path.startsWith('/') === false) path = '/' + path
15
- if (path.endsWith('/') === true) path = path.substring(0, path.length - 1)
13
+ if (path.startsWith('#')) path = path.slice(1)
14
+ if (!path.startsWith('/')) path = '/' + path
15
+ if (path.endsWith('/')) path = path.slice(0, -1)
16
16
  return '#' + path
17
17
  }
18
18
 
19
19
  function getShouldExitFn(cfg) {
20
- if (cfg.backButtonExit === false) {
21
- return () => false
22
- }
23
-
24
- if (cfg.backButtonExit === '*') {
25
- return getTrue
26
- }
20
+ if (cfg.backButtonExit === false) return () => false
21
+ if (cfg.backButtonExit === '*') return getTrue
27
22
 
28
23
  // Add default root path
29
24
  const exitPaths = ['#/']
30
25
 
31
26
  // Add custom exit paths
32
- if (Array.isArray(cfg.backButtonExit) === true) {
27
+ if (Array.isArray(cfg.backButtonExit)) {
33
28
  exitPaths.push(
34
29
  ...cfg.backButtonExit.filter(filterInvalidPath).map(normalizeExitPath)
35
30
  )
@@ -44,13 +39,12 @@ export default {
44
39
  remove: noop,
45
40
 
46
41
  install({ $q }) {
47
- if (__QUASAR_SSR_SERVER__ || this.__installed === true) return
42
+ if (__QUASAR_SSR_SERVER__ || this.__installed) return
48
43
 
49
44
  const { cordova, capacitor } = client.is
45
+ if (!cordova && !capacitor) return
50
46
 
51
- if (cordova !== true && capacitor !== true) return
52
-
53
- const qConf = $q.config[cordova === true ? 'cordova' : 'capacitor']
47
+ const qConf = $q.config[cordova ? 'cordova' : 'capacitor']
54
48
 
55
49
  if (qConf?.backButton === false) return
56
50
 
@@ -58,7 +52,7 @@ export default {
58
52
  // then we got nothing to do
59
53
  if (
60
54
  // if we're on Capacitor mode
61
- capacitor === true &&
55
+ capacitor &&
62
56
  // and it's also not in Capacitor's main instance
63
57
  (window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)
64
58
  ) {
@@ -74,31 +68,29 @@ export default {
74
68
 
75
69
  this.remove = entry => {
76
70
  const index = this.__history.indexOf(entry)
77
- if (index >= 0) {
71
+ if (index !== -1) {
78
72
  this.__history.splice(index, 1)
79
73
  }
80
74
  }
81
75
 
82
- const shouldExit = getShouldExitFn(
83
- Object.assign({ backButtonExit: true }, qConf)
84
- )
76
+ const shouldExit = getShouldExitFn({ backButtonExit: true, ...qConf })
85
77
 
86
78
  const backHandler = () => {
87
- if (this.__history.length) {
88
- const entry = this.__history[this.__history.length - 1]
79
+ if (this.__history.length !== 0) {
80
+ const entry = this.__history.at(-1)
89
81
 
90
- if (entry.condition() === true) {
82
+ if (entry.condition()) {
91
83
  this.__history.pop()
92
84
  entry.handler()
93
85
  }
94
- } else if (shouldExit() === true) {
86
+ } else if (shouldExit()) {
95
87
  navigator.app.exitApp()
96
88
  } else {
97
89
  window.history.back()
98
90
  }
99
91
  }
100
92
 
101
- if (cordova === true) {
93
+ if (cordova) {
102
94
  document.addEventListener('deviceready', () => {
103
95
  document.addEventListener('backbutton', backHandler, false)
104
96
  })
@@ -1,4 +1,4 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
 
3
3
  import History from './History.js'
4
4