quasar 2.18.7 → 2.19.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 (857) hide show
  1. package/README.md +2 -0
  2. package/dist/api/BottomSheet.json +1 -1
  3. package/dist/api/Dialog.json +1 -1
  4. package/dist/api/Intersection.json +1 -1
  5. package/dist/api/Lang.json +1 -1
  6. package/dist/api/LocalStorage.json +1 -1
  7. package/dist/api/Notify.json +1 -1
  8. package/dist/api/QBtnDropdown.json +1 -1
  9. package/dist/api/QBtnToggle.json +1 -1
  10. package/dist/api/QCarousel.json +1 -1
  11. package/dist/api/QCarouselControl.json +1 -1
  12. package/dist/api/QChatMessage.json +1 -1
  13. package/dist/api/QCheckbox.json +1 -1
  14. package/dist/api/QColor.json +1 -1
  15. package/dist/api/QDate.json +1 -1
  16. package/dist/api/QEditor.json +1 -1
  17. package/dist/api/QField.json +1 -1
  18. package/dist/api/QFile.json +1 -1
  19. package/dist/api/QInput.json +1 -1
  20. package/dist/api/QIntersection.json +1 -1
  21. package/dist/api/QMenu.json +1 -1
  22. package/dist/api/QOptionGroup.json +1 -1
  23. package/dist/api/QPageScroller.json +1 -1
  24. package/dist/api/QPageSticky.json +1 -1
  25. package/dist/api/QPopupEdit.json +1 -1
  26. package/dist/api/QRange.json +1 -1
  27. package/dist/api/QRating.json +1 -1
  28. package/dist/api/QScrollArea.json +1 -1
  29. package/dist/api/QSelect.json +1 -1
  30. package/dist/api/QSlider.json +1 -1
  31. package/dist/api/QSplitter.json +1 -1
  32. package/dist/api/QStepper.json +1 -1
  33. package/dist/api/QTabPanels.json +1 -1
  34. package/dist/api/QTable.json +1 -1
  35. package/dist/api/QTime.json +1 -1
  36. package/dist/api/QToggle.json +1 -1
  37. package/dist/api/QTooltip.json +1 -1
  38. package/dist/api/QTree.json +1 -1
  39. package/dist/api/QUploader.json +1 -1
  40. package/dist/api/QVirtualScroll.json +1 -1
  41. package/dist/api/Ripple.json +1 -1
  42. package/dist/api/SessionStorage.json +1 -1
  43. package/dist/icon-set/bootstrap-icons.umd.prod.js +5 -6
  44. package/dist/icon-set/eva-icons.umd.prod.js +5 -6
  45. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +5 -6
  46. package/dist/icon-set/fontawesome-v5.umd.prod.js +5 -6
  47. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +5 -6
  48. package/dist/icon-set/fontawesome-v6.umd.prod.js +5 -6
  49. package/dist/icon-set/ionicons-v4.umd.prod.js +5 -6
  50. package/dist/icon-set/line-awesome.umd.prod.js +5 -6
  51. package/dist/icon-set/material-icons-outlined.umd.prod.js +5 -6
  52. package/dist/icon-set/material-icons-round.umd.prod.js +5 -6
  53. package/dist/icon-set/material-icons-sharp.umd.prod.js +5 -6
  54. package/dist/icon-set/material-icons.umd.prod.js +5 -6
  55. package/dist/icon-set/material-symbols-outlined.umd.prod.js +5 -6
  56. package/dist/icon-set/material-symbols-rounded.umd.prod.js +5 -6
  57. package/dist/icon-set/material-symbols-sharp.umd.prod.js +5 -6
  58. package/dist/icon-set/mdi-v3.umd.prod.js +5 -6
  59. package/dist/icon-set/mdi-v4.umd.prod.js +5 -6
  60. package/dist/icon-set/mdi-v5.umd.prod.js +5 -6
  61. package/dist/icon-set/mdi-v6.umd.prod.js +5 -6
  62. package/dist/icon-set/mdi-v7.umd.prod.js +5 -6
  63. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +5 -6
  64. package/dist/icon-set/svg-eva-icons.umd.prod.js +5 -6
  65. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +5 -6
  66. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +5 -6
  67. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +5 -6
  68. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +5 -6
  69. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +5 -6
  70. package/dist/icon-set/svg-line-awesome.umd.prod.js +5 -6
  71. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +5 -6
  72. package/dist/icon-set/svg-material-icons-round.umd.prod.js +5 -6
  73. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +5 -6
  74. package/dist/icon-set/svg-material-icons.umd.prod.js +5 -6
  75. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +5 -6
  76. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +5 -6
  77. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +5 -6
  78. package/dist/icon-set/svg-mdi-v6.umd.prod.js +5 -6
  79. package/dist/icon-set/svg-mdi-v7.umd.prod.js +5 -6
  80. package/dist/icon-set/svg-themify.umd.prod.js +5 -6
  81. package/dist/icon-set/themify.umd.prod.js +5 -6
  82. package/dist/lang/ar-TN.umd.prod.js +5 -6
  83. package/dist/lang/ar.umd.prod.js +5 -6
  84. package/dist/lang/az-Latn.umd.prod.js +5 -6
  85. package/dist/lang/bg.umd.prod.js +5 -6
  86. package/dist/lang/bn.umd.prod.js +5 -6
  87. package/dist/lang/bs-BA.umd.prod.js +5 -6
  88. package/dist/lang/ca.umd.prod.js +5 -6
  89. package/dist/lang/cs.umd.prod.js +5 -6
  90. package/dist/lang/da.umd.prod.js +5 -6
  91. package/dist/lang/de-CH.umd.prod.js +5 -6
  92. package/dist/lang/de-DE.umd.prod.js +5 -6
  93. package/dist/lang/de.umd.prod.js +5 -6
  94. package/dist/lang/el.umd.prod.js +5 -6
  95. package/dist/lang/en-GB.umd.prod.js +5 -6
  96. package/dist/lang/en-US.umd.prod.js +5 -6
  97. package/dist/lang/eo.umd.prod.js +5 -6
  98. package/dist/lang/es.umd.prod.js +5 -6
  99. package/dist/lang/et.umd.prod.js +5 -6
  100. package/dist/lang/eu.umd.prod.js +5 -6
  101. package/dist/lang/fa-IR.umd.prod.js +5 -6
  102. package/dist/lang/fa.umd.prod.js +5 -6
  103. package/dist/lang/fi.umd.prod.js +5 -6
  104. package/dist/lang/fr.umd.prod.js +5 -6
  105. package/dist/lang/gn.umd.prod.js +5 -6
  106. package/dist/lang/he.umd.prod.js +5 -6
  107. package/dist/lang/hi.umd.prod.js +5 -6
  108. package/dist/lang/hr.umd.prod.js +5 -6
  109. package/dist/lang/hu.umd.prod.js +5 -6
  110. package/dist/lang/id.umd.prod.js +5 -6
  111. package/dist/lang/is.umd.prod.js +5 -6
  112. package/dist/lang/it.umd.prod.js +5 -6
  113. package/dist/lang/ja.umd.prod.js +5 -6
  114. package/dist/lang/kk.umd.prod.js +5 -6
  115. package/dist/lang/km.umd.prod.js +5 -6
  116. package/dist/lang/ko-KR.umd.prod.js +5 -6
  117. package/dist/lang/kur-CKB.umd.prod.js +5 -6
  118. package/dist/lang/lt.umd.prod.js +5 -6
  119. package/dist/lang/lu.umd.prod.js +5 -6
  120. package/dist/lang/lv.umd.prod.js +5 -6
  121. package/dist/lang/mk.umd.prod.js +5 -6
  122. package/dist/lang/ml.umd.prod.js +5 -6
  123. package/dist/lang/mm.umd.prod.js +5 -6
  124. package/dist/lang/ms-MY.umd.prod.js +5 -6
  125. package/dist/lang/ms.umd.prod.js +5 -6
  126. package/dist/lang/my.umd.prod.js +5 -6
  127. package/dist/lang/nb-NO.umd.prod.js +5 -6
  128. package/dist/lang/nl.umd.prod.js +5 -6
  129. package/dist/lang/pl.umd.prod.js +5 -6
  130. package/dist/lang/pt-BR.umd.prod.js +5 -6
  131. package/dist/lang/pt.umd.prod.js +5 -6
  132. package/dist/lang/ro.umd.prod.js +5 -6
  133. package/dist/lang/ru.umd.prod.js +5 -6
  134. package/dist/lang/sk.umd.prod.js +5 -6
  135. package/dist/lang/sl.umd.prod.js +5 -6
  136. package/dist/lang/sm.umd.prod.js +5 -6
  137. package/dist/lang/sq.umd.prod.js +5 -6
  138. package/dist/lang/sr-CYR.umd.prod.js +5 -6
  139. package/dist/lang/sr.umd.prod.js +5 -6
  140. package/dist/lang/sv.umd.prod.js +5 -6
  141. package/dist/lang/ta.umd.prod.js +5 -6
  142. package/dist/lang/th.umd.prod.js +5 -6
  143. package/dist/lang/tl.umd.prod.js +5 -6
  144. package/dist/lang/tr.umd.prod.js +5 -6
  145. package/dist/lang/ug.umd.prod.js +5 -6
  146. package/dist/lang/uk.umd.prod.js +5 -6
  147. package/dist/lang/ur-PK.umd.prod.js +5 -6
  148. package/dist/lang/uz-Cyrl.umd.prod.js +5 -6
  149. package/dist/lang/uz-Latn.umd.prod.js +5 -6
  150. package/dist/lang/vi.umd.prod.js +5 -6
  151. package/dist/lang/zh-CN.umd.prod.js +5 -6
  152. package/dist/lang/zh-TW.umd.prod.js +5 -6
  153. package/dist/quasar.addon.prod.css +1 -1
  154. package/dist/quasar.addon.rtl.prod.css +1 -1
  155. package/dist/quasar.client.js +24830 -29220
  156. package/dist/quasar.css +15 -28
  157. package/dist/quasar.prod.css +1 -1
  158. package/dist/quasar.rtl.css +14 -28
  159. package/dist/quasar.rtl.prod.css +1 -1
  160. package/dist/quasar.sass +4 -25
  161. package/dist/quasar.server.prod.cjs +78 -79
  162. package/dist/quasar.server.prod.js +78 -79
  163. package/dist/quasar.umd.js +25876 -29791
  164. package/dist/quasar.umd.prod.js +78 -79
  165. package/dist/types/api/dialog.d.ts +1 -1
  166. package/dist/types/api/qinput.d.ts +1 -1
  167. package/dist/types/api/qtable.d.ts +1 -1
  168. package/dist/types/api/qtree.d.ts +1 -1
  169. package/dist/types/api/quploader.d.ts +1 -1
  170. package/dist/types/api/slider.d.ts +2 -4
  171. package/dist/types/api/validation.d.ts +1 -1
  172. package/dist/types/api/web-storage.d.ts +6 -6
  173. package/dist/types/feature-flag.d.ts +1 -1
  174. package/dist/types/globals.d.ts +7 -4
  175. package/dist/types/index.d.ts +126 -414
  176. package/dist/types/lang.d.ts +3 -3
  177. package/dist/types/ts-helpers.d.ts +4 -9
  178. package/dist/types/utils/colors.d.ts +1 -1
  179. package/dist/types/utils/date.d.ts +8 -8
  180. package/dist/types/utils/dom.d.ts +1 -1
  181. package/dist/types/utils/run-sequential-promises.d.ts +12 -12
  182. package/dist/types/utils/scroll.d.ts +5 -5
  183. package/dist/types/utils.d.ts +16 -19
  184. package/dist/web-types/web-types.json +1 -1
  185. package/icon-set/bootstrap-icons.js +1 -4
  186. package/icon-set/svg-bootstrap-icons.js +1 -4
  187. package/icon-set/svg-fontawesome-v5.js +0 -1
  188. package/icon-set/svg-ionicons-v5.js +2 -2
  189. package/lang/ar-TN.js +10 -8
  190. package/lang/ar.js +10 -8
  191. package/lang/az-Latn.js +13 -9
  192. package/lang/bg.js +10 -8
  193. package/lang/bn.js +14 -9
  194. package/lang/bs-BA.js +13 -9
  195. package/lang/ca.js +18 -14
  196. package/lang/cs.js +9 -7
  197. package/lang/da.js +10 -8
  198. package/lang/de-CH.js +13 -9
  199. package/lang/de-DE.js +13 -9
  200. package/lang/de.js +13 -9
  201. package/lang/el.js +10 -8
  202. package/lang/en-GB.js +10 -8
  203. package/lang/en-US.js +10 -8
  204. package/lang/eo.js +14 -9
  205. package/lang/es.js +10 -8
  206. package/lang/et.js +15 -12
  207. package/lang/eu.js +15 -12
  208. package/lang/fa-IR.js +16 -8
  209. package/lang/fa.js +16 -8
  210. package/lang/fi.js +17 -8
  211. package/lang/fr.js +21 -13
  212. package/lang/gn.js +14 -12
  213. package/lang/he.js +15 -10
  214. package/lang/hi.js +8 -8
  215. package/lang/hr.js +13 -9
  216. package/lang/hu.js +10 -8
  217. package/lang/id.js +11 -9
  218. package/lang/is.js +13 -9
  219. package/lang/it.js +14 -9
  220. package/lang/ja.js +13 -8
  221. package/lang/kk.js +22 -11
  222. package/lang/km.js +9 -8
  223. package/lang/ko-KR.js +9 -10
  224. package/lang/kur-CKB.js +16 -17
  225. package/lang/lt.js +26 -19
  226. package/lang/lu.js +13 -9
  227. package/lang/lv.js +13 -9
  228. package/lang/mk.js +10 -8
  229. package/lang/ml.js +15 -14
  230. package/lang/mm.js +16 -13
  231. package/lang/ms-MY.js +16 -11
  232. package/lang/ms.js +10 -8
  233. package/lang/my.js +15 -8
  234. package/lang/nb-NO.js +10 -8
  235. package/lang/nl.js +13 -9
  236. package/lang/pl.js +13 -9
  237. package/lang/pt-BR.js +17 -10
  238. package/lang/pt.js +17 -10
  239. package/lang/ro.js +10 -8
  240. package/lang/ru.js +25 -12
  241. package/lang/sk.js +18 -9
  242. package/lang/sl.js +12 -8
  243. package/lang/sm.js +51 -47
  244. package/lang/sq.js +13 -9
  245. package/lang/sr-CYR.js +10 -8
  246. package/lang/sr.js +10 -8
  247. package/lang/sv.js +10 -8
  248. package/lang/ta.js +10 -8
  249. package/lang/th.js +12 -11
  250. package/lang/tl.js +10 -8
  251. package/lang/tr.js +8 -5
  252. package/lang/ug.js +16 -8
  253. package/lang/uk.js +22 -11
  254. package/lang/ur-PK.js +13 -11
  255. package/lang/uz-Cyrl.js +5 -5
  256. package/lang/uz-Latn.js +24 -24
  257. package/lang/vi.js +13 -9
  258. package/lang/zh-CN.js +18 -9
  259. package/lang/zh-TW.js +20 -10
  260. package/package.json +50 -64
  261. package/src/api.extends.json +15 -12
  262. package/src/components/ajax-bar/QAjaxBar.js +91 -65
  263. package/src/components/ajax-bar/QAjaxBar.json +2 -2
  264. package/src/components/ajax-bar/index.js +1 -3
  265. package/src/components/avatar/QAvatar.js +36 -28
  266. package/src/components/avatar/QAvatar.json +2 -2
  267. package/src/components/avatar/QAvatar.test.js +29 -78
  268. package/src/components/avatar/index.js +1 -3
  269. package/src/components/badge/QBadge.js +33 -26
  270. package/src/components/badge/QBadge.json +3 -3
  271. package/src/components/badge/QBadge.test.js +40 -95
  272. package/src/components/badge/index.js +1 -3
  273. package/src/components/banner/QBanner.js +46 -25
  274. package/src/components/banner/QBanner.test.js +14 -35
  275. package/src/components/banner/index.js +1 -3
  276. package/src/components/bar/QBar.js +21 -11
  277. package/src/components/bar/QBar.test.js +6 -17
  278. package/src/components/bar/index.js +1 -3
  279. package/src/components/breadcrumbs/QBreadcrumbs.js +44 -32
  280. package/src/components/breadcrumbs/QBreadcrumbs.json +10 -3
  281. package/src/components/breadcrumbs/QBreadcrumbs.test.js +56 -69
  282. package/src/components/breadcrumbs/QBreadcrumbsEl.js +28 -22
  283. package/src/components/breadcrumbs/QBreadcrumbsEl.json +5 -8
  284. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +60 -134
  285. package/src/components/breadcrumbs/index.js +1 -4
  286. package/src/components/btn/QBtn.js +159 -103
  287. package/src/components/btn/QBtn.json +3 -6
  288. package/src/components/btn/QBtn.test.js +269 -496
  289. package/src/components/btn/index.js +1 -3
  290. package/src/components/btn/use-btn.js +82 -70
  291. package/src/components/btn/use-btn.json +33 -16
  292. package/src/components/btn/use-btn.test.js +30 -47
  293. package/src/components/btn-dropdown/QBtnDropdown.js +143 -104
  294. package/src/components/btn-dropdown/QBtnDropdown.json +41 -16
  295. package/src/components/btn-dropdown/index.js +1 -3
  296. package/src/components/btn-group/QBtnGroup.js +18 -6
  297. package/src/components/btn-group/index.js +1 -3
  298. package/src/components/btn-toggle/QBtnToggle.js +80 -61
  299. package/src/components/btn-toggle/QBtnToggle.json +16 -9
  300. package/src/components/btn-toggle/index.js +1 -3
  301. package/src/components/card/QCard.js +14 -9
  302. package/src/components/card/QCard.json +1 -1
  303. package/src/components/card/QCardActions.js +8 -5
  304. package/src/components/card/QCardActions.json +9 -1
  305. package/src/components/card/QCardSection.js +5 -4
  306. package/src/components/card/QCardSection.json +1 -1
  307. package/src/components/card/index.js +1 -5
  308. package/src/components/carousel/QCarousel.js +194 -125
  309. package/src/components/carousel/QCarousel.json +10 -11
  310. package/src/components/carousel/QCarouselControl.js +26 -13
  311. package/src/components/carousel/QCarouselControl.json +10 -5
  312. package/src/components/carousel/QCarouselSlide.js +13 -10
  313. package/src/components/carousel/QCarouselSlide.json +1 -1
  314. package/src/components/carousel/index.js +1 -5
  315. package/src/components/chat/QChatMessage.js +62 -57
  316. package/src/components/chat/QChatMessage.json +8 -5
  317. package/src/components/chat/index.js +1 -3
  318. package/src/components/checkbox/QCheckbox.js +56 -41
  319. package/src/components/checkbox/QCheckbox.json +1 -1
  320. package/src/components/checkbox/index.js +1 -3
  321. package/src/components/checkbox/use-checkbox.js +112 -83
  322. package/src/components/checkbox/use-checkbox.json +15 -12
  323. package/src/components/chip/QChip.js +101 -73
  324. package/src/components/chip/QChip.json +6 -6
  325. package/src/components/chip/QChip.test.js +72 -180
  326. package/src/components/chip/index.js +1 -3
  327. package/src/components/circular-progress/QCircularProgress.js +92 -57
  328. package/src/components/circular-progress/QCircularProgress.json +2 -2
  329. package/src/components/circular-progress/index.js +1 -3
  330. package/src/components/color/QColor.js +550 -367
  331. package/src/components/color/QColor.json +8 -8
  332. package/src/components/color/index.js +1 -3
  333. package/src/components/date/QDate.js +902 -607
  334. package/src/components/date/QDate.json +32 -23
  335. package/src/components/date/index.js +1 -3
  336. package/src/components/date/use-datetime.js +12 -14
  337. package/src/components/date/use-datetime.json +7 -7
  338. package/src/components/dialog/QDialog.js +178 -139
  339. package/src/components/dialog/QDialog.json +8 -4
  340. package/src/components/dialog/QDialog.test.js +123 -228
  341. package/src/components/dialog/index.js +1 -3
  342. package/src/components/drawer/QDrawer.js +306 -242
  343. package/src/components/drawer/QDrawer.json +4 -4
  344. package/src/components/drawer/index.js +1 -3
  345. package/src/components/editor/QEditor.js +409 -190
  346. package/src/components/editor/QEditor.json +33 -32
  347. package/src/components/editor/editor-caret.js +78 -83
  348. package/src/components/editor/editor-utils.js +176 -130
  349. package/src/components/editor/index.js +1 -3
  350. package/src/components/expansion-item/QExpansionItem.js +149 -103
  351. package/src/components/expansion-item/QExpansionItem.json +21 -24
  352. package/src/components/expansion-item/index.js +1 -3
  353. package/src/components/fab/QFab.js +86 -54
  354. package/src/components/fab/QFab.json +6 -3
  355. package/src/components/fab/QFabAction.js +34 -29
  356. package/src/components/fab/QFabAction.json +4 -7
  357. package/src/components/fab/index.js +1 -4
  358. package/src/components/fab/use-fab.js +20 -20
  359. package/src/components/fab/use-fab.json +10 -13
  360. package/src/components/field/QField.js +7 -5
  361. package/src/components/field/QField.json +6 -6
  362. package/src/components/field/QField.sass +0 -8
  363. package/src/components/field/index.js +1 -3
  364. package/src/components/file/QFile.js +95 -74
  365. package/src/components/file/QFile.json +17 -14
  366. package/src/components/file/index.js +1 -3
  367. package/src/components/footer/QFooter.js +110 -67
  368. package/src/components/footer/QFooter.json +2 -2
  369. package/src/components/footer/index.js +1 -3
  370. package/src/components/form/QForm.js +93 -58
  371. package/src/components/form/QForm.json +2 -2
  372. package/src/components/form/QFormChildMixin.js +10 -11
  373. package/src/components/form/QFormChildMixin.json +2 -2
  374. package/src/components/form/index.js +1 -4
  375. package/src/components/header/QHeader.js +93 -56
  376. package/src/components/header/QHeader.json +2 -2
  377. package/src/components/header/index.js +1 -3
  378. package/src/components/icon/QIcon.js +70 -57
  379. package/src/components/icon/QIcon.json +2 -2
  380. package/src/components/icon/index.js +1 -3
  381. package/src/components/img/QImg.js +104 -98
  382. package/src/components/img/QImg.json +20 -18
  383. package/src/components/img/index.js +1 -3
  384. package/src/components/infinite-scroll/QInfiniteScroll.js +123 -64
  385. package/src/components/infinite-scroll/QInfiniteScroll.json +1 -1
  386. package/src/components/infinite-scroll/index.js +1 -3
  387. package/src/components/inner-loading/QInnerLoading.js +31 -23
  388. package/src/components/inner-loading/QInnerLoading.json +9 -9
  389. package/src/components/inner-loading/index.js +1 -3
  390. package/src/components/input/QInput.js +179 -137
  391. package/src/components/input/QInput.json +25 -15
  392. package/src/components/input/index.js +1 -3
  393. package/src/components/input/use-mask.js +328 -243
  394. package/src/components/input/use-mask.json +16 -8
  395. package/src/components/intersection/QIntersection.js +45 -28
  396. package/src/components/intersection/QIntersection.json +7 -10
  397. package/src/components/intersection/index.js +1 -3
  398. package/src/components/item/QItem.js +60 -52
  399. package/src/components/item/QItem.json +6 -9
  400. package/src/components/item/QItemLabel.js +23 -15
  401. package/src/components/item/QItemLabel.json +1 -1
  402. package/src/components/item/QItemSection.js +11 -8
  403. package/src/components/item/QList.js +21 -13
  404. package/src/components/item/QList.json +1 -1
  405. package/src/components/item/QList.test.js +7 -11
  406. package/src/components/item/index.js +1 -7
  407. package/src/components/knob/QKnob.js +86 -76
  408. package/src/components/knob/QKnob.json +6 -3
  409. package/src/components/knob/index.js +1 -3
  410. package/src/components/layout/QLayout.js +98 -69
  411. package/src/components/layout/QLayout.json +2 -2
  412. package/src/components/layout/index.js +1 -3
  413. package/src/components/linear-progress/QLinearProgress.js +78 -47
  414. package/src/components/linear-progress/QLinearProgress.json +3 -3
  415. package/src/components/linear-progress/index.js +1 -3
  416. package/src/components/markup-table/QMarkupTable.js +25 -17
  417. package/src/components/markup-table/QMarkupTable.json +2 -2
  418. package/src/components/markup-table/index.js +1 -3
  419. package/src/components/menu/QMenu.js +144 -100
  420. package/src/components/menu/QMenu.json +39 -10
  421. package/src/components/menu/index.js +1 -3
  422. package/src/components/no-ssr/QNoSsr.js +5 -5
  423. package/src/components/no-ssr/QNoSsr.json +2 -2
  424. package/src/components/no-ssr/index.js +1 -3
  425. package/src/components/option-group/QOptionGroup.js +84 -66
  426. package/src/components/option-group/QOptionGroup.json +35 -21
  427. package/src/components/option-group/index.js +1 -3
  428. package/src/components/page/QPage.js +35 -22
  429. package/src/components/page/QPage.json +1 -1
  430. package/src/components/page/QPageContainer.js +24 -11
  431. package/src/components/page/index.js +1 -4
  432. package/src/components/page-scroller/QPageScroller.js +49 -32
  433. package/src/components/page-scroller/QPageScroller.json +2 -2
  434. package/src/components/page-scroller/index.js +1 -3
  435. package/src/components/page-sticky/QPageSticky.js +1 -1
  436. package/src/components/page-sticky/QPageSticky.json +9 -4
  437. package/src/components/page-sticky/index.js +1 -3
  438. package/src/components/page-sticky/use-page-sticky.js +47 -36
  439. package/src/components/pagination/QPagination.js +210 -146
  440. package/src/components/pagination/QPagination.json +35 -21
  441. package/src/components/pagination/index.js +1 -3
  442. package/src/components/parallax/QParallax.js +81 -56
  443. package/src/components/parallax/index.js +1 -3
  444. package/src/components/popup-edit/QPopupEdit.js +88 -59
  445. package/src/components/popup-edit/QPopupEdit.json +40 -16
  446. package/src/components/popup-edit/index.js +1 -3
  447. package/src/components/popup-proxy/QPopupProxy.js +30 -19
  448. package/src/components/popup-proxy/QPopupProxy.json +3 -3
  449. package/src/components/popup-proxy/index.js +1 -3
  450. package/src/components/pull-to-refresh/QPullToRefresh.js +71 -49
  451. package/src/components/pull-to-refresh/index.js +1 -3
  452. package/src/components/radio/QRadio.js +133 -95
  453. package/src/components/radio/QRadio.json +11 -8
  454. package/src/components/radio/index.js +1 -3
  455. package/src/components/range/QRange.js +151 -104
  456. package/src/components/range/QRange.json +9 -9
  457. package/src/components/range/index.js +1 -3
  458. package/src/components/rating/QRating.js +171 -112
  459. package/src/components/rating/QRating.json +19 -12
  460. package/src/components/rating/index.js +1 -3
  461. package/src/components/resize-observer/QResizeObserver.js +52 -30
  462. package/src/components/resize-observer/QResizeObserver.json +2 -2
  463. package/src/components/resize-observer/index.js +1 -3
  464. package/src/components/responsive/QResponsive.js +27 -14
  465. package/src/components/responsive/QResponsive.json +1 -1
  466. package/src/components/responsive/index.js +1 -3
  467. package/src/components/scroll-area/QScrollArea.js +279 -192
  468. package/src/components/scroll-area/QScrollArea.json +31 -21
  469. package/src/components/scroll-area/ScrollAreaControls.js +6 -11
  470. package/src/components/scroll-area/index.js +1 -3
  471. package/src/components/scroll-observer/QScrollObserver.js +46 -26
  472. package/src/components/scroll-observer/QScrollObserver.json +4 -4
  473. package/src/components/scroll-observer/index.js +1 -3
  474. package/src/components/select/QSelect.js +710 -519
  475. package/src/components/select/QSelect.json +70 -45
  476. package/src/components/select/index.js +1 -3
  477. package/src/components/separator/QSeparator.js +34 -30
  478. package/src/components/separator/QSeparator.json +4 -4
  479. package/src/components/separator/index.js +1 -3
  480. package/src/components/skeleton/QSkeleton.js +49 -23
  481. package/src/components/skeleton/QSkeleton.json +26 -9
  482. package/src/components/skeleton/index.js +1 -3
  483. package/src/components/slide-item/QSlideItem.js +121 -94
  484. package/src/components/slide-item/QSlideItem.json +2 -2
  485. package/src/components/slide-item/index.js +1 -3
  486. package/src/components/slide-transition/QSlideTransition.js +34 -26
  487. package/src/components/slide-transition/index.js +1 -3
  488. package/src/components/slider/QSlider.js +64 -43
  489. package/src/components/slider/QSlider.json +6 -6
  490. package/src/components/slider/index.js +1 -3
  491. package/src/components/slider/use-slider.js +327 -220
  492. package/src/components/slider/use-slider.json +32 -32
  493. package/src/components/space/QSpace.js +1 -1
  494. package/src/components/space/QSpace.test.js +1 -4
  495. package/src/components/space/index.js +1 -3
  496. package/src/components/spinner/QSpinner.js +23 -18
  497. package/src/components/spinner/QSpinner.json +1 -1
  498. package/src/components/spinner/QSpinner.test.js +11 -27
  499. package/src/components/spinner/QSpinnerAudio.js +13 -11
  500. package/src/components/spinner/QSpinnerAudio.json +1 -1
  501. package/src/components/spinner/QSpinnerAudio.test.js +9 -21
  502. package/src/components/spinner/QSpinnerBall.js +13 -11
  503. package/src/components/spinner/QSpinnerBall.json +1 -1
  504. package/src/components/spinner/QSpinnerBall.test.js +9 -21
  505. package/src/components/spinner/QSpinnerBars.js +13 -11
  506. package/src/components/spinner/QSpinnerBars.json +1 -1
  507. package/src/components/spinner/QSpinnerBars.test.js +9 -21
  508. package/src/components/spinner/QSpinnerBox.js +13 -11
  509. package/src/components/spinner/QSpinnerBox.json +1 -1
  510. package/src/components/spinner/QSpinnerBox.test.js +9 -21
  511. package/src/components/spinner/QSpinnerClock.js +13 -11
  512. package/src/components/spinner/QSpinnerClock.json +1 -1
  513. package/src/components/spinner/QSpinnerClock.test.js +9 -21
  514. package/src/components/spinner/QSpinnerComment.js +13 -11
  515. package/src/components/spinner/QSpinnerComment.json +1 -1
  516. package/src/components/spinner/QSpinnerComment.test.js +9 -21
  517. package/src/components/spinner/QSpinnerCube.js +13 -11
  518. package/src/components/spinner/QSpinnerCube.json +1 -1
  519. package/src/components/spinner/QSpinnerCube.test.js +9 -21
  520. package/src/components/spinner/QSpinnerDots.js +13 -11
  521. package/src/components/spinner/QSpinnerDots.json +1 -1
  522. package/src/components/spinner/QSpinnerDots.test.js +9 -21
  523. package/src/components/spinner/QSpinnerFacebook.js +13 -11
  524. package/src/components/spinner/QSpinnerFacebook.json +1 -1
  525. package/src/components/spinner/QSpinnerFacebook.test.js +9 -21
  526. package/src/components/spinner/QSpinnerGears.js +13 -11
  527. package/src/components/spinner/QSpinnerGears.json +1 -1
  528. package/src/components/spinner/QSpinnerGears.test.js +9 -21
  529. package/src/components/spinner/QSpinnerGrid.js +13 -11
  530. package/src/components/spinner/QSpinnerGrid.json +1 -1
  531. package/src/components/spinner/QSpinnerGrid.test.js +9 -21
  532. package/src/components/spinner/QSpinnerHearts.js +13 -11
  533. package/src/components/spinner/QSpinnerHearts.json +1 -1
  534. package/src/components/spinner/QSpinnerHearts.test.js +9 -21
  535. package/src/components/spinner/QSpinnerHourglass.js +13 -11
  536. package/src/components/spinner/QSpinnerHourglass.json +1 -1
  537. package/src/components/spinner/QSpinnerHourglass.test.js +9 -21
  538. package/src/components/spinner/QSpinnerInfinity.js +12 -10
  539. package/src/components/spinner/QSpinnerInfinity.json +1 -1
  540. package/src/components/spinner/QSpinnerInfinity.test.js +9 -21
  541. package/src/components/spinner/QSpinnerIos.js +13 -11
  542. package/src/components/spinner/QSpinnerIos.json +1 -1
  543. package/src/components/spinner/QSpinnerIos.test.js +9 -21
  544. package/src/components/spinner/QSpinnerOrbit.js +13 -11
  545. package/src/components/spinner/QSpinnerOrbit.json +1 -1
  546. package/src/components/spinner/QSpinnerOrbit.test.js +9 -21
  547. package/src/components/spinner/QSpinnerOval.js +13 -11
  548. package/src/components/spinner/QSpinnerOval.json +1 -1
  549. package/src/components/spinner/QSpinnerOval.test.js +9 -21
  550. package/src/components/spinner/QSpinnerPie.js +13 -11
  551. package/src/components/spinner/QSpinnerPie.json +1 -1
  552. package/src/components/spinner/QSpinnerPie.test.js +9 -21
  553. package/src/components/spinner/QSpinnerPuff.js +13 -11
  554. package/src/components/spinner/QSpinnerPuff.json +1 -1
  555. package/src/components/spinner/QSpinnerPuff.test.js +9 -21
  556. package/src/components/spinner/QSpinnerRadio.js +13 -11
  557. package/src/components/spinner/QSpinnerRadio.json +1 -1
  558. package/src/components/spinner/QSpinnerRadio.test.js +9 -21
  559. package/src/components/spinner/QSpinnerRings.js +13 -11
  560. package/src/components/spinner/QSpinnerRings.json +1 -1
  561. package/src/components/spinner/QSpinnerRings.test.js +9 -21
  562. package/src/components/spinner/QSpinnerTail.js +12 -10
  563. package/src/components/spinner/QSpinnerTail.json +1 -1
  564. package/src/components/spinner/QSpinnerTail.test.js +9 -21
  565. package/src/components/spinner/index.js +0 -1
  566. package/src/components/spinner/spinner.json +2 -2
  567. package/src/components/spinner/use-spinner.js +7 -7
  568. package/src/components/spinner/use-spinner.test.js +1 -1
  569. package/src/components/splitter/QSplitter.js +133 -94
  570. package/src/components/splitter/QSplitter.json +10 -19
  571. package/src/components/splitter/index.js +1 -3
  572. package/src/components/stepper/QStep.js +65 -42
  573. package/src/components/stepper/QStep.json +5 -5
  574. package/src/components/stepper/QStepper.js +62 -39
  575. package/src/components/stepper/QStepper.json +2 -2
  576. package/src/components/stepper/QStepperNavigation.js +1 -1
  577. package/src/components/stepper/StepHeader.js +87 -67
  578. package/src/components/stepper/index.js +1 -5
  579. package/src/components/tab-panels/QTabPanel.js +3 -2
  580. package/src/components/tab-panels/QTabPanel.json +1 -1
  581. package/src/components/tab-panels/QTabPanels.js +12 -6
  582. package/src/components/tab-panels/QTabPanels.json +1 -1
  583. package/src/components/tab-panels/index.js +1 -4
  584. package/src/components/table/QTable.js +544 -426
  585. package/src/components/table/QTable.json +168 -165
  586. package/src/components/table/QTd.js +18 -13
  587. package/src/components/table/QTd.json +1 -1
  588. package/src/components/table/QTh.js +25 -20
  589. package/src/components/table/QTh.json +1 -1
  590. package/src/components/table/QTr.js +17 -9
  591. package/src/components/table/QTr.json +1 -1
  592. package/src/components/table/get-table-middle.js +2 -4
  593. package/src/components/table/index.js +1 -6
  594. package/src/components/table/table-column-selection.js +45 -35
  595. package/src/components/table/table-filter.js +9 -8
  596. package/src/components/table/table-pagination.js +75 -52
  597. package/src/components/table/table-row-expand.js +15 -16
  598. package/src/components/table/table-row-selection.js +31 -31
  599. package/src/components/table/table-sort.js +26 -29
  600. package/src/components/tabs/QRouteTab.js +10 -12
  601. package/src/components/tabs/QRouteTab.json +6 -6
  602. package/src/components/tabs/QTab.js +1 -1
  603. package/src/components/tabs/QTab.json +1 -1
  604. package/src/components/tabs/QTabs.js +283 -205
  605. package/src/components/tabs/QTabs.json +9 -9
  606. package/src/components/tabs/index.js +1 -5
  607. package/src/components/tabs/use-tab.js +127 -103
  608. package/src/components/tabs/use-tab.json +8 -8
  609. package/src/components/time/QTime.js +502 -383
  610. package/src/components/time/QTime.json +19 -15
  611. package/src/components/time/index.js +1 -3
  612. package/src/components/timeline/QTimeline.js +10 -7
  613. package/src/components/timeline/QTimeline.json +2 -2
  614. package/src/components/timeline/QTimelineEntry.js +44 -27
  615. package/src/components/timeline/QTimelineEntry.json +7 -5
  616. package/src/components/timeline/index.js +1 -4
  617. package/src/components/toggle/QToggle.js +29 -19
  618. package/src/components/toggle/QToggle.json +1 -1
  619. package/src/components/toggle/index.js +1 -3
  620. package/src/components/toolbar/QToolbar.js +7 -5
  621. package/src/components/toolbar/QToolbar.test.js +2 -6
  622. package/src/components/toolbar/QToolbarTitle.js +5 -4
  623. package/src/components/toolbar/QToolbarTitle.test.js +2 -6
  624. package/src/components/toolbar/index.js +1 -4
  625. package/src/components/tooltip/QTooltip.js +125 -72
  626. package/src/components/tooltip/QTooltip.json +34 -10
  627. package/src/components/tooltip/index.js +1 -3
  628. package/src/components/tree/QTree.js +417 -297
  629. package/src/components/tree/QTree.json +27 -25
  630. package/src/components/tree/index.js +1 -3
  631. package/src/components/uploader/QUploader.json +9 -6
  632. package/src/components/uploader/QUploaderAddTrigger.js +5 -2
  633. package/src/components/uploader/index.js +1 -4
  634. package/src/components/uploader/uploader-core.js +262 -178
  635. package/src/components/uploader/xhr-uploader-plugin.js +96 -89
  636. package/src/components/uploader/xhr-uploader-plugin.json +29 -29
  637. package/src/components/video/QVideo.js +25 -19
  638. package/src/components/video/QVideo.json +5 -5
  639. package/src/components/video/QVideo.test.js +55 -85
  640. package/src/components/video/index.js +1 -3
  641. package/src/components/virtual-scroll/QVirtualScroll.js +89 -37
  642. package/src/components/virtual-scroll/QVirtualScroll.json +6 -6
  643. package/src/components/virtual-scroll/index.js +1 -3
  644. package/src/components/virtual-scroll/use-virtual-scroll.js +421 -240
  645. package/src/components/virtual-scroll/use-virtual-scroll.json +20 -13
  646. package/src/composables/private.use-align/use-align.js +8 -5
  647. package/src/composables/private.use-align/use-align.test.js +9 -17
  648. package/src/composables/private.use-anchor/use-anchor-static.json +2 -7
  649. package/src/composables/private.use-anchor/use-anchor.js +79 -62
  650. package/src/composables/private.use-anchor/use-anchor.json +1 -1
  651. package/src/composables/private.use-dark/use-dark.js +2 -6
  652. package/src/composables/private.use-dark/use-dark.test.js +7 -21
  653. package/src/composables/private.use-field/use-field.js +384 -251
  654. package/src/composables/private.use-field/use-field.json +10 -10
  655. package/src/composables/private.use-file/use-file-dom-props.js +11 -15
  656. package/src/composables/private.use-file/use-file.js +86 -67
  657. package/src/composables/private.use-file/use-file.json +8 -8
  658. package/src/composables/private.use-fullscreen/use-fullscreen.js +35 -17
  659. package/src/composables/private.use-fullscreen/use-fullscreen.json +1 -1
  660. package/src/composables/private.use-history/use-history.js +4 -4
  661. package/src/composables/private.use-history/use-history.test.js +9 -21
  662. package/src/composables/private.use-key-composition/use-key-composition.js +16 -12
  663. package/src/composables/private.use-model-toggle/use-model-toggle.js +44 -35
  664. package/src/composables/private.use-model-toggle/use-model-toggle.json +2 -2
  665. package/src/composables/private.use-panel/use-panel.child.json +1 -1
  666. package/src/composables/private.use-panel/use-panel.js +131 -91
  667. package/src/composables/private.use-panel/use-panel.json +18 -18
  668. package/src/composables/private.use-portal/use-portal.js +20 -15
  669. package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +4 -4
  670. package/src/composables/private.use-ratio/use-ratio.js +3 -3
  671. package/src/composables/private.use-ratio/use-ratio.json +2 -7
  672. package/src/composables/private.use-refocus-target/use-refocus-target.js +7 -8
  673. package/src/composables/private.use-router-link/use-router-link.js +111 -110
  674. package/src/composables/private.use-router-link/use-router-link.json +6 -9
  675. package/src/composables/private.use-scroll-target/use-scroll-target.js +14 -11
  676. package/src/composables/private.use-size/use-size.js +6 -4
  677. package/src/composables/private.use-size/use-size.json +1 -1
  678. package/src/composables/private.use-size/use-size.test.js +1 -1
  679. package/src/composables/private.use-transition/use-transition.js +17 -11
  680. package/src/composables/private.use-transition/use-transition.json +1 -1
  681. package/src/composables/private.use-transition/use-transition.test.js +7 -21
  682. package/src/composables/private.use-validate/use-validate.js +78 -67
  683. package/src/composables/private.use-validate/use-validate.json +9 -12
  684. package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +12 -6
  685. package/src/composables/use-form/private.use-form.js +4 -4
  686. package/src/composables/use-form/private.use-form.json +1 -1
  687. package/src/composables/use-form/private.use-form.test.js +17 -15
  688. package/src/composables/use-form/use-form-child.js +25 -14
  689. package/src/composables/use-hydration/use-hydration.js +1 -1
  690. package/src/composables/use-hydration/use-hydration.test.js +2 -4
  691. package/src/composables/use-id/use-id.js +10 -12
  692. package/src/composables/use-id/use-id.test.js +1 -1
  693. package/src/composables/use-interval/use-interval.js +3 -3
  694. package/src/composables/use-interval/use-interval.test.js +6 -9
  695. package/src/composables/use-meta/use-meta.js +13 -10
  696. package/src/composables/use-quasar/use-quasar.js +1 -1
  697. package/src/composables/use-quasar/use-quasar.test.js +4 -10
  698. package/src/composables/use-render-cache/use-render-cache.js +16 -24
  699. package/src/composables/use-split-attrs/use-split-attrs.js +9 -5
  700. package/src/composables/use-split-attrs/use-split-attrs.test.js +17 -15
  701. package/src/composables/use-tick/use-tick.js +10 -5
  702. package/src/composables/use-tick/use-tick.test.js +5 -8
  703. package/src/composables/use-timeout/use-timeout.js +3 -3
  704. package/src/composables/use-timeout/use-timeout.test.js +6 -9
  705. package/src/composables.js +0 -1
  706. package/src/css/core/helpers.sass +3 -16
  707. package/src/directives/close-popup/ClosePopup.js +41 -35
  708. package/src/directives/close-popup/ClosePopup.json +1 -1
  709. package/src/directives/intersection/Intersection.js +25 -28
  710. package/src/directives/intersection/Intersection.json +6 -6
  711. package/src/directives/morph/Morph.js +87 -87
  712. package/src/directives/morph/Morph.json +15 -13
  713. package/src/directives/mutation/Mutation.js +23 -24
  714. package/src/directives/mutation/Mutation.json +11 -11
  715. package/src/directives/ripple/Ripple.js +88 -79
  716. package/src/directives/ripple/Ripple.json +10 -10
  717. package/src/directives/ripple/Ripple.test.js +31 -87
  718. package/src/directives/scroll/Scroll.js +43 -30
  719. package/src/directives/scroll/Scroll.json +4 -2
  720. package/src/directives/scroll-fire/ScrollFire.js +43 -38
  721. package/src/directives/scroll-fire/ScrollFire.json +1 -1
  722. package/src/directives/touch-hold/TouchHold.js +155 -139
  723. package/src/directives/touch-hold/TouchHold.json +2 -2
  724. package/src/directives/touch-pan/TouchPan.js +311 -278
  725. package/src/directives/touch-pan/TouchPan.json +6 -4
  726. package/src/directives/touch-repeat/TouchRepeat.js +222 -188
  727. package/src/directives/touch-repeat/TouchRepeat.json +5 -3
  728. package/src/directives/touch-swipe/TouchSwipe.js +235 -214
  729. package/src/directives/touch-swipe/TouchSwipe.json +5 -3
  730. package/src/flags.dev.js +10 -17
  731. package/src/index.dev.js +2 -0
  732. package/src/index.ssr.js +2 -6
  733. package/src/index.umd.js +4 -2
  734. package/src/install-quasar.js +92 -76
  735. package/src/plugins/addressbar/AddressbarColor.js +28 -25
  736. package/src/plugins/addressbar/AddressbarColor.json +1 -1
  737. package/src/plugins/addressbar/AddressbarColor.test.js +10 -9
  738. package/src/plugins/app-fullscreen/AppFullscreen.js +50 -51
  739. package/src/plugins/app-fullscreen/AppFullscreen.json +6 -10
  740. package/src/plugins/app-fullscreen/AppFullscreen.test.js +11 -26
  741. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +7 -5
  742. package/src/plugins/app-visibility/AppVisibility.js +21 -17
  743. package/src/plugins/app-visibility/AppVisibility.test.js +3 -1
  744. package/src/plugins/bottom-sheet/BottomSheet.js +1 -1
  745. package/src/plugins/bottom-sheet/BottomSheet.json +9 -9
  746. package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +132 -95
  747. package/src/plugins/cookies/Cookies.js +50 -58
  748. package/src/plugins/cookies/Cookies.json +24 -16
  749. package/src/plugins/dark/Dark.js +61 -55
  750. package/src/plugins/dark/Dark.json +6 -6
  751. package/src/plugins/dark/Dark.test.js +26 -44
  752. package/src/plugins/dialog/Dialog.js +1 -1
  753. package/src/plugins/dialog/Dialog.json +29 -21
  754. package/src/plugins/dialog/component/DialogPluginComponent.js +122 -121
  755. package/src/plugins/icon-set/IconSet.js +63 -56
  756. package/src/plugins/icon-set/IconSet.json +421 -419
  757. package/src/plugins/icon-set/IconSet.test.js +8 -7
  758. package/src/plugins/lang/Lang.js +115 -96
  759. package/src/plugins/lang/Lang.json +201 -175
  760. package/src/plugins/lang/Lang.test.js +52 -20
  761. package/src/plugins/loading/Loading.js +175 -143
  762. package/src/plugins/loading/Loading.json +15 -15
  763. package/src/plugins/loading-bar/LoadingBar.js +61 -56
  764. package/src/plugins/loading-bar/LoadingBar.json +2 -2
  765. package/src/plugins/meta/Meta.js +91 -81
  766. package/src/plugins/notify/Notify.js +275 -221
  767. package/src/plugins/notify/Notify.json +79 -71
  768. package/src/plugins/platform/Platform.js +105 -112
  769. package/src/plugins/platform/Platform.json +12 -8
  770. package/src/plugins/platform/Platform.test.js +4 -7
  771. package/src/plugins/private.body/Body.js +19 -23
  772. package/src/plugins/private.body/Body.test.js +4 -6
  773. package/src/plugins/private.history/History.js +27 -30
  774. package/src/plugins/screen/Screen.js +160 -147
  775. package/src/plugins/screen/Screen.json +6 -6
  776. package/src/plugins/screen/Screen.test.js +6 -12
  777. package/src/plugins/storage/LocalStorage.js +5 -4
  778. package/src/plugins/storage/LocalStorage.json +1 -1
  779. package/src/plugins/storage/LocalStorage.test.js +56 -62
  780. package/src/plugins/storage/SessionStorage.js +5 -4
  781. package/src/plugins/storage/SessionStorage.json +1 -1
  782. package/src/plugins/storage/SessionStorage.test.js +56 -62
  783. package/src/plugins/storage/engine/web-storage.js +24 -26
  784. package/src/plugins/storage/engine/web-storage.json +45 -15
  785. package/src/utils/EventBus/EventBus.js +12 -13
  786. package/src/utils/clone/clone.js +27 -28
  787. package/src/utils/clone/clone.test.js +27 -52
  788. package/src/utils/colors/colors.js +69 -63
  789. package/src/utils/colors/colors.test.js +360 -270
  790. package/src/utils/copy-to-clipboard/copy-to-clipboard.js +9 -10
  791. package/src/utils/create-meta-mixin/create-meta-mixin.js +17 -19
  792. package/src/utils/create-uploader-component/create-uploader-component.js +20 -14
  793. package/src/utils/css-var/get-css-var.js +4 -2
  794. package/src/utils/css-var/get-css-var.test.js +4 -11
  795. package/src/utils/css-var/set-css-var.js +2 -2
  796. package/src/utils/css-var/set-css-var.test.js +6 -12
  797. package/src/utils/date/date.js +251 -243
  798. package/src/utils/date/private.persian.js +54 -44
  799. package/src/utils/debounce/debounce.js +5 -5
  800. package/src/utils/debounce/debounce.test.js +3 -10
  801. package/src/utils/dom/dom.js +21 -22
  802. package/src/utils/dom/dom.test.js +19 -39
  803. package/src/utils/event/event.js +53 -49
  804. package/src/utils/export-file/export-file.js +11 -12
  805. package/src/utils/extend/extend.js +30 -26
  806. package/src/utils/extend/extend.test.js +36 -42
  807. package/src/utils/format/format.js +11 -13
  808. package/src/utils/format/format.test.js +50 -61
  809. package/src/utils/frame-debounce/frame-debounce.js +5 -3
  810. package/src/utils/frame-debounce/frame-debounce.test.js +3 -10
  811. package/src/utils/is/is.js +27 -23
  812. package/src/utils/is/is.test.js +100 -84
  813. package/src/utils/morph/morph.js +470 -377
  814. package/src/utils/open-url/open-url.js +10 -21
  815. package/src/utils/patterns/patterns.js +11 -7
  816. package/src/utils/patterns/patterns.test.js +2 -0
  817. package/src/utils/private.click-outside/click-outside.js +28 -26
  818. package/src/utils/private.config/instance-config.js +1 -1
  819. package/src/utils/private.config/instance-config.test.js +11 -7
  820. package/src/utils/private.config/nodes.js +14 -14
  821. package/src/utils/private.config/nodes.test.js +32 -38
  822. package/src/utils/private.create/create.js +10 -4
  823. package/src/utils/private.create/create.test.js +11 -7
  824. package/src/utils/private.dialog/create-dialog.js +70 -59
  825. package/src/utils/private.dialog/create-dialog.json +13 -6
  826. package/src/utils/private.focus/focus-manager.js +7 -8
  827. package/src/utils/private.focus/focus-manager.test.js +13 -18
  828. package/src/utils/private.focus/focusout.js +4 -4
  829. package/src/utils/private.focus/focusout.test.js +10 -22
  830. package/src/utils/private.get-emits-object/get-emits-object.js +2 -2
  831. package/src/utils/private.get-emits-object/get-emits-object.test.js +4 -10
  832. package/src/utils/private.inject-obj-prop/inject-obj-prop.js +3 -3
  833. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +20 -49
  834. package/src/utils/private.keyboard/escape-key.js +10 -10
  835. package/src/utils/private.keyboard/escape-key.test.js +10 -22
  836. package/src/utils/private.keyboard/key-composition.js +9 -7
  837. package/src/utils/private.portal/portal.js +7 -10
  838. package/src/utils/private.position-engine/position-engine.js +127 -75
  839. package/src/utils/private.render/render.js +9 -24
  840. package/src/utils/private.render/render.test.js +40 -55
  841. package/src/utils/private.rtl/rtl.js +1 -3
  842. package/src/utils/private.selection/selection.js +6 -6
  843. package/src/utils/private.selection/selection.test.js +7 -13
  844. package/src/utils/private.sort/sort.js +4 -6
  845. package/src/utils/private.symbols/symbols.js +1 -1
  846. package/src/utils/private.touch/touch.js +16 -16
  847. package/src/utils/private.touch/touch.test.js +56 -16
  848. package/src/utils/private.vm/vm.js +6 -7
  849. package/src/utils/private.vm/vm.test.js +32 -32
  850. package/src/utils/run-sequential-promises/run-sequential-promises.js +56 -50
  851. package/src/utils/scroll/prevent-scroll.js +75 -47
  852. package/src/utils/scroll/scroll.js +51 -44
  853. package/src/utils/throttle/throttle.js +7 -4
  854. package/src/utils/throttle/throttle.test.js +2 -7
  855. package/src/utils/uid/uid.js +34 -22
  856. package/wrappers/index.cjs +17 -15
  857. package/wrappers/index.js +15 -15
@@ -1,4 +1,14 @@
1
- import { h, ref, computed, watch, onBeforeUnmount, onActivated, onDeactivated, getCurrentInstance, provide } from 'vue'
1
+ import {
2
+ h,
3
+ ref,
4
+ computed,
5
+ watch,
6
+ onBeforeUnmount,
7
+ onActivated,
8
+ onDeactivated,
9
+ getCurrentInstance,
10
+ provide
11
+ } from 'vue'
2
12
 
3
13
  import QIcon from '../icon/QIcon.js'
4
14
  import QResizeObserver from '../resize-observer/QResizeObserver.js'
@@ -11,21 +21,19 @@ import { hSlot } from '../../utils/private.render/render.js'
11
21
  import { tabsKey } from '../../utils/private.symbols/symbols.js'
12
22
  import { rtlHasScrollBug } from '../../utils/private.rtl/rtl.js'
13
23
 
14
- function getIndicatorClass (color, top, vertical) {
15
- const pos = vertical === true
16
- ? [ 'left', 'right' ]
17
- : [ 'top', 'bottom' ]
24
+ function getIndicatorClass(color, top, vertical) {
25
+ const pos = vertical === true ? ['left', 'right'] : ['top', 'bottom']
18
26
 
19
- return `absolute-${ top === true ? pos[ 0 ] : pos[ 1 ] }${ color ? ` text-${ color }` : '' }`
27
+ return `absolute-${top === true ? pos[0] : pos[1]}${color ? ` text-${color}` : ''}`
20
28
  }
21
29
 
22
- const alignValues = [ 'left', 'center', 'right', 'justify' ]
30
+ const alignValues = ['left', 'center', 'right', 'justify']
23
31
 
24
32
  export default createComponent({
25
33
  name: 'QTabs',
26
34
 
27
35
  props: {
28
- modelValue: [ Number, String ],
36
+ modelValue: [Number, String],
29
37
 
30
38
  align: {
31
39
  type: String,
@@ -33,7 +41,7 @@ export default createComponent({
33
41
  validator: v => alignValues.includes(v)
34
42
  },
35
43
  breakpoint: {
36
- type: [ String, Number ],
44
+ type: [String, Number],
37
45
  default: 600
38
46
  },
39
47
 
@@ -61,10 +69,10 @@ export default createComponent({
61
69
 
62
70
  contentClass: String,
63
71
 
64
- 'onUpdate:modelValue': [ Function, Array ]
72
+ 'onUpdate:modelValue': [Function, Array]
65
73
  },
66
74
 
67
- setup (props, { slots, emit }) {
75
+ setup(props, { slots, emit }) {
68
76
  const { proxy } = getCurrentInstance()
69
77
  const { $q } = proxy
70
78
 
@@ -72,8 +80,14 @@ export default createComponent({
72
80
  const { registerTick: registerUpdateArrowsTick } = useTick()
73
81
  const { registerTick: registerAnimateTick } = useTick()
74
82
 
75
- const { registerTimeout: registerFocusTimeout, removeTimeout: removeFocusTimeout } = useTimeout()
76
- const { registerTimeout: registerScrollToTabTimeout, removeTimeout: removeScrollToTabTimeout } = useTimeout()
83
+ const {
84
+ registerTimeout: registerFocusTimeout,
85
+ removeTimeout: removeFocusTimeout
86
+ } = useTimeout()
87
+ const {
88
+ registerTimeout: registerScrollToTabTimeout,
89
+ removeTimeout: removeScrollToTabTimeout
90
+ } = useTimeout()
77
91
 
78
92
  const rootRef = ref(null)
79
93
  const contentRef = ref(null)
@@ -88,7 +102,9 @@ export default createComponent({
88
102
  const tabDataListLen = ref(0)
89
103
  const hasFocus = ref(false)
90
104
 
91
- let animateTimer = null, scrollTimer = null, unwatchRoute
105
+ let animateTimer = null,
106
+ scrollTimer = null,
107
+ unwatchRoute
92
108
 
93
109
  const tabProps = computed(() => ({
94
110
  activeClass: props.activeClass,
@@ -109,7 +125,7 @@ export default createComponent({
109
125
  const val = currentModel.value
110
126
 
111
127
  for (let i = 0; i < len; i++) {
112
- if (tabDataList[ i ].name.value === val) {
128
+ if (tabDataList[i].name.value === val) {
113
129
  return true
114
130
  }
115
131
  }
@@ -118,85 +134,99 @@ export default createComponent({
118
134
  })
119
135
 
120
136
  const alignClass = computed(() => {
121
- const align = scrollable.value === true
122
- ? 'left'
123
- : (justify.value === true ? 'justify' : props.align)
124
-
125
- return `q-tabs__content--align-${ align }`
137
+ const align =
138
+ scrollable.value === true
139
+ ? 'left'
140
+ : justify.value === true
141
+ ? 'justify'
142
+ : props.align
143
+
144
+ return `q-tabs__content--align-${align}`
126
145
  })
127
146
 
128
- const classes = computed(() =>
129
- 'q-tabs row no-wrap items-center'
130
- + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`
131
- + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`
132
- + ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`
133
- + ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`
134
- + (props.dense === true ? ' q-tabs--dense' : '')
135
- + (props.shrink === true ? ' col-shrink' : '')
136
- + (props.stretch === true ? ' self-stretch' : '')
147
+ const classes = computed(
148
+ () =>
149
+ 'q-tabs row no-wrap items-center' +
150
+ ` q-tabs--${scrollable.value === true ? '' : 'not-'}scrollable` +
151
+ ` q-tabs--${props.vertical === true ? 'vertical' : 'horizontal'}` +
152
+ ` q-tabs__arrows--${props.outsideArrows === true ? 'outside' : 'inside'}` +
153
+ ` q-tabs--mobile-with${props.mobileArrows === true ? '' : 'out'}-arrows` +
154
+ (props.dense === true ? ' q-tabs--dense' : '') +
155
+ (props.shrink === true ? ' col-shrink' : '') +
156
+ (props.stretch === true ? ' self-stretch' : '')
137
157
  )
138
158
 
139
- const innerClass = computed(() =>
140
- 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '
141
- + alignClass.value
142
- + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')
159
+ const innerClass = computed(
160
+ () =>
161
+ 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position ' +
162
+ alignClass.value +
163
+ (props.contentClass !== void 0 ? ` ${props.contentClass}` : '')
143
164
  )
144
165
 
145
- const domProps = computed(() => (
166
+ const domProps = computed(() =>
146
167
  props.vertical === true
147
- ? { container: 'height', content: 'offsetHeight', scroll: 'scrollHeight' }
168
+ ? {
169
+ container: 'height',
170
+ content: 'offsetHeight',
171
+ scroll: 'scrollHeight'
172
+ }
148
173
  : { container: 'width', content: 'offsetWidth', scroll: 'scrollWidth' }
149
- ))
174
+ )
150
175
 
151
- const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true)
152
- const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true)
176
+ const isRTL = computed(
177
+ () => props.vertical !== true && $q.lang.rtl === true
178
+ )
179
+ const rtlPosCorrection = computed(
180
+ () => rtlHasScrollBug === false && isRTL.value === true
181
+ )
153
182
 
154
183
  watch(isRTL, updateArrows)
155
184
 
156
- watch(() => props.modelValue, name => {
157
- updateModel({ name, setCurrent: true, skipEmit: true })
158
- })
185
+ watch(
186
+ () => props.modelValue,
187
+ name => {
188
+ updateModel({ name, setCurrent: true, skipEmit: true })
189
+ }
190
+ )
159
191
 
160
192
  watch(() => props.outsideArrows, recalculateScroll)
161
193
 
162
- function updateModel ({ name, setCurrent, skipEmit }) {
194
+ function updateModel({ name, setCurrent, skipEmit }) {
163
195
  if (currentModel.value === name) return
164
196
 
165
- if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
197
+ if (skipEmit !== true && props['onUpdate:modelValue'] !== void 0) {
166
198
  emit('update:modelValue', name)
167
199
  }
168
200
 
169
- if (
170
- setCurrent === true
171
- || props[ 'onUpdate:modelValue' ] === void 0
172
- ) {
201
+ if (setCurrent === true || props['onUpdate:modelValue'] === void 0) {
173
202
  animate(currentModel.value, name)
174
203
  currentModel.value = name
175
204
  }
176
205
  }
177
206
 
178
- function recalculateScroll () {
207
+ function recalculateScroll() {
179
208
  registerScrollTick(() => {
180
- rootRef.value && updateContainer({
181
- width: rootRef.value.offsetWidth,
182
- height: rootRef.value.offsetHeight
183
- })
209
+ if (rootRef.value) {
210
+ updateContainer({
211
+ width: rootRef.value.offsetWidth,
212
+ height: rootRef.value.offsetHeight
213
+ })
214
+ }
184
215
  })
185
216
  }
186
217
 
187
- function updateContainer (domSize) {
218
+ function updateContainer(domSize) {
188
219
  // it can be called faster than component being initialized
189
220
  // so we need to protect against that case
190
221
  // (one example of such case is the docs release notes page)
191
222
  if (domProps.value === void 0 || contentRef.value === null) return
192
223
 
193
- const
194
- size = domSize[ domProps.value.container ],
224
+ const size = domSize[domProps.value.container],
195
225
  scrollSize = Math.min(
196
- contentRef.value[ domProps.value.scroll ],
226
+ contentRef.value[domProps.value.scroll],
197
227
  Array.prototype.reduce.call(
198
228
  contentRef.value.children,
199
- (acc, el) => acc + (el[ domProps.value.content ] || 0),
229
+ (acc, el) => acc + (el[domProps.value.content] || 0),
200
230
  0
201
231
  )
202
232
  ),
@@ -205,29 +235,28 @@ export default createComponent({
205
235
  scrollable.value = scroll
206
236
 
207
237
  // Arrows need to be updated even if the scroll status was already true
208
- scroll === true && registerUpdateArrowsTick(updateArrows)
238
+ if (scroll === true) registerUpdateArrowsTick(updateArrows)
209
239
 
210
240
  justify.value = size < parseInt(props.breakpoint, 10)
211
241
  }
212
242
 
213
- function animate (oldName, newName) {
214
- const
215
- oldTab = oldName !== void 0 && oldName !== null && oldName !== ''
216
- ? tabDataList.find(tab => tab.name.value === oldName)
217
- : null,
218
- newTab = newName !== void 0 && newName !== null && newName !== ''
219
- ? tabDataList.find(tab => tab.name.value === newName)
220
- : null
243
+ function animate(oldName, newName) {
244
+ const oldTab =
245
+ oldName !== void 0 && oldName !== null && oldName !== ''
246
+ ? tabDataList.find(tab => tab.name.value === oldName)
247
+ : null,
248
+ newTab =
249
+ newName !== void 0 && newName !== null && newName !== ''
250
+ ? tabDataList.find(tab => tab.name.value === newName)
251
+ : null
221
252
 
222
253
  if (hadActivated === true) {
223
254
  // After the component has been re-activated
224
255
  // we should not animate the transition.
225
256
  // Consider it as if the component has just been mounted.
226
257
  hadActivated = false
227
- }
228
- else if (oldTab && newTab) {
229
- const
230
- oldEl = oldTab.tabIndicatorRef.value,
258
+ } else if (oldTab && newTab) {
259
+ const oldEl = oldTab.tabIndicatorRef.value,
231
260
  newEl = newTab.tabIndicatorRef.value
232
261
 
233
262
  if (animateTimer !== null) {
@@ -240,13 +269,13 @@ export default createComponent({
240
269
  newEl.style.transition = 'none'
241
270
  newEl.style.transform = 'none'
242
271
 
243
- const
244
- oldPos = oldEl.getBoundingClientRect(),
272
+ const oldPos = oldEl.getBoundingClientRect(),
245
273
  newPos = newEl.getBoundingClientRect()
246
274
 
247
- newEl.style.transform = props.vertical === true
248
- ? `translate3d(0,${ oldPos.top - newPos.top }px,0) scale3d(1,${ newPos.height ? oldPos.height / newPos.height : 1 },1)`
249
- : `translate3d(${ oldPos.left - newPos.left }px,0,0) scale3d(${ newPos.width ? oldPos.width / newPos.width : 1 },1,1)`
275
+ newEl.style.transform =
276
+ props.vertical === true
277
+ ? `translate3d(0,${oldPos.top - newPos.top}px,0) scale3d(1,${newPos.height ? oldPos.height / newPos.height : 1},1)`
278
+ : `translate3d(${oldPos.left - newPos.left}px,0,0) scale3d(${newPos.width ? oldPos.width / newPos.width : 1},1,1)`
250
279
 
251
280
  // allow scope updates to kick in (QRouteTab needs more time)
252
281
  registerAnimateTick(() => {
@@ -263,48 +292,56 @@ export default createComponent({
263
292
  }
264
293
  }
265
294
 
266
- function scrollToTabEl (el) {
267
- const
268
- { left, width, top, height } = contentRef.value.getBoundingClientRect(),
295
+ function scrollToTabEl(el) {
296
+ const { left, width, top, height } =
297
+ contentRef.value.getBoundingClientRect(),
269
298
  newPos = el.getBoundingClientRect()
270
299
 
271
- let offset = props.vertical === true ? newPos.top - top : newPos.left - left
300
+ let offset =
301
+ props.vertical === true ? newPos.top - top : newPos.left - left
272
302
 
273
303
  if (offset < 0) {
274
- contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset)
304
+ contentRef.value[
305
+ props.vertical === true ? 'scrollTop' : 'scrollLeft'
306
+ ] += Math.floor(offset)
275
307
  updateArrows()
276
308
  return
277
309
  }
278
310
 
279
- offset += props.vertical === true ? newPos.height - height : newPos.width - width
311
+ offset +=
312
+ props.vertical === true ? newPos.height - height : newPos.width - width
280
313
  if (offset > 0) {
281
- contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset)
314
+ contentRef.value[
315
+ props.vertical === true ? 'scrollTop' : 'scrollLeft'
316
+ ] += Math.ceil(offset)
282
317
  updateArrows()
283
318
  }
284
319
  }
285
320
 
286
- function updateArrows () {
321
+ function updateArrows() {
287
322
  const content = contentRef.value
288
323
  if (content === null) return
289
324
 
290
- const
291
- rect = content.getBoundingClientRect(),
292
- pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft)
325
+ const rect = content.getBoundingClientRect(),
326
+ pos =
327
+ props.vertical === true
328
+ ? content.scrollTop
329
+ : Math.abs(content.scrollLeft)
293
330
 
294
331
  if (isRTL.value === true) {
295
332
  leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1
296
333
  rightArrow.value = pos > 0
297
- }
298
- else {
334
+ } else {
299
335
  leftArrow.value = pos > 0
300
- rightArrow.value = props.vertical === true
301
- ? Math.ceil(pos + rect.height) < content.scrollHeight
302
- : Math.ceil(pos + rect.width) < content.scrollWidth
336
+ rightArrow.value =
337
+ props.vertical === true
338
+ ? Math.ceil(pos + rect.height) < content.scrollHeight
339
+ : Math.ceil(pos + rect.width) < content.scrollWidth
303
340
  }
304
341
  }
305
342
 
306
- function animScrollTo (value) {
307
- scrollTimer !== null && clearInterval(scrollTimer)
343
+ function animScrollTo(value) {
344
+ if (scrollTimer !== null) clearInterval(scrollTimer)
308
345
  scrollTimer = setInterval(() => {
309
346
  if (scrollTowards(value) === true) {
310
347
  stopAnimScroll()
@@ -312,53 +349,65 @@ export default createComponent({
312
349
  }, 5)
313
350
  }
314
351
 
315
- function scrollToStart () {
316
- animScrollTo(rtlPosCorrection.value === true ? Number.MAX_SAFE_INTEGER : 0)
352
+ function scrollToStart() {
353
+ animScrollTo(
354
+ rtlPosCorrection.value === true ? Number.MAX_SAFE_INTEGER : 0
355
+ )
317
356
  }
318
357
 
319
- function scrollToEnd () {
320
- animScrollTo(rtlPosCorrection.value === true ? 0 : Number.MAX_SAFE_INTEGER)
358
+ function scrollToEnd() {
359
+ animScrollTo(
360
+ rtlPosCorrection.value === true ? 0 : Number.MAX_SAFE_INTEGER
361
+ )
321
362
  }
322
363
 
323
- function stopAnimScroll () {
364
+ function stopAnimScroll() {
324
365
  if (scrollTimer !== null) {
325
366
  clearInterval(scrollTimer)
326
367
  scrollTimer = null
327
368
  }
328
369
  }
329
370
 
330
- function onKbdNavigate (keyCode, fromEl) {
371
+ function onKbdNavigate(keyCode, fromEl) {
331
372
  const tabs = Array.prototype.filter.call(
332
373
  contentRef.value.children,
333
- el => el === fromEl || (el.matches && el.matches('.q-tab.q-focusable') === true)
374
+ el =>
375
+ el === fromEl ||
376
+ (el.matches && el.matches('.q-tab.q-focusable') === true)
334
377
  )
335
378
 
336
379
  const len = tabs.length
337
380
  if (len === 0) return
338
381
 
339
- if (keyCode === 36) { // Home
340
- scrollToTabEl(tabs[ 0 ])
341
- tabs[ 0 ].focus()
382
+ if (keyCode === 36) {
383
+ // Home
384
+ scrollToTabEl(tabs[0])
385
+ tabs[0].focus()
342
386
  return true
343
387
  }
344
- if (keyCode === 35) { // End
345
- scrollToTabEl(tabs[ len - 1 ])
346
- tabs[ len - 1 ].focus()
388
+ if (keyCode === 35) {
389
+ // End
390
+ scrollToTabEl(tabs[len - 1])
391
+ tabs[len - 1].focus()
347
392
  return true
348
393
  }
349
394
 
350
- const dirPrev = keyCode === (props.vertical === true ? 38 /* ArrowUp */ : 37 /* ArrowLeft */)
351
- const dirNext = keyCode === (props.vertical === true ? 40 /* ArrowDown */ : 39 /* ArrowRight */)
395
+ const dirPrev =
396
+ keyCode ===
397
+ (props.vertical === true ? 38 /* ArrowUp */ : 37) /* ArrowLeft */
398
+ const dirNext =
399
+ keyCode ===
400
+ (props.vertical === true ? 40 /* ArrowDown */ : 39) /* ArrowRight */
352
401
 
353
- const dir = dirPrev === true ? -1 : (dirNext === true ? 1 : void 0)
402
+ const dir = dirPrev === true ? -1 : dirNext === true ? 1 : void 0
354
403
 
355
404
  if (dir !== void 0) {
356
405
  const rtlDir = isRTL.value === true ? -1 : 1
357
406
  const index = tabs.indexOf(fromEl) + dir * rtlDir
358
407
 
359
408
  if (index >= 0 && index < len) {
360
- scrollToTabEl(tabs[ index ])
361
- tabs[ index ].focus({ preventScroll: true })
409
+ scrollToTabEl(tabs[index])
410
+ tabs[index].focus({ preventScroll: true })
362
411
  }
363
412
 
364
413
  return true
@@ -368,23 +417,34 @@ export default createComponent({
368
417
  // let's speed up execution of time-sensitive scrollTowards()
369
418
  // with a computed variable by directly applying the minimal
370
419
  // number of instructions on get/set functions
371
- const posFn = computed(() => (
420
+ const posFn = computed(() =>
372
421
  rtlPosCorrection.value === true
373
- ? { get: content => Math.abs(content.scrollLeft), set: (content, pos) => { content.scrollLeft = -pos } }
374
- : (
375
- props.vertical === true
376
- ? { get: content => content.scrollTop, set: (content, pos) => { content.scrollTop = pos } }
377
- : { get: content => content.scrollLeft, set: (content, pos) => { content.scrollLeft = pos } }
378
- )
379
- ))
422
+ ? {
423
+ get: content => Math.abs(content.scrollLeft),
424
+ set: (content, pos) => {
425
+ content.scrollLeft = -pos
426
+ }
427
+ }
428
+ : props.vertical === true
429
+ ? {
430
+ get: content => content.scrollTop,
431
+ set: (content, pos) => {
432
+ content.scrollTop = pos
433
+ }
434
+ }
435
+ : {
436
+ get: content => content.scrollLeft,
437
+ set: (content, pos) => {
438
+ content.scrollLeft = pos
439
+ }
440
+ }
441
+ )
380
442
 
381
- function scrollTowards (value) {
382
- const
383
- content = contentRef.value,
443
+ function scrollTowards(value) {
444
+ const content = contentRef.value,
384
445
  { get, set } = posFn.value
385
446
 
386
- let
387
- done = false,
447
+ let done = false,
388
448
  pos = get(content)
389
449
 
390
450
  const direction = value < pos ? -1 : 1
@@ -394,10 +454,9 @@ export default createComponent({
394
454
  if (pos < 0) {
395
455
  done = true
396
456
  pos = 0
397
- }
398
- else if (
399
- (direction === -1 && pos <= value)
400
- || (direction === 1 && pos >= value)
457
+ } else if (
458
+ (direction === -1 && pos <= value) ||
459
+ (direction === 1 && pos >= value)
401
460
  ) {
402
461
  done = true
403
462
  pos = value
@@ -409,9 +468,9 @@ export default createComponent({
409
468
  return done
410
469
  }
411
470
 
412
- function hasQueryIncluded (targetQuery, matchingQuery) {
471
+ function hasQueryIncluded(targetQuery, matchingQuery) {
413
472
  for (const key in targetQuery) {
414
- if (targetQuery[ key ] !== matchingQuery[ key ]) {
473
+ if (targetQuery[key] !== matchingQuery[key]) {
415
474
  return false
416
475
  }
417
476
  }
@@ -421,10 +480,13 @@ export default createComponent({
421
480
 
422
481
  // 1. Do not use directly; use verifyRouteModel() instead
423
482
  // 2. Should set hadActivated to false upon exit
424
- function updateActiveRoute () {
425
- let name = null, bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 }
483
+ function updateActiveRoute() {
484
+ let name = null,
485
+ bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 }
426
486
 
427
- const list = tabDataList.filter(tab => tab.routeData?.hasRouterLink.value === true)
487
+ const list = tabDataList.filter(
488
+ tab => tab.routeData?.hasRouterLink.value === true
489
+ )
428
490
  const { hash: currentHash, query: currentQuery } = proxy.$route
429
491
  const currentQueryLen = Object.keys(currentQuery).length
430
492
 
@@ -434,7 +496,10 @@ export default createComponent({
434
496
  for (const tab of list) {
435
497
  const exact = tab.routeData.exact.value === true
436
498
 
437
- if (tab.routeData[ exact === true ? 'linkIsExactActive' : 'linkIsActive' ].value !== true) {
499
+ if (
500
+ tab.routeData[exact === true ? 'linkIsExactActive' : 'linkIsActive']
501
+ .value !== true
502
+ ) {
438
503
  // it cannot match anything as it's not active nor exact-active
439
504
  continue
440
505
  }
@@ -449,8 +514,8 @@ export default createComponent({
449
514
  }
450
515
 
451
516
  if (
452
- queryLen !== currentQueryLen
453
- || hasQueryIncluded(currentQuery, query) === false
517
+ queryLen !== currentQueryLen ||
518
+ hasQueryIncluded(currentQuery, query) === false
454
519
  ) {
455
520
  // it's set to exact but it doesn't matches the query
456
521
  continue
@@ -466,10 +531,7 @@ export default createComponent({
466
531
  continue
467
532
  }
468
533
 
469
- if (
470
- queryLen !== 0
471
- && hasQueryIncluded(query, currentQuery) === false
472
- ) {
534
+ if (queryLen !== 0 && hasQueryIncluded(query, currentQuery) === false) {
473
535
  // it has query and it doesn't includes the current one
474
536
  continue
475
537
  }
@@ -485,8 +547,7 @@ export default createComponent({
485
547
  name = tab.name.value
486
548
  bestScore = newScore
487
549
  continue
488
- }
489
- else if (newScore.matchedLen !== bestScore.matchedLen) {
550
+ } else if (newScore.matchedLen !== bestScore.matchedLen) {
490
551
  // it matches less routes than the current champion so we discard it
491
552
  continue
492
553
  }
@@ -495,8 +556,7 @@ export default createComponent({
495
556
  // query is closer to the current one so we set it as current champion
496
557
  name = tab.name.value
497
558
  bestScore = newScore
498
- }
499
- else if (newScore.queryDiff !== bestScore.queryDiff) {
559
+ } else if (newScore.queryDiff !== bestScore.queryDiff) {
500
560
  // it matches less routes than the current champion so we discard it
501
561
  continue
502
562
  }
@@ -509,8 +569,11 @@ export default createComponent({
509
569
  }
510
570
 
511
571
  if (
512
- name === null
513
- && tabDataList.some(tab => tab.routeData === void 0 && tab.name.value === currentModel.value) === true
572
+ name === null &&
573
+ tabDataList.some(
574
+ tab =>
575
+ tab.routeData === void 0 && tab.name.value === currentModel.value
576
+ ) === true
514
577
  ) {
515
578
  // we shouldn't interfere if non-route tab is active
516
579
  hadActivated = false
@@ -520,14 +583,14 @@ export default createComponent({
520
583
  updateModel({ name, setCurrent: true })
521
584
  }
522
585
 
523
- function onFocusin (e) {
586
+ function onFocusin(e) {
524
587
  removeFocusTimeout()
525
588
 
526
589
  if (
527
- hasFocus.value !== true
528
- && rootRef.value !== null
529
- && e.target
530
- && typeof e.target.closest === 'function'
590
+ hasFocus.value !== true &&
591
+ rootRef.value !== null &&
592
+ e.target &&
593
+ typeof e.target.closest === 'function'
531
594
  ) {
532
595
  const tab = e.target.closest('.q-tab')
533
596
 
@@ -535,25 +598,26 @@ export default createComponent({
535
598
  // (it might be other elements focused, like additional QBtn)
536
599
  if (tab && rootRef.value.contains(tab) === true) {
537
600
  hasFocus.value = true
538
- scrollable.value === true && scrollToTabEl(tab)
601
+ if (scrollable.value === true) scrollToTabEl(tab)
539
602
  }
540
603
  }
541
604
  }
542
605
 
543
- function onFocusout () {
544
- registerFocusTimeout(() => { hasFocus.value = false }, 30)
606
+ function onFocusout() {
607
+ registerFocusTimeout(() => {
608
+ hasFocus.value = false
609
+ }, 30)
545
610
  }
546
611
 
547
- function verifyRouteModel () {
612
+ function verifyRouteModel() {
548
613
  if ($tabs.avoidRouteWatcher === false) {
549
614
  registerScrollToTabTimeout(updateActiveRoute)
550
- }
551
- else {
615
+ } else {
552
616
  removeScrollToTabTimeout()
553
617
  }
554
618
  }
555
619
 
556
- function watchRoute () {
620
+ function watchRoute() {
557
621
  if (unwatchRoute === void 0) {
558
622
  const unwatch = watch(() => proxy.$route.fullPath, verifyRouteModel)
559
623
  unwatchRoute = () => {
@@ -563,7 +627,7 @@ export default createComponent({
563
627
  }
564
628
  }
565
629
 
566
- function registerTab (tabData) {
630
+ function registerTab(tabData) {
567
631
  tabDataList.push(tabData)
568
632
  tabDataListLen.value++
569
633
 
@@ -575,11 +639,12 @@ export default createComponent({
575
639
  registerScrollToTabTimeout(() => {
576
640
  if (scrollable.value === true) {
577
641
  const value = currentModel.value
578
- const newTab = value !== void 0 && value !== null && value !== ''
579
- ? tabDataList.find(tab => tab.name.value === value)
580
- : null
642
+ const newTab =
643
+ value !== void 0 && value !== null && value !== ''
644
+ ? tabDataList.find(tab => tab.name.value === value)
645
+ : null
581
646
 
582
- newTab && scrollToTabEl(newTab.rootRef.value)
647
+ if (newTab) scrollToTabEl(newTab.rootRef.value)
583
648
  }
584
649
  })
585
650
  }
@@ -594,7 +659,7 @@ export default createComponent({
594
659
  }
595
660
  }
596
661
 
597
- function unregisterTab (tabData) {
662
+ function unregisterTab(tabData) {
598
663
  tabDataList.splice(tabDataList.indexOf(tabData), 1)
599
664
  tabDataListLen.value--
600
665
 
@@ -629,8 +694,8 @@ export default createComponent({
629
694
 
630
695
  provide(tabsKey, $tabs)
631
696
 
632
- function cleanup () {
633
- animateTimer !== null && clearTimeout(animateTimer)
697
+ function cleanup() {
698
+ if (animateTimer !== null) clearTimeout(animateTimer)
634
699
  stopAnimScroll()
635
700
  unwatchRoute?.()
636
701
  }
@@ -654,44 +719,57 @@ export default createComponent({
654
719
  recalculateScroll()
655
720
  })
656
721
 
657
- return () => {
658
- return h('div', {
659
- ref: rootRef,
660
- class: classes.value,
661
- role: 'tablist',
662
- onFocusin,
663
- onFocusout
664
- }, [
665
- h(QResizeObserver, { onResize: updateContainer }),
666
-
667
- h('div', {
668
- ref: contentRef,
669
- class: innerClass.value,
670
- onScroll: updateArrows
671
- }, hSlot(slots.default)),
672
-
673
- h(QIcon, {
674
- class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'
675
- + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
676
- name: props.leftIcon || $q.iconSet.tabs[ props.vertical === true ? 'up' : 'left' ],
677
- onMousedownPassive: scrollToStart,
678
- onTouchstartPassive: scrollToStart,
679
- onMouseupPassive: stopAnimScroll,
680
- onMouseleavePassive: stopAnimScroll,
681
- onTouchendPassive: stopAnimScroll
682
- }),
683
-
684
- h(QIcon, {
685
- class: 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon'
686
- + (rightArrow.value === true ? '' : ' q-tabs__arrow--faded'),
687
- name: props.rightIcon || $q.iconSet.tabs[ props.vertical === true ? 'down' : 'right' ],
688
- onMousedownPassive: scrollToEnd,
689
- onTouchstartPassive: scrollToEnd,
690
- onMouseupPassive: stopAnimScroll,
691
- onMouseleavePassive: stopAnimScroll,
692
- onTouchendPassive: stopAnimScroll
693
- })
694
- ])
695
- }
722
+ return () =>
723
+ h(
724
+ 'div',
725
+ {
726
+ ref: rootRef,
727
+ class: classes.value,
728
+ role: 'tablist',
729
+ onFocusin,
730
+ onFocusout
731
+ },
732
+ [
733
+ h(QResizeObserver, { onResize: updateContainer }),
734
+
735
+ h(
736
+ 'div',
737
+ {
738
+ ref: contentRef,
739
+ class: innerClass.value,
740
+ onScroll: updateArrows
741
+ },
742
+ hSlot(slots.default)
743
+ ),
744
+
745
+ h(QIcon, {
746
+ class:
747
+ 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon' +
748
+ (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
749
+ name:
750
+ props.leftIcon ||
751
+ $q.iconSet.tabs[props.vertical === true ? 'up' : 'left'],
752
+ onMousedownPassive: scrollToStart,
753
+ onTouchstartPassive: scrollToStart,
754
+ onMouseupPassive: stopAnimScroll,
755
+ onMouseleavePassive: stopAnimScroll,
756
+ onTouchendPassive: stopAnimScroll
757
+ }),
758
+
759
+ h(QIcon, {
760
+ class:
761
+ 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon' +
762
+ (rightArrow.value === true ? '' : ' q-tabs__arrow--faded'),
763
+ name:
764
+ props.rightIcon ||
765
+ $q.iconSet.tabs[props.vertical === true ? 'down' : 'right'],
766
+ onMousedownPassive: scrollToEnd,
767
+ onTouchstartPassive: scrollToEnd,
768
+ onMouseupPassive: stopAnimScroll,
769
+ onMouseleavePassive: stopAnimScroll,
770
+ onTouchendPassive: stopAnimScroll
771
+ })
772
+ ]
773
+ )
696
774
  }
697
775
  })