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
@@ -3,31 +3,35 @@ import { isObject } from '../is/is.js'
3
3
  let id = 0
4
4
  let offsetBase = void 0
5
5
 
6
+ function defaultCancel() {
7
+ return false
8
+ }
9
+
6
10
  function getAbsolutePosition(el, resize) {
7
11
  if (offsetBase === void 0) {
8
12
  offsetBase = document.createElement('div')
9
13
  offsetBase.style.cssText = 'position: absolute; left: 0; top: 0'
10
- document.body.appendChild(offsetBase)
14
+ document.body.append(offsetBase)
11
15
  }
12
16
 
13
17
  const boundingRect = el.getBoundingClientRect()
14
18
  const baseRect = offsetBase.getBoundingClientRect()
15
19
  const { marginLeft, marginRight, marginTop, marginBottom } =
16
20
  window.getComputedStyle(el)
17
- const marginH = parseInt(marginLeft, 10) + parseInt(marginRight, 10)
18
- const marginV = parseInt(marginTop, 10) + parseInt(marginBottom, 10)
21
+ const marginH =
22
+ Number.parseInt(marginLeft, 10) + Number.parseInt(marginRight, 10)
23
+ const marginV =
24
+ Number.parseInt(marginTop, 10) + Number.parseInt(marginBottom, 10)
19
25
 
20
26
  return {
21
27
  left: boundingRect.left - baseRect.left,
22
28
  top: boundingRect.top - baseRect.top,
23
29
  width: boundingRect.right - boundingRect.left,
24
30
  height: boundingRect.bottom - boundingRect.top,
25
- widthM:
26
- boundingRect.right - boundingRect.left + (resize === true ? 0 : marginH),
27
- heightM:
28
- boundingRect.bottom - boundingRect.top + (resize === true ? 0 : marginV),
29
- marginH: resize === true ? marginH : 0,
30
- marginV: resize === true ? marginV : 0
31
+ widthM: boundingRect.right - boundingRect.left + (resize ? 0 : marginH),
32
+ heightM: boundingRect.bottom - boundingRect.top + (resize ? 0 : marginV),
33
+ marginH: resize ? marginH : 0,
34
+ marginV: resize ? marginV : 0
31
35
  }
32
36
  }
33
37
 
@@ -61,15 +65,13 @@ function getComputedStyle(el, props) {
61
65
  let val = ''
62
66
 
63
67
  for (let styleIndex = 0; styleIndex < styleLen; styleIndex++) {
64
- if (reStyleSkipKey.test(style[styleIndex]) !== true) {
68
+ if (!reStyleSkipKey.test(style[styleIndex])) {
65
69
  val += style[styleIndex] + ': ' + style[style[styleIndex]] + '; '
66
70
  }
67
71
  }
68
72
 
69
73
  fixed[prop] = val
70
- } else if (
71
- ['borderWidth', 'borderStyle', 'borderColor'].indexOf(prop) !== -1
72
- ) {
74
+ } else if (['borderWidth', 'borderStyle', 'borderColor'].includes(prop)) {
73
75
  const suffix = prop.replace('border', '')
74
76
  let val = ''
75
77
  for (let j = 0; j < styleEdges.length; j++) {
@@ -92,7 +94,7 @@ function getComputedStyle(el, props) {
92
94
  } else if (prop === 'cssText') {
93
95
  fixed[prop] = style[prop]
94
96
  .split(';')
95
- .filter(val => reStyleSkipRule.test(val) !== true)
97
+ .filter(val => !reStyleSkipRule.test(val))
96
98
  .join(';')
97
99
  } else {
98
100
  fixed[prop] = style[prop]
@@ -114,7 +116,7 @@ function getMaxZIndex(elStart) {
114
116
 
115
117
  if (
116
118
  zIndexNum > maxIndex &&
117
- (el === elStart || zIndexPositions.includes(position) === true)
119
+ (el === elStart || zIndexPositions.includes(position))
118
120
  ) {
119
121
  maxIndex = zIndexNum
120
122
  }
@@ -132,6 +134,11 @@ function normalizeElements(opts) {
132
134
  }
133
135
  }
134
136
 
137
+ function getOpacity(value, fallback) {
138
+ const parsed = Number.parseFloat(value)
139
+ return Number.isFinite(parsed) ? Math.max(0, Math.min(1, parsed)) : fallback
140
+ }
141
+
135
142
  function normalizeOptions(options) {
136
143
  if (typeof options === 'number') {
137
144
  options = {
@@ -143,18 +150,20 @@ function normalizeOptions(options) {
143
150
  }
144
151
  }
145
152
 
153
+ const parsedDuration = Number.parseInt(options.duration, 10)
154
+ const parsedDelay = Number.parseInt(options.delay, 10)
155
+
146
156
  return {
147
157
  ...options,
148
158
 
149
159
  waitFor: options.waitFor === void 0 ? 0 : options.waitFor,
150
160
 
151
- duration:
152
- isNaN(options.duration) === true ? 300 : parseInt(options.duration, 10),
161
+ duration: Number.isNaN(parsedDuration) ? 300 : parsedDuration,
162
+ delay: Number.isNaN(parsedDelay) ? 0 : parsedDelay,
153
163
  easing:
154
164
  typeof options.easing === 'string' && options.easing.length !== 0
155
165
  ? options.easing
156
166
  : 'ease-in-out',
157
- delay: isNaN(options.delay) === true ? 0 : parseInt(options.delay, 10),
158
167
  fill:
159
168
  typeof options.fill === 'string' && options.fill.length !== 0
160
169
  ? options.fill
@@ -171,14 +180,8 @@ function normalizeOptions(options) {
171
180
  keepToClone: options.keepToClone === true || options.keeptoclone === true,
172
181
 
173
182
  tween: options.tween === true,
174
- tweenFromOpacity:
175
- isNaN(options.tweenFromOpacity) === true
176
- ? 0.6
177
- : parseFloat(options.tweenFromOpacity),
178
- tweenToOpacity:
179
- isNaN(options.tweenToOpacity) === true
180
- ? 0.5
181
- : parseFloat(options.tweenToOpacity)
183
+ tweenFromOpacity: getOpacity(options.tweenFromOpacity, 0.6),
184
+ tweenToOpacity: getOpacity(options.tweenToOpacity, 0.5)
182
185
  }
183
186
  }
184
187
 
@@ -199,7 +202,7 @@ function isValidElement(element) {
199
202
  }
200
203
 
201
204
  export default function morph(_options) {
202
- let cancel = () => false
205
+ let cancel = defaultCancel
203
206
  let cancelStatus = false
204
207
  let endElementTo = true
205
208
 
@@ -207,7 +210,7 @@ export default function morph(_options) {
207
210
  const options = normalizeOptions(_options)
208
211
 
209
212
  const elFrom = getElement(elements.from)
210
- if (isValidElement(elFrom) !== true) {
213
+ if (!isValidElement(elFrom)) {
211
214
  // we return a cancel function that return false, meaning the cancel function failed
212
215
  return cancel
213
216
  }
@@ -259,7 +262,7 @@ export default function morph(_options) {
259
262
  elFromTween.className = elFromTween.classList
260
263
  .toString()
261
264
  .split(' ')
262
- .filter(c => /^bg-/.test(c) === false)
265
+ .filter(c => !c.startsWith('bg-'))
263
266
  .join(' ')
264
267
  }
265
268
 
@@ -273,6 +276,8 @@ export default function morph(_options) {
273
276
  elFromClone.style.transition = 'none'
274
277
  elFromClone.style.animation = 'none'
275
278
  elFromClone.style.pointerEvents = 'none'
279
+
280
+ // oxlint-disable-next-line unicorn/prefer-modern-dom-apis
276
281
  elFromParent.insertBefore(elFromClone, elFromNext)
277
282
 
278
283
  // we mark the element with its cleanup function
@@ -294,7 +299,7 @@ export default function morph(_options) {
294
299
  // will be called after Vue catches up with the changes done by _options.onToggle() function
295
300
  const calculateFinalState = () => {
296
301
  const elTo = getElement(elements.to)
297
- if (cancelStatus === true || isValidElement(elTo) !== true) {
302
+ if (cancelStatus === true || !isValidElement(elTo)) {
298
303
  if (typeof elFrom.qMorphCancel === 'function') elFrom.qMorphCancel()
299
304
  return
300
305
  }
@@ -393,6 +398,8 @@ export default function morph(_options) {
393
398
  elTo === elFrom && elFromParent === elToParent
394
399
  ? elFromClone
395
400
  : elTo.nextElementSibling
401
+
402
+ // oxlint-disable-next-line unicorn/prefer-modern-dom-apis
396
403
  elToParent.insertBefore(elToClone, elToNext)
397
404
 
398
405
  const {
@@ -425,7 +432,7 @@ export default function morph(_options) {
425
432
  // we strip the background classes (background color can no longer be animated if !important is used)
426
433
  elTo.className = elToClassSaved
427
434
  .split(' ')
428
- .filter(c => /^bg-/.test(c) === false)
435
+ .filter(c => !c.startsWith('bg-'))
429
436
  .join(' ')
430
437
 
431
438
  const elToPosition = getAbsolutePosition(elTo, options.resize)
@@ -463,14 +470,14 @@ export default function morph(_options) {
463
470
 
464
471
  const elSharedSize =
465
472
  elFrom === elTo &&
466
- ['absolute', 'fixed'].includes(elToPositioningType) === false &&
467
- ['absolute', 'fixed'].includes(elFromPositioningType) === false
473
+ !['absolute', 'fixed'].includes(elToPositioningType) &&
474
+ !['absolute', 'fixed'].includes(elFromPositioningType)
468
475
 
469
476
  // if the final element has fixed position or if a parent
470
477
  // has fixed position we need to animate it as fixed
471
478
  let elToNeedsFixedPosition = elToPositioningType === 'fixed'
472
479
  let parent = elToParent
473
- while (elToNeedsFixedPosition !== true && parent !== document) {
480
+ while (!elToNeedsFixedPosition && parent !== document) {
474
481
  elToNeedsFixedPosition =
475
482
  window.getComputedStyle(parent).position === 'fixed'
476
483
  parent = parent.parentNode
@@ -508,7 +515,7 @@ export default function morph(_options) {
508
515
  // we apply styles specified by user
509
516
  if (typeof options.style === 'string') {
510
517
  elTo.style.cssText += ' ' + options.style
511
- } else if (isObject(options.style) === true) {
518
+ } else if (isObject(options.style)) {
512
519
  for (const prop in options.style) {
513
520
  elTo.style[prop] = options.style[prop]
514
521
  }
@@ -519,12 +526,10 @@ export default function morph(_options) {
519
526
 
520
527
  // we position the morphing element
521
528
  // if we use fixed position for the final element we need to adjust for scroll
522
- const documentScroll =
523
- elToNeedsFixedPosition === true
524
- ? document.documentElement
525
- : { scrollLeft: 0, scrollTop: 0 }
526
- elTo.style.position =
527
- elToNeedsFixedPosition === true ? 'fixed' : 'absolute'
529
+ const documentScroll = elToNeedsFixedPosition
530
+ ? document.documentElement
531
+ : { scrollLeft: 0, scrollTop: 0 }
532
+ elTo.style.position = elToNeedsFixedPosition ? 'fixed' : 'absolute'
528
533
  elTo.style.left = `${elToPosition.left - documentScroll.scrollLeft}px`
529
534
  elTo.style.right = 'unset'
530
535
  elTo.style.top = `${elToPosition.top - documentScroll.scrollTop}px`
@@ -540,7 +545,7 @@ export default function morph(_options) {
540
545
  elTo.style.overflowY = 'hidden'
541
546
  }
542
547
 
543
- document.body.appendChild(elTo)
548
+ document.body.append(elTo)
544
549
 
545
550
  if (elFromTween !== void 0) {
546
551
  elFromTween.style.cssText = elFromCssText
@@ -565,7 +570,7 @@ export default function morph(_options) {
565
570
  elFromTween.style.overflowY = 'hidden'
566
571
  }
567
572
 
568
- document.body.appendChild(elFromTween)
573
+ document.body.append(elFromTween)
569
574
  }
570
575
 
571
576
  const commonCleanup = aborted => {
@@ -580,7 +585,7 @@ export default function morph(_options) {
580
585
  }
581
586
 
582
587
  if (elToClone.parentNode === elToParent) {
583
- elToParent.insertBefore(elTo, elToClone)
588
+ elToClone.before(elTo)
584
589
  }
585
590
 
586
591
  // we clean the spacers
@@ -589,7 +594,7 @@ export default function morph(_options) {
589
594
  elFromTween?.remove()
590
595
 
591
596
  // cancel will be no longer available
592
- cancel = () => false
597
+ cancel = defaultCancel
593
598
 
594
599
  elFrom.qMorphCancel = void 0
595
600
  elTo.qMorphCancel = void 0
@@ -974,7 +979,7 @@ export default function morph(_options) {
974
979
 
975
980
  ${keyframesTo}
976
981
  `
977
- document.head.appendChild(style)
982
+ document.head.append(style)
978
983
 
979
984
  let animationDirection = 'normal'
980
985
 
@@ -1046,7 +1051,9 @@ export default function morph(_options) {
1046
1051
  ) {
1047
1052
  const delayPromise =
1048
1053
  options.waitFor > 0
1049
- ? new Promise(resolve => setTimeout(resolve, options.waitFor))
1054
+ ? new Promise(resolve => {
1055
+ setTimeout(resolve, options.waitFor)
1056
+ })
1050
1057
  : options.waitFor === 'transitionend'
1051
1058
  ? new Promise(resolve => {
1052
1059
  const endFn = () => {
@@ -1060,7 +1067,9 @@ export default function morph(_options) {
1060
1067
  elTo.removeEventListener('transitioncancel', endFn)
1061
1068
  }
1062
1069
 
1063
- resolve()
1070
+ // oxlint-disable-next-line promise/no-multiple-resolved
1071
+ resolve?.()
1072
+ resolve = null
1064
1073
  }
1065
1074
 
1066
1075
  let timer = setTimeout(endFn, 400)
@@ -4,7 +4,7 @@ import { noop } from '../event/event.js'
4
4
  import { isNumber } from '../is/is.js'
5
5
 
6
6
  function parseFeatures(winFeatures) {
7
- const cfg = Object.assign({ noopener: true }, winFeatures)
7
+ const cfg = { noopener: true, ...winFeatures }
8
8
  const feat = []
9
9
  for (const key in cfg) {
10
10
  const value = cfg[key]
@@ -20,7 +20,7 @@ function parseFeatures(winFeatures) {
20
20
  function openWindow(url, reject, windowFeatures) {
21
21
  let open = window.open
22
22
 
23
- if (Platform.is.cordova === true) {
23
+ if (Platform.is.cordova) {
24
24
  if (cordova?.InAppBrowser?.open !== void 0) {
25
25
  open = cordova.InAppBrowser.open
26
26
  } else if (navigator?.app !== void 0) {
@@ -35,21 +35,21 @@ function openWindow(url, reject, windowFeatures) {
35
35
  // also implies "noopener". Only reject if neither is in effect, so that the
36
36
  // null return can be treated as a blocked popup.
37
37
  // Note: parseFeatures() normalizes values to booleans, so strict === true is safe.
38
- const cfg = Object.assign({ noopener: true }, windowFeatures)
39
- const hasNoopener = cfg.noopener === true || cfg.noreferrer === true
38
+ const cfg = { noopener: true, ...windowFeatures }
39
+ const hasNoopener = cfg.noopener || cfg.noreferrer
40
40
 
41
41
  const win = open(url, '_blank', parseFeatures(windowFeatures))
42
42
 
43
43
  if (win) {
44
44
  if (Platform.is.desktop) win.focus()
45
45
  return win
46
- } else if (hasNoopener === false) {
46
+ } else if (!hasNoopener) {
47
47
  reject?.()
48
48
  }
49
49
  }
50
50
 
51
- export default (url, reject, windowFeatures) => {
52
- if (Platform.is.ios === true && window.SafariViewController !== void 0) {
51
+ export default function openUrl(url, reject, windowFeatures) {
52
+ if (Platform.is.ios && window.SafariViewController !== void 0) {
53
53
  window.SafariViewController.isAvailable(available => {
54
54
  if (available) {
55
55
  window.SafariViewController.show({ url }, noop, reject)
@@ -1,42 +1,45 @@
1
1
  // file referenced from docs
2
2
 
3
- const hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,
4
- hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,
5
- hexOrHexa =
3
+ const hexRE = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,
4
+ hexaRE = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,
5
+ hexOrHexaRE =
6
6
  /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,
7
- rgb =
7
+ rgbRE =
8
8
  /^rgb\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5])\)$/,
9
- rgba =
10
- /^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0|0\.[0-9]+[1-9]|0\.[1-9]+|1)\)$/
9
+ rgbaRE =
10
+ /^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0|0\.[0-9]+[1-9]|0\.[1-9]+|1)\)$/,
11
+ dateRE = /^-?[\d]+\/[0-1]\d\/[0-3]\d$/,
12
+ timeRE = /^([0-1]?\d|2[0-3]):[0-5]\d$/,
13
+ fulltimeRE = /^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/,
14
+ timeOrFulltimeRE = /^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/,
15
+ emailRE =
16
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
11
17
 
12
18
  // Keep in sync with ui/types/api/validation.d.ts
13
19
  export const testPattern = {
14
- date: v => /^-?[\d]+\/[0-1]\d\/[0-3]\d$/.test(v),
15
- time: v => /^([0-1]?\d|2[0-3]):[0-5]\d$/.test(v),
16
- fulltime: v => /^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(v),
17
- timeOrFulltime: v => /^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/.test(v),
20
+ date: v => dateRE.test(v),
21
+ time: v => timeRE.test(v),
22
+ fulltime: v => fulltimeRE.test(v),
23
+ timeOrFulltime: v => timeOrFulltimeRE.test(v),
18
24
 
19
25
  // -- RFC 5322 --
20
26
  // -- Added in v2.6.6 --
21
27
  // This is a basic helper validation.
22
28
  // For something more complex (like RFC 822) you should write and use your own rule.
23
29
  // We won't be accepting PRs to enhance the one below because of the reason above.
24
- email: v =>
25
- /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
26
- v
27
- ),
30
+ email: v => emailRE.test(v),
28
31
 
29
- hexColor: v => hex.test(v),
30
- hexaColor: v => hexa.test(v),
31
- hexOrHexaColor: v => hexOrHexa.test(v),
32
+ hexColor: v => hexRE.test(v),
33
+ hexaColor: v => hexaRE.test(v),
34
+ hexOrHexaColor: v => hexOrHexaRE.test(v),
32
35
 
33
- rgbColor: v => rgb.test(v),
34
- rgbaColor: v => rgba.test(v),
35
- rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),
36
+ rgbColor: v => rgbRE.test(v),
37
+ rgbaColor: v => rgbaRE.test(v),
38
+ rgbOrRgbaColor: v => rgbRE.test(v) || rgbaRE.test(v),
36
39
 
37
- hexOrRgbColor: v => hex.test(v) || rgb.test(v),
38
- hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),
39
- anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)
40
+ hexOrRgbColor: v => hexRE.test(v) || rgbRE.test(v),
41
+ hexaOrRgbaColor: v => hexaRE.test(v) || rgbaRE.test(v),
42
+ anyColor: v => hexOrHexaRE.test(v) || rgbRE.test(v) || rgbaRE.test(v)
40
43
  }
41
44
 
42
45
  export default {
@@ -1,6 +1,6 @@
1
1
  // oxlint-disable import/no-named-as-default-member
2
2
 
3
- import { describe, test, expect } from 'vitest'
3
+ import { describe, expect, test } from 'vitest'
4
4
 
5
5
  import patterns from './patterns.js'
6
6
 
@@ -17,7 +17,7 @@ function globalHandler(evt) {
17
17
  if (
18
18
  target === void 0 ||
19
19
  target.nodeType === 8 ||
20
- target.classList.contains('no-pointer-events') === true
20
+ target.classList.contains('no-pointer-events')
21
21
  ) {
22
22
  return
23
23
  }
@@ -39,7 +39,7 @@ function globalHandler(evt) {
39
39
  break
40
40
  }
41
41
 
42
- if (proxy.props.seamless !== true) return
42
+ if (!proxy.props.seamless) return
43
43
 
44
44
  portalIndex--
45
45
  }
@@ -49,10 +49,10 @@ function globalHandler(evt) {
49
49
 
50
50
  if (
51
51
  (state.anchorEl.value === null ||
52
- state.anchorEl.value.contains(target) === false) &&
52
+ !state.anchorEl.value.contains(target)) &&
53
53
  (target === document.body ||
54
54
  (state.innerRef.value !== null &&
55
- state.innerRef.value.contains(target) === false))
55
+ !state.innerRef.value.contains(target)))
56
56
  ) {
57
57
  // mark the event as being processed by clickOutside
58
58
  // used to prevent refocus after menu close
@@ -74,7 +74,7 @@ export function addClickOutside(clickOutsideProps) {
74
74
  }
75
75
 
76
76
  export function removeClickOutside(clickOutsideProps) {
77
- const index = registeredList.findIndex(h => h === clickOutsideProps)
77
+ const index = registeredList.indexOf(clickOutsideProps)
78
78
 
79
79
  if (index !== -1) {
80
80
  registeredList.splice(index, 1)
@@ -1,4 +1,6 @@
1
1
  export const globalConfig = {}
2
+
3
+ // oxlint-disable-next-line import/no-mutable-exports
2
4
  export let globalConfigIsFrozen = false
3
5
 
4
6
  export function freezeGlobalConfig() {
@@ -1,10 +1,10 @@
1
- import { describe, test, expect } from 'vitest'
2
- import { mount, config } from '@vue/test-utils'
1
+ import { describe, expect, test } from 'vitest'
2
+ import { config, mount } from '@vue/test-utils'
3
3
 
4
4
  import {
5
+ freezeGlobalConfig,
5
6
  globalConfig,
6
- globalConfigIsFrozen,
7
- freezeGlobalConfig
7
+ globalConfigIsFrozen
8
8
  } from './instance-config.js'
9
9
 
10
10
  // We override Quasar install so we have a custom $q.config
@@ -19,7 +19,7 @@ export function createGlobalNode(id, portalType) {
19
19
  }
20
20
  }
21
21
 
22
- target.appendChild(el)
22
+ target.append(el)
23
23
  nodesList.push(el)
24
24
  portalTypeList.push(portalType)
25
25
 
@@ -49,8 +49,8 @@ export function changeGlobalNodesTarget(newTarget) {
49
49
  ) < 2
50
50
  ) {
51
51
  nodesList.forEach(node => {
52
- if (node.contains(target) === false) {
53
- target.appendChild(node)
52
+ if (!node.contains(target)) {
53
+ target.append(node)
54
54
  }
55
55
  })
56
56
 
@@ -64,9 +64,9 @@ export function changeGlobalNodesTarget(newTarget) {
64
64
 
65
65
  if (
66
66
  (i === lastDialogIndex || portalTypeList[i] !== 'dialog') &&
67
- el.contains(target) === false
67
+ !el.contains(target)
68
68
  ) {
69
- target.appendChild(el)
69
+ target.append(el)
70
70
  }
71
71
  }
72
72
  }
@@ -1,9 +1,9 @@
1
- import { describe, test, expect, afterEach } from 'vitest'
1
+ import { afterEach, describe, expect, test } from 'vitest'
2
2
 
3
3
  import {
4
+ changeGlobalNodesTarget,
4
5
  createGlobalNode,
5
- removeGlobalNode,
6
- changeGlobalNodesTarget
6
+ removeGlobalNode
7
7
  } from './nodes.js'
8
8
  import { globalConfig } from './instance-config.js'
9
9
 
@@ -91,7 +91,7 @@ describe('[nodes API]', () => {
91
91
 
92
92
  const newTargetEl = document.createElement('div')
93
93
  newTargetEl.setAttribute('id', 'new-target')
94
- document.body.appendChild(newTargetEl)
94
+ document.body.append(newTargetEl)
95
95
 
96
96
  expect(changeGlobalNodesTarget(newTargetEl)).toBeUndefined()
97
97
 
@@ -1,4 +1,4 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
  import { isReactive } from 'vue'
3
3
 
4
4
  import {
@@ -1,4 +1,4 @@
1
- import { h, ref, nextTick } from 'vue'
1
+ import { h, nextTick, ref } from 'vue'
2
2
 
3
3
  import { createChildApp } from '../../install-quasar.js'
4
4
  import { createGlobalNode, removeGlobalNode } from '../private.config/nodes.js'
@@ -24,21 +24,18 @@ export function merge(target, source) {
24
24
  }
25
25
  }
26
26
 
27
- export default function createDialog(
27
+ export function createDialog(
28
28
  DefaultComponent,
29
29
  supportsCustomComponent,
30
30
  parentApp
31
31
  ) {
32
32
  return pluginProps => {
33
- if (__QUASAR_SSR_SERVER__) {
34
- return ssrAPI
35
- }
33
+ if (__QUASAR_SSR_SERVER__) return ssrAPI
36
34
 
37
35
  let DialogComponent, props
38
- const isCustom =
39
- supportsCustomComponent === true && pluginProps.component !== void 0
36
+ const isCustom = supportsCustomComponent && pluginProps.component !== void 0
40
37
 
41
- if (isCustom === true) {
38
+ if (isCustom) {
42
39
  const { component, componentProps } = pluginProps
43
40
 
44
41
  DialogComponent =
@@ -56,8 +53,8 @@ export default function createDialog(
56
53
  if (style !== void 0) otherProps.cardStyle = style
57
54
  }
58
55
 
59
- let vm,
60
- emittedOK = false
56
+ let vm
57
+ let emittedOK = false
61
58
  const dialogRef = ref(null)
62
59
  const el = createGlobalNode(false, 'dialog')
63
60
 
@@ -113,7 +110,7 @@ export default function createDialog(
113
110
  },
114
111
  update(componentProps) {
115
112
  if (vm !== null) {
116
- if (isCustom === true) {
113
+ if (isCustom) {
117
114
  Object.assign(props, componentProps)
118
115
  } else {
119
116
  const { class: klass, style, ...cfg } = componentProps
@@ -143,7 +140,7 @@ export default function createDialog(
143
140
  app = null
144
141
  vm = null
145
142
 
146
- if (emittedOK !== true) {
143
+ if (!emittedOK) {
147
144
  cancelFns.forEach(fn => {
148
145
  fn()
149
146
  })
@@ -15,7 +15,7 @@ export function removeFocusWaitFlag(flag) {
15
15
 
16
16
  if (waitFlags.length === 0 && queue.length !== 0) {
17
17
  // only call last focus handler (can't focus multiple things at once)
18
- queue[queue.length - 1]()
18
+ queue.at(-1)()
19
19
  queue = []
20
20
  }
21
21
  }
@@ -24,6 +24,10 @@ export function addFocusFn(fn) {
24
24
  if (waitFlags.length === 0) {
25
25
  fn()
26
26
  } else {
27
+ /**
28
+ * While in the wait state, do not let focus be set on any element.
29
+ */
30
+ document.activeElement?.blur?.()
27
31
  queue.push(fn)
28
32
  }
29
33
  }
@@ -1,10 +1,10 @@
1
- import { describe, test, expect, vi, afterEach } from 'vitest'
1
+ import { afterEach, describe, expect, test, vi } from 'vitest'
2
2
 
3
3
  import {
4
- addFocusWaitFlag,
5
- removeFocusWaitFlag,
6
4
  addFocusFn,
7
- removeFocusFn
5
+ addFocusWaitFlag,
6
+ removeFocusFn,
7
+ removeFocusWaitFlag
8
8
  } from './focus-manager.js'
9
9
 
10
10
  let waitFlagList = []
@@ -3,11 +3,11 @@ import { client } from '../../plugins/platform/Platform.js'
3
3
  const handlers = []
4
4
 
5
5
  function trigger(e) {
6
- handlers[handlers.length - 1](e)
6
+ handlers.at(-1)(e)
7
7
  }
8
8
 
9
9
  export function addFocusout(fn) {
10
- if (client.is.desktop === true) {
10
+ if (client.is.desktop) {
11
11
  handlers.push(fn)
12
12
 
13
13
  if (handlers.length === 1) {
@@ -1,4 +1,4 @@
1
- import { describe, test, expect, vi, afterEach } from 'vitest'
1
+ import { afterEach, describe, expect, test, vi } from 'vitest'
2
2
 
3
3
  import { addFocusout, removeFocusout } from './focusout.js'
4
4