quasar 2.19.3 → 2.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/dist/api/Lang.json +1 -1
  2. package/dist/api/QCarouselSlide.json +1 -1
  3. package/dist/api/QChatMessage.json +1 -1
  4. package/dist/api/QImg.json +1 -1
  5. package/dist/api/QParallax.json +1 -1
  6. package/dist/api/QRange.json +1 -1
  7. package/dist/api/QSlider.json +1 -1
  8. package/dist/api/QTimelineEntry.json +1 -1
  9. package/dist/api/QTree.json +1 -1
  10. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  11. package/dist/icon-set/eva-icons.umd.prod.js +2 -2
  12. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +5 -5
  13. package/dist/icon-set/fontawesome-v5.umd.prod.js +5 -5
  14. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +5 -5
  15. package/dist/icon-set/fontawesome-v6.umd.prod.js +5 -5
  16. package/dist/icon-set/fontawesome-v7-pro.umd.prod.js +1 -1
  17. package/dist/icon-set/fontawesome-v7.umd.prod.js +1 -1
  18. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  22. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  23. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  25. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  26. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  27. package/dist/icon-set/mdi-v3.umd.prod.js +5 -5
  28. package/dist/icon-set/mdi-v4.umd.prod.js +5 -5
  29. package/dist/icon-set/mdi-v5.umd.prod.js +5 -5
  30. package/dist/icon-set/mdi-v6.umd.prod.js +5 -5
  31. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
  34. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +5 -5
  35. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +5 -5
  36. package/dist/icon-set/svg-fontawesome-v7.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +5 -5
  39. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +5 -5
  40. package/dist/icon-set/svg-ionicons-v7.umd.prod.js +5 -5
  41. package/dist/icon-set/svg-ionicons-v8.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  44. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  45. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  46. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  47. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  48. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  49. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  50. package/dist/icon-set/svg-mdi-v6.umd.prod.js +5 -5
  51. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  52. package/dist/icon-set/svg-themify.umd.prod.js +2 -2
  53. package/dist/icon-set/themify.umd.prod.js +2 -2
  54. package/dist/lang/ar-TN.umd.prod.js +2 -2
  55. package/dist/lang/ar.umd.prod.js +2 -2
  56. package/dist/lang/az-Latn.umd.prod.js +2 -2
  57. package/dist/lang/bg.umd.prod.js +2 -2
  58. package/dist/lang/bn.umd.prod.js +2 -2
  59. package/dist/lang/bs-BA.umd.prod.js +2 -2
  60. package/dist/lang/ca.umd.prod.js +2 -2
  61. package/dist/lang/cs.umd.prod.js +2 -2
  62. package/dist/lang/da.umd.prod.js +2 -2
  63. package/dist/lang/de-CH.umd.prod.js +2 -2
  64. package/dist/lang/de-DE.umd.prod.js +2 -2
  65. package/dist/lang/de.umd.prod.js +2 -2
  66. package/dist/lang/el.umd.prod.js +2 -2
  67. package/dist/lang/en-GB.umd.prod.js +2 -2
  68. package/dist/lang/en-US.umd.prod.js +2 -2
  69. package/dist/lang/eo.umd.prod.js +2 -2
  70. package/dist/lang/es.umd.prod.js +2 -2
  71. package/dist/lang/et.umd.prod.js +2 -2
  72. package/dist/lang/eu.umd.prod.js +2 -2
  73. package/dist/lang/fa-IR.umd.prod.js +2 -2
  74. package/dist/lang/fa.umd.prod.js +2 -2
  75. package/dist/lang/fi.umd.prod.js +2 -2
  76. package/dist/lang/fr.umd.prod.js +2 -2
  77. package/dist/lang/gn.umd.prod.js +2 -2
  78. package/dist/lang/he.umd.prod.js +2 -2
  79. package/dist/lang/hi.umd.prod.js +2 -2
  80. package/dist/lang/hr.umd.prod.js +2 -2
  81. package/dist/lang/hu.umd.prod.js +2 -2
  82. package/dist/lang/id.umd.prod.js +2 -2
  83. package/dist/lang/is.umd.prod.js +2 -2
  84. package/dist/lang/it.umd.prod.js +2 -2
  85. package/dist/lang/ja.umd.prod.js +2 -2
  86. package/dist/lang/kk.umd.prod.js +2 -2
  87. package/dist/lang/km.umd.prod.js +2 -2
  88. package/dist/lang/ko-KR.umd.prod.js +1 -1
  89. package/dist/lang/kur-CKB.umd.prod.js +2 -2
  90. package/dist/lang/lt.umd.prod.js +2 -2
  91. package/dist/lang/lu.umd.prod.js +2 -2
  92. package/dist/lang/lv.umd.prod.js +2 -2
  93. package/dist/lang/mk.umd.prod.js +2 -2
  94. package/dist/lang/ml.umd.prod.js +2 -2
  95. package/dist/lang/mm.umd.prod.js +2 -2
  96. package/dist/lang/ms-MY.umd.prod.js +2 -2
  97. package/dist/lang/ms.umd.prod.js +2 -2
  98. package/dist/lang/my.umd.prod.js +2 -2
  99. package/dist/lang/nb-NO.umd.prod.js +2 -2
  100. package/dist/lang/nl.umd.prod.js +2 -2
  101. package/dist/lang/pl.umd.prod.js +2 -2
  102. package/dist/lang/pt-BR.umd.prod.js +2 -2
  103. package/dist/lang/pt.umd.prod.js +2 -2
  104. package/dist/lang/ro.umd.prod.js +2 -2
  105. package/dist/lang/ru.umd.prod.js +2 -2
  106. package/dist/lang/sk.umd.prod.js +2 -2
  107. package/dist/lang/sl.umd.prod.js +2 -2
  108. package/dist/lang/sm.umd.prod.js +2 -2
  109. package/dist/lang/sq.umd.prod.js +2 -2
  110. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  111. package/dist/lang/sr.umd.prod.js +2 -2
  112. package/dist/lang/sv.umd.prod.js +2 -2
  113. package/dist/lang/ta.umd.prod.js +2 -2
  114. package/dist/lang/th.umd.prod.js +2 -2
  115. package/dist/lang/tl.umd.prod.js +2 -2
  116. package/dist/lang/tr.umd.prod.js +2 -2
  117. package/dist/lang/ug.umd.prod.js +2 -2
  118. package/dist/lang/uk.umd.prod.js +2 -2
  119. package/dist/lang/ur-PK.umd.prod.js +2 -2
  120. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  121. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  122. package/dist/lang/vi.umd.prod.js +2 -2
  123. package/dist/lang/zh-CN.umd.prod.js +2 -2
  124. package/dist/lang/zh-TW.umd.prod.js +2 -2
  125. package/dist/quasar.client.js +2621 -2604
  126. package/dist/quasar.sass +1 -1
  127. package/dist/quasar.server.prod.cjs +11 -11
  128. package/dist/quasar.server.prod.js +25 -25
  129. package/dist/quasar.umd.js +2616 -2599
  130. package/dist/quasar.umd.prod.js +23 -23
  131. package/dist/types/api/dialog.d.ts +1 -1
  132. package/dist/types/api/qnotify.d.ts +1 -1
  133. package/dist/types/api/qpopupproxy.d.ts +1 -1
  134. package/dist/types/feature-flag.d.ts +2 -2
  135. package/dist/types/globals.d.ts +2 -2
  136. package/dist/types/icon-set.d.ts +16 -16
  137. package/dist/types/shim-icon-set.d.ts +1 -2
  138. package/dist/types/shim-lang.d.ts +1 -2
  139. package/dist/types/ts-helpers.d.ts +3 -3
  140. package/dist/types/tsconfig.json +1 -1
  141. package/dist/types/utils/scroll.d.ts +1 -1
  142. package/dist/types/utils.d.ts +2 -2
  143. package/dist/web-types/web-types.json +1 -1
  144. package/icon-set/bootstrap-icons.js +1 -1
  145. package/icon-set/eva-icons.js +22 -22
  146. package/icon-set/ionicons-v4.js +16 -16
  147. package/icon-set/svg-bootstrap-icons.js +1 -1
  148. package/icon-set/svg-eva-icons.js +22 -22
  149. package/icon-set/svg-fontawesome-v5.js +1 -1
  150. package/icon-set/svg-ionicons-v4.js +16 -16
  151. package/icon-set/svg-themify.js +7 -7
  152. package/icon-set/themify.js +7 -7
  153. package/lang/ar-TN.js +1 -1
  154. package/lang/ar.js +1 -1
  155. package/lang/az-Latn.js +1 -1
  156. package/lang/bg.js +1 -1
  157. package/lang/bn.js +1 -1
  158. package/lang/bs-BA.js +1 -1
  159. package/lang/ca.js +1 -1
  160. package/lang/cs.js +11 -6
  161. package/lang/da.js +1 -1
  162. package/lang/de-CH.js +1 -1
  163. package/lang/de-DE.js +1 -1
  164. package/lang/de.js +1 -1
  165. package/lang/el.js +1 -1
  166. package/lang/en-GB.js +1 -1
  167. package/lang/en-US.js +1 -1
  168. package/lang/eo.js +1 -1
  169. package/lang/es.js +1 -1
  170. package/lang/et.js +1 -1
  171. package/lang/eu.js +1 -1
  172. package/lang/fa-IR.js +1 -1
  173. package/lang/fa.js +1 -1
  174. package/lang/fi.js +1 -1
  175. package/lang/fr.js +1 -1
  176. package/lang/gn.js +1 -1
  177. package/lang/he.js +1 -1
  178. package/lang/hi.js +1 -1
  179. package/lang/hr.js +1 -1
  180. package/lang/hu.js +1 -1
  181. package/lang/id.js +1 -1
  182. package/lang/is.js +1 -1
  183. package/lang/it.js +1 -1
  184. package/lang/ja.js +1 -1
  185. package/lang/kk.js +1 -1
  186. package/lang/km.js +1 -1
  187. package/lang/kur-CKB.js +1 -1
  188. package/lang/lt.js +2 -2
  189. package/lang/lu.js +1 -1
  190. package/lang/lv.js +1 -1
  191. package/lang/mk.js +1 -1
  192. package/lang/ml.js +1 -1
  193. package/lang/mm.js +1 -1
  194. package/lang/ms-MY.js +1 -1
  195. package/lang/ms.js +1 -1
  196. package/lang/my.js +1 -1
  197. package/lang/nb-NO.js +1 -1
  198. package/lang/nl.js +1 -1
  199. package/lang/pl.js +1 -1
  200. package/lang/pt-BR.js +1 -1
  201. package/lang/pt.js +1 -1
  202. package/lang/ro.js +1 -1
  203. package/lang/ru.js +1 -1
  204. package/lang/sk.js +1 -1
  205. package/lang/sl.js +1 -1
  206. package/lang/sm.js +1 -1
  207. package/lang/sq.js +1 -1
  208. package/lang/sr-CYR.js +1 -1
  209. package/lang/sr.js +1 -1
  210. package/lang/sv.js +1 -1
  211. package/lang/ta.js +1 -1
  212. package/lang/th.js +1 -1
  213. package/lang/tl.js +1 -1
  214. package/lang/tr.js +1 -1
  215. package/lang/ug.js +1 -1
  216. package/lang/uk.js +1 -1
  217. package/lang/ur-PK.js +1 -1
  218. package/lang/uz-Cyrl.js +1 -1
  219. package/lang/uz-Latn.js +1 -1
  220. package/lang/vi.js +1 -1
  221. package/lang/zh-CN.js +1 -1
  222. package/lang/zh-TW.js +1 -1
  223. package/package.json +13 -17
  224. package/src/components/ajax-bar/QAjaxBar.js +22 -25
  225. package/src/components/avatar/QAvatar.js +3 -3
  226. package/src/components/avatar/QAvatar.test.js +2 -2
  227. package/src/components/badge/QBadge.js +9 -10
  228. package/src/components/badge/QBadge.test.js +2 -2
  229. package/src/components/banner/QBanner.js +6 -6
  230. package/src/components/banner/QBanner.test.js +2 -2
  231. package/src/components/bar/QBar.js +3 -3
  232. package/src/components/bar/QBar.test.js +2 -2
  233. package/src/components/breadcrumbs/QBreadcrumbs.js +5 -4
  234. package/src/components/breadcrumbs/QBreadcrumbs.test.js +3 -3
  235. package/src/components/breadcrumbs/QBreadcrumbsEl.js +4 -4
  236. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +2 -2
  237. package/src/components/btn/QBtn.js +39 -44
  238. package/src/components/btn/QBtn.test.js +2 -2
  239. package/src/components/btn/use-btn.js +34 -47
  240. package/src/components/btn/use-btn.test.js +5 -5
  241. package/src/components/btn-dropdown/QBtnDropdown.js +15 -16
  242. package/src/components/btn-group/QBtnGroup.js +3 -3
  243. package/src/components/btn-toggle/QBtnToggle.js +5 -9
  244. package/src/components/card/QCard.js +5 -5
  245. package/src/components/card/QCardActions.js +2 -2
  246. package/src/components/card/QCardSection.js +2 -2
  247. package/src/components/carousel/QCarousel.js +32 -38
  248. package/src/components/carousel/QCarouselControl.js +1 -1
  249. package/src/components/carousel/QCarouselSlide.js +1 -1
  250. package/src/components/carousel/QCarouselSlide.json +1 -1
  251. package/src/components/chat/QChatMessage.js +13 -14
  252. package/src/components/chat/QChatMessage.json +1 -1
  253. package/src/components/checkbox/QCheckbox.js +5 -5
  254. package/src/components/checkbox/use-checkbox.js +38 -50
  255. package/src/components/chip/QChip.js +26 -34
  256. package/src/components/chip/QChip.test.js +2 -2
  257. package/src/components/circular-progress/QCircularProgress.js +8 -11
  258. package/src/components/circular-progress/circular-progress.test.js +1 -1
  259. package/src/components/color/QColor.js +75 -98
  260. package/src/components/date/QDate.js +128 -140
  261. package/src/components/date/use-datetime.js +3 -6
  262. package/src/components/dialog/QDialog.js +44 -51
  263. package/src/components/dialog/QDialog.test.js +7 -7
  264. package/src/components/drawer/QDrawer.js +110 -152
  265. package/src/components/editor/QEditor.js +44 -37
  266. package/src/components/editor/editor-caret.js +27 -31
  267. package/src/components/editor/editor-utils.js +9 -5
  268. package/src/components/expansion-item/QExpansionItem.js +36 -48
  269. package/src/components/fab/QFab.js +11 -11
  270. package/src/components/fab/QFabAction.js +2 -4
  271. package/src/components/fab/use-fab.js +6 -7
  272. package/src/components/field/QField.js +2 -2
  273. package/src/components/file/QFile.js +26 -33
  274. package/src/components/footer/QFooter.js +40 -53
  275. package/src/components/form/QForm.js +37 -43
  276. package/src/components/form/QFormChildMixin.js +3 -3
  277. package/src/components/header/QHeader.js +35 -47
  278. package/src/components/icon/QIcon.js +19 -19
  279. package/src/components/img/QImg.js +24 -24
  280. package/src/components/img/QImg.json +3 -3
  281. package/src/components/infinite-scroll/QInfiniteScroll.js +38 -52
  282. package/src/components/inner-loading/QInnerLoading.js +3 -3
  283. package/src/components/input/QInput.js +53 -52
  284. package/src/components/input/use-mask.js +56 -54
  285. package/src/components/intersection/QIntersection.js +6 -8
  286. package/src/components/item/QItem.js +20 -30
  287. package/src/components/item/QItemLabel.js +5 -7
  288. package/src/components/item/QItemSection.js +6 -6
  289. package/src/components/item/QList.js +6 -6
  290. package/src/components/item/QList.test.js +2 -2
  291. package/src/components/knob/QKnob.js +39 -44
  292. package/src/components/layout/QLayout.js +30 -34
  293. package/src/components/linear-progress/QLinearProgress.js +14 -23
  294. package/src/components/markup-table/QMarkupTable.js +7 -9
  295. package/src/components/menu/QMenu.js +36 -37
  296. package/src/components/no-ssr/QNoSsr.js +1 -1
  297. package/src/components/option-group/QOptionGroup.js +5 -5
  298. package/src/components/page/QPage.js +16 -18
  299. package/src/components/page/QPageContainer.js +9 -9
  300. package/src/components/page-scroller/QPageScroller.js +11 -13
  301. package/src/components/page-sticky/use-page-sticky.js +18 -18
  302. package/src/components/pagination/QPagination.js +24 -26
  303. package/src/components/parallax/QParallax.js +15 -9
  304. package/src/components/parallax/QParallax.json +1 -1
  305. package/src/components/popup-edit/QPopupEdit.js +10 -13
  306. package/src/components/popup-proxy/QPopupProxy.js +5 -7
  307. package/src/components/pull-to-refresh/QPullToRefresh.js +15 -17
  308. package/src/components/radio/QRadio.js +24 -29
  309. package/src/components/range/QRange.js +33 -37
  310. package/src/components/rating/QRating.js +59 -61
  311. package/src/components/resize-observer/QResizeObserver.js +55 -62
  312. package/src/components/scroll-area/QScrollArea.js +32 -36
  313. package/src/components/scroll-observer/QScrollObserver.js +3 -3
  314. package/src/components/select/QSelect.js +208 -269
  315. package/src/components/separator/QSeparator.js +7 -10
  316. package/src/components/skeleton/QSkeleton.js +4 -4
  317. package/src/components/slide-item/QSlideItem.js +7 -7
  318. package/src/components/slide-transition/QSlideTransition.js +4 -4
  319. package/src/components/slider/QSlider.js +13 -16
  320. package/src/components/slider/use-slider.js +53 -81
  321. package/src/components/slider/use-slider.json +3 -3
  322. package/src/components/space/QSpace.test.js +1 -1
  323. package/src/components/spinner/QSpinner.test.js +2 -2
  324. package/src/components/spinner/QSpinnerAudio.test.js +2 -2
  325. package/src/components/spinner/QSpinnerBall.test.js +2 -2
  326. package/src/components/spinner/QSpinnerBars.test.js +2 -2
  327. package/src/components/spinner/QSpinnerBox.test.js +2 -2
  328. package/src/components/spinner/QSpinnerClock.test.js +2 -2
  329. package/src/components/spinner/QSpinnerComment.test.js +2 -2
  330. package/src/components/spinner/QSpinnerCube.test.js +2 -2
  331. package/src/components/spinner/QSpinnerDots.test.js +2 -2
  332. package/src/components/spinner/QSpinnerFacebook.test.js +2 -2
  333. package/src/components/spinner/QSpinnerGears.test.js +2 -2
  334. package/src/components/spinner/QSpinnerGrid.test.js +2 -2
  335. package/src/components/spinner/QSpinnerHearts.test.js +2 -2
  336. package/src/components/spinner/QSpinnerHourglass.test.js +2 -2
  337. package/src/components/spinner/QSpinnerInfinity.test.js +2 -2
  338. package/src/components/spinner/QSpinnerIos.test.js +2 -2
  339. package/src/components/spinner/QSpinnerOrbit.test.js +2 -2
  340. package/src/components/spinner/QSpinnerOval.test.js +2 -2
  341. package/src/components/spinner/QSpinnerPie.test.js +2 -2
  342. package/src/components/spinner/QSpinnerPuff.test.js +2 -2
  343. package/src/components/spinner/QSpinnerRadio.test.js +2 -2
  344. package/src/components/spinner/QSpinnerRings.test.js +2 -2
  345. package/src/components/spinner/QSpinnerTail.test.js +2 -2
  346. package/src/components/spinner/use-spinner.test.js +1 -1
  347. package/src/components/splitter/QSplitter.js +19 -21
  348. package/src/components/stepper/QStep.js +12 -14
  349. package/src/components/stepper/QStepper.js +13 -14
  350. package/src/components/stepper/StepHeader.js +34 -35
  351. package/src/components/tab-panels/QTabPanels.js +3 -3
  352. package/src/components/table/QTable.js +82 -100
  353. package/src/components/table/QTd.js +3 -3
  354. package/src/components/table/QTh.js +5 -6
  355. package/src/components/table/QTr.js +3 -3
  356. package/src/components/table/table-column-selection.js +4 -6
  357. package/src/components/table/table-filter.js +2 -2
  358. package/src/components/table/table-pagination.js +14 -20
  359. package/src/components/table/table-row-expand.js +3 -3
  360. package/src/components/table/table-row-selection.js +10 -20
  361. package/src/components/table/table-sort.js +7 -7
  362. package/src/components/tabs/QRouteTab.js +1 -1
  363. package/src/components/tabs/QTab.js +1 -1
  364. package/src/components/tabs/QTabs.js +82 -109
  365. package/src/components/tabs/use-tab.js +36 -38
  366. package/src/components/time/QTime.js +109 -132
  367. package/src/components/timeline/QTimeline.js +7 -4
  368. package/src/components/timeline/QTimelineEntry.js +7 -6
  369. package/src/components/timeline/QTimelineEntry.json +1 -1
  370. package/src/components/toggle/QToggle.js +6 -8
  371. package/src/components/toolbar/QToolbar.js +2 -2
  372. package/src/components/toolbar/QToolbar.test.js +2 -2
  373. package/src/components/toolbar/QToolbarTitle.js +2 -4
  374. package/src/components/toolbar/QToolbarTitle.test.js +2 -2
  375. package/src/components/tooltip/QTooltip.js +27 -28
  376. package/src/components/tree/QTree.js +96 -114
  377. package/src/components/tree/QTree.json +1 -1
  378. package/src/components/uploader/QUploaderAddTrigger.js +2 -2
  379. package/src/components/uploader/uploader-core.js +44 -51
  380. package/src/components/uploader/xhr-uploader-plugin.js +13 -17
  381. package/src/components/video/QVideo.js +1 -1
  382. package/src/components/video/QVideo.test.js +2 -2
  383. package/src/components/virtual-scroll/QVirtualScroll.js +9 -10
  384. package/src/components/virtual-scroll/use-virtual-scroll.js +42 -50
  385. package/src/composables/private.use-align/use-align.js +2 -2
  386. package/src/composables/private.use-align/use-align.test.js +1 -1
  387. package/src/composables/private.use-anchor/use-anchor.js +23 -32
  388. package/src/composables/private.use-dark/use-dark.test.js +1 -1
  389. package/src/composables/private.use-field/use-field.js +79 -99
  390. package/src/composables/private.use-file/use-file-dom-props.js +2 -2
  391. package/src/composables/private.use-file/use-file.js +27 -27
  392. package/src/composables/private.use-fullscreen/use-fullscreen.js +15 -20
  393. package/src/composables/private.use-history/use-history.js +2 -2
  394. package/src/composables/private.use-history/use-history.test.js +1 -1
  395. package/src/composables/private.use-key-composition/use-key-composition.js +11 -12
  396. package/src/composables/private.use-model-toggle/use-model-toggle.js +16 -25
  397. package/src/composables/private.use-panel/use-panel.js +25 -27
  398. package/src/composables/private.use-portal/use-portal.js +11 -9
  399. package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +1 -4
  400. package/src/composables/private.use-ratio/use-ratio.js +6 -5
  401. package/src/composables/private.use-ratio/use-ratio.test.js +1 -1
  402. package/src/composables/private.use-refocus-target/use-refocus-target.js +2 -4
  403. package/src/composables/private.use-router-link/use-router-link.js +44 -55
  404. package/src/composables/private.use-scroll-target/use-scroll-target.js +1 -1
  405. package/src/composables/private.use-size/use-size.test.js +1 -1
  406. package/src/composables/private.use-transition/use-transition.test.js +1 -1
  407. package/src/composables/private.use-validate/use-validate.js +23 -36
  408. package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +1 -1
  409. package/src/composables/use-form/private.use-form.js +1 -1
  410. package/src/composables/use-form/private.use-form.test.js +3 -3
  411. package/src/composables/use-form/use-form-child.js +7 -7
  412. package/src/composables/use-hydration/use-hydration.js +2 -2
  413. package/src/composables/use-hydration/use-hydration.test.js +1 -1
  414. package/src/composables/use-id/use-id.js +4 -8
  415. package/src/composables/use-id/use-id.test.js +1 -1
  416. package/src/composables/use-interval/use-interval.js +2 -2
  417. package/src/composables/use-interval/use-interval.test.js +1 -1
  418. package/src/composables/use-meta/use-meta.js +3 -3
  419. package/src/composables/use-quasar/use-quasar.test.js +1 -1
  420. package/src/composables/use-render-cache/use-render-cache.js +1 -1
  421. package/src/composables/use-render-cache/use-render-cache.test.js +1 -1
  422. package/src/composables/use-split-attrs/use-split-attrs.js +3 -7
  423. package/src/composables/use-split-attrs/use-split-attrs.test.js +1 -1
  424. package/src/composables/use-tick/use-tick.js +3 -3
  425. package/src/composables/use-tick/use-tick.test.js +2 -2
  426. package/src/composables/use-timeout/use-timeout.js +2 -2
  427. package/src/composables/use-timeout/use-timeout.test.js +1 -1
  428. package/src/directives/close-popup/ClosePopup.js +4 -9
  429. package/src/directives/intersection/Intersection.js +5 -8
  430. package/src/directives/morph/Morph.js +12 -18
  431. package/src/directives/ripple/Ripple.js +19 -26
  432. package/src/directives/ripple/Ripple.test.js +2 -2
  433. package/src/directives/scroll/Scroll.js +2 -2
  434. package/src/directives/touch-hold/TouchHold.js +22 -28
  435. package/src/directives/touch-pan/TouchPan.js +68 -84
  436. package/src/directives/touch-repeat/TouchRepeat.js +28 -39
  437. package/src/directives/touch-swipe/TouchSwipe.js +30 -33
  438. package/src/index.ssr.js +2 -0
  439. package/src/index.umd.js +2 -0
  440. package/src/install-quasar.js +9 -9
  441. package/src/plugins/addressbar/AddressbarColor.js +9 -9
  442. package/src/plugins/addressbar/AddressbarColor.test.js +2 -2
  443. package/src/plugins/app-fullscreen/AppFullscreen.js +11 -10
  444. package/src/plugins/app-fullscreen/AppFullscreen.test.js +2 -2
  445. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +2 -2
  446. package/src/plugins/app-visibility/AppVisibility.js +5 -5
  447. package/src/plugins/app-visibility/AppVisibility.test.js +2 -2
  448. package/src/plugins/bottom-sheet/BottomSheet.js +2 -2
  449. package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +4 -4
  450. package/src/plugins/cookies/Cookies.js +50 -62
  451. package/src/plugins/dark/Dark.js +3 -5
  452. package/src/plugins/dark/Dark.test.js +1 -1
  453. package/src/plugins/dialog/Dialog.js +2 -2
  454. package/src/plugins/dialog/component/DialogPluginComponent.js +17 -20
  455. package/src/plugins/icon-set/IconSet.js +2 -4
  456. package/src/plugins/icon-set/IconSet.test.js +1 -1
  457. package/src/plugins/lang/Lang.js +7 -10
  458. package/src/plugins/lang/Lang.json +2 -2
  459. package/src/plugins/lang/Lang.test.js +2 -2
  460. package/src/plugins/loading/Loading.js +10 -12
  461. package/src/plugins/loading-bar/LoadingBar.js +4 -4
  462. package/src/plugins/meta/Meta.js +10 -11
  463. package/src/plugins/notify/Notify.js +67 -72
  464. package/src/plugins/platform/Platform.js +19 -21
  465. package/src/plugins/platform/Platform.test.js +1 -1
  466. package/src/plugins/private.body/Body.js +23 -29
  467. package/src/plugins/private.body/Body.test.js +1 -1
  468. package/src/plugins/private.history/History.js +17 -25
  469. package/src/plugins/private.history/History.test.js +1 -1
  470. package/src/plugins/screen/Screen.js +16 -16
  471. package/src/plugins/screen/Screen.test.js +1 -1
  472. package/src/plugins/storage/LocalStorage.js +3 -4
  473. package/src/plugins/storage/LocalStorage.test.js +2 -2
  474. package/src/plugins/storage/SessionStorage.js +3 -4
  475. package/src/plugins/storage/SessionStorage.test.js +2 -2
  476. package/src/plugins/storage/engine/web-storage.js +30 -23
  477. package/src/plugins/storage/engine/web-storage.test.js +1 -1
  478. package/src/utils/EventBus/EventBus.js +3 -4
  479. package/src/utils/EventBus/EventBus.test.js +1 -1
  480. package/src/utils/clone/clone.test.js +4 -8
  481. package/src/utils/colors/colors.js +38 -29
  482. package/src/utils/colors/colors.test.js +2 -2
  483. package/src/utils/copy-to-clipboard/copy-to-clipboard.js +6 -11
  484. package/src/utils/create-meta-mixin/create-meta-mixin.js +2 -2
  485. package/src/utils/create-uploader-component/create-uploader-component.js +12 -7
  486. package/src/utils/css-var/get-css-var.test.js +2 -2
  487. package/src/utils/css-var/set-css-var.test.js +2 -2
  488. package/src/utils/date/date.js +229 -172
  489. package/src/utils/date/private.persian.js +11 -11
  490. package/src/utils/debounce/debounce.js +3 -7
  491. package/src/utils/debounce/debounce.test.js +1 -1
  492. package/src/utils/dom/dom.js +2 -4
  493. package/src/utils/dom/dom.test.js +4 -4
  494. package/src/utils/event/event.js +21 -23
  495. package/src/utils/export-file/export-file.js +3 -3
  496. package/src/utils/extend/extend.js +15 -14
  497. package/src/utils/extend/extend.test.js +2 -2
  498. package/src/utils/format/format.js +4 -10
  499. package/src/utils/format/format.test.js +1 -1
  500. package/src/utils/frame-debounce/frame-debounce.js +23 -12
  501. package/src/utils/frame-debounce/frame-debounce.test.js +1 -1
  502. package/src/utils/is/is.js +15 -26
  503. package/src/utils/is/is.test.js +8 -7
  504. package/src/utils/morph/morph.js +57 -48
  505. package/src/utils/open-url/open-url.js +7 -7
  506. package/src/utils/patterns/patterns.js +26 -23
  507. package/src/utils/patterns/patterns.test.js +1 -1
  508. package/src/utils/private.click-outside/click-outside.js +5 -5
  509. package/src/utils/private.config/instance-config.js +2 -0
  510. package/src/utils/private.config/instance-config.test.js +4 -4
  511. package/src/utils/private.config/nodes.js +5 -5
  512. package/src/utils/private.config/nodes.test.js +4 -4
  513. package/src/utils/private.create/create.test.js +1 -1
  514. package/src/utils/private.dialog/create-dialog.js +9 -12
  515. package/src/utils/private.focus/focus-manager.js +5 -1
  516. package/src/utils/private.focus/focus-manager.test.js +4 -4
  517. package/src/utils/private.focus/focusout.js +2 -2
  518. package/src/utils/private.focus/focusout.test.js +1 -1
  519. package/src/utils/private.get-emits-object/get-emits-object.test.js +1 -1
  520. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +2 -2
  521. package/src/utils/private.keyboard/escape-key.js +5 -5
  522. package/src/utils/private.keyboard/escape-key.test.js +1 -1
  523. package/src/utils/private.keyboard/key-composition.js +4 -6
  524. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.js +3 -1
  525. package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.test.js +1 -1
  526. package/src/utils/private.portal/portal.js +5 -5
  527. package/src/utils/private.position-engine/position-engine.js +20 -22
  528. package/src/utils/private.render/render.js +5 -7
  529. package/src/utils/private.render/render.test.js +5 -5
  530. package/src/utils/private.rtl/rtl.js +3 -2
  531. package/src/utils/private.rtl/rtl.test.js +1 -1
  532. package/src/utils/private.selection/selection.js +1 -1
  533. package/src/utils/private.selection/selection.test.js +2 -2
  534. package/src/utils/private.sort/sort.test.js +2 -2
  535. package/src/utils/private.touch/touch.js +10 -14
  536. package/src/utils/private.touch/touch.test.js +1 -1
  537. package/src/utils/private.vm/vm.js +2 -2
  538. package/src/utils/private.vm/vm.test.js +4 -4
  539. package/src/utils/run-sequential-promises/run-sequential-promises.js +44 -54
  540. package/src/utils/run-sequential-promises/run-sequential-promises.test.js +183 -0
  541. package/src/utils/scroll/prevent-scroll.js +9 -9
  542. package/src/utils/scroll/scroll.js +11 -12
  543. package/src/utils/throttle/throttle.js +4 -3
  544. package/src/utils/throttle/throttle.test.js +1 -1
  545. package/src/utils/uid/uid.js +51 -77
  546. package/src/utils/uid/uid.test.js +3 -3
  547. package/wrappers/index.cjs +2 -2
  548. package/wrappers/index.js +2 -2
  549. package/dist/vetur/quasar-attributes.json +0 -1
  550. package/dist/vetur/quasar-tags.json +0 -1
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, provide, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance, h, provide, ref } from 'vue'
2
2
 
3
3
  import QBtn from '../btn/QBtn.js'
4
4
  import QIcon from '../icon/QIcon.js'
@@ -6,12 +6,12 @@ import QIcon from '../icon/QIcon.js'
6
6
  import useFab, { useFabProps } from './use-fab.js'
7
7
  import useId from '../../composables/use-id/use-id.js'
8
8
  import useModelToggle, {
9
- useModelToggleProps,
10
- useModelToggleEmits
9
+ useModelToggleEmits,
10
+ useModelToggleProps
11
11
  } from '../../composables/private.use-model-toggle/use-model-toggle.js'
12
12
 
13
13
  import { createComponent } from '../../utils/private.create/create.js'
14
- import { hSlot, hMergeSlot } from '../../utils/private.render/render.js'
14
+ import { hMergeSlot, hSlot } from '../../utils/private.render/render.js'
15
15
  import { fabKey } from '../../utils/private.symbols/symbols.js'
16
16
 
17
17
  const directions = ['up', 'right', 'down', 'left']
@@ -60,7 +60,7 @@ export default createComponent({
60
60
  } = getCurrentInstance()
61
61
  const { formClass, labelProps } = useFab(props, showing)
62
62
 
63
- const hideOnRouteChange = computed(() => props.persistent !== true)
63
+ const hideOnRouteChange = computed(() => !props.persistent)
64
64
 
65
65
  const { hide, toggle } = useModelToggle({
66
66
  showing,
@@ -73,14 +73,14 @@ export default createComponent({
73
73
  () =>
74
74
  'q-fab z-fab row inline justify-center' +
75
75
  ` q-fab--align-${props.verticalActionsAlign} ${formClass.value}` +
76
- (showing.value === true ? ' q-fab--opened' : ' q-fab--closed')
76
+ (showing.value ? ' q-fab--opened' : ' q-fab--closed')
77
77
  )
78
78
 
79
79
  const actionClass = computed(
80
80
  () =>
81
81
  'q-fab__actions flex no-wrap inline' +
82
82
  ` q-fab__actions--${props.direction}` +
83
- ` q-fab__actions--${showing.value === true ? 'opened' : 'closed'}`
83
+ ` q-fab__actions--${showing.value ? 'opened' : 'closed'}`
84
84
  )
85
85
 
86
86
  const actionAttrs = computed(() => {
@@ -89,7 +89,7 @@ export default createComponent({
89
89
  role: 'menu'
90
90
  }
91
91
 
92
- if (showing.value !== true) {
92
+ if (!showing.value) {
93
93
  attrs['aria-hidden'] = 'true'
94
94
  }
95
95
 
@@ -99,7 +99,7 @@ export default createComponent({
99
99
  const iconHolderClass = computed(
100
100
  () =>
101
101
  'q-fab__icon-holder ' +
102
- ` q-fab__icon-holder--${showing.value === true ? 'opened' : 'closed'}`
102
+ ` q-fab__icon-holder--${showing.value ? 'opened' : 'closed'}`
103
103
  )
104
104
 
105
105
  function getIcon(kebab, camel) {
@@ -117,7 +117,7 @@ export default createComponent({
117
117
  function getTriggerContent() {
118
118
  const child = []
119
119
 
120
- if (props.hideIcon !== true) {
120
+ if (!props.hideIcon) {
121
121
  child.push(
122
122
  h('div', { class: iconHolderClass.value }, [
123
123
  getIcon('icon', 'icon'),
@@ -173,7 +173,7 @@ export default createComponent({
173
173
  label: void 0,
174
174
  noCaps: true,
175
175
  fab: true,
176
- 'aria-expanded': showing.value === true ? 'true' : 'false',
176
+ 'aria-expanded': showing.value ? 'true' : 'false',
177
177
  'aria-haspopup': 'true',
178
178
  'aria-controls': targetUid.value,
179
179
  onClick: toggle
@@ -1,4 +1,4 @@
1
- import { h, computed, inject, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance, h, inject } from 'vue'
2
2
 
3
3
  import QBtn from '../btn/QBtn.js'
4
4
  import QIcon from '../icon/QIcon.js'
@@ -53,9 +53,7 @@ export default createComponent({
53
53
  return formClass.value + (align !== void 0 ? ` ${align}` : '')
54
54
  })
55
55
 
56
- const isDisabled = computed(
57
- () => props.disable === true || $fab.showing.value !== true
58
- )
56
+ const isDisabled = computed(() => props.disable || !$fab.showing.value)
59
57
 
60
58
  function click(e) {
61
59
  $fab.onChildClick(e)
@@ -44,19 +44,18 @@ export const useFabProps = {
44
44
  export default function useFab(props, showing) {
45
45
  return {
46
46
  formClass: computed(
47
- () => `q-fab--form-${props.square === true ? 'square' : 'rounded'}`
47
+ () => `q-fab--form-${props.square ? 'square' : 'rounded'}`
48
48
  ),
49
49
 
50
50
  stacked: computed(
51
51
  () =>
52
- props.externalLabel === false &&
53
- ['top', 'bottom'].includes(props.labelPosition)
52
+ !props.externalLabel && ['top', 'bottom'].includes(props.labelPosition)
54
53
  ),
55
54
 
56
55
  labelProps: computed(() => {
57
- if (props.externalLabel === true) {
56
+ if (props.externalLabel) {
58
57
  const hideLabel =
59
- props.hideLabel === null ? showing.value === false : props.hideLabel
58
+ props.hideLabel === null ? !showing.value : props.hideLabel
60
59
 
61
60
  return {
62
61
  action: 'push',
@@ -65,7 +64,7 @@ export default function useFab(props, showing) {
65
64
  props.labelClass,
66
65
  'q-fab__label q-tooltip--style q-fab__label--external' +
67
66
  ` q-fab__label--external-${props.labelPosition}` +
68
- (hideLabel === true ? ' q-fab__label--external-hidden' : '')
67
+ (hideLabel ? ' q-fab__label--external-hidden' : '')
69
68
  ],
70
69
  style: props.labelStyle
71
70
  }
@@ -80,7 +79,7 @@ export default function useFab(props, showing) {
80
79
  class: [
81
80
  props.labelClass,
82
81
  `q-fab__label q-fab__label--internal q-fab__label--internal-${props.labelPosition}` +
83
- (props.hideLabel === true ? ' q-fab__label--internal-hidden' : '')
82
+ (props.hideLabel ? ' q-fab__label--internal-hidden' : '')
84
83
  ],
85
84
  style: props.labelStyle
86
85
  }
@@ -1,7 +1,7 @@
1
1
  import useField, {
2
- useFieldState,
2
+ useFieldEmits,
3
3
  useFieldProps,
4
- useFieldEmits
4
+ useFieldState
5
5
  } from '../../composables/private.use-field/use-field.js'
6
6
 
7
7
  import { createComponent } from '../../utils/private.create/create.js'
@@ -1,20 +1,20 @@
1
- import { h, ref, computed, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance, h, ref } from 'vue'
2
2
 
3
3
  import QChip from '../chip/QChip.js'
4
4
 
5
5
  import useField, {
6
- useFieldState,
7
- useNonInputFieldProps,
6
+ fieldValueIsFilled,
8
7
  useFieldEmits,
9
- fieldValueIsFilled
8
+ useFieldState,
9
+ useNonInputFieldProps
10
10
  } from '../../composables/private.use-field/use-field.js'
11
11
  import {
12
- useFormProps,
13
- useFormInputNameAttr
12
+ useFormInputNameAttr,
13
+ useFormProps
14
14
  } from '../../composables/use-form/private.use-form.js'
15
15
  import useFile, {
16
- useFileProps,
17
- useFileEmits
16
+ useFileEmits,
17
+ useFileProps
18
18
  } from '../../composables/private.use-file/use-file.js'
19
19
  import useFileFormDomProps from '../../composables/private.use-file/use-file-dom-props.js'
20
20
 
@@ -23,6 +23,11 @@ import { humanStorageSize } from '../../utils/format/format.js'
23
23
  import { prevent } from '../../utils/event/event.js'
24
24
  import { injectProp } from '../../utils/private.inject-obj-prop/inject-obj-prop.js'
25
25
 
26
+ function onKeydown(e) {
27
+ // prevent form submit if ENTER is pressed
28
+ if (e.keyCode === 13) prevent(e)
29
+ }
30
+
26
31
  export default createComponent({
27
32
  name: 'QFile',
28
33
 
@@ -75,7 +80,7 @@ export default createComponent({
75
80
  const innerValue = computed(() =>
76
81
  Object(props.modelValue) === props.modelValue
77
82
  ? 'length' in props.modelValue
78
- ? Array.from(props.modelValue)
83
+ ? [...props.modelValue]
79
84
  : [props.modelValue]
80
85
  : []
81
86
  )
@@ -107,21 +112,17 @@ export default createComponent({
107
112
  name: nameProp.value,
108
113
  ...attrs,
109
114
  id: state.targetUid.value,
110
- disabled: state.editable.value !== true
115
+ disabled: !state.editable.value
111
116
  }))
112
117
 
113
118
  const fieldClass = computed(
114
- () =>
115
- 'q-file q-field--auto-height' +
116
- (dnd.value === true ? ' q-file--dnd' : '')
119
+ () => 'q-file q-field--auto-height' + (dnd.value ? ' q-file--dnd' : '')
117
120
  )
118
121
 
119
- const isAppending = computed(
120
- () => props.multiple === true && props.append === true
121
- )
122
+ const isAppending = computed(() => props.multiple && props.append)
122
123
 
123
124
  function removeAtIndex(index) {
124
- const files = innerValue.value.slice()
125
+ const files = [...innerValue.value]
125
126
  files.splice(index, 1)
126
127
  emitValue(files)
127
128
  }
@@ -134,12 +135,7 @@ export default createComponent({
134
135
  }
135
136
 
136
137
  function emitValue(files) {
137
- emit('update:modelValue', props.multiple === true ? files : files[0])
138
- }
139
-
140
- function onKeydown(e) {
141
- // prevent form submit if ENTER is pressed
142
- if (e.keyCode === 13) prevent(e)
138
+ emit('update:modelValue', props.multiple ? files : files[0])
143
139
  }
144
140
 
145
141
  function onKeyup(e) {
@@ -172,16 +168,14 @@ export default createComponent({
172
168
  // protect against input @change being called in a loop
173
169
  // like it happens on Safari, so don't emit same thing:
174
170
  if (
175
- props.multiple === true
171
+ props.multiple
176
172
  ? props.modelValue && files.every(f => innerValue.value.includes(f))
177
173
  : props.modelValue === files[0]
178
174
  ) {
179
175
  return
180
176
  }
181
177
 
182
- emitValue(
183
- isAppending.value === true ? innerValue.value.concat(files) : files
184
- )
178
+ emitValue(isAppending.value ? [...innerValue.value, ...files] : files)
185
179
  }
186
180
 
187
181
  function getFiller() {
@@ -208,7 +202,7 @@ export default createComponent({
208
202
  : slots.selected({ files: innerValue.value, ref: this })
209
203
  }
210
204
 
211
- if (props.useChips === true) {
205
+ if (props.useChips) {
212
206
  return innerValue.value.length === 0
213
207
  ? getFiller()
214
208
  : innerValue.value.map((file, i) =>
@@ -258,9 +252,7 @@ export default createComponent({
258
252
  onChange: addFilesToQueue
259
253
  }
260
254
 
261
- if (props.multiple === true) {
262
- data.multiple = true
263
- }
255
+ if (props.multiple) data.multiple = true
264
256
 
265
257
  return h('input', data)
266
258
  }
@@ -273,7 +265,7 @@ export default createComponent({
273
265
  innerValue,
274
266
 
275
267
  floatingLabel: computed(
276
- () => hasValue.value === true || fieldValueIsFilled(props.displayValue)
268
+ () => hasValue.value || fieldValueIsFilled(props.displayValue)
277
269
  ),
278
270
 
279
271
  computedCounter: computed(() => {
@@ -293,10 +285,11 @@ export default createComponent({
293
285
  tabindex: props.tabindex
294
286
  }
295
287
 
296
- if (state.editable.value === true) {
288
+ if (state.editable.value) {
297
289
  Object.assign(data, { onDragover, onDragleave, onKeydown, onKeyup })
298
290
  }
299
291
 
292
+ // oxlint-disable-next-line unicorn/prefer-spread
300
293
  return h('div', data, [getInput()].concat(getSelection()))
301
294
  }
302
295
  })
@@ -1,11 +1,11 @@
1
1
  import {
2
- h,
3
- ref,
4
2
  computed,
5
- watch,
6
- onBeforeUnmount,
3
+ getCurrentInstance,
4
+ h,
7
5
  inject,
8
- getCurrentInstance
6
+ onBeforeUnmount,
7
+ ref,
8
+ watch
9
9
  } from 'vue'
10
10
 
11
11
  import { isRuntimeSsrPreHydration } from '../../plugins/platform/Platform.js'
@@ -15,10 +15,16 @@ import QResizeObserver from '../resize-observer/QResizeObserver.js'
15
15
  import { createComponent } from '../../utils/private.create/create.js'
16
16
  import { hMergeSlot } from '../../utils/private.render/render.js'
17
17
  import {
18
- layoutKey,
19
- emptyRenderFn
18
+ emptyRenderFn,
19
+ layoutKey
20
20
  } from '../../utils/private.symbols/symbols.js'
21
21
 
22
+ function updateLocal(prop, val) {
23
+ if (prop.value !== val) {
24
+ prop.value = val
25
+ }
26
+ }
27
+
22
28
  export default createComponent({
23
29
  name: 'QFooter',
24
30
 
@@ -50,35 +56,30 @@ export default createComponent({
50
56
  return emptyRenderFn
51
57
  }
52
58
 
53
- const size = ref(parseInt(props.heightHint, 10))
59
+ const size = ref(Number.parseInt(props.heightHint, 10))
54
60
  const revealed = ref(true)
55
61
  const windowHeight = ref(
56
- isRuntimeSsrPreHydration.value === true ||
57
- $layout.isContainer.value === true
62
+ isRuntimeSsrPreHydration.value || $layout.isContainer.value
58
63
  ? 0
59
64
  : window.innerHeight
60
65
  )
61
66
 
62
67
  const fixed = computed(
63
68
  () =>
64
- props.reveal === true ||
65
- $layout.view.value.indexOf('F') !== -1 ||
66
- ($q.platform.is.ios && $layout.isContainer.value === true)
69
+ props.reveal ||
70
+ $layout.view.value.includes('F') ||
71
+ ($q.platform.is.ios && $layout.isContainer.value)
67
72
  )
68
73
 
69
74
  const containerHeight = computed(() =>
70
- $layout.isContainer.value === true
75
+ $layout.isContainer.value
71
76
  ? $layout.containerHeight.value
72
77
  : windowHeight.value
73
78
  )
74
79
 
75
80
  const offset = computed(() => {
76
- if (props.modelValue !== true) {
77
- return 0
78
- }
79
- if (fixed.value === true) {
80
- return revealed.value === true ? size.value : 0
81
- }
81
+ if (!props.modelValue) return 0
82
+ if (fixed.value) return revealed.value ? size.value : 0
82
83
 
83
84
  const localOffset =
84
85
  $layout.scroll.value.position +
@@ -86,43 +87,38 @@ export default createComponent({
86
87
  size.value -
87
88
  $layout.height.value
88
89
 
89
- return localOffset > 0 ? localOffset : 0
90
+ return Math.max(localOffset, 0)
90
91
  })
91
92
 
92
93
  const hidden = computed(
93
- () =>
94
- props.modelValue !== true ||
95
- (fixed.value === true && revealed.value !== true)
94
+ () => !props.modelValue || (fixed.value && !revealed.value)
96
95
  )
97
96
 
98
97
  const revealOnFocus = computed(
99
- () =>
100
- props.modelValue === true &&
101
- hidden.value === true &&
102
- props.reveal === true
98
+ () => props.modelValue && hidden.value && props.reveal
103
99
  )
104
100
 
105
101
  const classes = computed(
106
102
  () =>
107
103
  'q-footer q-layout__section--marginal ' +
108
- (fixed.value === true ? 'fixed' : 'absolute') +
104
+ (fixed.value ? 'fixed' : 'absolute') +
109
105
  '-bottom' +
110
- (props.bordered === true ? ' q-footer--bordered' : '') +
111
- (hidden.value === true ? ' q-footer--hidden' : '') +
112
- (props.modelValue !== true
113
- ? ' q-layout--prevent-focus' + (fixed.value !== true ? ' hidden' : '')
114
- : '')
106
+ (props.bordered ? ' q-footer--bordered' : '') +
107
+ (hidden.value ? ' q-footer--hidden' : '') +
108
+ (props.modelValue
109
+ ? ''
110
+ : ' q-layout--prevent-focus' + (fixed.value ? '' : ' hidden'))
115
111
  )
116
112
 
117
113
  const style = computed(() => {
118
114
  const view = $layout.rows.value.bottom,
119
115
  css = {}
120
116
 
121
- if (view[0] === 'l' && $layout.left.space === true) {
122
- css[$q.lang.rtl === true ? 'right' : 'left'] = `${$layout.left.size}px`
117
+ if (view[0] === 'l' && $layout.left.space) {
118
+ css[$q.lang.rtl ? 'right' : 'left'] = `${$layout.left.size}px`
123
119
  }
124
- if (view[2] === 'r' && $layout.right.space === true) {
125
- css[$q.lang.rtl === true ? 'left' : 'right'] = `${$layout.right.size}px`
120
+ if (view[2] === 'r' && $layout.right.space) {
121
+ css[$q.lang.rtl ? 'left' : 'right'] = `${$layout.right.size}px`
126
122
  }
127
123
 
128
124
  return css
@@ -132,19 +128,13 @@ export default createComponent({
132
128
  $layout.update('footer', prop, val)
133
129
  }
134
130
 
135
- function updateLocal(prop, val) {
136
- if (prop.value !== val) {
137
- prop.value = val
138
- }
139
- }
140
-
141
131
  function onResize({ height }) {
142
132
  updateLocal(size, height)
143
133
  updateLayout('size', height)
144
134
  }
145
135
 
146
136
  function updateRevealed() {
147
- if (props.reveal !== true) return
137
+ if (!props.reveal) return
148
138
 
149
139
  const { direction, position, inflectionPoint } = $layout.scroll.value
150
140
 
@@ -158,10 +148,7 @@ export default createComponent({
158
148
  }
159
149
 
160
150
  function onFocusin(evt) {
161
- if (revealOnFocus.value === true) {
162
- updateLocal(revealed, true)
163
- }
164
-
151
+ if (revealOnFocus.value) updateLocal(revealed, true)
165
152
  emit('focusin', evt)
166
153
  }
167
154
 
@@ -181,7 +168,7 @@ export default createComponent({
181
168
  watch(
182
169
  () => props.reveal,
183
170
  val => {
184
- if (val === false) updateLocal(revealed, props.modelValue)
171
+ if (!val) updateLocal(revealed, props.modelValue)
185
172
  }
186
173
  )
187
174
 
@@ -195,14 +182,14 @@ export default createComponent({
195
182
  watch(
196
183
  () => $q.screen.height,
197
184
  val => {
198
- if ($layout.isContainer.value !== true) updateLocal(windowHeight, val)
185
+ if (!$layout.isContainer.value) updateLocal(windowHeight, val)
199
186
  }
200
187
  )
201
188
 
202
189
  const instance = {}
203
190
 
204
191
  $layout.instances.footer = instance
205
- if (props.modelValue === true) updateLayout('size', size.value)
192
+ if (props.modelValue) updateLayout('size', size.value)
206
193
  updateLayout('space', props.modelValue)
207
194
  updateLayout('offset', offset.value)
208
195
 
@@ -223,7 +210,7 @@ export default createComponent({
223
210
  })
224
211
  ])
225
212
 
226
- if (props.elevated === true) {
213
+ if (props.elevated) {
227
214
  child.push(
228
215
  h('div', {
229
216
  class:
@@ -1,12 +1,12 @@
1
1
  import {
2
+ getCurrentInstance,
2
3
  h,
3
- ref,
4
+ nextTick,
4
5
  onActivated,
5
6
  onDeactivated,
6
7
  onMounted,
7
- getCurrentInstance,
8
- nextTick,
9
- provide
8
+ provide,
9
+ ref
10
10
  } from 'vue'
11
11
 
12
12
  import { createComponent } from '../../utils/private.create/create.js'
@@ -16,6 +16,17 @@ import { hSlot } from '../../utils/private.render/render.js'
16
16
  import { formKey } from '../../utils/private.symbols/symbols.js'
17
17
  import { vmIsDestroyed } from '../../utils/private.vm/vm.js'
18
18
 
19
+ function validateComponent(comp) {
20
+ const valid = comp.validate()
21
+
22
+ return typeof valid.then === 'function'
23
+ ? valid.then(
24
+ isValid => ({ valid: isValid, comp }),
25
+ err => ({ valid: false, comp, err })
26
+ )
27
+ : Promise.resolve({ valid, comp })
28
+ }
29
+
19
30
  export default createComponent({
20
31
  name: 'QForm',
21
32
 
@@ -39,45 +50,29 @@ export default createComponent({
39
50
 
40
51
  function validate(shouldFocus) {
41
52
  const localFocus =
42
- typeof shouldFocus === 'boolean'
43
- ? shouldFocus
44
- : props.noErrorFocus !== true
53
+ typeof shouldFocus === 'boolean' ? shouldFocus : !props.noErrorFocus
45
54
 
46
55
  const index = ++validateIndex
47
56
 
48
57
  const emitEvent = (res, compRef) => {
49
- emit(`validation${res === true ? 'Success' : 'Error'}`, compRef)
50
- }
51
-
52
- const validateComponent = comp => {
53
- const valid = comp.validate()
54
-
55
- return typeof valid.then === 'function'
56
- ? valid.then(
57
- isValid => ({ valid: isValid, comp }),
58
- err => ({ valid: false, comp, err })
59
- )
60
- : Promise.resolve({ valid, comp })
58
+ emit(`validation${res ? 'Success' : 'Error'}`, compRef)
61
59
  }
62
60
 
63
- const errorsPromise =
64
- props.greedy === true
65
- ? Promise.all(registeredComponents.map(validateComponent)).then(res =>
66
- res.filter(r => r.valid !== true)
61
+ const errorsPromise = props.greedy
62
+ ? Promise.all(registeredComponents.map(validateComponent)).then(res =>
63
+ res.filter(r => !r.valid)
64
+ )
65
+ : registeredComponents
66
+ .reduce(
67
+ (acc, comp) =>
68
+ acc
69
+ .then(() => validateComponent(comp))
70
+ .then(r => {
71
+ if (!r.valid) throw r
72
+ }),
73
+ Promise.resolve()
67
74
  )
68
- : registeredComponents
69
- .reduce(
70
- (acc, comp) =>
71
- acc.then(() =>
72
- validateComponent(comp).then(r => {
73
- if (r.valid === false) {
74
- return Promise.reject(r)
75
- }
76
- })
77
- ),
78
- Promise.resolve()
79
- )
80
- .catch(error => [error])
75
+ .catch(err => [err])
81
76
 
82
77
  return errorsPromise.then(errors => {
83
78
  if (errors === void 0 || errors.length === 0) {
@@ -92,12 +87,11 @@ export default createComponent({
92
87
  if (err !== void 0) console.error(err)
93
88
  emitEvent(false, comp)
94
89
 
95
- if (localFocus === true) {
90
+ if (localFocus) {
96
91
  // Try to focus first mounted and active component
97
92
  const activeError = errors.find(
98
93
  ({ comp: compRef }) =>
99
- typeof compRef.focus === 'function' &&
100
- vmIsDestroyed(compRef.$) === false
94
+ typeof compRef.focus === 'function' && !vmIsDestroyed(compRef.$)
101
95
  )
102
96
 
103
97
  if (activeError !== void 0) {
@@ -127,7 +121,7 @@ export default createComponent({
127
121
 
128
122
  validate().then(val => {
129
123
  // if not outdated && validation succeeded
130
- if (index === validateIndex && val === true) {
124
+ if (index === validateIndex && val) {
131
125
  if (props.onSubmit !== void 0) {
132
126
  emit('submit', evt)
133
127
  } else if (
@@ -148,7 +142,7 @@ export default createComponent({
148
142
  nextTick(() => {
149
143
  // allow userland to reset values before
150
144
  resetValidation()
151
- if (props.autofocus === true && props.noResetFocus !== true) {
145
+ if (props.autofocus && !props.noResetFocus) {
152
146
  focus()
153
147
  }
154
148
  })
@@ -195,13 +189,13 @@ export default createComponent({
195
189
  })
196
190
 
197
191
  onActivated(() => {
198
- if (shouldActivate === true && props.autofocus === true) {
192
+ if (shouldActivate && props.autofocus) {
199
193
  focus()
200
194
  }
201
195
  })
202
196
 
203
197
  onMounted(() => {
204
- if (props.autofocus === true) focus()
198
+ if (props.autofocus) focus()
205
199
  })
206
200
 
207
201
  // expose public methods
@@ -12,7 +12,7 @@ export default {
12
12
  disable(val) {
13
13
  const $form = this.$.provides[formKey]
14
14
  if ($form !== void 0) {
15
- if (val === true) {
15
+ if (val) {
16
16
  this.resetValidation()
17
17
  $form.unbindComponent(this)
18
18
  } else {
@@ -29,14 +29,14 @@ export default {
29
29
 
30
30
  mounted() {
31
31
  // register to parent QForm
32
- if (this.disable !== true) {
32
+ if (!this.disable) {
33
33
  this.$.provides[formKey]?.bindComponent(this)
34
34
  }
35
35
  },
36
36
 
37
37
  beforeUnmount() {
38
38
  // un-register from parent QForm
39
- if (this.disable !== true) {
39
+ if (!this.disable) {
40
40
  this.$.provides[formKey]?.unbindComponent(this)
41
41
  }
42
42
  }