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
@@ -1,11 +1,30 @@
1
- import { h, ref, computed, watch, withDirectives, Transition, nextTick, getCurrentInstance } from 'vue'
1
+ import {
2
+ h,
3
+ ref,
4
+ computed,
5
+ watch,
6
+ withDirectives,
7
+ Transition,
8
+ nextTick,
9
+ getCurrentInstance
10
+ } from 'vue'
2
11
 
3
12
  import QBtn from '../btn/QBtn.js'
4
13
  import TouchPan from '../../directives/touch-pan/TouchPan.js'
5
14
 
6
- import useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'
7
- import { useFormProps, useFormAttrs, useFormInject } from '../../composables/use-form/private.use-form.js'
8
- import useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from '../date/use-datetime.js'
15
+ import useDark, {
16
+ useDarkProps
17
+ } from '../../composables/private.use-dark/use-dark.js'
18
+ import {
19
+ useFormProps,
20
+ useFormAttrs,
21
+ useFormInject
22
+ } from '../../composables/use-form/private.use-form.js'
23
+ import useDatetime, {
24
+ useDatetimeProps,
25
+ useDatetimeEmits,
26
+ getDayHash
27
+ } from '../date/use-datetime.js'
9
28
 
10
29
  import { createComponent } from '../../utils/private.create/create.js'
11
30
  import { hSlot } from '../../utils/private.render/render.js'
@@ -14,12 +33,11 @@ import { position } from '../../utils/event/event.js'
14
33
  import { pad } from '../../utils/format/format.js'
15
34
  import { vmIsDestroyed } from '../../utils/private.vm/vm.js'
16
35
 
17
- function getViewByModel (model, withSeconds) {
36
+ function getViewByModel(model, withSeconds) {
18
37
  if (model.hour !== null) {
19
38
  if (model.minute === null) {
20
39
  return 'minute'
21
- }
22
- else if (withSeconds === true && model.second === null) {
40
+ } else if (withSeconds === true && model.second === null) {
23
41
  return 'second'
24
42
  }
25
43
  }
@@ -27,7 +45,7 @@ function getViewByModel (model, withSeconds) {
27
45
  return 'hour'
28
46
  }
29
47
 
30
- function getCurrentTime () {
48
+ function getCurrentTime() {
31
49
  const d = new Date()
32
50
 
33
51
  return {
@@ -48,7 +66,7 @@ export default createComponent({
48
66
 
49
67
  modelValue: {
50
68
  required: true,
51
- validator: val => (typeof val === 'string' || val === null)
69
+ validator: val => typeof val === 'string' || val === null
52
70
  },
53
71
 
54
72
  mask: {
@@ -77,12 +95,15 @@ export default createComponent({
77
95
 
78
96
  emits: useDatetimeEmits,
79
97
 
80
- setup (props, { slots, emit }) {
98
+ setup(props, { slots, emit }) {
81
99
  const vm = getCurrentInstance()
82
100
  const { $q } = vm.proxy
83
101
 
84
102
  const isDark = useDark(props, $q)
85
- const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q)
103
+ const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(
104
+ props,
105
+ $q
106
+ )
86
107
 
87
108
  const formAttrs = useFormAttrs(props)
88
109
  const injectFormInput = useFormInject(formAttrs)
@@ -108,58 +129,59 @@ export default createComponent({
108
129
  const innerModel = ref(model)
109
130
  const isAM = ref(model.hour === null || model.hour < 12)
110
131
 
111
- const classes = computed(() =>
112
- `q-time q-time--${ props.landscape === true ? 'landscape' : 'portrait' }`
113
- + (isDark.value === true ? ' q-time--dark q-dark' : '')
114
- + (props.disable === true ? ' disabled' : (props.readonly === true ? ' q-time--readonly' : ''))
115
- + (props.bordered === true ? ' q-time--bordered' : '')
116
- + (props.square === true ? ' q-time--square no-border-radius' : '')
117
- + (props.flat === true ? ' q-time--flat no-shadow' : '')
132
+ const classes = computed(
133
+ () =>
134
+ `q-time q-time--${props.landscape === true ? 'landscape' : 'portrait'}` +
135
+ (isDark.value === true ? ' q-time--dark q-dark' : '') +
136
+ (props.disable === true
137
+ ? ' disabled'
138
+ : props.readonly === true
139
+ ? ' q-time--readonly'
140
+ : '') +
141
+ (props.bordered === true ? ' q-time--bordered' : '') +
142
+ (props.square === true ? ' q-time--square no-border-radius' : '') +
143
+ (props.flat === true ? ' q-time--flat no-shadow' : '')
118
144
  )
119
145
 
120
146
  const stringModel = computed(() => {
121
147
  const time = innerModel.value
122
148
 
123
149
  return {
124
- hour: time.hour === null
125
- ? '--'
126
- : (
127
- computedFormat24h.value === true
128
- ? pad(time.hour)
129
- : String(
150
+ hour:
151
+ time.hour === null
152
+ ? '--'
153
+ : computedFormat24h.value === true
154
+ ? pad(time.hour)
155
+ : String(
130
156
  isAM.value === true
131
- ? (time.hour === 0 ? 12 : time.hour)
132
- : (time.hour > 12 ? time.hour - 12 : time.hour)
133
- )
134
- ),
135
- minute: time.minute === null
136
- ? '--'
137
- : pad(time.minute),
138
- second: time.second === null
139
- ? '--'
140
- : pad(time.second)
157
+ ? time.hour === 0
158
+ ? 12
159
+ : time.hour
160
+ : time.hour > 12
161
+ ? time.hour - 12
162
+ : time.hour
163
+ ),
164
+ minute: time.minute === null ? '--' : pad(time.minute),
165
+ second: time.second === null ? '--' : pad(time.second)
141
166
  }
142
167
  })
143
168
 
144
- const computedFormat24h = computed(() => (
145
- props.format24h !== null
146
- ? props.format24h
147
- : $q.lang.date.format24h
148
- ))
169
+ const computedFormat24h = computed(() =>
170
+ props.format24h !== null ? props.format24h : $q.lang.date.format24h
171
+ )
149
172
 
150
173
  const pointerStyle = computed(() => {
151
- const
152
- forHour = view.value === 'hour',
174
+ const forHour = view.value === 'hour',
153
175
  divider = forHour === true ? 12 : 60,
154
- amount = innerModel.value[ view.value ],
176
+ amount = innerModel.value[view.value],
155
177
  degrees = Math.round(amount * (360 / divider)) - 180
156
178
 
157
- let transform = `rotate(${ degrees }deg) translateX(-50%)`
179
+ let transform = `rotate(${degrees}deg) translateX(-50%)`
158
180
 
159
181
  if (
160
- forHour === true
161
- && computedFormat24h.value === true
162
- && innerModel.value.hour >= 12
182
+ forHour === true &&
183
+ computedFormat24h.value === true &&
184
+ innerModel.value.hour >= 12
163
185
  ) {
164
186
  transform += ' scale(.7)'
165
187
  }
@@ -168,37 +190,34 @@ export default createComponent({
168
190
  })
169
191
 
170
192
  const minLink = computed(() => innerModel.value.hour !== null)
171
- const secLink = computed(() => minLink.value === true && innerModel.value.minute !== null)
193
+ const secLink = computed(
194
+ () => minLink.value === true && innerModel.value.minute !== null
195
+ )
172
196
 
173
- const hourInSelection = computed(() => (
197
+ const hourInSelection = computed(() =>
174
198
  props.hourOptions !== void 0
175
199
  ? val => props.hourOptions.includes(val)
176
- : (
177
- props.options !== void 0
178
- ? val => props.options(val, null, null)
179
- : null
180
- )
181
- ))
200
+ : props.options !== void 0
201
+ ? val => props.options(val, null, null)
202
+ : null
203
+ )
182
204
 
183
- const minuteInSelection = computed(() => (
205
+ const minuteInSelection = computed(() =>
184
206
  props.minuteOptions !== void 0
185
207
  ? val => props.minuteOptions.includes(val)
186
- : (
187
- props.options !== void 0
188
- ? val => props.options(innerModel.value.hour, val, null)
189
- : null
190
- )
191
- ))
208
+ : props.options !== void 0
209
+ ? val => props.options(innerModel.value.hour, val, null)
210
+ : null
211
+ )
192
212
 
193
- const secondInSelection = computed(() => (
213
+ const secondInSelection = computed(() =>
194
214
  props.secondOptions !== void 0
195
215
  ? val => props.secondOptions.includes(val)
196
- : (
197
- props.options !== void 0
198
- ? val => props.options(innerModel.value.hour, innerModel.value.minute, val)
199
- : null
200
- )
201
- ))
216
+ : props.options !== void 0
217
+ ? val =>
218
+ props.options(innerModel.value.hour, innerModel.value.minute, val)
219
+ : null
220
+ )
202
221
 
203
222
  const validHours = computed(() => {
204
223
  if (hourInSelection.value === null) {
@@ -210,17 +229,17 @@ export default createComponent({
210
229
  return { am, pm, values: am.values.concat(pm.values) }
211
230
  })
212
231
 
213
- const validMinutes = computed(() => (
232
+ const validMinutes = computed(() =>
214
233
  minuteInSelection.value !== null
215
234
  ? getValidValues(0, 59, minuteInSelection.value)
216
235
  : null
217
- ))
236
+ )
218
237
 
219
- const validSeconds = computed(() => (
238
+ const validSeconds = computed(() =>
220
239
  secondInSelection.value !== null
221
240
  ? getValidValues(0, 59, secondInSelection.value)
222
241
  : null
223
- ))
242
+ )
224
243
 
225
244
  const viewValidOptions = computed(() => {
226
245
  switch (view.value) {
@@ -234,17 +253,18 @@ export default createComponent({
234
253
  })
235
254
 
236
255
  const positions = computed(() => {
237
- let start, end, offset = 0, step = 1
238
- const values = viewValidOptions.value !== null
239
- ? viewValidOptions.value.values
240
- : void 0
256
+ let start,
257
+ end,
258
+ offset = 0,
259
+ step = 1
260
+ const values =
261
+ viewValidOptions.value !== null ? viewValidOptions.value.values : void 0
241
262
 
242
263
  if (view.value === 'hour') {
243
264
  if (computedFormat24h.value === true) {
244
265
  start = 0
245
266
  end = 23
246
- }
247
- else {
267
+ } else {
248
268
  start = 0
249
269
  end = 11
250
270
 
@@ -252,8 +272,7 @@ export default createComponent({
252
272
  offset = 12
253
273
  }
254
274
  }
255
- }
256
- else {
275
+ } else {
257
276
  start = 0
258
277
  end = 55
259
278
  step = 5
@@ -262,12 +281,14 @@ export default createComponent({
262
281
  const pos = []
263
282
 
264
283
  for (let val = start, index = start; val <= end; val += step, index++) {
265
- const
266
- actualVal = val + offset,
284
+ const actualVal = val + offset,
267
285
  disable = values?.includes(actualVal) === false,
268
- label = view.value === 'hour' && val === 0
269
- ? (computedFormat24h.value === true ? '00' : '12')
270
- : val
286
+ label =
287
+ view.value === 'hour' && val === 0
288
+ ? computedFormat24h.value === true
289
+ ? '00'
290
+ : '12'
291
+ : val
271
292
 
272
293
  pos.push({ val: actualVal, index, disable, label })
273
294
  }
@@ -275,8 +296,8 @@ export default createComponent({
275
296
  return pos
276
297
  })
277
298
 
278
- const clockDirectives = computed(() => {
279
- return [ [
299
+ const clockDirectives = computed(() => [
300
+ [
280
301
  TouchPan,
281
302
  onPan,
282
303
  void 0,
@@ -285,40 +306,42 @@ export default createComponent({
285
306
  prevent: true,
286
307
  mouse: true
287
308
  }
288
- ] ]
289
- })
309
+ ]
310
+ ])
290
311
 
291
- watch(() => props.modelValue, v => {
292
- const model = __splitDate(
293
- v,
294
- mask.value,
295
- locale.value,
296
- props.calendar,
297
- defaultDateModel.value
298
- )
312
+ watch(
313
+ () => props.modelValue,
314
+ v => {
315
+ const val = __splitDate(
316
+ v,
317
+ mask.value,
318
+ locale.value,
319
+ props.calendar,
320
+ defaultDateModel.value
321
+ )
299
322
 
300
- if (
301
- model.dateHash !== innerModel.value.dateHash
302
- || model.timeHash !== innerModel.value.timeHash
303
- ) {
304
- innerModel.value = model
323
+ if (
324
+ val.dateHash !== innerModel.value.dateHash ||
325
+ val.timeHash !== innerModel.value.timeHash
326
+ ) {
327
+ innerModel.value = val
305
328
 
306
- if (model.hour === null) {
307
- view.value = 'hour'
308
- }
309
- else {
310
- isAM.value = model.hour < 12
329
+ if (val.hour === null) {
330
+ view.value = 'hour'
331
+ } else {
332
+ isAM.value = val.hour < 12
333
+ }
311
334
  }
312
335
  }
313
- })
336
+ )
314
337
 
315
- watch([ mask, locale ], () => {
338
+ watch([mask, locale], () => {
316
339
  nextTick(() => {
317
340
  updateValue()
318
341
  })
319
342
  })
320
343
 
321
- function setNow () {
344
+ function setNow() {
322
345
  const date = {
323
346
  ...getCurrentDate(),
324
347
  ...getCurrentTime()
@@ -330,7 +353,7 @@ export default createComponent({
330
353
  view.value = 'hour'
331
354
  }
332
355
 
333
- function getValidValues (start, count, testFn) {
356
+ function getValidValues(start, count, testFn) {
334
357
  const values = Array.apply(null, { length: count + 1 })
335
358
  .map((_, index) => {
336
359
  const i = index + start
@@ -343,73 +366,73 @@ export default createComponent({
343
366
  .map(v => v.index)
344
367
 
345
368
  return {
346
- min: values[ 0 ],
347
- max: values[ values.length - 1 ],
369
+ min: values[0],
370
+ max: values[values.length - 1],
348
371
  values,
349
372
  threshold: count + 1
350
373
  }
351
374
  }
352
375
 
353
- function getWheelDist (a, b, threshold) {
376
+ function getWheelDist(a, b, threshold) {
354
377
  const diff = Math.abs(a - b)
355
378
  return Math.min(diff, threshold - diff)
356
379
  }
357
380
 
358
- function getNormalizedClockValue (val, { min, max, values, threshold }) {
381
+ function getNormalizedClockValue(val, { min, max, values, threshold }) {
359
382
  if (val === min) {
360
383
  return min
361
384
  }
362
385
 
363
386
  if (val < min || val > max) {
364
- return getWheelDist(val, min, threshold) <= getWheelDist(val, max, threshold)
387
+ return getWheelDist(val, min, threshold) <=
388
+ getWheelDist(val, max, threshold)
365
389
  ? min
366
390
  : max
367
391
  }
368
392
 
369
- const
370
- index = values.findIndex(v => val <= v),
371
- before = values[ index - 1 ],
372
- after = values[ index ]
393
+ const index = values.findIndex(v => val <= v),
394
+ before = values[index - 1],
395
+ after = values[index]
373
396
 
374
- return val - before <= after - val
375
- ? before
376
- : after
397
+ return val - before <= after - val ? before : after
377
398
  }
378
399
 
379
- function getMask () {
400
+ function getMask() {
380
401
  return props.calendar !== 'persian' && props.mask !== null
381
402
  ? props.mask
382
- : `HH:mm${ props.withSeconds === true ? ':ss' : '' }`
403
+ : `HH:mm${props.withSeconds === true ? ':ss' : ''}`
383
404
  }
384
405
 
385
- function getDefaultDateModel () {
406
+ function getDefaultDateModel() {
386
407
  if (typeof props.defaultDate !== 'string') {
387
408
  const date = getCurrentDate(true)
388
409
  date.dateHash = getDayHash(date)
389
410
  return date
390
411
  }
391
412
 
392
- return __splitDate(props.defaultDate, 'YYYY/MM/DD', void 0, props.calendar)
413
+ return __splitDate(
414
+ props.defaultDate,
415
+ 'YYYY/MM/DD',
416
+ void 0,
417
+ props.calendar
418
+ )
393
419
  }
394
420
 
395
- function shouldAbortInteraction () {
396
- return vmIsDestroyed(vm) === true
421
+ function shouldAbortInteraction() {
422
+ return (
423
+ vmIsDestroyed(vm) === true ||
397
424
  // if we have limited options, can we actually set any?
398
- || (
399
- viewValidOptions.value !== null
400
- && (
401
- viewValidOptions.value.values.length === 0
402
- || (
403
- view.value === 'hour' && computedFormat24h.value !== true
404
- && validHours.value[ isAM.value === true ? 'am' : 'pm' ].values.length === 0
405
- )
406
- )
407
- )
425
+ (viewValidOptions.value !== null &&
426
+ (viewValidOptions.value.values.length === 0 ||
427
+ (view.value === 'hour' &&
428
+ computedFormat24h.value !== true &&
429
+ validHours.value[isAM.value === true ? 'am' : 'pm'].values
430
+ .length === 0)))
431
+ )
408
432
  }
409
433
 
410
- function getClockRect () {
411
- const
412
- clock = clockRef.value,
434
+ function getClockRect() {
435
+ const clock = clockRef.value,
413
436
  { top, left, width } = clock.getBoundingClientRect(),
414
437
  dist = width / 2
415
438
 
@@ -420,7 +443,7 @@ export default createComponent({
420
443
  }
421
444
  }
422
445
 
423
- function onPan (event) {
446
+ function onPan(event) {
424
447
  if (shouldAbortInteraction() === true) return
425
448
 
426
449
  if (event.isFirst === true) {
@@ -438,32 +461,28 @@ export default createComponent({
438
461
  }
439
462
  }
440
463
 
441
- function goToNextView () {
464
+ function goToNextView() {
442
465
  if (view.value === 'hour') {
443
466
  view.value = 'minute'
444
- }
445
- else if (props.withSeconds && view.value === 'minute') {
467
+ } else if (props.withSeconds && view.value === 'minute') {
446
468
  view.value = 'second'
447
469
  }
448
470
  }
449
471
 
450
- function updateClock (evt, clockRect, cacheVal) {
451
- const
452
- pos = position(evt),
472
+ function updateClock(evt, clockRect, cacheVal) {
473
+ const pos = position(evt),
453
474
  height = Math.abs(pos.top - clockRect.top),
454
475
  distance = Math.sqrt(
455
- Math.pow(Math.abs(pos.top - clockRect.top), 2)
456
- + Math.pow(Math.abs(pos.left - clockRect.left), 2)
476
+ Math.abs(pos.top - clockRect.top) ** 2 +
477
+ Math.abs(pos.left - clockRect.left) ** 2
457
478
  )
458
479
 
459
- let
460
- val,
480
+ let val,
461
481
  angle = Math.asin(height / distance) * (180 / Math.PI)
462
482
 
463
483
  if (pos.top < clockRect.top) {
464
484
  angle = clockRect.left < pos.left ? 90 - angle : 270 + angle
465
- }
466
- else {
485
+ } else {
467
486
  angle = clockRect.left < pos.left ? angle + 90 : 270 - angle
468
487
  }
469
488
 
@@ -471,20 +490,19 @@ export default createComponent({
471
490
  val = angle / 30
472
491
 
473
492
  if (validHours.value !== null) {
474
- const am = computedFormat24h.value !== true
475
- ? isAM.value === true
476
- : (
477
- validHours.value.am.values.length !== 0 && validHours.value.pm.values.length !== 0
478
- ? distance >= clockRect.dist
479
- : validHours.value.am.values.length !== 0
480
- )
493
+ const am =
494
+ computedFormat24h.value !== true
495
+ ? isAM.value === true
496
+ : validHours.value.am.values.length !== 0 &&
497
+ validHours.value.pm.values.length !== 0
498
+ ? distance >= clockRect.dist
499
+ : validHours.value.am.values.length !== 0
481
500
 
482
501
  val = getNormalizedClockValue(
483
502
  val + (am === true ? 0 : 12),
484
- validHours.value[ am === true ? 'am' : 'pm' ]
503
+ validHours.value[am === true ? 'am' : 'pm']
485
504
  )
486
- }
487
- else {
505
+ } else {
488
506
  val = Math.round(val)
489
507
 
490
508
  if (computedFormat24h.value === true) {
@@ -492,15 +510,12 @@ export default createComponent({
492
510
  if (val < 12) {
493
511
  val += 12
494
512
  }
495
- }
496
- else if (val === 12) {
513
+ } else if (val === 12) {
497
514
  val = 0
498
515
  }
499
- }
500
- else if (isAM.value === true && val === 12) {
516
+ } else if (isAM.value === true && val === 12) {
501
517
  val = 0
502
- }
503
- else if (isAM.value === false && val !== 12) {
518
+ } else if (isAM.value === false && val !== 12) {
504
519
  val += 12
505
520
  }
506
521
  }
@@ -508,40 +523,44 @@ export default createComponent({
508
523
  if (computedFormat24h.value === true) {
509
524
  isAM.value = val < 12
510
525
  }
511
- }
512
- else {
526
+ } else {
513
527
  val = Math.round(angle / 6) % 60
514
528
 
515
529
  if (view.value === 'minute' && validMinutes.value !== null) {
516
530
  val = getNormalizedClockValue(val, validMinutes.value)
517
- }
518
- else if (view.value === 'second' && validSeconds.value !== null) {
531
+ } else if (view.value === 'second' && validSeconds.value !== null) {
519
532
  val = getNormalizedClockValue(val, validSeconds.value)
520
533
  }
521
534
  }
522
535
 
523
536
  if (cacheVal !== val) {
524
- setModel[ view.value ](val)
537
+ setModel[view.value](val)
525
538
  }
526
539
 
527
540
  return val
528
541
  }
529
542
 
530
543
  const setView = {
531
- hour () { view.value = 'hour' },
532
- minute () { view.value = 'minute' },
533
- second () { view.value = 'second' }
544
+ hour() {
545
+ view.value = 'hour'
546
+ },
547
+ minute() {
548
+ view.value = 'minute'
549
+ },
550
+ second() {
551
+ view.value = 'second'
552
+ }
534
553
  }
535
554
 
536
- function setAmOnKey (e) {
537
- e.keyCode === 13 && setAm()
555
+ function setAmOnKey(e) {
556
+ if (e.keyCode === 13) setAm()
538
557
  }
539
558
 
540
- function setPmOnKey (e) {
541
- e.keyCode === 13 && setPm()
559
+ function setPmOnKey(e) {
560
+ if (e.keyCode === 13) setPm()
542
561
  }
543
562
 
544
- function onClick (evt) {
563
+ function onClick(evt) {
545
564
  if (shouldAbortInteraction() !== true) {
546
565
  // onMousedown() has already updated the offset
547
566
  // (on desktop only, through mousedown event)
@@ -553,55 +572,55 @@ export default createComponent({
553
572
  }
554
573
  }
555
574
 
556
- function onMousedown (evt) {
575
+ function onMousedown(evt) {
557
576
  if (shouldAbortInteraction() !== true) {
558
577
  updateClock(evt, getClockRect())
559
578
  }
560
579
  }
561
580
 
562
- function onKeyupHour (e) {
563
- if (e.keyCode === 13) { // ENTER
581
+ function onKeyupHour(e) {
582
+ if (e.keyCode === 13) {
583
+ // ENTER
564
584
  view.value = 'hour'
565
- }
566
- else if ([ 37, 39 ].includes(e.keyCode)) {
585
+ } else if ([37, 39].includes(e.keyCode)) {
567
586
  const payload = e.keyCode === 37 ? -1 : 1
568
587
 
569
588
  if (validHours.value !== null) {
570
- const values = computedFormat24h.value === true
571
- ? validHours.value.values
572
- : validHours.value[ isAM.value === true ? 'am' : 'pm' ].values
589
+ const values =
590
+ computedFormat24h.value === true
591
+ ? validHours.value.values
592
+ : validHours.value[isAM.value === true ? 'am' : 'pm'].values
573
593
 
574
594
  if (values.length === 0) return
575
595
 
576
596
  if (innerModel.value.hour === null) {
577
- setHour(values[ 0 ])
578
- }
579
- else {
580
- const index = (
597
+ setHour(values[0])
598
+ } else {
599
+ const index =
600
+ (values.length +
601
+ values.indexOf(innerModel.value.hour) +
602
+ payload) %
581
603
  values.length
582
- + values.indexOf(innerModel.value.hour)
583
- + payload
584
- ) % values.length
585
604
 
586
- setHour(values[ index ])
605
+ setHour(values[index])
587
606
  }
588
- }
589
- else {
590
- const
591
- wrap = computedFormat24h.value === true ? 24 : 12,
592
- offset = computedFormat24h.value !== true && isAM.value === false ? 12 : 0,
593
- val = innerModel.value.hour === null ? -payload : innerModel.value.hour
594
-
595
- setHour(offset + (24 + val + payload) % wrap)
607
+ } else {
608
+ const wrap = computedFormat24h.value === true ? 24 : 12,
609
+ offset =
610
+ computedFormat24h.value !== true && isAM.value === false ? 12 : 0,
611
+ val =
612
+ innerModel.value.hour === null ? -payload : innerModel.value.hour
613
+
614
+ setHour(offset + ((24 + val + payload) % wrap))
596
615
  }
597
616
  }
598
617
  }
599
618
 
600
- function onKeyupMinute (e) {
601
- if (e.keyCode === 13) { // ENTER
619
+ function onKeyupMinute(e) {
620
+ if (e.keyCode === 13) {
621
+ // ENTER
602
622
  view.value = 'minute'
603
- }
604
- else if ([ 37, 39 ].includes(e.keyCode)) {
623
+ } else if ([37, 39].includes(e.keyCode)) {
605
624
  const payload = e.keyCode === 37 ? -1 : 1
606
625
 
607
626
  if (validMinutes.value !== null) {
@@ -610,30 +629,31 @@ export default createComponent({
610
629
  if (values.length === 0) return
611
630
 
612
631
  if (innerModel.value.minute === null) {
613
- setMinute(values[ 0 ])
614
- }
615
- else {
616
- const index = (
632
+ setMinute(values[0])
633
+ } else {
634
+ const index =
635
+ (values.length +
636
+ values.indexOf(innerModel.value.minute) +
637
+ payload) %
617
638
  values.length
618
- + values.indexOf(innerModel.value.minute)
619
- + payload
620
- ) % values.length
621
639
 
622
- setMinute(values[ index ])
640
+ setMinute(values[index])
623
641
  }
624
- }
625
- else {
626
- const val = innerModel.value.minute === null ? -payload : innerModel.value.minute
642
+ } else {
643
+ const val =
644
+ innerModel.value.minute === null
645
+ ? -payload
646
+ : innerModel.value.minute
627
647
  setMinute((60 + val + payload) % 60)
628
648
  }
629
649
  }
630
650
  }
631
651
 
632
- function onKeyupSecond (e) {
633
- if (e.keyCode === 13) { // ENTER
652
+ function onKeyupSecond(e) {
653
+ if (e.keyCode === 13) {
654
+ // ENTER
634
655
  view.value = 'second'
635
- }
636
- else if ([ 37, 39 ].includes(e.keyCode)) {
656
+ } else if ([37, 39].includes(e.keyCode)) {
637
657
  const payload = e.keyCode === 37 ? -1 : 1
638
658
 
639
659
  if (validSeconds.value !== null) {
@@ -642,40 +662,41 @@ export default createComponent({
642
662
  if (values.length === 0) return
643
663
 
644
664
  if (innerModel.value.seconds === null) {
645
- setSecond(values[ 0 ])
646
- }
647
- else {
648
- const index = (
665
+ setSecond(values[0])
666
+ } else {
667
+ const index =
668
+ (values.length +
669
+ values.indexOf(innerModel.value.second) +
670
+ payload) %
649
671
  values.length
650
- + values.indexOf(innerModel.value.second)
651
- + payload
652
- ) % values.length
653
672
 
654
- setSecond(values[ index ])
673
+ setSecond(values[index])
655
674
  }
656
- }
657
- else {
658
- const val = innerModel.value.second === null ? -payload : innerModel.value.second
675
+ } else {
676
+ const val =
677
+ innerModel.value.second === null
678
+ ? -payload
679
+ : innerModel.value.second
659
680
  setSecond((60 + val + payload) % 60)
660
681
  }
661
682
  }
662
683
  }
663
684
 
664
- function setHour (hour) {
685
+ function setHour(hour) {
665
686
  if (innerModel.value.hour !== hour) {
666
687
  innerModel.value.hour = hour
667
688
  verifyAndUpdate()
668
689
  }
669
690
  }
670
691
 
671
- function setMinute (minute) {
692
+ function setMinute(minute) {
672
693
  if (innerModel.value.minute !== minute) {
673
694
  innerModel.value.minute = minute
674
695
  verifyAndUpdate()
675
696
  }
676
697
  }
677
698
 
678
- function setSecond (second) {
699
+ function setSecond(second) {
679
700
  if (innerModel.value.second !== second) {
680
701
  innerModel.value.second = second
681
702
  verifyAndUpdate()
@@ -688,7 +709,7 @@ export default createComponent({
688
709
  second: setSecond
689
710
  }
690
711
 
691
- function setAm () {
712
+ function setAm() {
692
713
  if (isAM.value === false) {
693
714
  isAM.value = true
694
715
 
@@ -699,7 +720,7 @@ export default createComponent({
699
720
  }
700
721
  }
701
722
 
702
- function setPm () {
723
+ function setPm() {
703
724
  if (isAM.value === true) {
704
725
  isAM.value = false
705
726
 
@@ -710,84 +731,105 @@ export default createComponent({
710
731
  }
711
732
  }
712
733
 
713
- function goToViewWhenHasModel (newView) {
714
- const model = props.modelValue
734
+ function goToViewWhenHasModel(newView) {
735
+ const val = props.modelValue
715
736
  if (
716
- view.value !== newView
717
- && model !== void 0
718
- && model !== null
719
- && model !== ''
720
- && typeof model !== 'string'
737
+ view.value !== newView &&
738
+ val !== void 0 &&
739
+ val !== null &&
740
+ val !== '' &&
741
+ typeof val !== 'string'
721
742
  ) {
722
743
  view.value = newView
723
744
  }
724
745
  }
725
746
 
726
- function verifyAndUpdate () {
727
- if (hourInSelection.value !== null && hourInSelection.value(innerModel.value.hour) !== true) {
747
+ function verifyAndUpdate() {
748
+ if (
749
+ hourInSelection.value !== null &&
750
+ hourInSelection.value(innerModel.value.hour) !== true
751
+ ) {
728
752
  innerModel.value = __splitDate()
729
753
  goToViewWhenHasModel('hour')
730
754
  return
731
755
  }
732
756
 
733
- if (minuteInSelection.value !== null && minuteInSelection.value(innerModel.value.minute) !== true) {
757
+ if (
758
+ minuteInSelection.value !== null &&
759
+ minuteInSelection.value(innerModel.value.minute) !== true
760
+ ) {
734
761
  innerModel.value.minute = null
735
762
  innerModel.value.second = null
736
763
  goToViewWhenHasModel('minute')
737
764
  return
738
765
  }
739
766
 
740
- if (props.withSeconds === true && secondInSelection.value !== null && secondInSelection.value(innerModel.value.second) !== true) {
767
+ if (
768
+ props.withSeconds === true &&
769
+ secondInSelection.value !== null &&
770
+ secondInSelection.value(innerModel.value.second) !== true
771
+ ) {
741
772
  innerModel.value.second = null
742
773
  goToViewWhenHasModel('second')
743
774
  return
744
775
  }
745
776
 
746
777
  if (
747
- innerModel.value.hour === null
748
- || innerModel.value.minute === null
749
- || (props.withSeconds === true && innerModel.value.second === null)
750
- ) return
778
+ innerModel.value.hour === null ||
779
+ innerModel.value.minute === null ||
780
+ (props.withSeconds === true && innerModel.value.second === null)
781
+ ) {
782
+ return
783
+ }
751
784
 
752
785
  updateValue()
753
786
  }
754
787
 
755
- function updateValue (obj) {
788
+ function updateValue(obj) {
756
789
  const date = Object.assign({ ...innerModel.value }, obj)
757
790
 
758
- const val = props.calendar === 'persian'
759
- ? pad(date.hour) + ':'
760
- + pad(date.minute)
761
- + (props.withSeconds === true ? ':' + pad(date.second) : '')
762
- : formatDate(
763
- new Date(
764
- date.year,
765
- date.month === null ? null : date.month - 1,
766
- date.day,
767
- date.hour,
768
- date.minute,
769
- date.second,
770
- date.millisecond
771
- ),
772
- mask.value,
773
- locale.value,
774
- date.year,
775
- date.timezoneOffset
776
- )
791
+ const val =
792
+ props.calendar === 'persian'
793
+ ? pad(date.hour) +
794
+ ':' +
795
+ pad(date.minute) +
796
+ (props.withSeconds === true ? ':' + pad(date.second) : '')
797
+ : formatDate(
798
+ new Date(
799
+ date.year,
800
+ date.month === null ? null : date.month - 1,
801
+ date.day,
802
+ date.hour,
803
+ date.minute,
804
+ date.second,
805
+ date.millisecond
806
+ ),
807
+ mask.value,
808
+ locale.value,
809
+ date.year,
810
+ date.timezoneOffset
811
+ )
777
812
 
778
813
  date.changed = val !== props.modelValue
779
814
  emit('update:modelValue', val, date)
780
815
  }
781
816
 
782
- function getHeader () {
817
+ function getHeader() {
783
818
  const label = [
784
- h('div', {
785
- class: 'q-time__link '
786
- + (view.value === 'hour' ? 'q-time__link--active' : 'cursor-pointer'),
787
- tabindex: tabindex.value,
788
- onClick: setView.hour,
789
- onKeyup: onKeyupHour
790
- }, stringModel.value.hour),
819
+ h(
820
+ 'div',
821
+ {
822
+ class:
823
+ 'q-time__link ' +
824
+ (view.value === 'hour'
825
+ ? 'q-time__link--active'
826
+ : 'cursor-pointer'),
827
+ tabindex: tabindex.value,
828
+ onClick: setView.hour,
829
+ onKeyup: onKeyupHour
830
+ },
831
+ stringModel.value.hour
832
+ ),
791
833
 
792
834
  h('div', ':'),
793
835
 
@@ -795,8 +837,11 @@ export default createComponent({
795
837
  'div',
796
838
  minLink.value === true
797
839
  ? {
798
- class: 'q-time__link '
799
- + (view.value === 'minute' ? 'q-time__link--active' : 'cursor-pointer'),
840
+ class:
841
+ 'q-time__link ' +
842
+ (view.value === 'minute'
843
+ ? 'q-time__link--active'
844
+ : 'cursor-pointer'),
800
845
  tabindex: tabindex.value,
801
846
  onKeyup: onKeyupMinute,
802
847
  onClick: setView.minute
@@ -814,8 +859,11 @@ export default createComponent({
814
859
  'div',
815
860
  secLink.value === true
816
861
  ? {
817
- class: 'q-time__link '
818
- + (view.value === 'second' ? 'q-time__link--active' : 'cursor-pointer'),
862
+ class:
863
+ 'q-time__link ' +
864
+ (view.value === 'second'
865
+ ? 'q-time__link--active'
866
+ : 'cursor-pointer'),
819
867
  tabindex: tabindex.value,
820
868
  onKeyup: onKeyupSecond,
821
869
  onClick: setView.second
@@ -827,117 +875,188 @@ export default createComponent({
827
875
  }
828
876
 
829
877
  const child = [
830
- h('div', {
831
- class: 'q-time__header-label row items-center no-wrap',
832
- dir: 'ltr'
833
- }, label)
878
+ h(
879
+ 'div',
880
+ {
881
+ class: 'q-time__header-label row items-center no-wrap',
882
+ dir: 'ltr'
883
+ },
884
+ label
885
+ )
834
886
  ]
835
887
 
836
- computedFormat24h.value === false && child.push(
837
- h('div', {
838
- class: 'q-time__header-ampm column items-between no-wrap'
839
- }, [
840
- h('div', {
841
- class: 'q-time__link '
842
- + (isAM.value === true ? 'q-time__link--active' : 'cursor-pointer'),
843
- tabindex: tabindex.value,
844
- onClick: setAm,
845
- onKeyup: setAmOnKey
846
- }, 'AM'),
888
+ if (computedFormat24h.value === false) {
889
+ child.push(
890
+ h(
891
+ 'div',
892
+ {
893
+ class: 'q-time__header-ampm column items-between no-wrap'
894
+ },
895
+ [
896
+ h(
897
+ 'div',
898
+ {
899
+ class:
900
+ 'q-time__link ' +
901
+ (isAM.value === true
902
+ ? 'q-time__link--active'
903
+ : 'cursor-pointer'),
904
+ tabindex: tabindex.value,
905
+ onClick: setAm,
906
+ onKeyup: setAmOnKey
907
+ },
908
+ 'AM'
909
+ ),
910
+
911
+ h(
912
+ 'div',
913
+ {
914
+ class:
915
+ 'q-time__link ' +
916
+ (isAM.value !== true
917
+ ? 'q-time__link--active'
918
+ : 'cursor-pointer'),
919
+ tabindex: tabindex.value,
920
+ onClick: setPm,
921
+ onKeyup: setPmOnKey
922
+ },
923
+ 'PM'
924
+ )
925
+ ]
926
+ )
927
+ )
928
+ }
847
929
 
848
- h('div', {
849
- class: 'q-time__link '
850
- + (isAM.value !== true ? 'q-time__link--active' : 'cursor-pointer'),
851
- tabindex: tabindex.value,
852
- onClick: setPm,
853
- onKeyup: setPmOnKey
854
- }, 'PM')
855
- ])
930
+ return h(
931
+ 'div',
932
+ {
933
+ class: 'q-time__header flex flex-center no-wrap ' + headerClass.value
934
+ },
935
+ child
856
936
  )
937
+ }
857
938
 
858
- return h('div', {
859
- class: 'q-time__header flex flex-center no-wrap ' + headerClass.value
860
- }, child)
861
- }
862
-
863
- function getClock () {
864
- const current = innerModel.value[ view.value ]
865
-
866
- return h('div', {
867
- class: 'q-time__content col relative-position'
868
- }, [
869
- h(Transition, {
870
- name: 'q-transition--scale'
871
- }, () => h('div', {
872
- key: 'clock' + view.value,
873
- class: 'q-time__container-parent absolute-full'
874
- }, [
875
- h('div', {
876
- ref: clockRef,
877
- class: 'q-time__container-child fit overflow-hidden'
878
- }, [
879
- withDirectives(
880
- h('div', {
881
- class: 'q-time__clock cursor-pointer non-selectable',
882
- onClick,
883
- onMousedown
884
- }, [
885
- h('div', { class: 'q-time__clock-circle fit' }, [
886
- h('div', {
887
- class: 'q-time__clock-pointer'
888
- + (innerModel.value[ view.value ] === null ? ' hidden' : (props.color !== void 0 ? ` text-${ props.color }` : '')),
889
- style: pointerStyle.value
890
- }),
891
-
892
- positions.value.map(pos => h('div', {
893
- class: `q-time__clock-position row flex-center q-time__clock-pos-${ pos.index }`
894
- + (pos.val === current
895
- ? ' q-time__clock-position--active ' + headerClass.value
896
- : (pos.disable === true ? ' q-time__clock-position--disable' : ''))
897
- }, [ h('span', pos.label) ]))
898
- ])
899
- ]),
900
- clockDirectives.value
901
- )
902
- ])
903
- ])),
904
-
905
- props.nowBtn === true ? h(QBtn, {
906
- class: 'q-time__now-button absolute',
907
- icon: $q.iconSet.datetime.now,
908
- unelevated: true,
909
- size: 'sm',
910
- round: true,
911
- color: props.color,
912
- textColor: props.textColor,
913
- tabindex: tabindex.value,
914
- onClick: setNow
915
- }) : null
916
- ])
939
+ function getClock() {
940
+ const current = innerModel.value[view.value]
941
+
942
+ return h(
943
+ 'div',
944
+ {
945
+ class: 'q-time__content col relative-position'
946
+ },
947
+ [
948
+ h(
949
+ Transition,
950
+ {
951
+ name: 'q-transition--scale'
952
+ },
953
+ () =>
954
+ h(
955
+ 'div',
956
+ {
957
+ key: 'clock' + view.value,
958
+ class: 'q-time__container-parent absolute-full'
959
+ },
960
+ [
961
+ h(
962
+ 'div',
963
+ {
964
+ ref: clockRef,
965
+ class: 'q-time__container-child fit overflow-hidden'
966
+ },
967
+ [
968
+ withDirectives(
969
+ h(
970
+ 'div',
971
+ {
972
+ class:
973
+ 'q-time__clock cursor-pointer non-selectable',
974
+ onClick,
975
+ onMousedown
976
+ },
977
+ [
978
+ h('div', { class: 'q-time__clock-circle fit' }, [
979
+ h('div', {
980
+ class:
981
+ 'q-time__clock-pointer' +
982
+ (innerModel.value[view.value] === null
983
+ ? ' hidden'
984
+ : props.color !== void 0
985
+ ? ` text-${props.color}`
986
+ : ''),
987
+ style: pointerStyle.value
988
+ }),
989
+
990
+ positions.value.map(pos =>
991
+ h(
992
+ 'div',
993
+ {
994
+ class:
995
+ `q-time__clock-position row flex-center q-time__clock-pos-${pos.index}` +
996
+ (pos.val === current
997
+ ? ' q-time__clock-position--active ' +
998
+ headerClass.value
999
+ : pos.disable === true
1000
+ ? ' q-time__clock-position--disable'
1001
+ : '')
1002
+ },
1003
+ [h('span', pos.label)]
1004
+ )
1005
+ )
1006
+ ])
1007
+ ]
1008
+ ),
1009
+ clockDirectives.value
1010
+ )
1011
+ ]
1012
+ )
1013
+ ]
1014
+ )
1015
+ ),
1016
+
1017
+ props.nowBtn === true
1018
+ ? h(QBtn, {
1019
+ class: 'q-time__now-button absolute',
1020
+ icon: $q.iconSet.datetime.now,
1021
+ unelevated: true,
1022
+ size: 'sm',
1023
+ round: true,
1024
+ color: props.color,
1025
+ textColor: props.textColor,
1026
+ tabindex: tabindex.value,
1027
+ onClick: setNow
1028
+ })
1029
+ : null
1030
+ ]
1031
+ )
917
1032
  }
918
1033
 
919
1034
  // expose public method
920
1035
  vm.proxy.setNow = setNow
921
1036
 
922
1037
  return () => {
923
- const child = [ getClock() ]
1038
+ const child = [getClock()]
924
1039
 
925
1040
  const def = hSlot(slots.default)
926
- def !== void 0 && child.push(
927
- h('div', { class: 'q-time__actions' }, def)
928
- )
1041
+ if (def !== void 0) {
1042
+ child.push(h('div', { class: 'q-time__actions' }, def))
1043
+ }
929
1044
 
930
1045
  if (props.name !== void 0 && props.disable !== true) {
931
1046
  injectFormInput(child, 'push')
932
1047
  }
933
1048
 
934
- return h('div', {
935
- class: classes.value,
936
- tabindex: -1
937
- }, [
938
- getHeader(),
939
- h('div', { class: 'q-time__main col overflow-auto' }, child)
940
- ])
1049
+ return h(
1050
+ 'div',
1051
+ {
1052
+ class: classes.value,
1053
+ tabindex: -1
1054
+ },
1055
+ [
1056
+ getHeader(),
1057
+ h('div', { class: 'q-time__main col overflow-auto' }, child)
1058
+ ]
1059
+ )
941
1060
  }
942
1061
  }
943
1062
  })