quasar 2.18.7 → 2.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (857) hide show
  1. package/README.md +2 -0
  2. package/dist/api/BottomSheet.json +1 -1
  3. package/dist/api/Dialog.json +1 -1
  4. package/dist/api/Intersection.json +1 -1
  5. package/dist/api/Lang.json +1 -1
  6. package/dist/api/LocalStorage.json +1 -1
  7. package/dist/api/Notify.json +1 -1
  8. package/dist/api/QBtnDropdown.json +1 -1
  9. package/dist/api/QBtnToggle.json +1 -1
  10. package/dist/api/QCarousel.json +1 -1
  11. package/dist/api/QCarouselControl.json +1 -1
  12. package/dist/api/QChatMessage.json +1 -1
  13. package/dist/api/QCheckbox.json +1 -1
  14. package/dist/api/QColor.json +1 -1
  15. package/dist/api/QDate.json +1 -1
  16. package/dist/api/QEditor.json +1 -1
  17. package/dist/api/QField.json +1 -1
  18. package/dist/api/QFile.json +1 -1
  19. package/dist/api/QInput.json +1 -1
  20. package/dist/api/QIntersection.json +1 -1
  21. package/dist/api/QMenu.json +1 -1
  22. package/dist/api/QOptionGroup.json +1 -1
  23. package/dist/api/QPageScroller.json +1 -1
  24. package/dist/api/QPageSticky.json +1 -1
  25. package/dist/api/QPopupEdit.json +1 -1
  26. package/dist/api/QRange.json +1 -1
  27. package/dist/api/QRating.json +1 -1
  28. package/dist/api/QScrollArea.json +1 -1
  29. package/dist/api/QSelect.json +1 -1
  30. package/dist/api/QSlider.json +1 -1
  31. package/dist/api/QSplitter.json +1 -1
  32. package/dist/api/QStepper.json +1 -1
  33. package/dist/api/QTabPanels.json +1 -1
  34. package/dist/api/QTable.json +1 -1
  35. package/dist/api/QTime.json +1 -1
  36. package/dist/api/QToggle.json +1 -1
  37. package/dist/api/QTooltip.json +1 -1
  38. package/dist/api/QTree.json +1 -1
  39. package/dist/api/QUploader.json +1 -1
  40. package/dist/api/QVirtualScroll.json +1 -1
  41. package/dist/api/Ripple.json +1 -1
  42. package/dist/api/SessionStorage.json +1 -1
  43. package/dist/icon-set/bootstrap-icons.umd.prod.js +5 -6
  44. package/dist/icon-set/eva-icons.umd.prod.js +5 -6
  45. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +5 -6
  46. package/dist/icon-set/fontawesome-v5.umd.prod.js +5 -6
  47. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +5 -6
  48. package/dist/icon-set/fontawesome-v6.umd.prod.js +5 -6
  49. package/dist/icon-set/ionicons-v4.umd.prod.js +5 -6
  50. package/dist/icon-set/line-awesome.umd.prod.js +5 -6
  51. package/dist/icon-set/material-icons-outlined.umd.prod.js +5 -6
  52. package/dist/icon-set/material-icons-round.umd.prod.js +5 -6
  53. package/dist/icon-set/material-icons-sharp.umd.prod.js +5 -6
  54. package/dist/icon-set/material-icons.umd.prod.js +5 -6
  55. package/dist/icon-set/material-symbols-outlined.umd.prod.js +5 -6
  56. package/dist/icon-set/material-symbols-rounded.umd.prod.js +5 -6
  57. package/dist/icon-set/material-symbols-sharp.umd.prod.js +5 -6
  58. package/dist/icon-set/mdi-v3.umd.prod.js +5 -6
  59. package/dist/icon-set/mdi-v4.umd.prod.js +5 -6
  60. package/dist/icon-set/mdi-v5.umd.prod.js +5 -6
  61. package/dist/icon-set/mdi-v6.umd.prod.js +5 -6
  62. package/dist/icon-set/mdi-v7.umd.prod.js +5 -6
  63. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +5 -6
  64. package/dist/icon-set/svg-eva-icons.umd.prod.js +5 -6
  65. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +5 -6
  66. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +5 -6
  67. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +5 -6
  68. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +5 -6
  69. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +5 -6
  70. package/dist/icon-set/svg-line-awesome.umd.prod.js +5 -6
  71. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +5 -6
  72. package/dist/icon-set/svg-material-icons-round.umd.prod.js +5 -6
  73. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +5 -6
  74. package/dist/icon-set/svg-material-icons.umd.prod.js +5 -6
  75. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +5 -6
  76. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +5 -6
  77. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +5 -6
  78. package/dist/icon-set/svg-mdi-v6.umd.prod.js +5 -6
  79. package/dist/icon-set/svg-mdi-v7.umd.prod.js +5 -6
  80. package/dist/icon-set/svg-themify.umd.prod.js +5 -6
  81. package/dist/icon-set/themify.umd.prod.js +5 -6
  82. package/dist/lang/ar-TN.umd.prod.js +5 -6
  83. package/dist/lang/ar.umd.prod.js +5 -6
  84. package/dist/lang/az-Latn.umd.prod.js +5 -6
  85. package/dist/lang/bg.umd.prod.js +5 -6
  86. package/dist/lang/bn.umd.prod.js +5 -6
  87. package/dist/lang/bs-BA.umd.prod.js +5 -6
  88. package/dist/lang/ca.umd.prod.js +5 -6
  89. package/dist/lang/cs.umd.prod.js +5 -6
  90. package/dist/lang/da.umd.prod.js +5 -6
  91. package/dist/lang/de-CH.umd.prod.js +5 -6
  92. package/dist/lang/de-DE.umd.prod.js +5 -6
  93. package/dist/lang/de.umd.prod.js +5 -6
  94. package/dist/lang/el.umd.prod.js +5 -6
  95. package/dist/lang/en-GB.umd.prod.js +5 -6
  96. package/dist/lang/en-US.umd.prod.js +5 -6
  97. package/dist/lang/eo.umd.prod.js +5 -6
  98. package/dist/lang/es.umd.prod.js +5 -6
  99. package/dist/lang/et.umd.prod.js +5 -6
  100. package/dist/lang/eu.umd.prod.js +5 -6
  101. package/dist/lang/fa-IR.umd.prod.js +5 -6
  102. package/dist/lang/fa.umd.prod.js +5 -6
  103. package/dist/lang/fi.umd.prod.js +5 -6
  104. package/dist/lang/fr.umd.prod.js +5 -6
  105. package/dist/lang/gn.umd.prod.js +5 -6
  106. package/dist/lang/he.umd.prod.js +5 -6
  107. package/dist/lang/hi.umd.prod.js +5 -6
  108. package/dist/lang/hr.umd.prod.js +5 -6
  109. package/dist/lang/hu.umd.prod.js +5 -6
  110. package/dist/lang/id.umd.prod.js +5 -6
  111. package/dist/lang/is.umd.prod.js +5 -6
  112. package/dist/lang/it.umd.prod.js +5 -6
  113. package/dist/lang/ja.umd.prod.js +5 -6
  114. package/dist/lang/kk.umd.prod.js +5 -6
  115. package/dist/lang/km.umd.prod.js +5 -6
  116. package/dist/lang/ko-KR.umd.prod.js +5 -6
  117. package/dist/lang/kur-CKB.umd.prod.js +5 -6
  118. package/dist/lang/lt.umd.prod.js +5 -6
  119. package/dist/lang/lu.umd.prod.js +5 -6
  120. package/dist/lang/lv.umd.prod.js +5 -6
  121. package/dist/lang/mk.umd.prod.js +5 -6
  122. package/dist/lang/ml.umd.prod.js +5 -6
  123. package/dist/lang/mm.umd.prod.js +5 -6
  124. package/dist/lang/ms-MY.umd.prod.js +5 -6
  125. package/dist/lang/ms.umd.prod.js +5 -6
  126. package/dist/lang/my.umd.prod.js +5 -6
  127. package/dist/lang/nb-NO.umd.prod.js +5 -6
  128. package/dist/lang/nl.umd.prod.js +5 -6
  129. package/dist/lang/pl.umd.prod.js +5 -6
  130. package/dist/lang/pt-BR.umd.prod.js +5 -6
  131. package/dist/lang/pt.umd.prod.js +5 -6
  132. package/dist/lang/ro.umd.prod.js +5 -6
  133. package/dist/lang/ru.umd.prod.js +5 -6
  134. package/dist/lang/sk.umd.prod.js +5 -6
  135. package/dist/lang/sl.umd.prod.js +5 -6
  136. package/dist/lang/sm.umd.prod.js +5 -6
  137. package/dist/lang/sq.umd.prod.js +5 -6
  138. package/dist/lang/sr-CYR.umd.prod.js +5 -6
  139. package/dist/lang/sr.umd.prod.js +5 -6
  140. package/dist/lang/sv.umd.prod.js +5 -6
  141. package/dist/lang/ta.umd.prod.js +5 -6
  142. package/dist/lang/th.umd.prod.js +5 -6
  143. package/dist/lang/tl.umd.prod.js +5 -6
  144. package/dist/lang/tr.umd.prod.js +5 -6
  145. package/dist/lang/ug.umd.prod.js +5 -6
  146. package/dist/lang/uk.umd.prod.js +5 -6
  147. package/dist/lang/ur-PK.umd.prod.js +5 -6
  148. package/dist/lang/uz-Cyrl.umd.prod.js +5 -6
  149. package/dist/lang/uz-Latn.umd.prod.js +5 -6
  150. package/dist/lang/vi.umd.prod.js +5 -6
  151. package/dist/lang/zh-CN.umd.prod.js +5 -6
  152. package/dist/lang/zh-TW.umd.prod.js +5 -6
  153. package/dist/quasar.addon.prod.css +1 -1
  154. package/dist/quasar.addon.rtl.prod.css +1 -1
  155. package/dist/quasar.client.js +24830 -29220
  156. package/dist/quasar.css +15 -28
  157. package/dist/quasar.prod.css +1 -1
  158. package/dist/quasar.rtl.css +14 -28
  159. package/dist/quasar.rtl.prod.css +1 -1
  160. package/dist/quasar.sass +4 -25
  161. package/dist/quasar.server.prod.cjs +78 -79
  162. package/dist/quasar.server.prod.js +78 -79
  163. package/dist/quasar.umd.js +25876 -29791
  164. package/dist/quasar.umd.prod.js +78 -79
  165. package/dist/types/api/dialog.d.ts +1 -1
  166. package/dist/types/api/qinput.d.ts +1 -1
  167. package/dist/types/api/qtable.d.ts +1 -1
  168. package/dist/types/api/qtree.d.ts +1 -1
  169. package/dist/types/api/quploader.d.ts +1 -1
  170. package/dist/types/api/slider.d.ts +2 -4
  171. package/dist/types/api/validation.d.ts +1 -1
  172. package/dist/types/api/web-storage.d.ts +6 -6
  173. package/dist/types/feature-flag.d.ts +1 -1
  174. package/dist/types/globals.d.ts +7 -4
  175. package/dist/types/index.d.ts +126 -414
  176. package/dist/types/lang.d.ts +3 -3
  177. package/dist/types/ts-helpers.d.ts +4 -9
  178. package/dist/types/utils/colors.d.ts +1 -1
  179. package/dist/types/utils/date.d.ts +8 -8
  180. package/dist/types/utils/dom.d.ts +1 -1
  181. package/dist/types/utils/run-sequential-promises.d.ts +12 -12
  182. package/dist/types/utils/scroll.d.ts +5 -5
  183. package/dist/types/utils.d.ts +16 -19
  184. package/dist/web-types/web-types.json +1 -1
  185. package/icon-set/bootstrap-icons.js +1 -4
  186. package/icon-set/svg-bootstrap-icons.js +1 -4
  187. package/icon-set/svg-fontawesome-v5.js +0 -1
  188. package/icon-set/svg-ionicons-v5.js +2 -2
  189. package/lang/ar-TN.js +10 -8
  190. package/lang/ar.js +10 -8
  191. package/lang/az-Latn.js +13 -9
  192. package/lang/bg.js +10 -8
  193. package/lang/bn.js +14 -9
  194. package/lang/bs-BA.js +13 -9
  195. package/lang/ca.js +18 -14
  196. package/lang/cs.js +9 -7
  197. package/lang/da.js +10 -8
  198. package/lang/de-CH.js +13 -9
  199. package/lang/de-DE.js +13 -9
  200. package/lang/de.js +13 -9
  201. package/lang/el.js +10 -8
  202. package/lang/en-GB.js +10 -8
  203. package/lang/en-US.js +10 -8
  204. package/lang/eo.js +14 -9
  205. package/lang/es.js +10 -8
  206. package/lang/et.js +15 -12
  207. package/lang/eu.js +15 -12
  208. package/lang/fa-IR.js +16 -8
  209. package/lang/fa.js +16 -8
  210. package/lang/fi.js +17 -8
  211. package/lang/fr.js +21 -13
  212. package/lang/gn.js +14 -12
  213. package/lang/he.js +15 -10
  214. package/lang/hi.js +8 -8
  215. package/lang/hr.js +13 -9
  216. package/lang/hu.js +10 -8
  217. package/lang/id.js +11 -9
  218. package/lang/is.js +13 -9
  219. package/lang/it.js +14 -9
  220. package/lang/ja.js +13 -8
  221. package/lang/kk.js +22 -11
  222. package/lang/km.js +9 -8
  223. package/lang/ko-KR.js +9 -10
  224. package/lang/kur-CKB.js +16 -17
  225. package/lang/lt.js +26 -19
  226. package/lang/lu.js +13 -9
  227. package/lang/lv.js +13 -9
  228. package/lang/mk.js +10 -8
  229. package/lang/ml.js +15 -14
  230. package/lang/mm.js +16 -13
  231. package/lang/ms-MY.js +16 -11
  232. package/lang/ms.js +10 -8
  233. package/lang/my.js +15 -8
  234. package/lang/nb-NO.js +10 -8
  235. package/lang/nl.js +13 -9
  236. package/lang/pl.js +13 -9
  237. package/lang/pt-BR.js +17 -10
  238. package/lang/pt.js +17 -10
  239. package/lang/ro.js +10 -8
  240. package/lang/ru.js +25 -12
  241. package/lang/sk.js +18 -9
  242. package/lang/sl.js +12 -8
  243. package/lang/sm.js +51 -47
  244. package/lang/sq.js +13 -9
  245. package/lang/sr-CYR.js +10 -8
  246. package/lang/sr.js +10 -8
  247. package/lang/sv.js +10 -8
  248. package/lang/ta.js +10 -8
  249. package/lang/th.js +12 -11
  250. package/lang/tl.js +10 -8
  251. package/lang/tr.js +8 -5
  252. package/lang/ug.js +16 -8
  253. package/lang/uk.js +22 -11
  254. package/lang/ur-PK.js +13 -11
  255. package/lang/uz-Cyrl.js +5 -5
  256. package/lang/uz-Latn.js +24 -24
  257. package/lang/vi.js +13 -9
  258. package/lang/zh-CN.js +18 -9
  259. package/lang/zh-TW.js +20 -10
  260. package/package.json +50 -64
  261. package/src/api.extends.json +15 -12
  262. package/src/components/ajax-bar/QAjaxBar.js +91 -65
  263. package/src/components/ajax-bar/QAjaxBar.json +2 -2
  264. package/src/components/ajax-bar/index.js +1 -3
  265. package/src/components/avatar/QAvatar.js +36 -28
  266. package/src/components/avatar/QAvatar.json +2 -2
  267. package/src/components/avatar/QAvatar.test.js +29 -78
  268. package/src/components/avatar/index.js +1 -3
  269. package/src/components/badge/QBadge.js +33 -26
  270. package/src/components/badge/QBadge.json +3 -3
  271. package/src/components/badge/QBadge.test.js +40 -95
  272. package/src/components/badge/index.js +1 -3
  273. package/src/components/banner/QBanner.js +46 -25
  274. package/src/components/banner/QBanner.test.js +14 -35
  275. package/src/components/banner/index.js +1 -3
  276. package/src/components/bar/QBar.js +21 -11
  277. package/src/components/bar/QBar.test.js +6 -17
  278. package/src/components/bar/index.js +1 -3
  279. package/src/components/breadcrumbs/QBreadcrumbs.js +44 -32
  280. package/src/components/breadcrumbs/QBreadcrumbs.json +10 -3
  281. package/src/components/breadcrumbs/QBreadcrumbs.test.js +56 -69
  282. package/src/components/breadcrumbs/QBreadcrumbsEl.js +28 -22
  283. package/src/components/breadcrumbs/QBreadcrumbsEl.json +5 -8
  284. package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +60 -134
  285. package/src/components/breadcrumbs/index.js +1 -4
  286. package/src/components/btn/QBtn.js +159 -103
  287. package/src/components/btn/QBtn.json +3 -6
  288. package/src/components/btn/QBtn.test.js +269 -496
  289. package/src/components/btn/index.js +1 -3
  290. package/src/components/btn/use-btn.js +82 -70
  291. package/src/components/btn/use-btn.json +33 -16
  292. package/src/components/btn/use-btn.test.js +30 -47
  293. package/src/components/btn-dropdown/QBtnDropdown.js +143 -104
  294. package/src/components/btn-dropdown/QBtnDropdown.json +41 -16
  295. package/src/components/btn-dropdown/index.js +1 -3
  296. package/src/components/btn-group/QBtnGroup.js +18 -6
  297. package/src/components/btn-group/index.js +1 -3
  298. package/src/components/btn-toggle/QBtnToggle.js +80 -61
  299. package/src/components/btn-toggle/QBtnToggle.json +16 -9
  300. package/src/components/btn-toggle/index.js +1 -3
  301. package/src/components/card/QCard.js +14 -9
  302. package/src/components/card/QCard.json +1 -1
  303. package/src/components/card/QCardActions.js +8 -5
  304. package/src/components/card/QCardActions.json +9 -1
  305. package/src/components/card/QCardSection.js +5 -4
  306. package/src/components/card/QCardSection.json +1 -1
  307. package/src/components/card/index.js +1 -5
  308. package/src/components/carousel/QCarousel.js +194 -125
  309. package/src/components/carousel/QCarousel.json +10 -11
  310. package/src/components/carousel/QCarouselControl.js +26 -13
  311. package/src/components/carousel/QCarouselControl.json +10 -5
  312. package/src/components/carousel/QCarouselSlide.js +13 -10
  313. package/src/components/carousel/QCarouselSlide.json +1 -1
  314. package/src/components/carousel/index.js +1 -5
  315. package/src/components/chat/QChatMessage.js +62 -57
  316. package/src/components/chat/QChatMessage.json +8 -5
  317. package/src/components/chat/index.js +1 -3
  318. package/src/components/checkbox/QCheckbox.js +56 -41
  319. package/src/components/checkbox/QCheckbox.json +1 -1
  320. package/src/components/checkbox/index.js +1 -3
  321. package/src/components/checkbox/use-checkbox.js +112 -83
  322. package/src/components/checkbox/use-checkbox.json +15 -12
  323. package/src/components/chip/QChip.js +101 -73
  324. package/src/components/chip/QChip.json +6 -6
  325. package/src/components/chip/QChip.test.js +72 -180
  326. package/src/components/chip/index.js +1 -3
  327. package/src/components/circular-progress/QCircularProgress.js +92 -57
  328. package/src/components/circular-progress/QCircularProgress.json +2 -2
  329. package/src/components/circular-progress/index.js +1 -3
  330. package/src/components/color/QColor.js +550 -367
  331. package/src/components/color/QColor.json +8 -8
  332. package/src/components/color/index.js +1 -3
  333. package/src/components/date/QDate.js +902 -607
  334. package/src/components/date/QDate.json +32 -23
  335. package/src/components/date/index.js +1 -3
  336. package/src/components/date/use-datetime.js +12 -14
  337. package/src/components/date/use-datetime.json +7 -7
  338. package/src/components/dialog/QDialog.js +178 -139
  339. package/src/components/dialog/QDialog.json +8 -4
  340. package/src/components/dialog/QDialog.test.js +123 -228
  341. package/src/components/dialog/index.js +1 -3
  342. package/src/components/drawer/QDrawer.js +306 -242
  343. package/src/components/drawer/QDrawer.json +4 -4
  344. package/src/components/drawer/index.js +1 -3
  345. package/src/components/editor/QEditor.js +409 -190
  346. package/src/components/editor/QEditor.json +33 -32
  347. package/src/components/editor/editor-caret.js +78 -83
  348. package/src/components/editor/editor-utils.js +176 -130
  349. package/src/components/editor/index.js +1 -3
  350. package/src/components/expansion-item/QExpansionItem.js +149 -103
  351. package/src/components/expansion-item/QExpansionItem.json +21 -24
  352. package/src/components/expansion-item/index.js +1 -3
  353. package/src/components/fab/QFab.js +86 -54
  354. package/src/components/fab/QFab.json +6 -3
  355. package/src/components/fab/QFabAction.js +34 -29
  356. package/src/components/fab/QFabAction.json +4 -7
  357. package/src/components/fab/index.js +1 -4
  358. package/src/components/fab/use-fab.js +20 -20
  359. package/src/components/fab/use-fab.json +10 -13
  360. package/src/components/field/QField.js +7 -5
  361. package/src/components/field/QField.json +6 -6
  362. package/src/components/field/QField.sass +0 -8
  363. package/src/components/field/index.js +1 -3
  364. package/src/components/file/QFile.js +95 -74
  365. package/src/components/file/QFile.json +17 -14
  366. package/src/components/file/index.js +1 -3
  367. package/src/components/footer/QFooter.js +110 -67
  368. package/src/components/footer/QFooter.json +2 -2
  369. package/src/components/footer/index.js +1 -3
  370. package/src/components/form/QForm.js +93 -58
  371. package/src/components/form/QForm.json +2 -2
  372. package/src/components/form/QFormChildMixin.js +10 -11
  373. package/src/components/form/QFormChildMixin.json +2 -2
  374. package/src/components/form/index.js +1 -4
  375. package/src/components/header/QHeader.js +93 -56
  376. package/src/components/header/QHeader.json +2 -2
  377. package/src/components/header/index.js +1 -3
  378. package/src/components/icon/QIcon.js +70 -57
  379. package/src/components/icon/QIcon.json +2 -2
  380. package/src/components/icon/index.js +1 -3
  381. package/src/components/img/QImg.js +104 -98
  382. package/src/components/img/QImg.json +20 -18
  383. package/src/components/img/index.js +1 -3
  384. package/src/components/infinite-scroll/QInfiniteScroll.js +123 -64
  385. package/src/components/infinite-scroll/QInfiniteScroll.json +1 -1
  386. package/src/components/infinite-scroll/index.js +1 -3
  387. package/src/components/inner-loading/QInnerLoading.js +31 -23
  388. package/src/components/inner-loading/QInnerLoading.json +9 -9
  389. package/src/components/inner-loading/index.js +1 -3
  390. package/src/components/input/QInput.js +179 -137
  391. package/src/components/input/QInput.json +25 -15
  392. package/src/components/input/index.js +1 -3
  393. package/src/components/input/use-mask.js +328 -243
  394. package/src/components/input/use-mask.json +16 -8
  395. package/src/components/intersection/QIntersection.js +45 -28
  396. package/src/components/intersection/QIntersection.json +7 -10
  397. package/src/components/intersection/index.js +1 -3
  398. package/src/components/item/QItem.js +60 -52
  399. package/src/components/item/QItem.json +6 -9
  400. package/src/components/item/QItemLabel.js +23 -15
  401. package/src/components/item/QItemLabel.json +1 -1
  402. package/src/components/item/QItemSection.js +11 -8
  403. package/src/components/item/QList.js +21 -13
  404. package/src/components/item/QList.json +1 -1
  405. package/src/components/item/QList.test.js +7 -11
  406. package/src/components/item/index.js +1 -7
  407. package/src/components/knob/QKnob.js +86 -76
  408. package/src/components/knob/QKnob.json +6 -3
  409. package/src/components/knob/index.js +1 -3
  410. package/src/components/layout/QLayout.js +98 -69
  411. package/src/components/layout/QLayout.json +2 -2
  412. package/src/components/layout/index.js +1 -3
  413. package/src/components/linear-progress/QLinearProgress.js +78 -47
  414. package/src/components/linear-progress/QLinearProgress.json +3 -3
  415. package/src/components/linear-progress/index.js +1 -3
  416. package/src/components/markup-table/QMarkupTable.js +25 -17
  417. package/src/components/markup-table/QMarkupTable.json +2 -2
  418. package/src/components/markup-table/index.js +1 -3
  419. package/src/components/menu/QMenu.js +144 -100
  420. package/src/components/menu/QMenu.json +39 -10
  421. package/src/components/menu/index.js +1 -3
  422. package/src/components/no-ssr/QNoSsr.js +5 -5
  423. package/src/components/no-ssr/QNoSsr.json +2 -2
  424. package/src/components/no-ssr/index.js +1 -3
  425. package/src/components/option-group/QOptionGroup.js +84 -66
  426. package/src/components/option-group/QOptionGroup.json +35 -21
  427. package/src/components/option-group/index.js +1 -3
  428. package/src/components/page/QPage.js +35 -22
  429. package/src/components/page/QPage.json +1 -1
  430. package/src/components/page/QPageContainer.js +24 -11
  431. package/src/components/page/index.js +1 -4
  432. package/src/components/page-scroller/QPageScroller.js +49 -32
  433. package/src/components/page-scroller/QPageScroller.json +2 -2
  434. package/src/components/page-scroller/index.js +1 -3
  435. package/src/components/page-sticky/QPageSticky.js +1 -1
  436. package/src/components/page-sticky/QPageSticky.json +9 -4
  437. package/src/components/page-sticky/index.js +1 -3
  438. package/src/components/page-sticky/use-page-sticky.js +47 -36
  439. package/src/components/pagination/QPagination.js +210 -146
  440. package/src/components/pagination/QPagination.json +35 -21
  441. package/src/components/pagination/index.js +1 -3
  442. package/src/components/parallax/QParallax.js +81 -56
  443. package/src/components/parallax/index.js +1 -3
  444. package/src/components/popup-edit/QPopupEdit.js +88 -59
  445. package/src/components/popup-edit/QPopupEdit.json +40 -16
  446. package/src/components/popup-edit/index.js +1 -3
  447. package/src/components/popup-proxy/QPopupProxy.js +30 -19
  448. package/src/components/popup-proxy/QPopupProxy.json +3 -3
  449. package/src/components/popup-proxy/index.js +1 -3
  450. package/src/components/pull-to-refresh/QPullToRefresh.js +71 -49
  451. package/src/components/pull-to-refresh/index.js +1 -3
  452. package/src/components/radio/QRadio.js +133 -95
  453. package/src/components/radio/QRadio.json +11 -8
  454. package/src/components/radio/index.js +1 -3
  455. package/src/components/range/QRange.js +151 -104
  456. package/src/components/range/QRange.json +9 -9
  457. package/src/components/range/index.js +1 -3
  458. package/src/components/rating/QRating.js +171 -112
  459. package/src/components/rating/QRating.json +19 -12
  460. package/src/components/rating/index.js +1 -3
  461. package/src/components/resize-observer/QResizeObserver.js +52 -30
  462. package/src/components/resize-observer/QResizeObserver.json +2 -2
  463. package/src/components/resize-observer/index.js +1 -3
  464. package/src/components/responsive/QResponsive.js +27 -14
  465. package/src/components/responsive/QResponsive.json +1 -1
  466. package/src/components/responsive/index.js +1 -3
  467. package/src/components/scroll-area/QScrollArea.js +279 -192
  468. package/src/components/scroll-area/QScrollArea.json +31 -21
  469. package/src/components/scroll-area/ScrollAreaControls.js +6 -11
  470. package/src/components/scroll-area/index.js +1 -3
  471. package/src/components/scroll-observer/QScrollObserver.js +46 -26
  472. package/src/components/scroll-observer/QScrollObserver.json +4 -4
  473. package/src/components/scroll-observer/index.js +1 -3
  474. package/src/components/select/QSelect.js +710 -519
  475. package/src/components/select/QSelect.json +70 -45
  476. package/src/components/select/index.js +1 -3
  477. package/src/components/separator/QSeparator.js +34 -30
  478. package/src/components/separator/QSeparator.json +4 -4
  479. package/src/components/separator/index.js +1 -3
  480. package/src/components/skeleton/QSkeleton.js +49 -23
  481. package/src/components/skeleton/QSkeleton.json +26 -9
  482. package/src/components/skeleton/index.js +1 -3
  483. package/src/components/slide-item/QSlideItem.js +121 -94
  484. package/src/components/slide-item/QSlideItem.json +2 -2
  485. package/src/components/slide-item/index.js +1 -3
  486. package/src/components/slide-transition/QSlideTransition.js +34 -26
  487. package/src/components/slide-transition/index.js +1 -3
  488. package/src/components/slider/QSlider.js +64 -43
  489. package/src/components/slider/QSlider.json +6 -6
  490. package/src/components/slider/index.js +1 -3
  491. package/src/components/slider/use-slider.js +327 -220
  492. package/src/components/slider/use-slider.json +32 -32
  493. package/src/components/space/QSpace.js +1 -1
  494. package/src/components/space/QSpace.test.js +1 -4
  495. package/src/components/space/index.js +1 -3
  496. package/src/components/spinner/QSpinner.js +23 -18
  497. package/src/components/spinner/QSpinner.json +1 -1
  498. package/src/components/spinner/QSpinner.test.js +11 -27
  499. package/src/components/spinner/QSpinnerAudio.js +13 -11
  500. package/src/components/spinner/QSpinnerAudio.json +1 -1
  501. package/src/components/spinner/QSpinnerAudio.test.js +9 -21
  502. package/src/components/spinner/QSpinnerBall.js +13 -11
  503. package/src/components/spinner/QSpinnerBall.json +1 -1
  504. package/src/components/spinner/QSpinnerBall.test.js +9 -21
  505. package/src/components/spinner/QSpinnerBars.js +13 -11
  506. package/src/components/spinner/QSpinnerBars.json +1 -1
  507. package/src/components/spinner/QSpinnerBars.test.js +9 -21
  508. package/src/components/spinner/QSpinnerBox.js +13 -11
  509. package/src/components/spinner/QSpinnerBox.json +1 -1
  510. package/src/components/spinner/QSpinnerBox.test.js +9 -21
  511. package/src/components/spinner/QSpinnerClock.js +13 -11
  512. package/src/components/spinner/QSpinnerClock.json +1 -1
  513. package/src/components/spinner/QSpinnerClock.test.js +9 -21
  514. package/src/components/spinner/QSpinnerComment.js +13 -11
  515. package/src/components/spinner/QSpinnerComment.json +1 -1
  516. package/src/components/spinner/QSpinnerComment.test.js +9 -21
  517. package/src/components/spinner/QSpinnerCube.js +13 -11
  518. package/src/components/spinner/QSpinnerCube.json +1 -1
  519. package/src/components/spinner/QSpinnerCube.test.js +9 -21
  520. package/src/components/spinner/QSpinnerDots.js +13 -11
  521. package/src/components/spinner/QSpinnerDots.json +1 -1
  522. package/src/components/spinner/QSpinnerDots.test.js +9 -21
  523. package/src/components/spinner/QSpinnerFacebook.js +13 -11
  524. package/src/components/spinner/QSpinnerFacebook.json +1 -1
  525. package/src/components/spinner/QSpinnerFacebook.test.js +9 -21
  526. package/src/components/spinner/QSpinnerGears.js +13 -11
  527. package/src/components/spinner/QSpinnerGears.json +1 -1
  528. package/src/components/spinner/QSpinnerGears.test.js +9 -21
  529. package/src/components/spinner/QSpinnerGrid.js +13 -11
  530. package/src/components/spinner/QSpinnerGrid.json +1 -1
  531. package/src/components/spinner/QSpinnerGrid.test.js +9 -21
  532. package/src/components/spinner/QSpinnerHearts.js +13 -11
  533. package/src/components/spinner/QSpinnerHearts.json +1 -1
  534. package/src/components/spinner/QSpinnerHearts.test.js +9 -21
  535. package/src/components/spinner/QSpinnerHourglass.js +13 -11
  536. package/src/components/spinner/QSpinnerHourglass.json +1 -1
  537. package/src/components/spinner/QSpinnerHourglass.test.js +9 -21
  538. package/src/components/spinner/QSpinnerInfinity.js +12 -10
  539. package/src/components/spinner/QSpinnerInfinity.json +1 -1
  540. package/src/components/spinner/QSpinnerInfinity.test.js +9 -21
  541. package/src/components/spinner/QSpinnerIos.js +13 -11
  542. package/src/components/spinner/QSpinnerIos.json +1 -1
  543. package/src/components/spinner/QSpinnerIos.test.js +9 -21
  544. package/src/components/spinner/QSpinnerOrbit.js +13 -11
  545. package/src/components/spinner/QSpinnerOrbit.json +1 -1
  546. package/src/components/spinner/QSpinnerOrbit.test.js +9 -21
  547. package/src/components/spinner/QSpinnerOval.js +13 -11
  548. package/src/components/spinner/QSpinnerOval.json +1 -1
  549. package/src/components/spinner/QSpinnerOval.test.js +9 -21
  550. package/src/components/spinner/QSpinnerPie.js +13 -11
  551. package/src/components/spinner/QSpinnerPie.json +1 -1
  552. package/src/components/spinner/QSpinnerPie.test.js +9 -21
  553. package/src/components/spinner/QSpinnerPuff.js +13 -11
  554. package/src/components/spinner/QSpinnerPuff.json +1 -1
  555. package/src/components/spinner/QSpinnerPuff.test.js +9 -21
  556. package/src/components/spinner/QSpinnerRadio.js +13 -11
  557. package/src/components/spinner/QSpinnerRadio.json +1 -1
  558. package/src/components/spinner/QSpinnerRadio.test.js +9 -21
  559. package/src/components/spinner/QSpinnerRings.js +13 -11
  560. package/src/components/spinner/QSpinnerRings.json +1 -1
  561. package/src/components/spinner/QSpinnerRings.test.js +9 -21
  562. package/src/components/spinner/QSpinnerTail.js +12 -10
  563. package/src/components/spinner/QSpinnerTail.json +1 -1
  564. package/src/components/spinner/QSpinnerTail.test.js +9 -21
  565. package/src/components/spinner/index.js +0 -1
  566. package/src/components/spinner/spinner.json +2 -2
  567. package/src/components/spinner/use-spinner.js +7 -7
  568. package/src/components/spinner/use-spinner.test.js +1 -1
  569. package/src/components/splitter/QSplitter.js +133 -94
  570. package/src/components/splitter/QSplitter.json +10 -19
  571. package/src/components/splitter/index.js +1 -3
  572. package/src/components/stepper/QStep.js +65 -42
  573. package/src/components/stepper/QStep.json +5 -5
  574. package/src/components/stepper/QStepper.js +62 -39
  575. package/src/components/stepper/QStepper.json +2 -2
  576. package/src/components/stepper/QStepperNavigation.js +1 -1
  577. package/src/components/stepper/StepHeader.js +87 -67
  578. package/src/components/stepper/index.js +1 -5
  579. package/src/components/tab-panels/QTabPanel.js +3 -2
  580. package/src/components/tab-panels/QTabPanel.json +1 -1
  581. package/src/components/tab-panels/QTabPanels.js +12 -6
  582. package/src/components/tab-panels/QTabPanels.json +1 -1
  583. package/src/components/tab-panels/index.js +1 -4
  584. package/src/components/table/QTable.js +544 -426
  585. package/src/components/table/QTable.json +168 -165
  586. package/src/components/table/QTd.js +18 -13
  587. package/src/components/table/QTd.json +1 -1
  588. package/src/components/table/QTh.js +25 -20
  589. package/src/components/table/QTh.json +1 -1
  590. package/src/components/table/QTr.js +17 -9
  591. package/src/components/table/QTr.json +1 -1
  592. package/src/components/table/get-table-middle.js +2 -4
  593. package/src/components/table/index.js +1 -6
  594. package/src/components/table/table-column-selection.js +45 -35
  595. package/src/components/table/table-filter.js +9 -8
  596. package/src/components/table/table-pagination.js +75 -52
  597. package/src/components/table/table-row-expand.js +15 -16
  598. package/src/components/table/table-row-selection.js +31 -31
  599. package/src/components/table/table-sort.js +26 -29
  600. package/src/components/tabs/QRouteTab.js +10 -12
  601. package/src/components/tabs/QRouteTab.json +6 -6
  602. package/src/components/tabs/QTab.js +1 -1
  603. package/src/components/tabs/QTab.json +1 -1
  604. package/src/components/tabs/QTabs.js +283 -205
  605. package/src/components/tabs/QTabs.json +9 -9
  606. package/src/components/tabs/index.js +1 -5
  607. package/src/components/tabs/use-tab.js +127 -103
  608. package/src/components/tabs/use-tab.json +8 -8
  609. package/src/components/time/QTime.js +502 -383
  610. package/src/components/time/QTime.json +19 -15
  611. package/src/components/time/index.js +1 -3
  612. package/src/components/timeline/QTimeline.js +10 -7
  613. package/src/components/timeline/QTimeline.json +2 -2
  614. package/src/components/timeline/QTimelineEntry.js +44 -27
  615. package/src/components/timeline/QTimelineEntry.json +7 -5
  616. package/src/components/timeline/index.js +1 -4
  617. package/src/components/toggle/QToggle.js +29 -19
  618. package/src/components/toggle/QToggle.json +1 -1
  619. package/src/components/toggle/index.js +1 -3
  620. package/src/components/toolbar/QToolbar.js +7 -5
  621. package/src/components/toolbar/QToolbar.test.js +2 -6
  622. package/src/components/toolbar/QToolbarTitle.js +5 -4
  623. package/src/components/toolbar/QToolbarTitle.test.js +2 -6
  624. package/src/components/toolbar/index.js +1 -4
  625. package/src/components/tooltip/QTooltip.js +125 -72
  626. package/src/components/tooltip/QTooltip.json +34 -10
  627. package/src/components/tooltip/index.js +1 -3
  628. package/src/components/tree/QTree.js +417 -297
  629. package/src/components/tree/QTree.json +27 -25
  630. package/src/components/tree/index.js +1 -3
  631. package/src/components/uploader/QUploader.json +9 -6
  632. package/src/components/uploader/QUploaderAddTrigger.js +5 -2
  633. package/src/components/uploader/index.js +1 -4
  634. package/src/components/uploader/uploader-core.js +262 -178
  635. package/src/components/uploader/xhr-uploader-plugin.js +96 -89
  636. package/src/components/uploader/xhr-uploader-plugin.json +29 -29
  637. package/src/components/video/QVideo.js +25 -19
  638. package/src/components/video/QVideo.json +5 -5
  639. package/src/components/video/QVideo.test.js +55 -85
  640. package/src/components/video/index.js +1 -3
  641. package/src/components/virtual-scroll/QVirtualScroll.js +89 -37
  642. package/src/components/virtual-scroll/QVirtualScroll.json +6 -6
  643. package/src/components/virtual-scroll/index.js +1 -3
  644. package/src/components/virtual-scroll/use-virtual-scroll.js +421 -240
  645. package/src/components/virtual-scroll/use-virtual-scroll.json +20 -13
  646. package/src/composables/private.use-align/use-align.js +8 -5
  647. package/src/composables/private.use-align/use-align.test.js +9 -17
  648. package/src/composables/private.use-anchor/use-anchor-static.json +2 -7
  649. package/src/composables/private.use-anchor/use-anchor.js +79 -62
  650. package/src/composables/private.use-anchor/use-anchor.json +1 -1
  651. package/src/composables/private.use-dark/use-dark.js +2 -6
  652. package/src/composables/private.use-dark/use-dark.test.js +7 -21
  653. package/src/composables/private.use-field/use-field.js +384 -251
  654. package/src/composables/private.use-field/use-field.json +10 -10
  655. package/src/composables/private.use-file/use-file-dom-props.js +11 -15
  656. package/src/composables/private.use-file/use-file.js +86 -67
  657. package/src/composables/private.use-file/use-file.json +8 -8
  658. package/src/composables/private.use-fullscreen/use-fullscreen.js +35 -17
  659. package/src/composables/private.use-fullscreen/use-fullscreen.json +1 -1
  660. package/src/composables/private.use-history/use-history.js +4 -4
  661. package/src/composables/private.use-history/use-history.test.js +9 -21
  662. package/src/composables/private.use-key-composition/use-key-composition.js +16 -12
  663. package/src/composables/private.use-model-toggle/use-model-toggle.js +44 -35
  664. package/src/composables/private.use-model-toggle/use-model-toggle.json +2 -2
  665. package/src/composables/private.use-panel/use-panel.child.json +1 -1
  666. package/src/composables/private.use-panel/use-panel.js +131 -91
  667. package/src/composables/private.use-panel/use-panel.json +18 -18
  668. package/src/composables/private.use-portal/use-portal.js +20 -15
  669. package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +4 -4
  670. package/src/composables/private.use-ratio/use-ratio.js +3 -3
  671. package/src/composables/private.use-ratio/use-ratio.json +2 -7
  672. package/src/composables/private.use-refocus-target/use-refocus-target.js +7 -8
  673. package/src/composables/private.use-router-link/use-router-link.js +111 -110
  674. package/src/composables/private.use-router-link/use-router-link.json +6 -9
  675. package/src/composables/private.use-scroll-target/use-scroll-target.js +14 -11
  676. package/src/composables/private.use-size/use-size.js +6 -4
  677. package/src/composables/private.use-size/use-size.json +1 -1
  678. package/src/composables/private.use-size/use-size.test.js +1 -1
  679. package/src/composables/private.use-transition/use-transition.js +17 -11
  680. package/src/composables/private.use-transition/use-transition.json +1 -1
  681. package/src/composables/private.use-transition/use-transition.test.js +7 -21
  682. package/src/composables/private.use-validate/use-validate.js +78 -67
  683. package/src/composables/private.use-validate/use-validate.json +9 -12
  684. package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +12 -6
  685. package/src/composables/use-form/private.use-form.js +4 -4
  686. package/src/composables/use-form/private.use-form.json +1 -1
  687. package/src/composables/use-form/private.use-form.test.js +17 -15
  688. package/src/composables/use-form/use-form-child.js +25 -14
  689. package/src/composables/use-hydration/use-hydration.js +1 -1
  690. package/src/composables/use-hydration/use-hydration.test.js +2 -4
  691. package/src/composables/use-id/use-id.js +10 -12
  692. package/src/composables/use-id/use-id.test.js +1 -1
  693. package/src/composables/use-interval/use-interval.js +3 -3
  694. package/src/composables/use-interval/use-interval.test.js +6 -9
  695. package/src/composables/use-meta/use-meta.js +13 -10
  696. package/src/composables/use-quasar/use-quasar.js +1 -1
  697. package/src/composables/use-quasar/use-quasar.test.js +4 -10
  698. package/src/composables/use-render-cache/use-render-cache.js +16 -24
  699. package/src/composables/use-split-attrs/use-split-attrs.js +9 -5
  700. package/src/composables/use-split-attrs/use-split-attrs.test.js +17 -15
  701. package/src/composables/use-tick/use-tick.js +10 -5
  702. package/src/composables/use-tick/use-tick.test.js +5 -8
  703. package/src/composables/use-timeout/use-timeout.js +3 -3
  704. package/src/composables/use-timeout/use-timeout.test.js +6 -9
  705. package/src/composables.js +0 -1
  706. package/src/css/core/helpers.sass +3 -16
  707. package/src/directives/close-popup/ClosePopup.js +41 -35
  708. package/src/directives/close-popup/ClosePopup.json +1 -1
  709. package/src/directives/intersection/Intersection.js +25 -28
  710. package/src/directives/intersection/Intersection.json +6 -6
  711. package/src/directives/morph/Morph.js +87 -87
  712. package/src/directives/morph/Morph.json +15 -13
  713. package/src/directives/mutation/Mutation.js +23 -24
  714. package/src/directives/mutation/Mutation.json +11 -11
  715. package/src/directives/ripple/Ripple.js +88 -79
  716. package/src/directives/ripple/Ripple.json +10 -10
  717. package/src/directives/ripple/Ripple.test.js +31 -87
  718. package/src/directives/scroll/Scroll.js +43 -30
  719. package/src/directives/scroll/Scroll.json +4 -2
  720. package/src/directives/scroll-fire/ScrollFire.js +43 -38
  721. package/src/directives/scroll-fire/ScrollFire.json +1 -1
  722. package/src/directives/touch-hold/TouchHold.js +155 -139
  723. package/src/directives/touch-hold/TouchHold.json +2 -2
  724. package/src/directives/touch-pan/TouchPan.js +311 -278
  725. package/src/directives/touch-pan/TouchPan.json +6 -4
  726. package/src/directives/touch-repeat/TouchRepeat.js +222 -188
  727. package/src/directives/touch-repeat/TouchRepeat.json +5 -3
  728. package/src/directives/touch-swipe/TouchSwipe.js +235 -214
  729. package/src/directives/touch-swipe/TouchSwipe.json +5 -3
  730. package/src/flags.dev.js +10 -17
  731. package/src/index.dev.js +2 -0
  732. package/src/index.ssr.js +2 -6
  733. package/src/index.umd.js +4 -2
  734. package/src/install-quasar.js +92 -76
  735. package/src/plugins/addressbar/AddressbarColor.js +28 -25
  736. package/src/plugins/addressbar/AddressbarColor.json +1 -1
  737. package/src/plugins/addressbar/AddressbarColor.test.js +10 -9
  738. package/src/plugins/app-fullscreen/AppFullscreen.js +50 -51
  739. package/src/plugins/app-fullscreen/AppFullscreen.json +6 -10
  740. package/src/plugins/app-fullscreen/AppFullscreen.test.js +11 -26
  741. package/src/plugins/app-fullscreen/test/mock-fullscreen.js +7 -5
  742. package/src/plugins/app-visibility/AppVisibility.js +21 -17
  743. package/src/plugins/app-visibility/AppVisibility.test.js +3 -1
  744. package/src/plugins/bottom-sheet/BottomSheet.js +1 -1
  745. package/src/plugins/bottom-sheet/BottomSheet.json +9 -9
  746. package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +132 -95
  747. package/src/plugins/cookies/Cookies.js +50 -58
  748. package/src/plugins/cookies/Cookies.json +24 -16
  749. package/src/plugins/dark/Dark.js +61 -55
  750. package/src/plugins/dark/Dark.json +6 -6
  751. package/src/plugins/dark/Dark.test.js +26 -44
  752. package/src/plugins/dialog/Dialog.js +1 -1
  753. package/src/plugins/dialog/Dialog.json +29 -21
  754. package/src/plugins/dialog/component/DialogPluginComponent.js +122 -121
  755. package/src/plugins/icon-set/IconSet.js +63 -56
  756. package/src/plugins/icon-set/IconSet.json +421 -419
  757. package/src/plugins/icon-set/IconSet.test.js +8 -7
  758. package/src/plugins/lang/Lang.js +115 -96
  759. package/src/plugins/lang/Lang.json +201 -175
  760. package/src/plugins/lang/Lang.test.js +52 -20
  761. package/src/plugins/loading/Loading.js +175 -143
  762. package/src/plugins/loading/Loading.json +15 -15
  763. package/src/plugins/loading-bar/LoadingBar.js +61 -56
  764. package/src/plugins/loading-bar/LoadingBar.json +2 -2
  765. package/src/plugins/meta/Meta.js +91 -81
  766. package/src/plugins/notify/Notify.js +275 -221
  767. package/src/plugins/notify/Notify.json +79 -71
  768. package/src/plugins/platform/Platform.js +105 -112
  769. package/src/plugins/platform/Platform.json +12 -8
  770. package/src/plugins/platform/Platform.test.js +4 -7
  771. package/src/plugins/private.body/Body.js +19 -23
  772. package/src/plugins/private.body/Body.test.js +4 -6
  773. package/src/plugins/private.history/History.js +27 -30
  774. package/src/plugins/screen/Screen.js +160 -147
  775. package/src/plugins/screen/Screen.json +6 -6
  776. package/src/plugins/screen/Screen.test.js +6 -12
  777. package/src/plugins/storage/LocalStorage.js +5 -4
  778. package/src/plugins/storage/LocalStorage.json +1 -1
  779. package/src/plugins/storage/LocalStorage.test.js +56 -62
  780. package/src/plugins/storage/SessionStorage.js +5 -4
  781. package/src/plugins/storage/SessionStorage.json +1 -1
  782. package/src/plugins/storage/SessionStorage.test.js +56 -62
  783. package/src/plugins/storage/engine/web-storage.js +24 -26
  784. package/src/plugins/storage/engine/web-storage.json +45 -15
  785. package/src/utils/EventBus/EventBus.js +12 -13
  786. package/src/utils/clone/clone.js +27 -28
  787. package/src/utils/clone/clone.test.js +27 -52
  788. package/src/utils/colors/colors.js +69 -63
  789. package/src/utils/colors/colors.test.js +360 -270
  790. package/src/utils/copy-to-clipboard/copy-to-clipboard.js +9 -10
  791. package/src/utils/create-meta-mixin/create-meta-mixin.js +17 -19
  792. package/src/utils/create-uploader-component/create-uploader-component.js +20 -14
  793. package/src/utils/css-var/get-css-var.js +4 -2
  794. package/src/utils/css-var/get-css-var.test.js +4 -11
  795. package/src/utils/css-var/set-css-var.js +2 -2
  796. package/src/utils/css-var/set-css-var.test.js +6 -12
  797. package/src/utils/date/date.js +251 -243
  798. package/src/utils/date/private.persian.js +54 -44
  799. package/src/utils/debounce/debounce.js +5 -5
  800. package/src/utils/debounce/debounce.test.js +3 -10
  801. package/src/utils/dom/dom.js +21 -22
  802. package/src/utils/dom/dom.test.js +19 -39
  803. package/src/utils/event/event.js +53 -49
  804. package/src/utils/export-file/export-file.js +11 -12
  805. package/src/utils/extend/extend.js +30 -26
  806. package/src/utils/extend/extend.test.js +36 -42
  807. package/src/utils/format/format.js +11 -13
  808. package/src/utils/format/format.test.js +50 -61
  809. package/src/utils/frame-debounce/frame-debounce.js +5 -3
  810. package/src/utils/frame-debounce/frame-debounce.test.js +3 -10
  811. package/src/utils/is/is.js +27 -23
  812. package/src/utils/is/is.test.js +100 -84
  813. package/src/utils/morph/morph.js +470 -377
  814. package/src/utils/open-url/open-url.js +10 -21
  815. package/src/utils/patterns/patterns.js +11 -7
  816. package/src/utils/patterns/patterns.test.js +2 -0
  817. package/src/utils/private.click-outside/click-outside.js +28 -26
  818. package/src/utils/private.config/instance-config.js +1 -1
  819. package/src/utils/private.config/instance-config.test.js +11 -7
  820. package/src/utils/private.config/nodes.js +14 -14
  821. package/src/utils/private.config/nodes.test.js +32 -38
  822. package/src/utils/private.create/create.js +10 -4
  823. package/src/utils/private.create/create.test.js +11 -7
  824. package/src/utils/private.dialog/create-dialog.js +70 -59
  825. package/src/utils/private.dialog/create-dialog.json +13 -6
  826. package/src/utils/private.focus/focus-manager.js +7 -8
  827. package/src/utils/private.focus/focus-manager.test.js +13 -18
  828. package/src/utils/private.focus/focusout.js +4 -4
  829. package/src/utils/private.focus/focusout.test.js +10 -22
  830. package/src/utils/private.get-emits-object/get-emits-object.js +2 -2
  831. package/src/utils/private.get-emits-object/get-emits-object.test.js +4 -10
  832. package/src/utils/private.inject-obj-prop/inject-obj-prop.js +3 -3
  833. package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +20 -49
  834. package/src/utils/private.keyboard/escape-key.js +10 -10
  835. package/src/utils/private.keyboard/escape-key.test.js +10 -22
  836. package/src/utils/private.keyboard/key-composition.js +9 -7
  837. package/src/utils/private.portal/portal.js +7 -10
  838. package/src/utils/private.position-engine/position-engine.js +127 -75
  839. package/src/utils/private.render/render.js +9 -24
  840. package/src/utils/private.render/render.test.js +40 -55
  841. package/src/utils/private.rtl/rtl.js +1 -3
  842. package/src/utils/private.selection/selection.js +6 -6
  843. package/src/utils/private.selection/selection.test.js +7 -13
  844. package/src/utils/private.sort/sort.js +4 -6
  845. package/src/utils/private.symbols/symbols.js +1 -1
  846. package/src/utils/private.touch/touch.js +16 -16
  847. package/src/utils/private.touch/touch.test.js +56 -16
  848. package/src/utils/private.vm/vm.js +6 -7
  849. package/src/utils/private.vm/vm.test.js +32 -32
  850. package/src/utils/run-sequential-promises/run-sequential-promises.js +56 -50
  851. package/src/utils/scroll/prevent-scroll.js +75 -47
  852. package/src/utils/scroll/scroll.js +51 -44
  853. package/src/utils/throttle/throttle.js +7 -4
  854. package/src/utils/throttle/throttle.test.js +2 -7
  855. package/src/utils/uid/uid.js +34 -22
  856. package/wrappers/index.cjs +17 -15
  857. package/wrappers/index.js +15 -15
@@ -3,7 +3,7 @@ import { isObject } from '../is/is.js'
3
3
  let id = 0
4
4
  let offsetBase = void 0
5
5
 
6
- function getAbsolutePosition (el, resize) {
6
+ function getAbsolutePosition(el, resize) {
7
7
  if (offsetBase === void 0) {
8
8
  offsetBase = document.createElement('div')
9
9
  offsetBase.style.cssText = 'position: absolute; left: 0; top: 0'
@@ -12,7 +12,8 @@ function getAbsolutePosition (el, resize) {
12
12
 
13
13
  const boundingRect = el.getBoundingClientRect()
14
14
  const baseRect = offsetBase.getBoundingClientRect()
15
- const { marginLeft, marginRight, marginTop, marginBottom } = window.getComputedStyle(el)
15
+ const { marginLeft, marginRight, marginTop, marginBottom } =
16
+ window.getComputedStyle(el)
16
17
  const marginH = parseInt(marginLeft, 10) + parseInt(marginRight, 10)
17
18
  const marginV = parseInt(marginTop, 10) + parseInt(marginBottom, 10)
18
19
 
@@ -21,14 +22,16 @@ function getAbsolutePosition (el, resize) {
21
22
  top: boundingRect.top - baseRect.top,
22
23
  width: boundingRect.right - boundingRect.left,
23
24
  height: boundingRect.bottom - boundingRect.top,
24
- widthM: boundingRect.right - boundingRect.left + (resize === true ? 0 : marginH),
25
- heightM: boundingRect.bottom - boundingRect.top + (resize === true ? 0 : marginV),
25
+ widthM:
26
+ boundingRect.right - boundingRect.left + (resize === true ? 0 : marginH),
27
+ heightM:
28
+ boundingRect.bottom - boundingRect.top + (resize === true ? 0 : marginV),
26
29
  marginH: resize === true ? marginH : 0,
27
30
  marginV: resize === true ? marginV : 0
28
31
  }
29
32
  }
30
33
 
31
- function getAbsoluteSize (el) {
34
+ function getAbsoluteSize(el) {
32
35
  return {
33
36
  width: el.scrollWidth,
34
37
  height: el.scrollHeight
@@ -36,72 +39,72 @@ function getAbsoluteSize (el) {
36
39
  }
37
40
 
38
41
  // firefox rulez
39
- const styleEdges = [ 'Top', 'Right', 'Bottom', 'Left' ]
40
- const styleBorderRadiuses = [ 'borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomRightRadius', 'borderBottomLeftRadius' ]
42
+ const styleEdges = ['Top', 'Right', 'Bottom', 'Left']
43
+ const styleBorderRadiuses = [
44
+ 'borderTopLeftRadius',
45
+ 'borderTopRightRadius',
46
+ 'borderBottomRightRadius',
47
+ 'borderBottomLeftRadius'
48
+ ]
41
49
  const reStyleSkipKey = /-block|-inline|block-|inline-/
42
50
  const reStyleSkipRule = /(-block|-inline|block-|inline-).*:/
43
51
 
44
- function getComputedStyle (el, props) {
52
+ function getComputedStyle(el, props) {
45
53
  const style = window.getComputedStyle(el)
46
54
  const fixed = {}
47
55
  for (let i = 0; i < props.length; i++) {
48
- const prop = props[ i ]
56
+ const prop = props[i]
49
57
 
50
- if (style[ prop ] === '') {
58
+ if (style[prop] === '') {
51
59
  if (prop === 'cssText') {
52
60
  const styleLen = style.length
53
61
  let val = ''
54
62
 
55
- for (let i = 0; i < styleLen; i++) {
56
- if (reStyleSkipKey.test(style[ i ]) !== true) {
57
- val += style[ i ] + ': ' + style[ style[ i ] ] + '; '
63
+ for (let styleIndex = 0; styleIndex < styleLen; styleIndex++) {
64
+ if (reStyleSkipKey.test(style[styleIndex]) !== true) {
65
+ val += style[styleIndex] + ': ' + style[style[styleIndex]] + '; '
58
66
  }
59
67
  }
60
68
 
61
- fixed[ prop ] = val
62
- }
63
- else if ([ 'borderWidth', 'borderStyle', 'borderColor' ].indexOf(prop) !== -1) {
69
+ fixed[prop] = val
70
+ } else if (
71
+ ['borderWidth', 'borderStyle', 'borderColor'].indexOf(prop) !== -1
72
+ ) {
64
73
  const suffix = prop.replace('border', '')
65
74
  let val = ''
66
75
  for (let j = 0; j < styleEdges.length; j++) {
67
- const subProp = 'border' + styleEdges[ j ] + suffix
68
- val += style[ subProp ] + ' '
76
+ const subProp = 'border' + styleEdges[j] + suffix
77
+ val += style[subProp] + ' '
69
78
  }
70
- fixed[ prop ] = val
71
- }
72
- else if (prop === 'borderRadius') {
79
+ fixed[prop] = val
80
+ } else if (prop === 'borderRadius') {
73
81
  let val1 = ''
74
82
  let val2 = ''
75
83
  for (let j = 0; j < styleBorderRadiuses.length; j++) {
76
- const val = style[ styleBorderRadiuses[ j ] ].split(' ')
77
- val1 += val[ 0 ] + ' '
78
- val2 += (val[ 1 ] === void 0 ? val[ 0 ] : val[ 1 ]) + ' '
84
+ const val = style[styleBorderRadiuses[j]].split(' ')
85
+ val1 += val[0] + ' '
86
+ val2 += (val[1] === void 0 ? val[0] : val[1]) + ' '
79
87
  }
80
- fixed[ prop ] = val1 + '/ ' + val2
81
- }
82
- else {
83
- fixed[ prop ] = style[ prop ]
84
- }
85
- }
86
- else {
87
- if (prop === 'cssText') {
88
- fixed[ prop ] = style[ prop ]
89
- .split(';')
90
- .filter(val => reStyleSkipRule.test(val) !== true)
91
- .join(';')
92
- }
93
- else {
94
- fixed[ prop ] = style[ prop ]
88
+ fixed[prop] = val1 + '/ ' + val2
89
+ } else {
90
+ fixed[prop] = style[prop]
95
91
  }
92
+ } else if (prop === 'cssText') {
93
+ fixed[prop] = style[prop]
94
+ .split(';')
95
+ .filter(val => reStyleSkipRule.test(val) !== true)
96
+ .join(';')
97
+ } else {
98
+ fixed[prop] = style[prop]
96
99
  }
97
100
  }
98
101
 
99
102
  return fixed
100
103
  }
101
104
 
102
- const zIndexPositions = [ 'absolute', 'fixed', 'relative', 'sticky' ]
105
+ const zIndexPositions = ['absolute', 'fixed', 'relative', 'sticky']
103
106
 
104
- function getMaxZIndex (elStart) {
107
+ function getMaxZIndex(elStart) {
105
108
  let el = elStart
106
109
  let maxIndex = 0
107
110
 
@@ -110,8 +113,8 @@ function getMaxZIndex (elStart) {
110
113
  const zIndexNum = Number(zIndex)
111
114
 
112
115
  if (
113
- zIndexNum > maxIndex
114
- && (el === elStart || zIndexPositions.includes(position) === true)
116
+ zIndexNum > maxIndex &&
117
+ (el === elStart || zIndexPositions.includes(position) === true)
115
118
  ) {
116
119
  maxIndex = zIndexNum
117
120
  }
@@ -122,22 +125,19 @@ function getMaxZIndex (elStart) {
122
125
  return maxIndex
123
126
  }
124
127
 
125
- function normalizeElements (opts) {
128
+ function normalizeElements(opts) {
126
129
  return {
127
130
  from: opts.from,
128
- to: opts.to !== void 0
129
- ? opts.to
130
- : opts.from
131
+ to: opts.to !== void 0 ? opts.to : opts.from
131
132
  }
132
133
  }
133
134
 
134
- function normalizeOptions (options) {
135
+ function normalizeOptions(options) {
135
136
  if (typeof options === 'number') {
136
137
  options = {
137
138
  duration: options
138
139
  }
139
- }
140
- else if (typeof options === 'function') {
140
+ } else if (typeof options === 'function') {
141
141
  options = {
142
142
  onEnd: options
143
143
  }
@@ -148,45 +148,57 @@ function normalizeOptions (options) {
148
148
 
149
149
  waitFor: options.waitFor === void 0 ? 0 : options.waitFor,
150
150
 
151
- duration: isNaN(options.duration) === true ? 300 : parseInt(options.duration, 10),
152
- easing: typeof options.easing === 'string' && options.easing.length !== 0 ? options.easing : 'ease-in-out',
151
+ duration:
152
+ isNaN(options.duration) === true ? 300 : parseInt(options.duration, 10),
153
+ easing:
154
+ typeof options.easing === 'string' && options.easing.length !== 0
155
+ ? options.easing
156
+ : 'ease-in-out',
153
157
  delay: isNaN(options.delay) === true ? 0 : parseInt(options.delay, 10),
154
- fill: typeof options.fill === 'string' && options.fill.length !== 0 ? options.fill : 'none',
158
+ fill:
159
+ typeof options.fill === 'string' && options.fill.length !== 0
160
+ ? options.fill
161
+ : 'none',
155
162
 
156
163
  resize: options.resize === true,
157
164
 
158
165
  // account for UMD too where modifiers will be lowercased to work
159
166
  useCSS: options.useCSS === true || options.usecss === true,
160
167
  // account for UMD too where modifiers will be lowercased to work
161
- hideFromClone: options.hideFromClone === true || options.hidefromclone === true,
168
+ hideFromClone:
169
+ options.hideFromClone === true || options.hidefromclone === true,
162
170
  // account for UMD too where modifiers will be lowercased to work
163
171
  keepToClone: options.keepToClone === true || options.keeptoclone === true,
164
172
 
165
173
  tween: options.tween === true,
166
- tweenFromOpacity: isNaN(options.tweenFromOpacity) === true ? 0.6 : parseFloat(options.tweenFromOpacity),
167
- tweenToOpacity: isNaN(options.tweenToOpacity) === true ? 0.5 : parseFloat(options.tweenToOpacity)
174
+ tweenFromOpacity:
175
+ isNaN(options.tweenFromOpacity) === true
176
+ ? 0.6
177
+ : parseFloat(options.tweenFromOpacity),
178
+ tweenToOpacity:
179
+ isNaN(options.tweenToOpacity) === true
180
+ ? 0.5
181
+ : parseFloat(options.tweenToOpacity)
168
182
  }
169
183
  }
170
184
 
171
- function getElement (element) {
185
+ function getElement(element) {
172
186
  const type = typeof element
173
187
 
174
188
  return type === 'function'
175
189
  ? element()
176
- : (
177
- type === 'string'
178
- ? document.querySelector(element)
179
- : element
180
- )
190
+ : type === 'string'
191
+ ? document.querySelector(element)
192
+ : element
181
193
  }
182
194
 
183
- function isValidElement (element) {
184
- return element
185
- && element.ownerDocument === document
186
- && element.parentNode !== null
195
+ function isValidElement(element) {
196
+ return (
197
+ element && element.ownerDocument === document && element.parentNode !== null
198
+ )
187
199
  }
188
200
 
189
- export default function morph (_options) {
201
+ export default function morph(_options) {
190
202
  let cancel = () => false
191
203
  let cancelStatus = false
192
204
  let endElementTo = true
@@ -200,7 +212,7 @@ export default function morph (_options) {
200
212
  return cancel
201
213
  }
202
214
  // we clean other morphs running on this element
203
- typeof elFrom.qMorphCancel === 'function' && elFrom.qMorphCancel()
215
+ if (typeof elFrom.qMorphCancel === 'function') elFrom.qMorphCancel()
204
216
 
205
217
  let animationFromClone = void 0
206
218
  let animationFromTween = void 0
@@ -213,10 +225,8 @@ export default function morph (_options) {
213
225
  // we get the dimensions and characteristics
214
226
  // of the parent of the initial element before changes
215
227
  const elFromPosition = getAbsolutePosition(elFrom, options.resize)
216
- const {
217
- width: elFromParentWidthBefore,
218
- height: elFromParentHeightBefore
219
- } = getAbsoluteSize(elFromParent)
228
+ const { width: elFromParentWidthBefore, height: elFromParentHeightBefore } =
229
+ getAbsoluteSize(elFromParent)
220
230
  const {
221
231
  borderWidth: elFromBorderWidth,
222
232
  borderStyle: elFromBorderStyle,
@@ -226,7 +236,16 @@ export default function morph (_options) {
226
236
  transform: elFromTransform,
227
237
  position: elFromPositioningType,
228
238
  cssText: elFromCssText
229
- } = getComputedStyle(elFrom, [ 'borderWidth', 'borderStyle', 'borderColor', 'borderRadius', 'backgroundColor', 'transform', 'position', 'cssText' ])
239
+ } = getComputedStyle(elFrom, [
240
+ 'borderWidth',
241
+ 'borderStyle',
242
+ 'borderColor',
243
+ 'borderRadius',
244
+ 'backgroundColor',
245
+ 'transform',
246
+ 'position',
247
+ 'cssText'
248
+ ])
230
249
  const elFromClassSaved = elFrom.classList.toString()
231
250
  const elFromStyleSaved = elFrom.style.cssText
232
251
 
@@ -237,11 +256,17 @@ export default function morph (_options) {
237
256
  const elFromTween = options.tween === true ? elFrom.cloneNode(true) : void 0
238
257
 
239
258
  if (elFromTween !== void 0) {
240
- elFromTween.className = elFromTween.classList.toString().split(' ').filter(c => /^bg-/.test(c) === false).join(' ')
259
+ elFromTween.className = elFromTween.classList
260
+ .toString()
261
+ .split(' ')
262
+ .filter(c => /^bg-/.test(c) === false)
263
+ .join(' ')
241
264
  }
242
265
 
243
266
  // if the initial element is not going to be removed do not show the placeholder
244
- options.hideFromClone === true && elFromClone.classList.add('q-morph--internal')
267
+ if (options.hideFromClone === true) {
268
+ elFromClone.classList.add('q-morph--internal')
269
+ }
245
270
 
246
271
  // prevent interaction with placeholder
247
272
  elFromClone.setAttribute('aria-hidden', 'true')
@@ -258,7 +283,9 @@ export default function morph (_options) {
258
283
  elFromClone.remove()
259
284
  elFromTween?.remove()
260
285
 
261
- options.hideFromClone === true && elFromClone.classList.remove('q-morph--internal')
286
+ if (options.hideFromClone === true) {
287
+ elFromClone.classList.remove('q-morph--internal')
288
+ }
262
289
 
263
290
  // we remove the cleanup function from the element
264
291
  elFrom.qMorphCancel = void 0
@@ -268,32 +295,32 @@ export default function morph (_options) {
268
295
  const calculateFinalState = () => {
269
296
  const elTo = getElement(elements.to)
270
297
  if (cancelStatus === true || isValidElement(elTo) !== true) {
271
- typeof elFrom.qMorphCancel === 'function' && elFrom.qMorphCancel()
298
+ if (typeof elFrom.qMorphCancel === 'function') elFrom.qMorphCancel()
272
299
  return
273
300
  }
274
301
  // we clean other morphs running on this element
275
- elFrom !== elTo && typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()
302
+ if (elFrom !== elTo && typeof elTo.qMorphCancel === 'function') {
303
+ elTo.qMorphCancel()
304
+ }
276
305
 
277
306
  // we hide the final element and the clone of the initial element
278
307
  // we don't hide the final element if we want both it and the animated one visible
279
- options.keepToClone !== true && elTo.classList.add('q-morph--internal')
308
+ if (options.keepToClone !== true) elTo.classList.add('q-morph--internal')
280
309
  elFromClone.classList.add('q-morph--internal')
281
310
 
282
311
  // we get the dimensions of the parent of the initial element after changes
283
312
  // the difference is how much we should animate the clone
284
- const {
285
- width: elFromParentWidthAfter,
286
- height: elFromParentHeightAfter
287
- } = getAbsoluteSize(elFromParent)
313
+ const { width: elFromParentWidthAfter, height: elFromParentHeightAfter } =
314
+ getAbsoluteSize(elFromParent)
288
315
 
289
316
  // we get the dimensions of the parent of the final element before changes
290
- const {
291
- width: elToParentWidthBefore,
292
- height: elToParentHeightBefore
293
- } = getAbsoluteSize(elTo.parentNode)
317
+ const { width: elToParentWidthBefore, height: elToParentHeightBefore } =
318
+ getAbsoluteSize(elTo.parentNode)
294
319
 
295
320
  // then we show the clone of the initial element if we don't want it hidden
296
- options.hideFromClone !== true && elFromClone.classList.remove('q-morph--internal')
321
+ if (options.hideFromClone !== true) {
322
+ elFromClone.classList.remove('q-morph--internal')
323
+ }
297
324
 
298
325
  // we mark the element with its cleanup function
299
326
  elTo.qMorphCancel = () => {
@@ -303,10 +330,14 @@ export default function morph (_options) {
303
330
  elFromClone.remove()
304
331
  elFromTween?.remove()
305
332
 
306
- options.hideFromClone === true && elFromClone.classList.remove('q-morph--internal')
333
+ if (options.hideFromClone === true) {
334
+ elFromClone.classList.remove('q-morph--internal')
335
+ }
307
336
 
308
337
  // we show the final element
309
- options.keepToClone !== true && elTo.classList.remove('q-morph--internal')
338
+ if (options.keepToClone !== true) {
339
+ elTo.classList.remove('q-morph--internal')
340
+ }
310
341
 
311
342
  // we remove the cleanup function from the elements
312
343
  elFrom.qMorphCancel = void 0
@@ -316,7 +347,7 @@ export default function morph (_options) {
316
347
  // will be called after waitFor (give time to render the final element)
317
348
  const animate = () => {
318
349
  if (cancelStatus === true) {
319
- typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()
350
+ if (typeof elTo.qMorphCancel === 'function') elTo.qMorphCancel()
320
351
  return
321
352
  }
322
353
 
@@ -342,10 +373,8 @@ export default function morph (_options) {
342
373
  // we get the dimensions of the parent of the final element after changes
343
374
  // the difference is how much we should animate the clone
344
375
  const elToParent = elTo.parentNode
345
- const {
346
- width: elToParentWidthAfter,
347
- height: elToParentHeightAfter
348
- } = getAbsoluteSize(elToParent)
376
+ const { width: elToParentWidthAfter, height: elToParentHeightAfter } =
377
+ getAbsoluteSize(elToParent)
349
378
 
350
379
  const elToClone = elTo.cloneNode(options.keepToClone)
351
380
  elToClone.setAttribute('aria-hidden', 'true')
@@ -360,7 +389,10 @@ export default function morph (_options) {
360
389
  elToClone.classList.add('q-morph--internal')
361
390
 
362
391
  // if elFrom is the same as elTo the next element is elFromClone
363
- const elToNext = elTo === elFrom && elFromParent === elToParent ? elFromClone : elTo.nextElementSibling
392
+ const elToNext =
393
+ elTo === elFrom && elFromParent === elToParent
394
+ ? elFromClone
395
+ : elTo.nextElementSibling
364
396
  elToParent.insertBefore(elToClone, elToNext)
365
397
 
366
398
  const {
@@ -372,7 +404,16 @@ export default function morph (_options) {
372
404
  transform: elToTransform,
373
405
  position: elToPositioningType,
374
406
  cssText: elToCssText
375
- } = getComputedStyle(elTo, [ 'borderWidth', 'borderStyle', 'borderColor', 'borderRadius', 'backgroundColor', 'transform', 'position', 'cssText' ])
407
+ } = getComputedStyle(elTo, [
408
+ 'borderWidth',
409
+ 'borderStyle',
410
+ 'borderColor',
411
+ 'borderRadius',
412
+ 'backgroundColor',
413
+ 'transform',
414
+ 'position',
415
+ 'cssText'
416
+ ])
376
417
  const elToClassSaved = elTo.classList.toString()
377
418
  const elToStyleSaved = elTo.style.cssText
378
419
 
@@ -382,35 +423,56 @@ export default function morph (_options) {
382
423
  elTo.style.animation = 'none'
383
424
  elTo.style.transition = 'none'
384
425
  // we strip the background classes (background color can no longer be animated if !important is used)
385
- elTo.className = elToClassSaved.split(' ').filter(c => /^bg-/.test(c) === false).join(' ')
426
+ elTo.className = elToClassSaved
427
+ .split(' ')
428
+ .filter(c => /^bg-/.test(c) === false)
429
+ .join(' ')
386
430
 
387
431
  const elToPosition = getAbsolutePosition(elTo, options.resize)
388
432
 
389
433
  const deltaX = elFromPosition.left - elToPosition.left
390
434
  const deltaY = elFromPosition.top - elToPosition.top
391
- const scaleX = elFromPosition.width / (elToPosition.width > 0 ? elToPosition.width : 10)
392
- const scaleY = elFromPosition.height / (elToPosition.height > 0 ? elToPosition.height : 100)
393
-
394
- const elFromParentWidthDiff = elFromParentWidthBefore - elFromParentWidthAfter
395
- const elFromParentHeightDiff = elFromParentHeightBefore - elFromParentHeightAfter
435
+ const scaleX =
436
+ elFromPosition.width /
437
+ (elToPosition.width > 0 ? elToPosition.width : 10)
438
+ const scaleY =
439
+ elFromPosition.height /
440
+ (elToPosition.height > 0 ? elToPosition.height : 100)
441
+
442
+ const elFromParentWidthDiff =
443
+ elFromParentWidthBefore - elFromParentWidthAfter
444
+ const elFromParentHeightDiff =
445
+ elFromParentHeightBefore - elFromParentHeightAfter
396
446
  const elToParentWidthDiff = elToParentWidthAfter - elToParentWidthBefore
397
- const elToParentHeightDiff = elToParentHeightAfter - elToParentHeightBefore
447
+ const elToParentHeightDiff =
448
+ elToParentHeightAfter - elToParentHeightBefore
398
449
 
399
- const elFromCloneWidth = Math.max(elFromPosition.widthM, elFromParentWidthDiff)
400
- const elFromCloneHeight = Math.max(elFromPosition.heightM, elFromParentHeightDiff)
450
+ const elFromCloneWidth = Math.max(
451
+ elFromPosition.widthM,
452
+ elFromParentWidthDiff
453
+ )
454
+ const elFromCloneHeight = Math.max(
455
+ elFromPosition.heightM,
456
+ elFromParentHeightDiff
457
+ )
401
458
  const elToCloneWidth = Math.max(elToPosition.widthM, elToParentWidthDiff)
402
- const elToCloneHeight = Math.max(elToPosition.heightM, elToParentHeightDiff)
459
+ const elToCloneHeight = Math.max(
460
+ elToPosition.heightM,
461
+ elToParentHeightDiff
462
+ )
403
463
 
404
- const elSharedSize = elFrom === elTo
405
- && [ 'absolute', 'fixed' ].includes(elToPositioningType) === false
406
- && [ 'absolute', 'fixed' ].includes(elFromPositioningType) === false
464
+ const elSharedSize =
465
+ elFrom === elTo &&
466
+ ['absolute', 'fixed'].includes(elToPositioningType) === false &&
467
+ ['absolute', 'fixed'].includes(elFromPositioningType) === false
407
468
 
408
469
  // if the final element has fixed position or if a parent
409
470
  // has fixed position we need to animate it as fixed
410
471
  let elToNeedsFixedPosition = elToPositioningType === 'fixed'
411
472
  let parent = elToParent
412
473
  while (elToNeedsFixedPosition !== true && parent !== document) {
413
- elToNeedsFixedPosition = window.getComputedStyle(parent).position === 'fixed'
474
+ elToNeedsFixedPosition =
475
+ window.getComputedStyle(parent).position === 'fixed'
414
476
  parent = parent.parentNode
415
477
  }
416
478
 
@@ -446,10 +508,9 @@ export default function morph (_options) {
446
508
  // we apply styles specified by user
447
509
  if (typeof options.style === 'string') {
448
510
  elTo.style.cssText += ' ' + options.style
449
- }
450
- else if (isObject(options.style) === true) {
511
+ } else if (isObject(options.style) === true) {
451
512
  for (const prop in options.style) {
452
- elTo.style[ prop ] = options.style[ prop ]
513
+ elTo.style[prop] = options.style[prop]
453
514
  }
454
515
  }
455
516
 
@@ -458,13 +519,15 @@ export default function morph (_options) {
458
519
 
459
520
  // we position the morphing element
460
521
  // if we use fixed position for the final element we need to adjust for scroll
461
- const documentScroll = elToNeedsFixedPosition === true
462
- ? document.documentElement
463
- : { scrollLeft: 0, scrollTop: 0 }
464
- elTo.style.position = elToNeedsFixedPosition === true ? 'fixed' : 'absolute'
465
- elTo.style.left = `${ elToPosition.left - documentScroll.scrollLeft }px`
522
+ const documentScroll =
523
+ elToNeedsFixedPosition === true
524
+ ? document.documentElement
525
+ : { scrollLeft: 0, scrollTop: 0 }
526
+ elTo.style.position =
527
+ elToNeedsFixedPosition === true ? 'fixed' : 'absolute'
528
+ elTo.style.left = `${elToPosition.left - documentScroll.scrollLeft}px`
466
529
  elTo.style.right = 'unset'
467
- elTo.style.top = `${ elToPosition.top - documentScroll.scrollTop }px`
530
+ elTo.style.top = `${elToPosition.top - documentScroll.scrollTop}px`
468
531
  elTo.style.margin = 0
469
532
 
470
533
  if (options.resize === true) {
@@ -486,9 +549,9 @@ export default function morph (_options) {
486
549
  elFromTween.style.transition = 'none'
487
550
 
488
551
  elFromTween.style.position = elTo.style.position
489
- elFromTween.style.left = `${ elFromPosition.left - documentScroll.scrollLeft }px`
552
+ elFromTween.style.left = `${elFromPosition.left - documentScroll.scrollLeft}px`
490
553
  elFromTween.style.right = 'unset'
491
- elFromTween.style.top = `${ elFromPosition.top - documentScroll.scrollTop }px`
554
+ elFromTween.style.top = `${elFromPosition.top - documentScroll.scrollTop}px`
492
555
  elFromTween.style.margin = 0
493
556
  elFromTween.style.pointerEvents = 'none'
494
557
 
@@ -511,8 +574,7 @@ export default function morph (_options) {
511
574
  if (elFrom === elTo && endElementTo !== true) {
512
575
  elTo.style.cssText = elFromStyleSaved
513
576
  elTo.className = elFromClassSaved
514
- }
515
- else {
577
+ } else {
516
578
  elTo.style.cssText = elToStyleSaved
517
579
  elTo.className = elToClassSaved
518
580
  }
@@ -539,145 +601,172 @@ export default function morph (_options) {
539
601
  }
540
602
 
541
603
  if (options.useCSS !== true && typeof elTo.animate === 'function') {
542
- const resizeFrom = options.resize === true
543
- ? {
544
- transform: `translate(${ deltaX }px, ${ deltaY }px)`,
545
- width: `${ elFromCloneWidth }px`,
546
- height: `${ elFromCloneHeight }px`
547
- }
548
- : {
549
- transform: `translate(${ deltaX }px, ${ deltaY }px) scale(${ scaleX }, ${ scaleY })`
550
- }
551
- const resizeTo = options.resize === true
552
- ? {
553
- width: `${ elToCloneWidth }px`,
554
- height: `${ elToCloneHeight }px`
555
- }
556
- : {}
557
- const resizeFromTween = options.resize === true
558
- ? {
559
- width: `${ elFromCloneWidth }px`,
560
- height: `${ elFromCloneHeight }px`
561
- }
562
- : {}
563
- const resizeToTween = options.resize === true
564
- ? {
565
- transform: `translate(${ -1 * deltaX }px, ${ -1 * deltaY }px)`,
566
- width: `${ elToCloneWidth }px`,
567
- height: `${ elToCloneHeight }px`
568
- }
569
- : {
570
- transform: `translate(${ -1 * deltaX }px, ${ -1 * deltaY }px) scale(${ 1 / scaleX }, ${ 1 / scaleY })`
571
- }
572
- const tweenFrom = elFromTween !== void 0
573
- ? { opacity: options.tweenToOpacity }
574
- : { backgroundColor: elFromBackground }
575
- const tweenTo = elFromTween !== void 0
576
- ? { opacity: 1 }
577
- : { backgroundColor: elToBackground }
578
- animationTo = elTo.animate([
579
- {
580
- margin: 0,
581
- borderWidth: elFromBorderWidth,
582
- borderStyle: elFromBorderStyle,
583
- borderColor: elFromBorderColor,
584
- borderRadius: elFromBorderRadius,
585
- zIndex: elFromZIndex,
586
- transformOrigin: '0 0',
587
- ...resizeFrom,
588
- ...tweenFrom
589
- },
590
- {
591
- margin: 0,
592
- borderWidth: elToBorderWidth,
593
- borderStyle: elToBorderStyle,
594
- borderColor: elToBorderColor,
595
- borderRadius: elToBorderRadius,
596
- zIndex: elToZIndex,
597
- transformOrigin: '0 0',
598
- transform: elToTransform,
599
- ...resizeTo,
600
- ...tweenTo
601
- }
602
- ], {
603
- duration: options.duration,
604
- easing: options.easing,
605
- fill: options.fill,
606
- delay: options.delay
607
- })
608
-
609
- animationFromTween = elFromTween === void 0 ? void 0 : elFromTween.animate([
610
- {
611
- opacity: options.tweenFromOpacity,
612
- margin: 0,
613
- borderWidth: elFromBorderWidth,
614
- borderStyle: elFromBorderStyle,
615
- borderColor: elFromBorderColor,
616
- borderRadius: elFromBorderRadius,
617
- zIndex: elFromZIndex,
618
- transformOrigin: '0 0',
619
- transform: elFromTransform,
620
- ...resizeFromTween
621
- },
622
- {
623
- opacity: 0,
624
- margin: 0,
625
- borderWidth: elToBorderWidth,
626
- borderStyle: elToBorderStyle,
627
- borderColor: elToBorderColor,
628
- borderRadius: elToBorderRadius,
629
- zIndex: elToZIndex,
630
- transformOrigin: '0 0',
631
- ...resizeToTween
632
- }
633
- ], {
634
- duration: options.duration,
635
- easing: options.easing,
636
- fill: options.fill,
637
- delay: options.delay
638
- })
639
-
640
- animationFromClone = options.hideFromClone === true || elSharedSize === true ? void 0 : elFromClone.animate([
641
- {
642
- margin: `${ elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0 }px ${ elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0 }px`,
643
- width: `${ elFromCloneWidth + elFromPosition.marginH }px`,
644
- height: `${ elFromCloneHeight + elFromPosition.marginV }px`
645
- },
646
- {
647
- margin: 0,
648
- width: 0,
649
- height: 0
650
- }
651
- ], {
652
- duration: options.duration,
653
- easing: options.easing,
654
- fill: options.fill,
655
- delay: options.delay
656
- })
657
-
658
- animationToClone = options.keepToClone === true ? void 0 : elToClone.animate([
659
- elSharedSize === true
604
+ const resizeFrom =
605
+ options.resize === true
660
606
  ? {
661
- margin: `${ elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0 }px ${ elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0 }px`,
662
- width: `${ elFromCloneWidth + elFromPosition.marginH }px`,
663
- height: `${ elFromCloneHeight + elFromPosition.marginV }px`
607
+ transform: `translate(${deltaX}px, ${deltaY}px)`,
608
+ width: `${elFromCloneWidth}px`,
609
+ height: `${elFromCloneHeight}px`
664
610
  }
665
611
  : {
666
- margin: 0,
667
- width: 0,
668
- height: 0
669
- },
612
+ transform: `translate(${deltaX}px, ${deltaY}px) scale(${scaleX}, ${scaleY})`
613
+ }
614
+ const resizeTo =
615
+ options.resize === true
616
+ ? {
617
+ width: `${elToCloneWidth}px`,
618
+ height: `${elToCloneHeight}px`
619
+ }
620
+ : {}
621
+ const resizeFromTween =
622
+ options.resize === true
623
+ ? {
624
+ width: `${elFromCloneWidth}px`,
625
+ height: `${elFromCloneHeight}px`
626
+ }
627
+ : {}
628
+ const resizeToTween =
629
+ options.resize === true
630
+ ? {
631
+ transform: `translate(${-1 * deltaX}px, ${-1 * deltaY}px)`,
632
+ width: `${elToCloneWidth}px`,
633
+ height: `${elToCloneHeight}px`
634
+ }
635
+ : {
636
+ transform: `translate(${-1 * deltaX}px, ${-1 * deltaY}px) scale(${1 / scaleX}, ${1 / scaleY})`
637
+ }
638
+ const tweenFrom =
639
+ elFromTween !== void 0
640
+ ? { opacity: options.tweenToOpacity }
641
+ : { backgroundColor: elFromBackground }
642
+ const tweenTo =
643
+ elFromTween !== void 0
644
+ ? { opacity: 1 }
645
+ : { backgroundColor: elToBackground }
646
+ animationTo = elTo.animate(
647
+ [
648
+ {
649
+ margin: 0,
650
+ borderWidth: elFromBorderWidth,
651
+ borderStyle: elFromBorderStyle,
652
+ borderColor: elFromBorderColor,
653
+ borderRadius: elFromBorderRadius,
654
+ zIndex: elFromZIndex,
655
+ transformOrigin: '0 0',
656
+ ...resizeFrom,
657
+ ...tweenFrom
658
+ },
659
+ {
660
+ margin: 0,
661
+ borderWidth: elToBorderWidth,
662
+ borderStyle: elToBorderStyle,
663
+ borderColor: elToBorderColor,
664
+ borderRadius: elToBorderRadius,
665
+ zIndex: elToZIndex,
666
+ transformOrigin: '0 0',
667
+ transform: elToTransform,
668
+ ...resizeTo,
669
+ ...tweenTo
670
+ }
671
+ ],
670
672
  {
671
- margin: `${ elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0 }px ${ elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0 }px`,
672
- width: `${ elToCloneWidth + elToPosition.marginH }px`,
673
- height: `${ elToCloneHeight + elToPosition.marginV }px`
673
+ duration: options.duration,
674
+ easing: options.easing,
675
+ fill: options.fill,
676
+ delay: options.delay
674
677
  }
675
- ], {
676
- duration: options.duration,
677
- easing: options.easing,
678
- fill: options.fill,
679
- delay: options.delay
680
- })
678
+ )
679
+
680
+ animationFromTween =
681
+ elFromTween === void 0
682
+ ? void 0
683
+ : elFromTween.animate(
684
+ [
685
+ {
686
+ opacity: options.tweenFromOpacity,
687
+ margin: 0,
688
+ borderWidth: elFromBorderWidth,
689
+ borderStyle: elFromBorderStyle,
690
+ borderColor: elFromBorderColor,
691
+ borderRadius: elFromBorderRadius,
692
+ zIndex: elFromZIndex,
693
+ transformOrigin: '0 0',
694
+ transform: elFromTransform,
695
+ ...resizeFromTween
696
+ },
697
+ {
698
+ opacity: 0,
699
+ margin: 0,
700
+ borderWidth: elToBorderWidth,
701
+ borderStyle: elToBorderStyle,
702
+ borderColor: elToBorderColor,
703
+ borderRadius: elToBorderRadius,
704
+ zIndex: elToZIndex,
705
+ transformOrigin: '0 0',
706
+ ...resizeToTween
707
+ }
708
+ ],
709
+ {
710
+ duration: options.duration,
711
+ easing: options.easing,
712
+ fill: options.fill,
713
+ delay: options.delay
714
+ }
715
+ )
716
+
717
+ animationFromClone =
718
+ options.hideFromClone === true || elSharedSize === true
719
+ ? void 0
720
+ : elFromClone.animate(
721
+ [
722
+ {
723
+ margin: `${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px`,
724
+ width: `${elFromCloneWidth + elFromPosition.marginH}px`,
725
+ height: `${elFromCloneHeight + elFromPosition.marginV}px`
726
+ },
727
+ {
728
+ margin: 0,
729
+ width: 0,
730
+ height: 0
731
+ }
732
+ ],
733
+ {
734
+ duration: options.duration,
735
+ easing: options.easing,
736
+ fill: options.fill,
737
+ delay: options.delay
738
+ }
739
+ )
740
+
741
+ animationToClone =
742
+ options.keepToClone === true
743
+ ? void 0
744
+ : elToClone.animate(
745
+ [
746
+ elSharedSize === true
747
+ ? {
748
+ margin: `${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px`,
749
+ width: `${elFromCloneWidth + elFromPosition.marginH}px`,
750
+ height: `${elFromCloneHeight + elFromPosition.marginV}px`
751
+ }
752
+ : {
753
+ margin: 0,
754
+ width: 0,
755
+ height: 0
756
+ },
757
+ {
758
+ margin: `${elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0}px ${elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0}px`,
759
+ width: `${elToCloneWidth + elToPosition.marginH}px`,
760
+ height: `${elToCloneHeight + elToPosition.marginV}px`
761
+ }
762
+ ],
763
+ {
764
+ duration: options.duration,
765
+ easing: options.easing,
766
+ fill: options.fill,
767
+ delay: options.delay
768
+ }
769
+ )
681
770
 
682
771
  const cleanup = abort => {
683
772
  animationFromClone?.cancel()
@@ -731,80 +820,87 @@ export default function morph (_options) {
731
820
 
732
821
  return true
733
822
  }
734
- }
735
- else {
736
- const qAnimId = `q-morph-anim-${ ++id }`
823
+ } else {
824
+ const qAnimId = `q-morph-anim-${++id}`
737
825
  const style = document.createElement('style')
738
- const resizeFrom = options.resize === true
739
- ? `
740
- transform: translate(${ deltaX }px, ${ deltaY }px);
741
- width: ${ elFromCloneWidth }px;
742
- height: ${ elFromCloneHeight }px;
826
+ const resizeFrom =
827
+ options.resize === true
828
+ ? `
829
+ transform: translate(${deltaX}px, ${deltaY}px);
830
+ width: ${elFromCloneWidth}px;
831
+ height: ${elFromCloneHeight}px;
743
832
  `
744
- : `transform: translate(${ deltaX }px, ${ deltaY }px) scale(${ scaleX }, ${ scaleY });`
745
- const resizeTo = options.resize === true
746
- ? `
747
- width: ${ elToCloneWidth }px;
748
- height: ${ elToCloneHeight }px;
833
+ : `transform: translate(${deltaX}px, ${deltaY}px) scale(${scaleX}, ${scaleY});`
834
+ const resizeTo =
835
+ options.resize === true
836
+ ? `
837
+ width: ${elToCloneWidth}px;
838
+ height: ${elToCloneHeight}px;
749
839
  `
750
- : ''
751
- const resizeFromTween = options.resize === true
752
- ? `
753
- width: ${ elFromCloneWidth }px;
754
- height: ${ elFromCloneHeight }px;
840
+ : ''
841
+ const resizeFromTween =
842
+ options.resize === true
843
+ ? `
844
+ width: ${elFromCloneWidth}px;
845
+ height: ${elFromCloneHeight}px;
755
846
  `
756
- : ''
757
- const resizeToTween = options.resize === true
758
- ? `
759
- transform: translate(${ -1 * deltaX }px, ${ -1 * deltaY }px);
760
- width: ${ elToCloneWidth }px;
761
- height: ${ elToCloneHeight }px;
847
+ : ''
848
+ const resizeToTween =
849
+ options.resize === true
850
+ ? `
851
+ transform: translate(${-1 * deltaX}px, ${-1 * deltaY}px);
852
+ width: ${elToCloneWidth}px;
853
+ height: ${elToCloneHeight}px;
762
854
  `
763
- : `transform: translate(${ -1 * deltaX }px, ${ -1 * deltaY }px) scale(${ 1 / scaleX }, ${ 1 / scaleY });`
764
- const tweenFrom = elFromTween !== void 0
765
- ? `opacity: ${ options.tweenToOpacity };`
766
- : `background-color: ${ elFromBackground };`
767
- const tweenTo = elFromTween !== void 0
768
- ? 'opacity: 1;'
769
- : `background-color: ${ elToBackground };`
770
- const keyframesFromTween = elFromTween === void 0
771
- ? ''
772
- : `
773
- @keyframes ${ qAnimId }-from-tween {
855
+ : `transform: translate(${-1 * deltaX}px, ${-1 * deltaY}px) scale(${1 / scaleX}, ${1 / scaleY});`
856
+ const tweenFrom =
857
+ elFromTween !== void 0
858
+ ? `opacity: ${options.tweenToOpacity};`
859
+ : `background-color: ${elFromBackground};`
860
+ const tweenTo =
861
+ elFromTween !== void 0
862
+ ? 'opacity: 1;'
863
+ : `background-color: ${elToBackground};`
864
+ const keyframesFromTween =
865
+ elFromTween === void 0
866
+ ? ''
867
+ : `
868
+ @keyframes ${qAnimId}-from-tween {
774
869
  0% {
775
- opacity: ${ options.tweenFromOpacity };
870
+ opacity: ${options.tweenFromOpacity};
776
871
  margin: 0;
777
- border-width: ${ elFromBorderWidth };
778
- border-style: ${ elFromBorderStyle };
779
- border-color: ${ elFromBorderColor };
780
- border-radius: ${ elFromBorderRadius };
781
- z-index: ${ elFromZIndex };
872
+ border-width: ${elFromBorderWidth};
873
+ border-style: ${elFromBorderStyle};
874
+ border-color: ${elFromBorderColor};
875
+ border-radius: ${elFromBorderRadius};
876
+ z-index: ${elFromZIndex};
782
877
  transform-origin: 0 0;
783
- transform: ${ elFromTransform };
784
- ${ resizeFromTween }
878
+ transform: ${elFromTransform};
879
+ ${resizeFromTween}
785
880
  }
786
881
 
787
882
  100% {
788
883
  opacity: 0;
789
884
  margin: 0;
790
- border-width: ${ elToBorderWidth };
791
- border-style: ${ elToBorderStyle };
792
- border-color: ${ elToBorderColor };
793
- border-radius: ${ elToBorderRadius };
794
- z-index: ${ elToZIndex };
885
+ border-width: ${elToBorderWidth};
886
+ border-style: ${elToBorderStyle};
887
+ border-color: ${elToBorderColor};
888
+ border-radius: ${elToBorderRadius};
889
+ z-index: ${elToZIndex};
795
890
  transform-origin: 0 0;
796
- ${ resizeToTween }
891
+ ${resizeToTween}
797
892
  }
798
893
  }
799
894
  `
800
- const keyframesFrom = options.hideFromClone === true || elSharedSize === true
801
- ? ''
802
- : `
803
- @keyframes ${ qAnimId }-from {
895
+ const keyframesFrom =
896
+ options.hideFromClone === true || elSharedSize === true
897
+ ? ''
898
+ : `
899
+ @keyframes ${qAnimId}-from {
804
900
  0% {
805
- margin: ${ elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0 }px ${ elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0 }px;
806
- width: ${ elFromCloneWidth + elFromPosition.marginH }px;
807
- height: ${ elFromCloneHeight + elFromPosition.marginV }px;
901
+ margin: ${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px;
902
+ width: ${elFromCloneWidth + elFromPosition.marginH}px;
903
+ height: ${elFromCloneHeight + elFromPosition.marginV}px;
808
904
  }
809
905
 
810
906
  100% {
@@ -814,84 +910,83 @@ export default function morph (_options) {
814
910
  }
815
911
  }
816
912
  `
817
- const keyframeToStart = elSharedSize === true
818
- ? `
819
- margin: ${ elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0 }px ${ elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0 }px;
820
- width: ${ elFromCloneWidth + elFromPosition.marginH }px;
821
- height: ${ elFromCloneHeight + elFromPosition.marginV }px;
913
+ const keyframeToStart =
914
+ elSharedSize === true
915
+ ? `
916
+ margin: ${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px;
917
+ width: ${elFromCloneWidth + elFromPosition.marginH}px;
918
+ height: ${elFromCloneHeight + elFromPosition.marginV}px;
822
919
  `
823
- : `
920
+ : `
824
921
  margin: 0;
825
922
  width: 0;
826
923
  height: 0;
827
924
  `
828
- const keyframesTo = options.keepToClone === true
829
- ? ''
830
- : `
831
- @keyframes ${ qAnimId }-to {
925
+ const keyframesTo =
926
+ options.keepToClone === true
927
+ ? ''
928
+ : `
929
+ @keyframes ${qAnimId}-to {
832
930
  0% {
833
- ${ keyframeToStart }
931
+ ${keyframeToStart}
834
932
  }
835
933
 
836
934
  100% {
837
- margin: ${ elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0 }px ${ elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0 }px;
838
- width: ${ elToCloneWidth + elToPosition.marginH }px;
839
- height: ${ elToCloneHeight + elToPosition.marginV }px;
935
+ margin: ${elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0}px ${elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0}px;
936
+ width: ${elToCloneWidth + elToPosition.marginH}px;
937
+ height: ${elToCloneHeight + elToPosition.marginV}px;
840
938
  }
841
939
  }
842
940
  `
843
941
  style.innerHTML = `
844
- @keyframes ${ qAnimId } {
942
+ @keyframes ${qAnimId} {
845
943
  0% {
846
944
  margin: 0;
847
- border-width: ${ elFromBorderWidth };
848
- border-style: ${ elFromBorderStyle };
849
- border-color: ${ elFromBorderColor };
850
- border-radius: ${ elFromBorderRadius };
851
- background-color: ${ elFromBackground };
852
- z-index: ${ elFromZIndex };
945
+ border-width: ${elFromBorderWidth};
946
+ border-style: ${elFromBorderStyle};
947
+ border-color: ${elFromBorderColor};
948
+ border-radius: ${elFromBorderRadius};
949
+ background-color: ${elFromBackground};
950
+ z-index: ${elFromZIndex};
853
951
  transform-origin: 0 0;
854
- ${ resizeFrom }
855
- ${ tweenFrom }
952
+ ${resizeFrom}
953
+ ${tweenFrom}
856
954
  }
857
955
 
858
956
  100% {
859
957
  margin: 0;
860
- border-width: ${ elToBorderWidth };
861
- border-style: ${ elToBorderStyle };
862
- border-color: ${ elToBorderColor };
863
- border-radius: ${ elToBorderRadius };
864
- background-color: ${ elToBackground };
865
- z-index: ${ elToZIndex };
958
+ border-width: ${elToBorderWidth};
959
+ border-style: ${elToBorderStyle};
960
+ border-color: ${elToBorderColor};
961
+ border-radius: ${elToBorderRadius};
962
+ background-color: ${elToBackground};
963
+ z-index: ${elToZIndex};
866
964
  transform-origin: 0 0;
867
- transform: ${ elToTransform };
868
- ${ resizeTo }
869
- ${ tweenTo }
965
+ transform: ${elToTransform};
966
+ ${resizeTo}
967
+ ${tweenTo}
870
968
  }
871
969
  }
872
970
 
873
- ${ keyframesFrom }
971
+ ${keyframesFrom}
874
972
 
875
- ${ keyframesFromTween }
973
+ ${keyframesFromTween}
876
974
 
877
- ${ keyframesTo }
975
+ ${keyframesTo}
878
976
  `
879
977
  document.head.appendChild(style)
880
978
 
881
979
  let animationDirection = 'normal'
882
980
 
883
- elFromClone.style.animation = `${ options.duration }ms ${ options.easing } ${ options.delay }ms ${ animationDirection } ${ options.fill } ${ qAnimId }-from`
981
+ elFromClone.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-from`
884
982
  if (elFromTween !== void 0) {
885
- elFromTween.style.animation = `${ options.duration }ms ${ options.easing } ${ options.delay }ms ${ animationDirection } ${ options.fill } ${ qAnimId }-from-tween`
983
+ elFromTween.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-from-tween`
886
984
  }
887
- elToClone.style.animation = `${ options.duration }ms ${ options.easing } ${ options.delay }ms ${ animationDirection } ${ options.fill } ${ qAnimId }-to`
888
- elTo.style.animation = `${ options.duration }ms ${ options.easing } ${ options.delay }ms ${ animationDirection } ${ options.fill } ${ qAnimId }`
985
+ elToClone.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-to`
986
+ elTo.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}`
889
987
 
890
988
  const cleanup = evt => {
891
- if (
892
- evt === Object(evt)
893
- && evt.animationName !== qAnimId
894
- ) return
989
+ if (evt === Object(evt) && evt.animationName !== qAnimId) return
895
990
 
896
991
  elTo.removeEventListener('animationend', cleanup)
897
992
  elTo.removeEventListener('animationcancel', cleanup)
@@ -930,7 +1025,8 @@ export default function morph (_options) {
930
1025
 
931
1026
  endElementTo = endElementTo !== true
932
1027
 
933
- animationDirection = animationDirection === 'normal' ? 'reverse' : 'normal'
1028
+ animationDirection =
1029
+ animationDirection === 'normal' ? 'reverse' : 'normal'
934
1030
 
935
1031
  elFromClone.style.animationDirection = animationDirection
936
1032
  elFromTween.style.animationDirection = animationDirection
@@ -943,15 +1039,16 @@ export default function morph (_options) {
943
1039
  }
944
1040
 
945
1041
  if (
946
- options.waitFor > 0
947
- || options.waitFor === 'transitionend'
948
- || (options.waitFor === Object(options.waitFor) && typeof options.waitFor.then === 'function')
1042
+ options.waitFor > 0 ||
1043
+ options.waitFor === 'transitionend' ||
1044
+ (options.waitFor === Object(options.waitFor) &&
1045
+ typeof options.waitFor.then === 'function')
949
1046
  ) {
950
- const delayPromise = options.waitFor > 0
951
- ? new Promise(resolve => setTimeout(resolve, options.waitFor))
952
- : (
953
- options.waitFor === 'transitionend'
954
- ? new Promise(resolve => {
1047
+ const delayPromise =
1048
+ options.waitFor > 0
1049
+ ? new Promise(resolve => setTimeout(resolve, options.waitFor))
1050
+ : options.waitFor === 'transitionend'
1051
+ ? new Promise(resolve => {
955
1052
  const endFn = () => {
956
1053
  if (timer !== null) {
957
1054
  clearTimeout(timer)
@@ -971,21 +1068,17 @@ export default function morph (_options) {
971
1068
  elTo.addEventListener('transitionend', endFn)
972
1069
  elTo.addEventListener('transitioncancel', endFn)
973
1070
  })
974
- : options.waitFor
975
- )
976
-
977
- delayPromise
978
- .then(animate)
979
- .catch(() => {
980
- typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()
981
- })
982
- }
983
- else {
1071
+ : options.waitFor
1072
+
1073
+ delayPromise.then(animate).catch(() => {
1074
+ if (typeof elTo.qMorphCancel === 'function') elTo.qMorphCancel()
1075
+ })
1076
+ } else {
984
1077
  animate()
985
1078
  }
986
1079
  }
987
1080
 
988
- typeof _options.onToggle === 'function' && _options.onToggle()
1081
+ if (typeof _options.onToggle === 'function') _options.onToggle()
989
1082
  requestAnimationFrame(calculateFinalState)
990
1083
 
991
1084
  // we return the cancel function