quasar 2.22.0 → 2.23.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 (146) hide show
  1. package/dist/api/Mutation.json +1 -1
  2. package/dist/api/QLinearProgress.json +1 -1
  3. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v7-pro.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v7.umd.prod.js +1 -1
  11. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  12. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  18. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  19. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v7.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-ionicons-v7.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-ionicons-v8.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  44. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  45. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  46. package/dist/icon-set/themify.umd.prod.js +1 -1
  47. package/dist/lang/ar-TN.umd.prod.js +1 -1
  48. package/dist/lang/ar.umd.prod.js +1 -1
  49. package/dist/lang/az-Latn.umd.prod.js +1 -1
  50. package/dist/lang/bg.umd.prod.js +1 -1
  51. package/dist/lang/bn.umd.prod.js +1 -1
  52. package/dist/lang/bs-BA.umd.prod.js +1 -1
  53. package/dist/lang/ca.umd.prod.js +1 -1
  54. package/dist/lang/cs.umd.prod.js +1 -1
  55. package/dist/lang/da.umd.prod.js +1 -1
  56. package/dist/lang/de-CH.umd.prod.js +1 -1
  57. package/dist/lang/de-DE.umd.prod.js +1 -1
  58. package/dist/lang/de.umd.prod.js +1 -1
  59. package/dist/lang/el.umd.prod.js +1 -1
  60. package/dist/lang/en-GB.umd.prod.js +1 -1
  61. package/dist/lang/en-US.umd.prod.js +1 -1
  62. package/dist/lang/eo.umd.prod.js +1 -1
  63. package/dist/lang/es.umd.prod.js +1 -1
  64. package/dist/lang/et.umd.prod.js +1 -1
  65. package/dist/lang/eu.umd.prod.js +1 -1
  66. package/dist/lang/fa-IR.umd.prod.js +1 -1
  67. package/dist/lang/fa.umd.prod.js +1 -1
  68. package/dist/lang/fi.umd.prod.js +1 -1
  69. package/dist/lang/fr.umd.prod.js +1 -1
  70. package/dist/lang/gn.umd.prod.js +1 -1
  71. package/dist/lang/he.umd.prod.js +1 -1
  72. package/dist/lang/hi.umd.prod.js +1 -1
  73. package/dist/lang/hr.umd.prod.js +1 -1
  74. package/dist/lang/hu.umd.prod.js +1 -1
  75. package/dist/lang/id.umd.prod.js +1 -1
  76. package/dist/lang/is.umd.prod.js +1 -1
  77. package/dist/lang/it.umd.prod.js +1 -1
  78. package/dist/lang/ja.umd.prod.js +1 -1
  79. package/dist/lang/kk.umd.prod.js +1 -1
  80. package/dist/lang/km.umd.prod.js +1 -1
  81. package/dist/lang/ko-KR.umd.prod.js +1 -1
  82. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  83. package/dist/lang/lb.umd.prod.js +1 -1
  84. package/dist/lang/lt.umd.prod.js +1 -1
  85. package/dist/lang/lu.umd.prod.js +1 -1
  86. package/dist/lang/lv.umd.prod.js +1 -1
  87. package/dist/lang/mk.umd.prod.js +1 -1
  88. package/dist/lang/ml.umd.prod.js +1 -1
  89. package/dist/lang/mm.umd.prod.js +1 -1
  90. package/dist/lang/ms-MY.umd.prod.js +1 -1
  91. package/dist/lang/ms.umd.prod.js +1 -1
  92. package/dist/lang/my.umd.prod.js +1 -1
  93. package/dist/lang/nb-NO.umd.prod.js +1 -1
  94. package/dist/lang/nl.umd.prod.js +1 -1
  95. package/dist/lang/pl.umd.prod.js +1 -1
  96. package/dist/lang/pt-BR.umd.prod.js +1 -1
  97. package/dist/lang/pt.umd.prod.js +1 -1
  98. package/dist/lang/ro.umd.prod.js +1 -1
  99. package/dist/lang/ru.umd.prod.js +1 -1
  100. package/dist/lang/sk.umd.prod.js +1 -1
  101. package/dist/lang/sl.umd.prod.js +1 -1
  102. package/dist/lang/sm.umd.prod.js +1 -1
  103. package/dist/lang/sq.umd.prod.js +1 -1
  104. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  105. package/dist/lang/sr.umd.prod.js +1 -1
  106. package/dist/lang/sv.umd.prod.js +1 -1
  107. package/dist/lang/ta.umd.prod.js +1 -1
  108. package/dist/lang/th.umd.prod.js +1 -1
  109. package/dist/lang/tl.umd.prod.js +1 -1
  110. package/dist/lang/tr.umd.prod.js +1 -1
  111. package/dist/lang/ug.umd.prod.js +1 -1
  112. package/dist/lang/uk.umd.prod.js +1 -1
  113. package/dist/lang/ur-PK.umd.prod.js +1 -1
  114. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  115. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  116. package/dist/lang/vi.umd.prod.js +1 -1
  117. package/dist/lang/zh-CN.umd.prod.js +1 -1
  118. package/dist/lang/zh-TW.umd.prod.js +1 -1
  119. package/dist/quasar.client.js +92 -30
  120. package/dist/quasar.css +16 -11
  121. package/dist/quasar.prod.css +1 -1
  122. package/dist/quasar.rtl.css +20 -20
  123. package/dist/quasar.rtl.prod.css +1 -1
  124. package/dist/quasar.sass +18 -12
  125. package/dist/quasar.server.prod.cjs +4 -4
  126. package/dist/quasar.server.prod.js +4 -4
  127. package/dist/quasar.umd.js +92 -29
  128. package/dist/quasar.umd.prod.js +31 -31
  129. package/dist/transforms/import-map.json +1 -1
  130. package/dist/types/composables.d.ts +5 -0
  131. package/dist/types/index.d.ts +1 -1
  132. package/dist/web-types/web-types.json +1 -1
  133. package/package.json +1 -1
  134. package/src/components/btn/QBtn.js +1 -1
  135. package/src/components/fab/QFab.sass +11 -9
  136. package/src/components/linear-progress/QLinearProgress.js +4 -11
  137. package/src/components/linear-progress/QLinearProgress.json +1 -1
  138. package/src/components/linear-progress/QLinearProgress.sass +7 -2
  139. package/src/composables/private.use-fullscreen/use-fullscreen.js +72 -17
  140. package/src/composables/private.use-fullscreen/use-fullscreen.test.js +158 -0
  141. package/src/composables/use-animation-frame/use-animation-frame.js +47 -0
  142. package/src/composables/use-animation-frame/use-animation-frame.test.js +122 -0
  143. package/src/composables.js +1 -1
  144. package/src/directives/mutation/Mutation.json +1 -1
  145. package/src/utils/private.click-outside/click-outside.js +27 -12
  146. package/src/utils/private.click-outside/click-outside.test.js +132 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.22.0
2
+ * Quasar Framework v2.23.1
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1103,7 +1103,7 @@ function prepareApp(app, uiOpts, pluginOpts) {
1103
1103
  };
1104
1104
  }
1105
1105
  var install_quasar_default = function installQuasar(parentApp, opts = {}) {
1106
- const $q = { version: "2.22.0" };
1106
+ const $q = { version: "2.23.1" };
1107
1107
  if (!globalConfigIsFrozen) {
1108
1108
  if (opts.config !== void 0) Object.assign(globalConfig, opts.config);
1109
1109
  $q.config = { ...globalConfig };
@@ -2443,7 +2443,7 @@ var QBtn_default = createComponent({
2443
2443
  const blurTarget = blurTargetRef.value;
2444
2444
  if (!destroying && (touchTarget === rootRef.value || mouseTarget === rootRef.value) && blurTarget !== null && blurTarget !== document.activeElement) {
2445
2445
  blurTarget.setAttribute("tabindex", -1);
2446
- blurTarget.focus();
2446
+ blurTarget.focus({ preventScroll: true });
2447
2447
  }
2448
2448
  if (touchTarget === rootRef.value) {
2449
2449
  if (localTouchTargetEl !== null) {
@@ -3287,19 +3287,25 @@ function globalHandler(evt) {
3287
3287
  }
3288
3288
  const target = evt.target;
3289
3289
  if (target === void 0 || target.nodeType === 8 || target.classList.contains("no-pointer-events")) return;
3290
- let portalIndex = portalProxyList.length - 1;
3291
- while (portalIndex >= 0) {
3292
- const proxy = portalProxyList[portalIndex].$;
3293
- if (proxy.type.name === "QTooltip") {
3294
- portalIndex--;
3290
+ let closableContentEls = null;
3291
+ let sawClosablePortal = false;
3292
+ for (let i = portalProxyList.length - 1; i >= 0; i--) {
3293
+ const proxy = portalProxyList[i].$;
3294
+ const name = proxy.type.name;
3295
+ if (name === "QTooltip") continue;
3296
+ if (name === "QDialog") {
3297
+ if (proxy.props.seamless !== true) {
3298
+ if (sawClosablePortal === false) return;
3299
+ closableContentEls = new Set(portalProxyList.slice(i + 1).map((vm) => vm.contentEl));
3300
+ break;
3301
+ }
3295
3302
  continue;
3296
3303
  }
3297
- if (proxy.type.name !== "QDialog") break;
3298
- if (!proxy.props.seamless) return;
3299
- portalIndex--;
3304
+ sawClosablePortal = true;
3300
3305
  }
3301
3306
  for (let i = registeredList.length - 1; i >= 0; i--) {
3302
3307
  const state = registeredList[i];
3308
+ if (closableContentEls !== null && !closableContentEls.has(state.innerRef.value)) return;
3303
3309
  if ((state.anchorEl.value === null || !state.anchorEl.value.contains(target)) && (target === document.body || state.innerRef.value !== null && !state.innerRef.value.contains(target))) {
3304
3310
  evt.qClickOutside = true;
3305
3311
  state.onClickOutside(evt);
@@ -4623,8 +4629,33 @@ function usePanel() {
4623
4629
  };
4624
4630
  }
4625
4631
  //#endregion
4632
+ //#region src/composables/use-animation-frame/use-animation-frame.js
4633
+ function useAnimationFrame() {
4634
+ let frameId = null;
4635
+ const vm = getCurrentInstance();
4636
+ function removeAnimationFrame() {
4637
+ if (frameId !== null) {
4638
+ cancelAnimationFrame(frameId);
4639
+ frameId = null;
4640
+ }
4641
+ }
4642
+ onDeactivated(removeAnimationFrame);
4643
+ onBeforeUnmount(removeAnimationFrame);
4644
+ return {
4645
+ removeAnimationFrame,
4646
+ registerAnimationFrame(fn) {
4647
+ removeAnimationFrame();
4648
+ if (!vmIsDestroyed(vm)) frameId = requestAnimationFrame(() => {
4649
+ frameId = null;
4650
+ fn();
4651
+ });
4652
+ }
4653
+ };
4654
+ }
4655
+ //#endregion
4626
4656
  //#region src/composables/private.use-fullscreen/use-fullscreen.js
4627
4657
  let counter = 0;
4658
+ let restoreState = null;
4628
4659
  const useFullscreenProps = {
4629
4660
  fullscreen: Boolean,
4630
4661
  noRouteFullscreenExit: Boolean
@@ -4633,8 +4664,10 @@ const useFullscreenEmits = ["update:fullscreen", "fullscreen"];
4633
4664
  function useFullscreen() {
4634
4665
  const vm = getCurrentInstance();
4635
4666
  const { props, emit, proxy } = vm;
4636
- let historyEntry, fullscreenFillerNode, isUnmounting = false;
4667
+ let historyEntry, fullscreenFillerNode;
4637
4668
  const inFullscreen = ref(false);
4669
+ const { registerTick, removeTick } = useTick();
4670
+ const { registerAnimationFrame, removeAnimationFrame } = useAnimationFrame();
4638
4671
  if (vmHasRouter(vm)) watch(() => proxy.$route.fullPath, () => {
4639
4672
  if (!props.noRouteFullscreenExit) exitFullscreen();
4640
4673
  });
@@ -4650,7 +4683,15 @@ function useFullscreen() {
4650
4683
  else setFullscreen();
4651
4684
  }
4652
4685
  function setFullscreen() {
4653
- if (inFullscreen.value) return;
4686
+ if (vmIsDestroyed(vm) || inFullscreen.value) return;
4687
+ removeAnimationFrame();
4688
+ removeTick();
4689
+ if (counter === 0) restoreState = {
4690
+ left: getHorizontalScrollPosition(window),
4691
+ top: getVerticalScrollPosition(window),
4692
+ width: window.innerWidth,
4693
+ height: window.innerHeight
4694
+ };
4654
4695
  inFullscreen.value = true;
4655
4696
  proxy.$el.replaceWith(fullscreenFillerNode);
4656
4697
  document.body.append(proxy.$el);
@@ -4659,21 +4700,40 @@ function useFullscreen() {
4659
4700
  historyEntry = { handler: exitFullscreen };
4660
4701
  History_default.add(historyEntry);
4661
4702
  }
4662
- function exitFullscreen() {
4703
+ function exitFullscreenImpl(shouldRestoreElement) {
4663
4704
  if (!inFullscreen.value) return;
4664
4705
  if (historyEntry !== void 0) {
4665
4706
  History_default.remove(historyEntry);
4666
4707
  historyEntry = void 0;
4667
4708
  }
4668
- fullscreenFillerNode.replaceWith(proxy.$el);
4709
+ if (shouldRestoreElement === true) fullscreenFillerNode.replaceWith(proxy.$el);
4710
+ else fullscreenFillerNode.remove();
4669
4711
  inFullscreen.value = false;
4670
4712
  counter = Math.max(0, counter - 1);
4671
- if (counter === 0) {
4672
- document.body.classList.remove("q-body--fullscreen-mixin");
4673
- if (!isUnmounting && proxy.$el.scrollIntoView !== void 0) setTimeout(() => {
4713
+ if (counter !== 0) return;
4714
+ document.body.classList.remove("q-body--fullscreen-mixin");
4715
+ if (restoreState === null) return;
4716
+ const { left, top, width, height } = restoreState;
4717
+ restoreState = null;
4718
+ if (vmIsDestroyed(vm)) return;
4719
+ registerTick(() => {
4720
+ if (counter !== 0) return;
4721
+ registerAnimationFrame(() => {
4722
+ if (counter !== 0) return;
4723
+ if (window.innerWidth !== width || window.innerHeight !== height)
4724
+ /**
4725
+ * If user has resized the window while in fullscreen mode,
4726
+ * we cannot restore the scroll position because it will be wrong.
4727
+ * So we just scroll the element into view instead,
4728
+ * which is the best we can do.
4729
+ */
4674
4730
  proxy.$el.scrollIntoView();
4675
- }, 0);
4676
- }
4731
+ else window.scrollTo(left, top);
4732
+ });
4733
+ });
4734
+ }
4735
+ function exitFullscreen() {
4736
+ exitFullscreenImpl(true);
4677
4737
  }
4678
4738
  onBeforeMount(() => {
4679
4739
  fullscreenFillerNode = document.createElement("span");
@@ -4681,10 +4741,13 @@ function useFullscreen() {
4681
4741
  onMounted(() => {
4682
4742
  if (props.fullscreen) setFullscreen();
4683
4743
  });
4684
- onBeforeUnmount(() => {
4685
- isUnmounting = true;
4686
- exitFullscreen();
4744
+ onDeactivated(() => {
4745
+ exitFullscreenImpl(proxy.$el.isConnected);
4746
+ });
4747
+ onActivated(() => {
4748
+ if (props.fullscreen) setFullscreen();
4687
4749
  });
4750
+ onBeforeUnmount(exitFullscreen);
4688
4751
  Object.assign(proxy, {
4689
4752
  toggleFullscreen,
4690
4753
  setFullscreen,
@@ -15397,8 +15460,8 @@ const defaultSizes = {
15397
15460
  lg: 10,
15398
15461
  xl: 14
15399
15462
  };
15400
- function width(val, reverse, $q) {
15401
- return { transform: reverse ? `translateX(${$q.lang.rtl ? "-" : ""}100%) scale3d(${-val},1,1)` : `scale3d(${val},1,1)` };
15463
+ function width(val) {
15464
+ return { transform: `scale3d(${val},1,1)` };
15402
15465
  }
15403
15466
  var QLinearProgress_default = createComponent({
15404
15467
  name: "QLinearProgress",
@@ -15428,16 +15491,15 @@ var QLinearProgress_default = createComponent({
15428
15491
  const isDark = useDark(props, proxy.$q);
15429
15492
  const sizeStyle = useSize(props, defaultSizes);
15430
15493
  const motion = computed(() => props.indeterminate || props.query);
15431
- const widthReverse = computed(() => props.reverse !== props.query);
15432
15494
  const style = computed(() => ({
15433
15495
  ...sizeStyle.value !== null ? sizeStyle.value : {},
15434
15496
  "--q-linear-progress-speed": `${props.animationSpeed}ms`
15435
15497
  }));
15436
15498
  const classes = computed(() => "q-linear-progress" + (props.color !== void 0 ? ` text-${props.color}` : "") + (props.reverse || props.query ? " q-linear-progress--reverse" : "") + (props.rounded ? " rounded-borders" : ""));
15437
- const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, widthReverse.value, proxy.$q));
15499
+ const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1));
15438
15500
  const transitionSuffix = computed(() => `with${props.instantFeedback ? "out" : ""}-transition`);
15439
15501
  const trackClass = computed(() => `q-linear-progress__track absolute-full q-linear-progress__track--${transitionSuffix.value} q-linear-progress__track--${isDark.value ? "dark" : "light"}` + (props.trackColor !== void 0 ? ` bg-${props.trackColor}` : ""));
15440
- const modelStyle = computed(() => width(motion.value ? 1 : props.value, widthReverse.value, proxy.$q));
15502
+ const modelStyle = computed(() => width(motion.value ? 1 : props.value));
15441
15503
  const modelClass = computed(() => `q-linear-progress__model absolute-full q-linear-progress__model--${transitionSuffix.value} q-linear-progress__model--${motion.value ? "in" : ""}determinate`);
15442
15504
  const stripeStyle = computed(() => ({ width: `${props.value * 100}%` }));
15443
15505
  const stripeClass = computed(() => `q-linear-progress__stripe absolute-${props.reverse ? "right" : "left"} q-linear-progress__stripe--${transitionSuffix.value}`);
@@ -26181,10 +26243,10 @@ function runSequentialPromises(sequentialPromises, { threadsNumber = 1, abortOnF
26181
26243
  //#endregion
26182
26244
  //#region src/index.dev.js
26183
26245
  const Quasar = {
26184
- version: "2.22.0",
26246
+ version: "2.23.1",
26185
26247
  install: install_quasar_default,
26186
26248
  lang: Plugin$5,
26187
26249
  iconSet: Plugin$4
26188
26250
  };
26189
26251
  //#endregion
26190
- export { AddressbarColor_default as AddressbarColor, Plugin as AppFullscreen, Plugin$1 as AppVisibility, BottomSheet_default as BottomSheet, ClosePopup_default as ClosePopup, Plugin$2 as Cookies, Plugin$3 as Dark, Dialog_default as Dialog, EventBus, Plugin$4 as IconSet, Intersection_default as Intersection, Plugin$5 as Lang, Plugin$6 as Loading, Plugin$7 as LoadingBar, Plugin$8 as LocalStorage, Meta_default as Meta, Morph_default as Morph, Mutation_default as Mutation, Notify_default as Notify, Platform, QAjaxBar_default as QAjaxBar, QAvatar_default as QAvatar, QBadge_default as QBadge, QBanner_default as QBanner, QBar_default as QBar, QBreadcrumbs_default as QBreadcrumbs, QBreadcrumbsEl_default as QBreadcrumbsEl, QBtn_default as QBtn, QBtnDropdown_default as QBtnDropdown, QBtnGroup_default as QBtnGroup, QBtnToggle_default as QBtnToggle, QCard_default as QCard, QCardActions_default as QCardActions, QCardSection_default as QCardSection, QCarousel_default as QCarousel, QCarouselControl_default as QCarouselControl, QCarouselSlide_default as QCarouselSlide, QChatMessage_default as QChatMessage, QCheckbox_default as QCheckbox, QChip_default as QChip, QCircularProgress_default as QCircularProgress, QColor_default as QColor, QDate_default as QDate, QDialog_default as QDialog, QDrawer_default as QDrawer, QEditor_default as QEditor, QExpansionItem_default as QExpansionItem, QFab_default as QFab, QFabAction_default as QFabAction, QField_default as QField, QFile_default as QFile, QFooter_default as QFooter, QForm_default as QForm, QFormChildMixin_default as QFormChildMixin, QHeader_default as QHeader, QIcon_default as QIcon, QImg_default as QImg, QInfiniteScroll_default as QInfiniteScroll, QInnerLoading_default as QInnerLoading, QInput_default as QInput, QIntersection_default as QIntersection, QItem_default as QItem, QItemLabel_default as QItemLabel, QItemSection_default as QItemSection, QKnob_default as QKnob, QLayout_default as QLayout, QLinearProgress_default as QLinearProgress, QList_default as QList, QMarkupTable_default as QMarkupTable, QMenu_default as QMenu, QNoSsr_default as QNoSsr, QOptionGroup_default as QOptionGroup, QPage_default as QPage, QPageContainer_default as QPageContainer, QPageScroller_default as QPageScroller, QPageSticky_default as QPageSticky, QPagination_default as QPagination, QParallax_default as QParallax, QPopupEdit_default as QPopupEdit, QPopupProxy_default as QPopupProxy, QPullToRefresh_default as QPullToRefresh, QRadio_default as QRadio, QRange_default as QRange, QRating_default as QRating, QResizeObserver_default as QResizeObserver, QResponsive_default as QResponsive, QRouteTab_default as QRouteTab, QScrollArea_default as QScrollArea, QScrollObserver_default as QScrollObserver, QSelect_default as QSelect, QSeparator_default as QSeparator, QSkeleton_default as QSkeleton, QSlideItem_default as QSlideItem, QSlideTransition_default as QSlideTransition, QSlider_default as QSlider, QSpace_default as QSpace, QSpinner_default as QSpinner, QSpinnerAudio_default as QSpinnerAudio, QSpinnerBall_default as QSpinnerBall, QSpinnerBars_default as QSpinnerBars, QSpinnerBox_default as QSpinnerBox, QSpinnerClock_default as QSpinnerClock, QSpinnerComment_default as QSpinnerComment, QSpinnerCube_default as QSpinnerCube, QSpinnerDots_default as QSpinnerDots, QSpinnerFacebook_default as QSpinnerFacebook, QSpinnerGears_default as QSpinnerGears, QSpinnerGrid_default as QSpinnerGrid, QSpinnerHearts_default as QSpinnerHearts, QSpinnerHourglass_default as QSpinnerHourglass, QSpinnerInfinity_default as QSpinnerInfinity, QSpinnerIos_default as QSpinnerIos, QSpinnerOrbit_default as QSpinnerOrbit, QSpinnerOval_default as QSpinnerOval, QSpinnerPie_default as QSpinnerPie, QSpinnerPuff_default as QSpinnerPuff, QSpinnerRadio_default as QSpinnerRadio, QSpinnerRings_default as QSpinnerRings, QSpinnerTail_default as QSpinnerTail, QSplitter_default as QSplitter, QStep_default as QStep, QStepper_default as QStepper, QStepperNavigation_default as QStepperNavigation, QTab_default as QTab, QTabPanel_default as QTabPanel, QTabPanels_default as QTabPanels, QTable_default as QTable, QTabs_default as QTabs, QTd_default as QTd, QTh_default as QTh, QTime_default as QTime, QTimeline_default as QTimeline, QTimelineEntry_default as QTimelineEntry, QToggle_default as QToggle, QToolbar_default as QToolbar, QToolbarTitle_default as QToolbarTitle, QTooltip_default as QTooltip, QTr_default as QTr, QTree_default as QTree, QUploader_default as QUploader, QUploaderAddTrigger_default as QUploaderAddTrigger, QVideo_default as QVideo, QVirtualScroll_default as QVirtualScroll, Quasar, Ripple_default as Ripple, Screen_default as Screen, Scroll_default as Scroll, ScrollFire_default as ScrollFire, Plugin$9 as SessionStorage, TouchHold_default as TouchHold, TouchPan_default as TouchPan, TouchRepeat_default as TouchRepeat, TouchSwipe_default as TouchSwipe, cloneDeep as clone, colors_default as colors, copyToClipboard, createMetaMixin, createUploaderComponent, date_default as date, debounce, dom_default as dom, event_default as event, exportFile, extend, format_default as format, frameDebounce, getCssVar, is_default as is, morph, noop, openUrl as openURL, patterns_default as patterns, runSequentialPromises, scroll_default as scroll, setCssVar, throttle, uid_default as uid, useDialogPluginComponent, useFormChild, useHydration, useId, useInterval, useMeta, useQuasar, useRenderCache, useSplitAttrs, useTick, useTimeout };
26252
+ export { AddressbarColor_default as AddressbarColor, Plugin as AppFullscreen, Plugin$1 as AppVisibility, BottomSheet_default as BottomSheet, ClosePopup_default as ClosePopup, Plugin$2 as Cookies, Plugin$3 as Dark, Dialog_default as Dialog, EventBus, Plugin$4 as IconSet, Intersection_default as Intersection, Plugin$5 as Lang, Plugin$6 as Loading, Plugin$7 as LoadingBar, Plugin$8 as LocalStorage, Meta_default as Meta, Morph_default as Morph, Mutation_default as Mutation, Notify_default as Notify, Platform, QAjaxBar_default as QAjaxBar, QAvatar_default as QAvatar, QBadge_default as QBadge, QBanner_default as QBanner, QBar_default as QBar, QBreadcrumbs_default as QBreadcrumbs, QBreadcrumbsEl_default as QBreadcrumbsEl, QBtn_default as QBtn, QBtnDropdown_default as QBtnDropdown, QBtnGroup_default as QBtnGroup, QBtnToggle_default as QBtnToggle, QCard_default as QCard, QCardActions_default as QCardActions, QCardSection_default as QCardSection, QCarousel_default as QCarousel, QCarouselControl_default as QCarouselControl, QCarouselSlide_default as QCarouselSlide, QChatMessage_default as QChatMessage, QCheckbox_default as QCheckbox, QChip_default as QChip, QCircularProgress_default as QCircularProgress, QColor_default as QColor, QDate_default as QDate, QDialog_default as QDialog, QDrawer_default as QDrawer, QEditor_default as QEditor, QExpansionItem_default as QExpansionItem, QFab_default as QFab, QFabAction_default as QFabAction, QField_default as QField, QFile_default as QFile, QFooter_default as QFooter, QForm_default as QForm, QFormChildMixin_default as QFormChildMixin, QHeader_default as QHeader, QIcon_default as QIcon, QImg_default as QImg, QInfiniteScroll_default as QInfiniteScroll, QInnerLoading_default as QInnerLoading, QInput_default as QInput, QIntersection_default as QIntersection, QItem_default as QItem, QItemLabel_default as QItemLabel, QItemSection_default as QItemSection, QKnob_default as QKnob, QLayout_default as QLayout, QLinearProgress_default as QLinearProgress, QList_default as QList, QMarkupTable_default as QMarkupTable, QMenu_default as QMenu, QNoSsr_default as QNoSsr, QOptionGroup_default as QOptionGroup, QPage_default as QPage, QPageContainer_default as QPageContainer, QPageScroller_default as QPageScroller, QPageSticky_default as QPageSticky, QPagination_default as QPagination, QParallax_default as QParallax, QPopupEdit_default as QPopupEdit, QPopupProxy_default as QPopupProxy, QPullToRefresh_default as QPullToRefresh, QRadio_default as QRadio, QRange_default as QRange, QRating_default as QRating, QResizeObserver_default as QResizeObserver, QResponsive_default as QResponsive, QRouteTab_default as QRouteTab, QScrollArea_default as QScrollArea, QScrollObserver_default as QScrollObserver, QSelect_default as QSelect, QSeparator_default as QSeparator, QSkeleton_default as QSkeleton, QSlideItem_default as QSlideItem, QSlideTransition_default as QSlideTransition, QSlider_default as QSlider, QSpace_default as QSpace, QSpinner_default as QSpinner, QSpinnerAudio_default as QSpinnerAudio, QSpinnerBall_default as QSpinnerBall, QSpinnerBars_default as QSpinnerBars, QSpinnerBox_default as QSpinnerBox, QSpinnerClock_default as QSpinnerClock, QSpinnerComment_default as QSpinnerComment, QSpinnerCube_default as QSpinnerCube, QSpinnerDots_default as QSpinnerDots, QSpinnerFacebook_default as QSpinnerFacebook, QSpinnerGears_default as QSpinnerGears, QSpinnerGrid_default as QSpinnerGrid, QSpinnerHearts_default as QSpinnerHearts, QSpinnerHourglass_default as QSpinnerHourglass, QSpinnerInfinity_default as QSpinnerInfinity, QSpinnerIos_default as QSpinnerIos, QSpinnerOrbit_default as QSpinnerOrbit, QSpinnerOval_default as QSpinnerOval, QSpinnerPie_default as QSpinnerPie, QSpinnerPuff_default as QSpinnerPuff, QSpinnerRadio_default as QSpinnerRadio, QSpinnerRings_default as QSpinnerRings, QSpinnerTail_default as QSpinnerTail, QSplitter_default as QSplitter, QStep_default as QStep, QStepper_default as QStepper, QStepperNavigation_default as QStepperNavigation, QTab_default as QTab, QTabPanel_default as QTabPanel, QTabPanels_default as QTabPanels, QTable_default as QTable, QTabs_default as QTabs, QTd_default as QTd, QTh_default as QTh, QTime_default as QTime, QTimeline_default as QTimeline, QTimelineEntry_default as QTimelineEntry, QToggle_default as QToggle, QToolbar_default as QToolbar, QToolbarTitle_default as QToolbarTitle, QTooltip_default as QTooltip, QTr_default as QTr, QTree_default as QTree, QUploader_default as QUploader, QUploaderAddTrigger_default as QUploaderAddTrigger, QVideo_default as QVideo, QVirtualScroll_default as QVirtualScroll, Quasar, Ripple_default as Ripple, Screen_default as Screen, Scroll_default as Scroll, ScrollFire_default as ScrollFire, Plugin$9 as SessionStorage, TouchHold_default as TouchHold, TouchPan_default as TouchPan, TouchRepeat_default as TouchRepeat, TouchSwipe_default as TouchSwipe, cloneDeep as clone, colors_default as colors, copyToClipboard, createMetaMixin, createUploaderComponent, date_default as date, debounce, dom_default as dom, event_default as event, exportFile, extend, format_default as format, frameDebounce, getCssVar, is_default as is, morph, noop, openUrl as openURL, patterns_default as patterns, runSequentialPromises, scroll_default as scroll, setCssVar, throttle, uid_default as uid, useAnimationFrame, useDialogPluginComponent, useFormChild, useHydration, useId, useInterval, useMeta, useQuasar, useRenderCache, useSplitAttrs, useTick, useTimeout };