quasar 2.19.2 → 2.20.0

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 (562) 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 +6 -0
  17. package/dist/icon-set/fontawesome-v7.umd.prod.js +6 -0
  18. package/dist/icon-set/ionicons-v4.umd.prod.js +2 -2
  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 +6 -0
  37. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +2 -2
  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 +6 -0
  41. package/dist/icon-set/svg-ionicons-v8.umd.prod.js +6 -0
  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 +2 -2
  48. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +2 -2
  49. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
  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 +2615 -2603
  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 +2610 -2598
  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 +3 -3
  136. package/dist/types/{extras/icon-set.d.ts → icon-set.d.ts} +21 -16
  137. package/dist/types/index.d.ts +1 -1
  138. package/dist/types/plugin.d.ts +1 -1
  139. package/dist/types/shim-icon-set.d.ts +1 -2
  140. package/dist/types/shim-lang.d.ts +1 -2
  141. package/dist/types/ts-helpers.d.ts +3 -3
  142. package/dist/types/tsconfig.json +1 -1
  143. package/dist/types/utils/scroll.d.ts +1 -1
  144. package/dist/types/utils.d.ts +2 -2
  145. package/dist/web-types/web-types.json +1 -1
  146. package/icon-set/bootstrap-icons.js +1 -1
  147. package/icon-set/eva-icons.js +23 -23
  148. package/icon-set/fontawesome-v7-pro.js +128 -0
  149. package/icon-set/fontawesome-v7.js +128 -0
  150. package/icon-set/ionicons-v4.js +17 -17
  151. package/icon-set/svg-bootstrap-icons.js +1 -1
  152. package/icon-set/svg-eva-icons.js +23 -23
  153. package/icon-set/svg-fontawesome-v5.js +1 -1
  154. package/icon-set/svg-fontawesome-v7.js +197 -0
  155. package/icon-set/svg-ionicons-v4.js +17 -17
  156. package/icon-set/svg-ionicons-v5.js +1 -1
  157. package/icon-set/svg-ionicons-v6.js +1 -1
  158. package/icon-set/svg-ionicons-v7.js +224 -0
  159. package/icon-set/svg-ionicons-v8.js +224 -0
  160. package/icon-set/svg-themify.js +7 -7
  161. package/icon-set/themify.js +7 -7
  162. package/lang/ar-TN.js +1 -1
  163. package/lang/ar.js +1 -1
  164. package/lang/az-Latn.js +1 -1
  165. package/lang/bg.js +1 -1
  166. package/lang/bn.js +1 -1
  167. package/lang/bs-BA.js +1 -1
  168. package/lang/ca.js +1 -1
  169. package/lang/cs.js +11 -6
  170. package/lang/da.js +1 -1
  171. package/lang/de-CH.js +1 -1
  172. package/lang/de-DE.js +1 -1
  173. package/lang/de.js +1 -1
  174. package/lang/el.js +1 -1
  175. package/lang/en-GB.js +1 -1
  176. package/lang/en-US.js +1 -1
  177. package/lang/eo.js +1 -1
  178. package/lang/es.js +1 -1
  179. package/lang/et.js +1 -1
  180. package/lang/eu.js +1 -1
  181. package/lang/fa-IR.js +1 -1
  182. package/lang/fa.js +1 -1
  183. package/lang/fi.js +1 -1
  184. package/lang/fr.js +1 -1
  185. package/lang/gn.js +1 -1
  186. package/lang/he.js +1 -1
  187. package/lang/hi.js +1 -1
  188. package/lang/hr.js +1 -1
  189. package/lang/hu.js +1 -1
  190. package/lang/id.js +1 -1
  191. package/lang/is.js +1 -1
  192. package/lang/it.js +9 -9
  193. package/lang/ja.js +1 -1
  194. package/lang/kk.js +1 -1
  195. package/lang/km.js +1 -1
  196. package/lang/kur-CKB.js +1 -1
  197. package/lang/lt.js +2 -2
  198. package/lang/lu.js +1 -1
  199. package/lang/lv.js +1 -1
  200. package/lang/mk.js +1 -1
  201. package/lang/ml.js +1 -1
  202. package/lang/mm.js +1 -1
  203. package/lang/ms-MY.js +1 -1
  204. package/lang/ms.js +1 -1
  205. package/lang/my.js +1 -1
  206. package/lang/nb-NO.js +1 -1
  207. package/lang/nl.js +1 -1
  208. package/lang/pl.js +1 -1
  209. package/lang/pt-BR.js +1 -1
  210. package/lang/pt.js +1 -1
  211. package/lang/ro.js +1 -1
  212. package/lang/ru.js +1 -1
  213. package/lang/sk.js +1 -1
  214. package/lang/sl.js +1 -1
  215. package/lang/sm.js +1 -1
  216. package/lang/sq.js +1 -1
  217. package/lang/sr-CYR.js +1 -1
  218. package/lang/sr.js +1 -1
  219. package/lang/sv.js +1 -1
  220. package/lang/ta.js +1 -1
  221. package/lang/th.js +1 -1
  222. package/lang/tl.js +1 -1
  223. package/lang/tr.js +1 -1
  224. package/lang/ug.js +1 -1
  225. package/lang/uk.js +1 -1
  226. package/lang/ur-PK.js +1 -1
  227. package/lang/uz-Cyrl.js +1 -1
  228. package/lang/uz-Latn.js +1 -1
  229. package/lang/vi.js +1 -1
  230. package/lang/zh-CN.js +1 -1
  231. package/lang/zh-TW.js +1 -1
  232. package/package.json +13 -17
  233. package/src/components/ajax-bar/QAjaxBar.js +22 -25
  234. package/src/components/avatar/QAvatar.js +3 -3
  235. package/src/components/avatar/QAvatar.test.js +2 -2
  236. package/src/components/badge/QBadge.js +9 -10
  237. package/src/components/badge/QBadge.test.js +2 -2
  238. package/src/components/banner/QBanner.js +6 -6
  239. package/src/components/banner/QBanner.test.js +2 -2
  240. package/src/components/bar/QBar.js +3 -3
  241. package/src/components/bar/QBar.test.js +2 -2
  242. package/src/components/breadcrumbs/QBreadcrumbs.js +5 -4
  243. package/src/components/breadcrumbs/QBreadcrumbs.test.js +3 -3
  244. package/src/components/breadcrumbs/QBreadcrumbsEl.js +4 -4
  245. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +2 -2
  246. package/src/components/btn/QBtn.js +39 -44
  247. package/src/components/btn/QBtn.test.js +2 -2
  248. package/src/components/btn/use-btn.js +34 -47
  249. package/src/components/btn/use-btn.test.js +5 -5
  250. package/src/components/btn-dropdown/QBtnDropdown.js +15 -16
  251. package/src/components/btn-group/QBtnGroup.js +3 -3
  252. package/src/components/btn-toggle/QBtnToggle.js +5 -9
  253. package/src/components/card/QCard.js +5 -5
  254. package/src/components/card/QCardActions.js +2 -2
  255. package/src/components/card/QCardSection.js +2 -2
  256. package/src/components/carousel/QCarousel.js +32 -38
  257. package/src/components/carousel/QCarouselControl.js +1 -1
  258. package/src/components/carousel/QCarouselSlide.js +1 -1
  259. package/src/components/carousel/QCarouselSlide.json +1 -1
  260. package/src/components/chat/QChatMessage.js +13 -14
  261. package/src/components/chat/QChatMessage.json +1 -1
  262. package/src/components/checkbox/QCheckbox.js +5 -5
  263. package/src/components/checkbox/use-checkbox.js +38 -50
  264. package/src/components/chip/QChip.js +26 -34
  265. package/src/components/chip/QChip.test.js +2 -2
  266. package/src/components/circular-progress/QCircularProgress.js +8 -11
  267. package/src/components/circular-progress/circular-progress.test.js +1 -1
  268. package/src/components/color/QColor.js +75 -98
  269. package/src/components/date/QDate.js +128 -140
  270. package/src/components/date/use-datetime.js +3 -6
  271. package/src/components/dialog/QDialog.js +44 -50
  272. package/src/components/dialog/QDialog.test.js +7 -7
  273. package/src/components/drawer/QDrawer.js +110 -152
  274. package/src/components/editor/QEditor.js +44 -37
  275. package/src/components/editor/editor-caret.js +27 -31
  276. package/src/components/editor/editor-utils.js +9 -5
  277. package/src/components/expansion-item/QExpansionItem.js +36 -48
  278. package/src/components/fab/QFab.js +11 -11
  279. package/src/components/fab/QFabAction.js +2 -4
  280. package/src/components/fab/use-fab.js +6 -7
  281. package/src/components/field/QField.js +2 -2
  282. package/src/components/file/QFile.js +26 -33
  283. package/src/components/footer/QFooter.js +40 -53
  284. package/src/components/form/QForm.js +37 -43
  285. package/src/components/form/QFormChildMixin.js +3 -3
  286. package/src/components/header/QHeader.js +35 -47
  287. package/src/components/icon/QIcon.js +19 -19
  288. package/src/components/img/QImg.js +24 -24
  289. package/src/components/img/QImg.json +3 -3
  290. package/src/components/infinite-scroll/QInfiniteScroll.js +38 -52
  291. package/src/components/inner-loading/QInnerLoading.js +3 -3
  292. package/src/components/input/QInput.js +52 -52
  293. package/src/components/input/use-mask.js +56 -54
  294. package/src/components/intersection/QIntersection.js +6 -8
  295. package/src/components/item/QItem.js +20 -30
  296. package/src/components/item/QItemLabel.js +5 -7
  297. package/src/components/item/QItemSection.js +6 -6
  298. package/src/components/item/QList.js +6 -6
  299. package/src/components/item/QList.test.js +2 -2
  300. package/src/components/knob/QKnob.js +39 -44
  301. package/src/components/layout/QLayout.js +30 -34
  302. package/src/components/linear-progress/QLinearProgress.js +14 -23
  303. package/src/components/markup-table/QMarkupTable.js +7 -9
  304. package/src/components/menu/QMenu.js +36 -37
  305. package/src/components/no-ssr/QNoSsr.js +1 -1
  306. package/src/components/option-group/QOptionGroup.js +5 -5
  307. package/src/components/page/QPage.js +16 -18
  308. package/src/components/page/QPageContainer.js +9 -9
  309. package/src/components/page-scroller/QPageScroller.js +11 -13
  310. package/src/components/page-sticky/use-page-sticky.js +18 -18
  311. package/src/components/pagination/QPagination.js +24 -26
  312. package/src/components/parallax/QParallax.js +15 -9
  313. package/src/components/parallax/QParallax.json +1 -1
  314. package/src/components/popup-edit/QPopupEdit.js +10 -13
  315. package/src/components/popup-proxy/QPopupProxy.js +5 -7
  316. package/src/components/pull-to-refresh/QPullToRefresh.js +15 -17
  317. package/src/components/radio/QRadio.js +24 -29
  318. package/src/components/range/QRange.js +33 -37
  319. package/src/components/rating/QRating.js +59 -61
  320. package/src/components/resize-observer/QResizeObserver.js +55 -62
  321. package/src/components/scroll-area/QScrollArea.js +32 -36
  322. package/src/components/scroll-observer/QScrollObserver.js +3 -3
  323. package/src/components/select/QSelect.js +208 -269
  324. package/src/components/separator/QSeparator.js +7 -10
  325. package/src/components/skeleton/QSkeleton.js +4 -4
  326. package/src/components/slide-item/QSlideItem.js +7 -7
  327. package/src/components/slide-transition/QSlideTransition.js +4 -4
  328. package/src/components/slider/QSlider.js +13 -16
  329. package/src/components/slider/use-slider.js +53 -81
  330. package/src/components/slider/use-slider.json +3 -3
  331. package/src/components/space/QSpace.test.js +1 -1
  332. package/src/components/spinner/QSpinner.test.js +2 -2
  333. package/src/components/spinner/QSpinnerAudio.test.js +2 -2
  334. package/src/components/spinner/QSpinnerBall.test.js +2 -2
  335. package/src/components/spinner/QSpinnerBars.test.js +2 -2
  336. package/src/components/spinner/QSpinnerBox.test.js +2 -2
  337. package/src/components/spinner/QSpinnerClock.test.js +2 -2
  338. package/src/components/spinner/QSpinnerComment.test.js +2 -2
  339. package/src/components/spinner/QSpinnerCube.test.js +2 -2
  340. package/src/components/spinner/QSpinnerDots.test.js +2 -2
  341. package/src/components/spinner/QSpinnerFacebook.test.js +2 -2
  342. package/src/components/spinner/QSpinnerGears.test.js +2 -2
  343. package/src/components/spinner/QSpinnerGrid.test.js +2 -2
  344. package/src/components/spinner/QSpinnerHearts.test.js +2 -2
  345. package/src/components/spinner/QSpinnerHourglass.test.js +2 -2
  346. package/src/components/spinner/QSpinnerInfinity.test.js +2 -2
  347. package/src/components/spinner/QSpinnerIos.test.js +2 -2
  348. package/src/components/spinner/QSpinnerOrbit.test.js +2 -2
  349. package/src/components/spinner/QSpinnerOval.test.js +2 -2
  350. package/src/components/spinner/QSpinnerPie.test.js +2 -2
  351. package/src/components/spinner/QSpinnerPuff.test.js +2 -2
  352. package/src/components/spinner/QSpinnerRadio.test.js +2 -2
  353. package/src/components/spinner/QSpinnerRings.test.js +2 -2
  354. package/src/components/spinner/QSpinnerTail.test.js +2 -2
  355. package/src/components/spinner/use-spinner.test.js +1 -1
  356. package/src/components/splitter/QSplitter.js +19 -21
  357. package/src/components/stepper/QStep.js +12 -14
  358. package/src/components/stepper/QStepper.js +13 -14
  359. package/src/components/stepper/StepHeader.js +34 -35
  360. package/src/components/tab-panels/QTabPanels.js +3 -3
  361. package/src/components/table/QTable.js +82 -100
  362. package/src/components/table/QTd.js +3 -3
  363. package/src/components/table/QTh.js +5 -6
  364. package/src/components/table/QTr.js +3 -3
  365. package/src/components/table/table-column-selection.js +4 -6
  366. package/src/components/table/table-filter.js +2 -2
  367. package/src/components/table/table-pagination.js +14 -20
  368. package/src/components/table/table-row-expand.js +3 -3
  369. package/src/components/table/table-row-selection.js +10 -20
  370. package/src/components/table/table-sort.js +7 -7
  371. package/src/components/tabs/QRouteTab.js +1 -1
  372. package/src/components/tabs/QTab.js +1 -1
  373. package/src/components/tabs/QTabs.js +82 -109
  374. package/src/components/tabs/use-tab.js +36 -38
  375. package/src/components/time/QTime.js +109 -132
  376. package/src/components/timeline/QTimeline.js +7 -4
  377. package/src/components/timeline/QTimelineEntry.js +7 -6
  378. package/src/components/timeline/QTimelineEntry.json +1 -1
  379. package/src/components/toggle/QToggle.js +6 -8
  380. package/src/components/toolbar/QToolbar.js +2 -2
  381. package/src/components/toolbar/QToolbar.test.js +2 -2
  382. package/src/components/toolbar/QToolbarTitle.js +2 -4
  383. package/src/components/toolbar/QToolbarTitle.test.js +2 -2
  384. package/src/components/tooltip/QTooltip.js +27 -28
  385. package/src/components/tree/QTree.js +96 -114
  386. package/src/components/tree/QTree.json +1 -1
  387. package/src/components/uploader/QUploaderAddTrigger.js +2 -2
  388. package/src/components/uploader/uploader-core.js +44 -51
  389. package/src/components/uploader/xhr-uploader-plugin.js +13 -17
  390. package/src/components/video/QVideo.js +1 -1
  391. package/src/components/video/QVideo.test.js +2 -2
  392. package/src/components/virtual-scroll/QVirtualScroll.js +9 -10
  393. package/src/components/virtual-scroll/use-virtual-scroll.js +42 -50
  394. package/src/composables/private.use-align/use-align.js +2 -2
  395. package/src/composables/private.use-align/use-align.test.js +1 -1
  396. package/src/composables/private.use-anchor/use-anchor.js +23 -32
  397. package/src/composables/private.use-dark/use-dark.test.js +1 -1
  398. package/src/composables/private.use-field/use-field.js +79 -99
  399. package/src/composables/private.use-file/use-file-dom-props.js +2 -2
  400. package/src/composables/private.use-file/use-file.js +27 -27
  401. package/src/composables/private.use-fullscreen/use-fullscreen.js +15 -20
  402. package/src/composables/private.use-history/use-history.js +2 -2
  403. package/src/composables/private.use-history/use-history.test.js +1 -1
  404. package/src/composables/private.use-key-composition/use-key-composition.js +11 -12
  405. package/src/composables/private.use-model-toggle/use-model-toggle.js +16 -25
  406. package/src/composables/private.use-panel/use-panel.js +25 -27
  407. package/src/composables/private.use-portal/use-portal.js +11 -9
  408. package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +1 -4
  409. package/src/composables/private.use-ratio/use-ratio.js +6 -5
  410. package/src/composables/private.use-ratio/use-ratio.test.js +1 -1
  411. package/src/composables/private.use-refocus-target/use-refocus-target.js +2 -4
  412. package/src/composables/private.use-router-link/use-router-link.js +44 -55
  413. package/src/composables/private.use-scroll-target/use-scroll-target.js +1 -1
  414. package/src/composables/private.use-size/use-size.test.js +1 -1
  415. package/src/composables/private.use-transition/use-transition.test.js +1 -1
  416. package/src/composables/private.use-validate/use-validate.js +23 -36
  417. package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +1 -1
  418. package/src/composables/use-form/private.use-form.js +1 -1
  419. package/src/composables/use-form/private.use-form.test.js +3 -3
  420. package/src/composables/use-form/use-form-child.js +7 -7
  421. package/src/composables/use-hydration/use-hydration.js +2 -2
  422. package/src/composables/use-hydration/use-hydration.test.js +1 -1
  423. package/src/composables/use-id/use-id.js +4 -8
  424. package/src/composables/use-id/use-id.test.js +1 -1
  425. package/src/composables/use-interval/use-interval.js +3 -3
  426. package/src/composables/use-interval/use-interval.test.js +1 -1
  427. package/src/composables/use-meta/use-meta.js +3 -3
  428. package/src/composables/use-quasar/use-quasar.test.js +1 -1
  429. package/src/composables/use-render-cache/use-render-cache.js +1 -1
  430. package/src/composables/use-render-cache/use-render-cache.test.js +1 -1
  431. package/src/composables/use-split-attrs/use-split-attrs.js +3 -7
  432. package/src/composables/use-split-attrs/use-split-attrs.test.js +1 -1
  433. package/src/composables/use-tick/use-tick.js +3 -3
  434. package/src/composables/use-tick/use-tick.test.js +2 -2
  435. package/src/composables/use-timeout/use-timeout.js +2 -2
  436. package/src/composables/use-timeout/use-timeout.test.js +1 -1
  437. package/src/directives/close-popup/ClosePopup.js +4 -9
  438. package/src/directives/intersection/Intersection.js +5 -8
  439. package/src/directives/morph/Morph.js +12 -18
  440. package/src/directives/ripple/Ripple.js +19 -26
  441. package/src/directives/ripple/Ripple.test.js +2 -2
  442. package/src/directives/scroll/Scroll.js +2 -2
  443. package/src/directives/touch-hold/TouchHold.js +22 -28
  444. package/src/directives/touch-pan/TouchPan.js +68 -84
  445. package/src/directives/touch-repeat/TouchRepeat.js +28 -39
  446. package/src/directives/touch-swipe/TouchSwipe.js +30 -33
  447. package/src/index.ssr.js +2 -0
  448. package/src/index.umd.js +2 -0
  449. package/src/install-quasar.js +9 -9
  450. package/src/plugins/addressbar/AddressbarColor.js +9 -9
  451. package/src/plugins/addressbar/AddressbarColor.test.js +2 -2
  452. package/src/plugins/app-fullscreen/AppFullscreen.js +11 -10
  453. package/src/plugins/app-fullscreen/AppFullscreen.test.js +2 -2
  454. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +2 -2
  455. package/src/plugins/app-visibility/AppVisibility.js +5 -5
  456. package/src/plugins/app-visibility/AppVisibility.test.js +2 -2
  457. package/src/plugins/bottom-sheet/BottomSheet.js +2 -2
  458. package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +4 -4
  459. package/src/plugins/cookies/Cookies.js +50 -62
  460. package/src/plugins/dark/Dark.js +3 -5
  461. package/src/plugins/dark/Dark.test.js +1 -1
  462. package/src/plugins/dialog/Dialog.js +2 -2
  463. package/src/plugins/dialog/component/DialogPluginComponent.js +17 -20
  464. package/src/plugins/icon-set/IconSet.js +2 -4
  465. package/src/plugins/icon-set/IconSet.test.js +1 -1
  466. package/src/plugins/lang/Lang.js +7 -10
  467. package/src/plugins/lang/Lang.json +2 -2
  468. package/src/plugins/lang/Lang.test.js +2 -2
  469. package/src/plugins/loading/Loading.js +10 -12
  470. package/src/plugins/loading-bar/LoadingBar.js +4 -4
  471. package/src/plugins/meta/Meta.js +10 -11
  472. package/src/plugins/notify/Notify.js +67 -72
  473. package/src/plugins/platform/Platform.js +19 -21
  474. package/src/plugins/platform/Platform.test.js +1 -1
  475. package/src/plugins/private.body/Body.js +23 -29
  476. package/src/plugins/private.body/Body.test.js +1 -1
  477. package/src/plugins/private.history/History.js +17 -25
  478. package/src/plugins/private.history/History.test.js +1 -1
  479. package/src/plugins/screen/Screen.js +16 -16
  480. package/src/plugins/screen/Screen.test.js +1 -1
  481. package/src/plugins/storage/LocalStorage.js +3 -4
  482. package/src/plugins/storage/LocalStorage.test.js +2 -2
  483. package/src/plugins/storage/SessionStorage.js +3 -4
  484. package/src/plugins/storage/SessionStorage.test.js +2 -2
  485. package/src/plugins/storage/engine/web-storage.js +30 -23
  486. package/src/plugins/storage/engine/web-storage.test.js +1 -1
  487. package/src/utils/EventBus/EventBus.js +3 -4
  488. package/src/utils/EventBus/EventBus.test.js +1 -1
  489. package/src/utils/clone/clone.test.js +4 -8
  490. package/src/utils/colors/colors.js +38 -29
  491. package/src/utils/colors/colors.test.js +2 -2
  492. package/src/utils/copy-to-clipboard/copy-to-clipboard.js +6 -11
  493. package/src/utils/create-meta-mixin/create-meta-mixin.js +2 -2
  494. package/src/utils/create-uploader-component/create-uploader-component.js +12 -7
  495. package/src/utils/css-var/get-css-var.test.js +2 -2
  496. package/src/utils/css-var/set-css-var.test.js +2 -2
  497. package/src/utils/date/date.js +229 -172
  498. package/src/utils/date/private.persian.js +11 -11
  499. package/src/utils/debounce/debounce.js +3 -7
  500. package/src/utils/debounce/debounce.test.js +1 -1
  501. package/src/utils/dom/dom.js +2 -4
  502. package/src/utils/dom/dom.test.js +4 -4
  503. package/src/utils/event/event.js +21 -23
  504. package/src/utils/export-file/export-file.js +3 -3
  505. package/src/utils/extend/extend.js +15 -14
  506. package/src/utils/extend/extend.test.js +2 -2
  507. package/src/utils/format/format.js +4 -10
  508. package/src/utils/format/format.test.js +1 -1
  509. package/src/utils/frame-debounce/frame-debounce.js +23 -12
  510. package/src/utils/frame-debounce/frame-debounce.test.js +1 -1
  511. package/src/utils/is/is.js +15 -26
  512. package/src/utils/is/is.test.js +8 -7
  513. package/src/utils/morph/morph.js +57 -48
  514. package/src/utils/open-url/open-url.js +7 -7
  515. package/src/utils/patterns/patterns.js +26 -23
  516. package/src/utils/patterns/patterns.test.js +1 -1
  517. package/src/utils/private.click-outside/click-outside.js +5 -5
  518. package/src/utils/private.config/instance-config.js +2 -0
  519. package/src/utils/private.config/instance-config.test.js +4 -4
  520. package/src/utils/private.config/nodes.js +5 -5
  521. package/src/utils/private.config/nodes.test.js +4 -4
  522. package/src/utils/private.create/create.test.js +1 -1
  523. package/src/utils/private.dialog/create-dialog.js +9 -12
  524. package/src/utils/private.focus/focus-manager.js +1 -1
  525. package/src/utils/private.focus/focus-manager.test.js +4 -4
  526. package/src/utils/private.focus/focusout.js +2 -2
  527. package/src/utils/private.focus/focusout.test.js +1 -1
  528. package/src/utils/private.get-emits-object/get-emits-object.test.js +1 -1
  529. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +2 -2
  530. package/src/utils/private.keyboard/escape-key.js +5 -5
  531. package/src/utils/private.keyboard/escape-key.test.js +1 -1
  532. package/src/utils/private.keyboard/key-composition.js +4 -6
  533. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.js +3 -1
  534. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.test.js +1 -1
  535. package/src/utils/private.portal/portal.js +5 -5
  536. package/src/utils/private.position-engine/position-engine.js +20 -22
  537. package/src/utils/private.render/render.js +5 -7
  538. package/src/utils/private.render/render.test.js +5 -5
  539. package/src/utils/private.rtl/rtl.js +3 -2
  540. package/src/utils/private.rtl/rtl.test.js +1 -1
  541. package/src/utils/private.selection/selection.js +1 -1
  542. package/src/utils/private.selection/selection.test.js +2 -2
  543. package/src/utils/private.sort/sort.test.js +2 -2
  544. package/src/utils/private.touch/touch.js +10 -14
  545. package/src/utils/private.touch/touch.test.js +1 -1
  546. package/src/utils/private.vm/vm.js +2 -2
  547. package/src/utils/private.vm/vm.test.js +4 -4
  548. package/src/utils/run-sequential-promises/run-sequential-promises.js +44 -54
  549. package/src/utils/run-sequential-promises/run-sequential-promises.test.js +183 -0
  550. package/src/utils/scroll/prevent-scroll.js +9 -9
  551. package/src/utils/scroll/scroll.js +11 -12
  552. package/src/utils/throttle/throttle.js +4 -3
  553. package/src/utils/throttle/throttle.test.js +1 -1
  554. package/src/utils/uid/uid.js +51 -77
  555. package/src/utils/uid/uid.test.js +3 -3
  556. package/wrappers/index.cjs +2 -2
  557. package/wrappers/index.js +2 -2
  558. package/dist/types/extras/animations.d.ts +0 -106
  559. package/dist/types/extras/fonts.d.ts +0 -1
  560. package/dist/types/extras.d.ts +0 -3
  561. package/dist/vetur/quasar-attributes.json +0 -1
  562. package/dist/vetur/quasar-tags.json +0 -1
@@ -1,6 +1,6 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
 
3
- import { injectProp, injectMultipleProps } from './inject-obj-prop.js'
3
+ import { injectMultipleProps, injectProp } from './inject-obj-prop.js'
4
4
 
5
5
  describe('[injectObjProp API]', () => {
6
6
  describe('[Functions]', () => {
@@ -9,17 +9,17 @@ function onKeydown(evt) {
9
9
  }
10
10
 
11
11
  function onBlur() {
12
- if (escDown === true) {
12
+ if (escDown) {
13
13
  escDown = false
14
14
  }
15
15
  }
16
16
 
17
17
  function onKeyup(evt) {
18
- if (escDown === true) {
18
+ if (escDown) {
19
19
  escDown = false
20
20
 
21
- if (isKeyCode(evt, 27) === true) {
22
- handlers[handlers.length - 1](evt)
21
+ if (isKeyCode(evt, 27)) {
22
+ handlers.at(-1)(evt)
23
23
  }
24
24
  }
25
25
  }
@@ -32,7 +32,7 @@ function update(action) {
32
32
  }
33
33
 
34
34
  export function addEscapeKey(fn) {
35
- if (client.is.desktop === true) {
35
+ if (client.is.desktop) {
36
36
  handlers.push(fn)
37
37
 
38
38
  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 { addEscapeKey, removeEscapeKey } from './escape-key.js'
4
4
 
@@ -6,15 +6,13 @@ export function onKeyDownComposition(evt) {
6
6
 
7
7
  export function shouldIgnoreKey(evt) {
8
8
  return (
9
- lastKeyCompositionStatus === true ||
9
+ lastKeyCompositionStatus ||
10
10
  evt !== Object(evt) ||
11
- evt.isComposing === true ||
12
- evt.qKeyEvent === true
11
+ evt.isComposing ||
12
+ evt.qKeyEvent
13
13
  )
14
14
  }
15
15
 
16
16
  export function isKeyCode(evt, keyCodes) {
17
- return shouldIgnoreKey(evt) === true
18
- ? false
19
- : [].concat(keyCodes).includes(evt.keyCode)
17
+ return !shouldIgnoreKey(evt) && [keyCodes].flat().includes(evt.keyCode)
20
18
  }
@@ -1 +1,3 @@
1
- export default () => ({})
1
+ export default function noopSsrDirectiveTransform() {
2
+ return {}
3
+ }
@@ -1,4 +1,4 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
 
3
3
  import noopSsrDirectiveTransform from './noop-ssr-directive-transform.js'
4
4
 
@@ -14,10 +14,10 @@ export function closePortalMenus(proxy, evt) {
14
14
  proxy.hide(evt)
15
15
 
16
16
  // is this a point of separation?
17
- if (proxy.$props.separateClosePopup === true) {
17
+ if (proxy.$props.separateClosePopup) {
18
18
  return getParentProxy(proxy)
19
19
  }
20
- } else if (proxy.__qPortal === true) {
20
+ } else if (proxy.__qPortal) {
21
21
  // treat it as point of separation if parent is QPopupProxy
22
22
  // (so mobile matches desktop behavior)
23
23
  // and hide it too
@@ -26,9 +26,9 @@ export function closePortalMenus(proxy, evt) {
26
26
  if (parent?.$options.name === 'QPopupProxy') {
27
27
  proxy.hide(evt)
28
28
  return parent
29
- } else {
30
- return proxy
31
29
  }
30
+
31
+ return proxy
32
32
  }
33
33
 
34
34
  proxy = getParentProxy(proxy)
@@ -37,7 +37,7 @@ export function closePortalMenus(proxy, evt) {
37
37
 
38
38
  export function closePortals(proxy, evt, depth) {
39
39
  while (depth !== 0 && proxy !== void 0 && proxy !== null) {
40
- if (proxy.__qPortal === true) {
40
+ if (proxy.__qPortal) {
41
41
  depth--
42
42
 
43
43
  if (proxy.$options.name === 'QMenu') {
@@ -2,37 +2,36 @@ import { getScrollbarWidth } from '../scroll/scroll.js'
2
2
  import { client } from '../../plugins/platform/Platform.js'
3
3
 
4
4
  let vpLeft, vpTop
5
+ const partsFirst = ['top', 'center', 'bottom'],
6
+ partsSecond = ['left', 'middle', 'right', 'start', 'end']
5
7
 
6
8
  export function validatePosition(pos) {
7
9
  const parts = pos.split(' ')
8
- if (parts.length !== 2) {
9
- return false
10
- }
11
- if (['top', 'center', 'bottom'].includes(parts[0]) !== true) {
10
+ if (parts.length !== 2) return false
11
+
12
+ if (!partsFirst.includes(parts[0])) {
12
13
  console.error(
13
14
  'Anchor/Self position must start with one of top/center/bottom'
14
15
  )
15
16
  return false
16
17
  }
17
- if (['left', 'middle', 'right', 'start', 'end'].includes(parts[1]) !== true) {
18
+ if (!partsSecond.includes(parts[1])) {
18
19
  console.error(
19
20
  'Anchor/Self position must end with one of left/middle/right/start/end'
20
21
  )
21
22
  return false
22
23
  }
24
+
23
25
  return true
24
26
  }
25
27
 
26
28
  export function validateOffset(val) {
27
- if (!val) {
28
- return true
29
- }
30
- if (val.length !== 2) {
31
- return false
32
- }
29
+ if (!val) return true
30
+ if (val.length !== 2) return false
33
31
  if (typeof val[0] !== 'number' || typeof val[1] !== 'number') {
34
32
  return false
35
33
  }
34
+
36
35
  return true
37
36
  }
38
37
 
@@ -52,7 +51,7 @@ export function parsePosition(pos, rtl) {
52
51
  const parts = pos.split(' ')
53
52
  return {
54
53
  vertical: parts[0],
55
- horizontal: horizontalPos[`${parts[1]}#${rtl === true ? 'rtl' : 'ltr'}`]
54
+ horizontal: horizontalPos[`${parts[1]}#${rtl ? 'rtl' : 'ltr'}`]
56
55
  }
57
56
  }
58
57
 
@@ -154,7 +153,7 @@ export function setPosition(cfg, retryNumber = 0) {
154
153
  maxWidth
155
154
  } = cfg
156
155
 
157
- if (client.is.ios === true && window.visualViewport !== void 0) {
156
+ if (client.is.ios && window.visualViewport !== void 0) {
158
157
  // uses the q-position-engine CSS class
159
158
 
160
159
  const el = document.body.style
@@ -178,7 +177,7 @@ export function setPosition(cfg, retryNumber = 0) {
178
177
 
179
178
  const anchorProps =
180
179
  absoluteOffset === void 0
181
- ? getAnchorProps(anchorEl, cover === true ? [0, 0] : offset)
180
+ ? getAnchorProps(anchorEl, cover ? [0, 0] : offset)
182
181
  : getAbsoluteAnchorProps(anchorEl, absoluteOffset, offset)
183
182
 
184
183
  /**
@@ -202,21 +201,20 @@ export function setPosition(cfg, retryNumber = 0) {
202
201
 
203
202
  const { offsetWidth: origElWidth, offsetHeight: origElHeight } = targetEl
204
203
  const { elWidth, elHeight } =
205
- fit === true || cover === true
204
+ fit || cover
206
205
  ? {
207
206
  elWidth: Math.max(anchorProps.width, origElWidth),
208
- elHeight:
209
- cover === true
210
- ? Math.max(anchorProps.height, origElHeight)
211
- : origElHeight
207
+ elHeight: cover
208
+ ? Math.max(anchorProps.height, origElHeight)
209
+ : origElHeight
212
210
  }
213
211
  : { elWidth: origElWidth, elHeight: origElHeight }
214
212
 
215
213
  let elStyle = { maxWidth, maxHeight }
216
214
 
217
- if (fit === true || cover === true) {
215
+ if (fit || cover) {
218
216
  elStyle.minWidth = anchorProps.width + 'px'
219
- if (cover === true) {
217
+ if (cover) {
220
218
  elStyle.minHeight = anchorProps.height + 'px'
221
219
  }
222
220
  }
@@ -258,7 +256,7 @@ export function setPosition(cfg, retryNumber = 0) {
258
256
  anchorProps.right -= offsetX + 2
259
257
  }
260
258
 
261
- if (hasChanged === true) {
259
+ if (hasChanged) {
262
260
  // re-calculate props with the new anchor
263
261
  props = getTopLeftProps(
264
262
  anchorProps,
@@ -8,7 +8,7 @@ export function hUniqueSlot(slot, otherwise) {
8
8
  if (slot !== void 0) {
9
9
  const vnode = slot()
10
10
  if (vnode !== void 0 && vnode !== null) {
11
- return vnode.slice()
11
+ return [...vnode]
12
12
  }
13
13
  }
14
14
 
@@ -20,6 +20,7 @@ export function hUniqueSlot(slot, otherwise) {
20
20
  * so it's merged with the possible slot
21
21
  */
22
22
  export function hMergeSlot(slot, source) {
23
+ // oxlint-disable-next-line unicorn/prefer-spread
23
24
  return slot !== void 0 ? source.concat(slot()) : source
24
25
  }
25
26
 
@@ -28,10 +29,9 @@ export function hMergeSlot(slot, source) {
28
29
  * even if source might not exist
29
30
  */
30
31
  export function hMergeSlotSafely(slot, source) {
31
- if (slot === void 0) {
32
- return source
33
- }
32
+ if (slot === void 0) return source
34
33
 
34
+ // oxlint-disable-next-line unicorn/prefer-spread
35
35
  return source !== void 0 ? source.concat(slot()) : slot()
36
36
  }
37
37
 
@@ -41,8 +41,6 @@ export function hMergeSlotSafely(slot, source) {
41
41
  */
42
42
  export function hDir(tag, data, children, key, condition, getDirsFn) {
43
43
  data.key = key + condition
44
-
45
44
  const vnode = h(tag, data, children)
46
-
47
- return condition === true ? withDirectives(vnode, getDirsFn()) : vnode
45
+ return condition ? withDirectives(vnode, getDirsFn()) : vnode
48
46
  }
@@ -1,13 +1,13 @@
1
- import { describe, test, expect } from 'vitest'
2
- import { mount, flushPromises } from '@vue/test-utils'
1
+ import { describe, expect, test } from 'vitest'
2
+ import { flushPromises, mount } from '@vue/test-utils'
3
3
  import { ref } from 'vue'
4
4
 
5
5
  import {
6
- hSlot,
7
- hUniqueSlot,
6
+ hDir,
8
7
  hMergeSlot,
9
8
  hMergeSlotSafely,
10
- hDir
9
+ hSlot,
10
+ hUniqueSlot
11
11
  } from './render.js'
12
12
 
13
13
  describe('[render API]', () => {
@@ -1,3 +1,4 @@
1
+ // oxlint-disable-next-line import/no-mutable-exports
1
2
  let rtlHasScrollBug = false
2
3
 
3
4
  // mobile Chrome takes the crown for this
@@ -16,8 +17,8 @@ if (!__QUASAR_SSR__) {
16
17
  height: '1px'
17
18
  })
18
19
 
19
- document.body.appendChild(scroller)
20
- scroller.appendChild(spacer)
20
+ document.body.append(scroller)
21
+ scroller.append(spacer)
21
22
  scroller.scrollLeft = -1000
22
23
 
23
24
  rtlHasScrollBug = scroller.scrollLeft >= 0
@@ -1,4 +1,4 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
 
3
3
  import { rtlHasScrollBug } from './rtl.js'
4
4
 
@@ -7,7 +7,7 @@ export function clearSelection() {
7
7
  selection.empty()
8
8
  } else if (selection.removeAllRanges !== void 0) {
9
9
  selection.removeAllRanges()
10
- if (Platform.is.mobile !== true) {
10
+ if (!Platform.is.mobile) {
11
11
  selection.addRange(document.createRange())
12
12
  }
13
13
  }
@@ -1,4 +1,4 @@
1
- import { describe, test, expect, onTestFinished } from 'vitest'
1
+ import { describe, expect, onTestFinished, test } from 'vitest'
2
2
 
3
3
  import { clearSelection } from './selection.js'
4
4
 
@@ -15,7 +15,7 @@ describe('[selection API]', () => {
15
15
  const el = document.createElement('div')
16
16
  el.innerHTML = '<address>quasar@email.com</address>'
17
17
 
18
- document.body.appendChild(el)
18
+ document.body.append(el)
19
19
 
20
20
  onTestFinished(() => {
21
21
  el.remove()
@@ -1,6 +1,6 @@
1
- import { describe, test, expect } from 'vitest'
1
+ import { describe, expect, test } from 'vitest'
2
2
 
3
- import { sortDate, sortBoolean } from './sort.js'
3
+ import { sortBoolean, sortDate } from './sort.js'
4
4
 
5
5
  describe('[sort API]', () => {
6
6
  describe('[Functions]', () => {
@@ -15,28 +15,24 @@ export function getModifierDirections(mod) {
15
15
  const dir = {}
16
16
 
17
17
  for (const direction of directionList) {
18
- if (mod[direction] === true) {
19
- dir[direction] = true
20
- }
18
+ if (mod[direction]) dir[direction] = true
21
19
  }
22
20
 
23
- if (Object.keys(dir).length === 0) {
24
- return modifiersAll
25
- }
21
+ if (Object.keys(dir).length === 0) return modifiersAll
26
22
 
27
- if (dir.horizontal === true) {
23
+ if (dir.horizontal) {
28
24
  dir.left = dir.right = true
29
- } else if (dir.left === true && dir.right === true) {
25
+ } else if (dir.left && dir.right) {
30
26
  dir.horizontal = true
31
27
  }
32
28
 
33
- if (dir.vertical === true) {
29
+ if (dir.vertical) {
34
30
  dir.up = dir.down = true
35
- } else if (dir.up === true && dir.down === true) {
31
+ } else if (dir.up && dir.down) {
36
32
  dir.vertical = true
37
33
  }
38
34
 
39
- if (dir.horizontal === true && dir.vertical === true) {
35
+ if (dir.horizontal && dir.vertical) {
40
36
  dir.all = true
41
37
  }
42
38
 
@@ -54,9 +50,9 @@ export function shouldStart(evt, ctx) {
54
50
  return (
55
51
  ctx.event === void 0 &&
56
52
  evt.target !== void 0 &&
57
- evt.target.draggable !== true &&
53
+ !evt.target.draggable &&
58
54
  typeof ctx.handler === 'function' &&
59
- avoidNodeNamesList.includes(evt.target.nodeName.toUpperCase()) === false &&
60
- (evt.qClonedBy === void 0 || evt.qClonedBy.indexOf(ctx.uid) === -1)
55
+ !avoidNodeNamesList.includes(evt.target.nodeName.toUpperCase()) &&
56
+ (evt.qClonedBy === void 0 || !evt.qClonedBy.includes(ctx.uid))
61
57
  )
62
58
  }
@@ -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 { getModifierDirections, shouldStart } from './touch.js'
@@ -17,7 +17,7 @@ export function getParentProxy(proxy) {
17
17
 
18
18
  function fillNormalizedVNodes(children, vnode) {
19
19
  if (typeof vnode.type === 'symbol') {
20
- if (Array.isArray(vnode.children) === true) {
20
+ if (Array.isArray(vnode.children)) {
21
21
  vnode.children.forEach(child => {
22
22
  fillNormalizedVNodes(children, child)
23
23
  })
@@ -35,7 +35,7 @@ export function getNormalizedVNodes(vnodes) {
35
35
  fillNormalizedVNodes(children, vnode)
36
36
  })
37
37
 
38
- return Array.from(children)
38
+ return [...children]
39
39
  }
40
40
 
41
41
  export function vmHasRouter(vm) {
@@ -1,10 +1,10 @@
1
- import { describe, test, expect } from 'vitest'
2
- import { mount, flushPromises } from '@vue/test-utils'
3
- import { h, getCurrentInstance } from 'vue'
1
+ import { describe, expect, test } from 'vitest'
2
+ import { flushPromises, mount } from '@vue/test-utils'
3
+ import { getCurrentInstance, h } from 'vue'
4
4
 
5
5
  import {
6
- getParentProxy,
7
6
  getNormalizedVNodes,
7
+ getParentProxy,
8
8
  vmHasRouter,
9
9
  vmIsDestroyed
10
10
  } from './vm.js'
@@ -1,23 +1,22 @@
1
1
  function parsePromises(sequentialPromises) {
2
- const isList = Array.isArray(sequentialPromises)
3
-
4
- if (isList === true) {
2
+ if (Array.isArray(sequentialPromises)) {
5
3
  const totalJobs = sequentialPromises.length
6
4
  return {
7
- isList,
5
+ isList: true,
8
6
  totalJobs,
7
+ // oxlint-disable-next-line unicorn/new-for-builtins
9
8
  resultAggregator: Array(totalJobs).fill(null)
10
9
  }
11
10
  }
12
11
 
13
12
  const resultKeys = Object.keys(sequentialPromises)
14
- const resultAggregator = {}
15
- resultKeys.forEach(keyName => {
16
- resultAggregator[keyName] = null
17
- })
13
+ const resultAggregator = resultKeys.reduce((acc, key) => {
14
+ acc[key] = null
15
+ return acc
16
+ }, {})
18
17
 
19
18
  return {
20
- isList,
19
+ isList: false,
21
20
  totalJobs: resultKeys.length,
22
21
  resultAggregator,
23
22
  resultKeys
@@ -67,57 +66,48 @@ export default function runSequentialPromises(
67
66
  const { isList, totalJobs, resultAggregator, resultKeys } =
68
67
  parsePromises(sequentialPromises)
69
68
 
70
- const getPromiseThread = () =>
71
- new Promise((resolve, reject) => {
72
- function runNextPromise() {
73
- const currentJobIndex = ++jobIndex
74
-
75
- if (hasAborted === true || currentJobIndex >= totalJobs) {
76
- resolve()
77
- return
78
- }
79
-
80
- const key =
81
- isList === true ? currentJobIndex : resultKeys[currentJobIndex]
82
-
83
- sequentialPromises[key](resultAggregator)
84
- .then(value => {
85
- if (hasAborted === true) {
86
- resolve()
87
- return // early exit
88
- }
69
+ if (totalJobs === 0) return Promise.resolve(resultAggregator)
89
70
 
90
- resultAggregator[key] = { key, status: 'fulfilled', value }
91
-
92
- // timeout so it doesn't interfere with the .catch() below
93
- setTimeout(runNextPromise)
94
- })
95
- .catch(reason => {
96
- if (hasAborted === true) {
97
- resolve()
98
- return // early exit
99
- }
71
+ const maxJobIndex = totalJobs - 1
72
+ const runNextPromise = threadCtx => {
73
+ if (hasAborted || jobIndex >= maxJobIndex) {
74
+ return threadCtx.resolve()
75
+ }
100
76
 
101
- const result = { key, status: 'rejected', reason }
102
- resultAggregator[key] = result
77
+ const currentJobIndex = ++jobIndex
78
+ const key = isList ? currentJobIndex : resultKeys[currentJobIndex]
103
79
 
104
- if (abortOnFail === true) {
105
- hasAborted = true
106
- reject({ ...result, resultAggregator })
107
- return // early exit
108
- }
80
+ // Promise.resolve() protects against synchronous errors if the user
81
+ // accidentally passes a normal function instead of an async one.
82
+ Promise.resolve()
83
+ .then(() => sequentialPromises[key](resultAggregator))
84
+ .then(value => {
85
+ if (!hasAborted) {
86
+ resultAggregator[key] = { key, status: 'fulfilled', value }
87
+ }
88
+ })
89
+ .catch(err => {
90
+ if (hasAborted) return
109
91
 
110
- // timeout so no interference
111
- setTimeout(runNextPromise)
112
- })
113
- }
92
+ const result = { key, status: 'rejected', reason: err }
93
+ resultAggregator[key] = result
114
94
 
115
- runNextPromise()
116
- })
95
+ if (abortOnFail) {
96
+ hasAborted = true
97
+ threadCtx.reject({ ...result, resultAggregator })
98
+ }
99
+ })
100
+ .finally(() => {
101
+ if (!hasAborted) runNextPromise(threadCtx)
102
+ })
103
+ }
117
104
 
118
- const threads = Array(Math.min(totalJobs, threadsNumber))
119
- .fill(null)
120
- .map(getPromiseThread)
105
+ const concurrencyLimit = Math.min(totalJobs, Math.max(1, threadsNumber))
106
+ const threads = Array.from({ length: concurrencyLimit }, () => {
107
+ const threadCtx = Promise.withResolvers()
108
+ runNextPromise(threadCtx)
109
+ return threadCtx.promise
110
+ })
121
111
 
122
112
  return Promise.all(threads).then(() => resultAggregator)
123
113
  }