quasar 2.18.7 → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +24 -30
  157. package/dist/quasar.prod.css +1 -1
  158. package/dist/quasar.rtl.css +25 -30
  159. package/dist/quasar.rtl.prod.css +1 -1
  160. package/dist/quasar.sass +7 -16
  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 +5 -6
  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 +4 -9
  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
@@ -2,9 +2,20 @@ import { h, ref, computed, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QChip from '../chip/QChip.js'
4
4
 
5
- import useField, { useFieldState, useNonInputFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private.use-field/use-field.js'
6
- import { useFormProps, useFormInputNameAttr } from '../../composables/use-form/private.use-form.js'
7
- import useFile, { useFileProps, useFileEmits } from '../../composables/private.use-file/use-file.js'
5
+ import useField, {
6
+ useFieldState,
7
+ useNonInputFieldProps,
8
+ useFieldEmits,
9
+ fieldValueIsFilled
10
+ } from '../../composables/private.use-field/use-field.js'
11
+ import {
12
+ useFormProps,
13
+ useFormInputNameAttr
14
+ } from '../../composables/use-form/private.use-form.js'
15
+ import useFile, {
16
+ useFileProps,
17
+ useFileEmits
18
+ } from '../../composables/private.use-file/use-file.js'
8
19
  import useFileFormDomProps from '../../composables/private.use-file/use-file-dom-props.js'
9
20
 
10
21
  import { createComponent } from '../../utils/private.create/create.js'
@@ -23,31 +34,26 @@ export default createComponent({
23
34
  ...useFileProps,
24
35
 
25
36
  /* SSR does not know about File & FileList */
26
- modelValue: __QUASAR_SSR_SERVER__
27
- ? {}
28
- : [ File, FileList, Array ],
37
+ modelValue: __QUASAR_SSR_SERVER__ ? {} : [File, FileList, Array],
29
38
 
30
39
  append: Boolean,
31
40
  useChips: Boolean,
32
- displayValue: [ String, Number ],
41
+ displayValue: [String, Number],
33
42
 
34
43
  tabindex: {
35
- type: [ String, Number ],
44
+ type: [String, Number],
36
45
  default: 0
37
46
  },
38
47
 
39
48
  counterLabel: Function,
40
49
 
41
- inputClass: [ Array, String, Object ],
42
- inputStyle: [ Array, String, Object ]
50
+ inputClass: [Array, String, Object],
51
+ inputStyle: [Array, String, Object]
43
52
  },
44
53
 
45
- emits: [
46
- ...useFieldEmits,
47
- ...useFileEmits
48
- ],
54
+ emits: [...useFieldEmits, ...useFileEmits],
49
55
 
50
- setup (props, { slots, emit, attrs }) {
56
+ setup(props, { slots, emit, attrs }) {
51
57
  const { proxy } = getCurrentInstance()
52
58
 
53
59
  const state = useFieldState()
@@ -56,28 +62,28 @@ export default createComponent({
56
62
  const dnd = ref(false)
57
63
  const nameProp = useFormInputNameAttr(props)
58
64
 
59
- const {
60
- pickFiles,
61
- onDragover,
62
- onDragleave,
63
- processFiles,
64
- getDndNode
65
- } = useFile({ editable: state.editable, dnd, getFileInput, addFilesToQueue })
65
+ const { pickFiles, onDragover, onDragleave, processFiles, getDndNode } =
66
+ useFile({
67
+ editable: state.editable,
68
+ dnd,
69
+ getFileInput,
70
+ addFilesToQueue
71
+ })
66
72
 
67
73
  const formDomProps = useFileFormDomProps(props)
68
74
 
69
- const innerValue = computed(() => (
75
+ const innerValue = computed(() =>
70
76
  Object(props.modelValue) === props.modelValue
71
- ? ('length' in props.modelValue ? Array.from(props.modelValue) : [ props.modelValue ])
77
+ ? 'length' in props.modelValue
78
+ ? Array.from(props.modelValue)
79
+ : [props.modelValue]
72
80
  : []
73
- ))
81
+ )
74
82
 
75
83
  const hasValue = computed(() => fieldValueIsFilled(innerValue.value))
76
84
 
77
85
  const selectedString = computed(() =>
78
- innerValue.value
79
- .map(file => file.name)
80
- .join(', ')
86
+ innerValue.value.map(file => file.name).join(', ')
81
87
  )
82
88
 
83
89
  const totalSize = computed(() =>
@@ -104,50 +110,56 @@ export default createComponent({
104
110
  disabled: state.editable.value !== true
105
111
  }))
106
112
 
107
- const fieldClass = computed(() =>
108
- 'q-file q-field--auto-height'
109
- + (dnd.value === true ? ' q-file--dnd' : '')
113
+ const fieldClass = computed(
114
+ () =>
115
+ 'q-file q-field--auto-height' +
116
+ (dnd.value === true ? ' q-file--dnd' : '')
110
117
  )
111
118
 
112
- const isAppending = computed(() =>
113
- props.multiple === true && props.append === true
119
+ const isAppending = computed(
120
+ () => props.multiple === true && props.append === true
114
121
  )
115
122
 
116
- function removeAtIndex (index) {
123
+ function removeAtIndex(index) {
117
124
  const files = innerValue.value.slice()
118
125
  files.splice(index, 1)
119
126
  emitValue(files)
120
127
  }
121
128
 
122
- function removeFile (file) {
129
+ function removeFile(file) {
123
130
  const index = innerValue.value.indexOf(file)
124
131
  if (index !== -1) {
125
132
  removeAtIndex(index)
126
133
  }
127
134
  }
128
135
 
129
- function emitValue (files) {
130
- emit('update:modelValue', props.multiple === true ? files : files[ 0 ])
136
+ function emitValue(files) {
137
+ emit('update:modelValue', props.multiple === true ? files : files[0])
131
138
  }
132
139
 
133
- function onKeydown (e) {
140
+ function onKeydown(e) {
134
141
  // prevent form submit if ENTER is pressed
135
- e.keyCode === 13 && prevent(e)
142
+ if (e.keyCode === 13) prevent(e)
136
143
  }
137
144
 
138
- function onKeyup (e) {
145
+ function onKeyup(e) {
139
146
  // only on ENTER and SPACE to match native input field
140
147
  if (e.keyCode === 13 || e.keyCode === 32) {
141
148
  pickFiles(e)
142
149
  }
143
150
  }
144
151
 
145
- function getFileInput () {
152
+ function getFileInput() {
146
153
  return inputRef.value
147
154
  }
148
155
 
149
- function addFilesToQueue (e, fileList) {
150
- const files = processFiles(e, fileList, innerValue.value, isAppending.value)
156
+ function addFilesToQueue(e, fileList) {
157
+ const files = processFiles(
158
+ e,
159
+ fileList,
160
+ innerValue.value,
161
+ isAppending.value
162
+ )
151
163
  const fileInput = getFileInput()
152
164
 
153
165
  if (fileInput !== void 0 && fileInput !== null) {
@@ -162,32 +174,32 @@ export default createComponent({
162
174
  if (
163
175
  props.multiple === true
164
176
  ? props.modelValue && files.every(f => innerValue.value.includes(f))
165
- : props.modelValue === files[ 0 ]
166
- ) return
177
+ : props.modelValue === files[0]
178
+ ) {
179
+ return
180
+ }
167
181
 
168
182
  emitValue(
169
- isAppending.value === true
170
- ? innerValue.value.concat(files)
171
- : files
183
+ isAppending.value === true ? innerValue.value.concat(files) : files
172
184
  )
173
185
  }
174
186
 
175
- function getFiller () {
187
+ function getFiller() {
176
188
  return [
177
189
  h('input', {
178
- class: [ props.inputClass, 'q-file__filler' ],
190
+ class: [props.inputClass, 'q-file__filler'],
179
191
  style: props.inputStyle
180
192
  })
181
193
  ]
182
194
  }
183
195
 
184
- function getSelection () {
196
+ function getSelection() {
185
197
  if (slots.file !== void 0) {
186
198
  return innerValue.value.length === 0
187
199
  ? getFiller()
188
- : innerValue.value.map(
189
- (file, index) => slots.file({ index, file, ref: this })
190
- )
200
+ : innerValue.value.map((file, index) =>
201
+ slots.file({ index, file, ref: this })
202
+ )
191
203
  }
192
204
 
193
205
  if (slots.selected !== void 0) {
@@ -199,22 +211,32 @@ export default createComponent({
199
211
  if (props.useChips === true) {
200
212
  return innerValue.value.length === 0
201
213
  ? getFiller()
202
- : innerValue.value.map((file, i) => h(QChip, {
203
- key: 'file-' + i,
204
- removable: state.editable.value,
205
- dense: true,
206
- textColor: props.color,
207
- tabindex: props.tabindex,
208
- onRemove: () => { removeAtIndex(i) }
209
- }, () => h('span', {
210
- class: 'ellipsis',
211
- textContent: file.name
212
- })))
214
+ : innerValue.value.map((file, i) =>
215
+ h(
216
+ QChip,
217
+ {
218
+ key: 'file-' + i,
219
+ removable: state.editable.value,
220
+ dense: true,
221
+ textColor: props.color,
222
+ tabindex: props.tabindex,
223
+ onRemove: () => {
224
+ removeAtIndex(i)
225
+ }
226
+ },
227
+ () =>
228
+ h('span', {
229
+ class: 'ellipsis',
230
+ textContent: file.name
231
+ })
232
+ )
233
+ )
213
234
  }
214
235
 
215
- const textContent = props.displayValue !== void 0
216
- ? props.displayValue
217
- : selectedString.value
236
+ const textContent =
237
+ props.displayValue !== void 0
238
+ ? props.displayValue
239
+ : selectedString.value
218
240
 
219
241
  return textContent.length !== 0
220
242
  ? [
@@ -227,7 +249,7 @@ export default createComponent({
227
249
  : getFiller()
228
250
  }
229
251
 
230
- function getInput () {
252
+ function getInput() {
231
253
  const data = {
232
254
  ref: inputRef,
233
255
  ...inputAttrs.value,
@@ -250,9 +272,8 @@ export default createComponent({
250
272
  inputRef,
251
273
  innerValue,
252
274
 
253
- floatingLabel: computed(() =>
254
- hasValue.value === true
255
- || fieldValueIsFilled(props.displayValue)
275
+ floatingLabel: computed(
276
+ () => hasValue.value === true || fieldValueIsFilled(props.displayValue)
256
277
  ),
257
278
 
258
279
  computedCounter: computed(() => {
@@ -261,7 +282,7 @@ export default createComponent({
261
282
  }
262
283
 
263
284
  const max = props.maxFiles
264
- return `${ innerValue.value.length }${ max !== void 0 ? ' / ' + max : '' } (${ totalSize.value })`
285
+ return `${innerValue.value.length}${max !== void 0 ? ' / ' + max : ''} (${totalSize.value})`
265
286
  }),
266
287
 
267
288
  getControlChild: () => getDndNode('file'),
@@ -276,7 +297,7 @@ export default createComponent({
276
297
  Object.assign(data, { onDragover, onDragleave, onKeydown, onKeyup })
277
298
  }
278
299
 
279
- return h('div', data, [ getInput() ].concat(getSelection()))
300
+ return h('div', data, [getInput()].concat(getSelection()))
280
301
  }
281
302
  })
282
303
 
@@ -1,5 +1,9 @@
1
1
  {
2
- "mixins": [ "composables/private.use-field/use-field", "composables/private.use-file/use-file", "composables/use-form/private.use-form" ],
2
+ "mixins": [
3
+ "composables/private.use-field/use-field",
4
+ "composables/private.use-file/use-file",
5
+ "composables/use-form/private.use-form"
6
+ ],
3
7
 
4
8
  "meta": {
5
9
  "docsUrl": "https://v2.quasar.dev/vue-components/file"
@@ -8,9 +12,9 @@
8
12
  "props": {
9
13
  "model-value": {
10
14
  "extends": "model-value",
11
- "type": [ "File", "FileList", "Array", "null", "undefined" ],
15
+ "type": ["File", "FileList", "Array", "null", "undefined"],
12
16
  "desc": "Model of the component; Must be FileList or Array if using 'multiple' prop; Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
13
- "examples": [ "# v-model=\"myModel\"" ]
17
+ "examples": ["# v-model=\"myModel\""]
14
18
  },
15
19
 
16
20
  "append": {
@@ -20,9 +24,9 @@
20
24
  },
21
25
 
22
26
  "display-value": {
23
- "type": [ "Number", "String" ],
27
+ "type": ["Number", "String"],
24
28
  "desc": "Override default selection string, if not using 'file' or 'selected' scoped slots and if not using 'use-chips' prop",
25
- "examples": [ "'Options: x, y, z'" ],
29
+ "examples": ["'Options: x, y, z'"],
26
30
  "category": "selection"
27
31
  },
28
32
 
@@ -44,7 +48,7 @@
44
48
  "type": "String",
45
49
  "required": true,
46
50
  "desc": "The total size of files in human readable format",
47
- "examples": [ "'1.42MB'" ]
51
+ "examples": ["'1.42MB'"]
48
52
  },
49
53
  "filesNumber": {
50
54
  "type": "Number",
@@ -52,7 +56,7 @@
52
56
  "desc": "Number of picked files"
53
57
  },
54
58
  "maxFiles": {
55
- "type": [ "Number", "String" ],
59
+ "type": ["Number", "String"],
56
60
  "required": true,
57
61
  "desc": "Maximum number of files (same as 'max-files' prop, if specified); When 'max-files' is not specified, this has 'void 0' as value"
58
62
  }
@@ -63,7 +67,9 @@
63
67
  "type": "String",
64
68
  "desc": "String to display for the counter label"
65
69
  },
66
- "examples": [ "(totalSize, filesNumber, maxFiles) => `${ filesNumber }${ maxFiles !== void 0 ? ' / ' + maxFiles : '' } (${ totalSize })`" ],
70
+ "examples": [
71
+ "(totalSize, filesNumber, maxFiles) => `${ filesNumber }${ maxFiles !== void 0 ? ' / ' + maxFiles : '' } (${ totalSize })`"
72
+ ],
67
73
  "category": "behavior"
68
74
  },
69
75
 
@@ -73,18 +79,15 @@
73
79
  },
74
80
 
75
81
  "input-class": {
76
- "type": [ "String", "Array", "Object" ],
82
+ "type": ["String", "Array", "Object"],
77
83
  "tsType": "VueClassProp",
78
84
  "desc": "Class definitions to be attributed to the underlying selection container",
79
- "examples": [
80
- "'my-special-class'",
81
- "{ 'my-special-class': true }"
82
- ],
85
+ "examples": ["'my-special-class'", "{ 'my-special-class': true }"],
83
86
  "category": "style"
84
87
  },
85
88
 
86
89
  "input-style": {
87
- "type": [ "String", "Array", "Object" ],
90
+ "type": ["String", "Array", "Object"],
88
91
  "tsType": "VueStyleProp",
89
92
  "desc": "Style definitions to be attributed to the underlying selection container",
90
93
  "examples": [
@@ -1,5 +1,3 @@
1
1
  import QFile from './QFile.js'
2
2
 
3
- export {
4
- QFile
5
- }
3
+ export { QFile }
@@ -1,4 +1,12 @@
1
- import { h, ref, computed, watch, onBeforeUnmount, inject, getCurrentInstance } from 'vue'
1
+ import {
2
+ h,
3
+ ref,
4
+ computed,
5
+ watch,
6
+ onBeforeUnmount,
7
+ inject,
8
+ getCurrentInstance
9
+ } from 'vue'
2
10
 
3
11
  import { isRuntimeSsrPreHydration } from '../../plugins/platform/Platform.js'
4
12
 
@@ -6,7 +14,10 @@ import QResizeObserver from '../resize-observer/QResizeObserver.js'
6
14
 
7
15
  import { createComponent } from '../../utils/private.create/create.js'
8
16
  import { hMergeSlot } from '../../utils/private.render/render.js'
9
- import { layoutKey, emptyRenderFn } from '../../utils/private.symbols/symbols.js'
17
+ import {
18
+ layoutKey,
19
+ emptyRenderFn
20
+ } from '../../utils/private.symbols/symbols.js'
10
21
 
11
22
  export default createComponent({
12
23
  name: 'QFooter',
@@ -21,15 +32,17 @@ export default createComponent({
21
32
  elevated: Boolean,
22
33
 
23
34
  heightHint: {
24
- type: [ String, Number ],
35
+ type: [String, Number],
25
36
  default: 50
26
37
  }
27
38
  },
28
39
 
29
- emits: [ 'reveal', 'focusin' ],
40
+ emits: ['reveal', 'focusin'],
30
41
 
31
- setup (props, { slots, emit }) {
32
- const { proxy: { $q } } = getCurrentInstance()
42
+ setup(props, { slots, emit }) {
43
+ const {
44
+ proxy: { $q }
45
+ } = getCurrentInstance()
33
46
 
34
47
  const $layout = inject(layoutKey, emptyRenderFn)
35
48
  if ($layout === emptyRenderFn) {
@@ -40,22 +53,24 @@ export default createComponent({
40
53
  const size = ref(parseInt(props.heightHint, 10))
41
54
  const revealed = ref(true)
42
55
  const windowHeight = ref(
43
- isRuntimeSsrPreHydration.value === true || $layout.isContainer.value === true
56
+ isRuntimeSsrPreHydration.value === true ||
57
+ $layout.isContainer.value === true
44
58
  ? 0
45
59
  : window.innerHeight
46
60
  )
47
61
 
48
- const fixed = computed(() =>
49
- props.reveal === true
50
- || $layout.view.value.indexOf('F') !== -1
51
- || ($q.platform.is.ios && $layout.isContainer.value === true)
62
+ const fixed = computed(
63
+ () =>
64
+ props.reveal === true ||
65
+ $layout.view.value.indexOf('F') !== -1 ||
66
+ ($q.platform.is.ios && $layout.isContainer.value === true)
52
67
  )
53
68
 
54
- const containerHeight = computed(() => (
69
+ const containerHeight = computed(() =>
55
70
  $layout.isContainer.value === true
56
71
  ? $layout.containerHeight.value
57
72
  : windowHeight.value
58
- ))
73
+ )
59
74
 
60
75
  const offset = computed(() => {
61
76
  if (props.modelValue !== true) {
@@ -64,73 +79,85 @@ export default createComponent({
64
79
  if (fixed.value === true) {
65
80
  return revealed.value === true ? size.value : 0
66
81
  }
67
- const offset = $layout.scroll.value.position + containerHeight.value + size.value - $layout.height.value
68
- return offset > 0 ? offset : 0
82
+
83
+ const localOffset =
84
+ $layout.scroll.value.position +
85
+ containerHeight.value +
86
+ size.value -
87
+ $layout.height.value
88
+
89
+ return localOffset > 0 ? localOffset : 0
69
90
  })
70
91
 
71
- const hidden = computed(() =>
72
- props.modelValue !== true || (fixed.value === true && revealed.value !== true)
92
+ const hidden = computed(
93
+ () =>
94
+ props.modelValue !== true ||
95
+ (fixed.value === true && revealed.value !== true)
73
96
  )
74
97
 
75
- const revealOnFocus = computed(() =>
76
- props.modelValue === true && hidden.value === true && props.reveal === true
98
+ const revealOnFocus = computed(
99
+ () =>
100
+ props.modelValue === true &&
101
+ hidden.value === true &&
102
+ props.reveal === true
77
103
  )
78
104
 
79
- const classes = computed(() =>
80
- 'q-footer q-layout__section--marginal '
81
- + (fixed.value === true ? 'fixed' : 'absolute') + '-bottom'
82
- + (props.bordered === true ? ' q-footer--bordered' : '')
83
- + (hidden.value === true ? ' q-footer--hidden' : '')
84
- + (
85
- props.modelValue !== true
105
+ const classes = computed(
106
+ () =>
107
+ 'q-footer q-layout__section--marginal ' +
108
+ (fixed.value === true ? 'fixed' : 'absolute') +
109
+ '-bottom' +
110
+ (props.bordered === true ? ' q-footer--bordered' : '') +
111
+ (hidden.value === true ? ' q-footer--hidden' : '') +
112
+ (props.modelValue !== true
86
113
  ? ' q-layout--prevent-focus' + (fixed.value !== true ? ' hidden' : '')
87
- : ''
88
- )
114
+ : '')
89
115
  )
90
116
 
91
117
  const style = computed(() => {
92
- const
93
- view = $layout.rows.value.bottom,
118
+ const view = $layout.rows.value.bottom,
94
119
  css = {}
95
120
 
96
- if (view[ 0 ] === 'l' && $layout.left.space === true) {
97
- css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ $layout.left.size }px`
121
+ if (view[0] === 'l' && $layout.left.space === true) {
122
+ css[$q.lang.rtl === true ? 'right' : 'left'] = `${$layout.left.size}px`
98
123
  }
99
- if (view[ 2 ] === 'r' && $layout.right.space === true) {
100
- css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ $layout.right.size }px`
124
+ if (view[2] === 'r' && $layout.right.space === true) {
125
+ css[$q.lang.rtl === true ? 'left' : 'right'] = `${$layout.right.size}px`
101
126
  }
102
127
 
103
128
  return css
104
129
  })
105
130
 
106
- function updateLayout (prop, val) {
131
+ function updateLayout(prop, val) {
107
132
  $layout.update('footer', prop, val)
108
133
  }
109
134
 
110
- function updateLocal (prop, val) {
135
+ function updateLocal(prop, val) {
111
136
  if (prop.value !== val) {
112
137
  prop.value = val
113
138
  }
114
139
  }
115
140
 
116
- function onResize ({ height }) {
141
+ function onResize({ height }) {
117
142
  updateLocal(size, height)
118
143
  updateLayout('size', height)
119
144
  }
120
145
 
121
- function updateRevealed () {
146
+ function updateRevealed() {
122
147
  if (props.reveal !== true) return
123
148
 
124
149
  const { direction, position, inflectionPoint } = $layout.scroll.value
125
150
 
126
- updateLocal(revealed, (
127
- direction === 'up'
128
- || position - inflectionPoint < 100
129
- || $layout.height.value - containerHeight.value - position - size.value < 300
130
- ))
151
+ updateLocal(
152
+ revealed,
153
+ direction === 'up' ||
154
+ position - inflectionPoint < 100 ||
155
+ $layout.height.value - containerHeight.value - position - size.value <
156
+ 300
157
+ )
131
158
  }
132
159
 
133
- function onFocusin (evt) {
160
+ function onFocusin(evt) {
134
161
  if (revealOnFocus.value === true) {
135
162
  updateLocal(revealed, true)
136
163
  }
@@ -138,35 +165,44 @@ export default createComponent({
138
165
  emit('focusin', evt)
139
166
  }
140
167
 
141
- watch(() => props.modelValue, val => {
142
- updateLayout('space', val)
143
- updateLocal(revealed, true)
144
- $layout.animate()
145
- })
168
+ watch(
169
+ () => props.modelValue,
170
+ val => {
171
+ updateLayout('space', val)
172
+ updateLocal(revealed, true)
173
+ $layout.animate()
174
+ }
175
+ )
146
176
 
147
177
  watch(offset, val => {
148
178
  updateLayout('offset', val)
149
179
  })
150
180
 
151
- watch(() => props.reveal, val => {
152
- val === false && updateLocal(revealed, props.modelValue)
153
- })
181
+ watch(
182
+ () => props.reveal,
183
+ val => {
184
+ if (val === false) updateLocal(revealed, props.modelValue)
185
+ }
186
+ )
154
187
 
155
188
  watch(revealed, val => {
156
189
  $layout.animate()
157
190
  emit('reveal', val)
158
191
  })
159
192
 
160
- watch([ size, $layout.scroll, $layout.height ], updateRevealed)
193
+ watch([size, $layout.scroll, $layout.height], updateRevealed)
161
194
 
162
- watch(() => $q.screen.height, val => {
163
- $layout.isContainer.value !== true && updateLocal(windowHeight, val)
164
- })
195
+ watch(
196
+ () => $q.screen.height,
197
+ val => {
198
+ if ($layout.isContainer.value !== true) updateLocal(windowHeight, val)
199
+ }
200
+ )
165
201
 
166
202
  const instance = {}
167
203
 
168
204
  $layout.instances.footer = instance
169
- props.modelValue === true && updateLayout('size', size.value)
205
+ if (props.modelValue === true) updateLayout('size', size.value)
170
206
  updateLayout('space', props.modelValue)
171
207
  updateLayout('offset', offset.value)
172
208
 
@@ -187,17 +223,24 @@ export default createComponent({
187
223
  })
188
224
  ])
189
225
 
190
- props.elevated === true && child.push(
191
- h('div', {
192
- class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'
193
- })
194
- )
226
+ if (props.elevated === true) {
227
+ child.push(
228
+ h('div', {
229
+ class:
230
+ 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'
231
+ })
232
+ )
233
+ }
195
234
 
196
- return h('footer', {
197
- class: classes.value,
198
- style: style.value,
199
- onFocusin
200
- }, child)
235
+ return h(
236
+ 'footer',
237
+ {
238
+ class: classes.value,
239
+ style: style.value,
240
+ onFocusin
241
+ },
242
+ child
243
+ )
201
244
  }
202
245
  }
203
246
  })