@sowell/quasar-app-extension-auth 1.11.1 → 1.11.2
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.
package/package.json
CHANGED
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
</q-input>
|
|
123
123
|
</div>
|
|
124
124
|
</q-card-section>
|
|
125
|
-
<q-space class="mobile" />
|
|
125
|
+
<q-space v-if="!keyboardOpen" class="mobile" />
|
|
126
126
|
<q-card-actions class="q-ml-lg q-mr-lg q-mb-lg row justify-center">
|
|
127
127
|
<q-btn
|
|
128
128
|
data-testid="submit-btn"
|
|
@@ -148,6 +148,7 @@
|
|
|
148
148
|
import { computed, defineComponent, ref } from "vue"
|
|
149
149
|
import { useI18n } from "vue-i18n"
|
|
150
150
|
import prompts from "app/quasar.extensions.json"
|
|
151
|
+
import { useKeyboardOpen } from "../../composables/useKeyboardOpen"
|
|
151
152
|
import {
|
|
152
153
|
ionMailOutline,
|
|
153
154
|
ionPaperPlaneOutline,
|
|
@@ -182,6 +183,7 @@ export default defineComponent({
|
|
|
182
183
|
"@sowell/auth": { USE_SSO },
|
|
183
184
|
} = prompts
|
|
184
185
|
const email = ref("")
|
|
186
|
+
const { keyboardOpen } = useKeyboardOpen()
|
|
185
187
|
const sendEmail = () => {
|
|
186
188
|
emit("resetPassword", email.value)
|
|
187
189
|
}
|
|
@@ -203,6 +205,7 @@ export default defineComponent({
|
|
|
203
205
|
|
|
204
206
|
return {
|
|
205
207
|
email,
|
|
208
|
+
keyboardOpen,
|
|
206
209
|
sendEmail,
|
|
207
210
|
emit,
|
|
208
211
|
USE_SSO,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ref, onMounted, onBeforeUnmount } from "vue"
|
|
2
|
+
|
|
3
|
+
// Ecart minimal (px CSS) entre la fenetre de mise en page et la zone visible
|
|
4
|
+
// pour conclure qu'un clavier virtuel est ouvert. Les barres d'URL ou de
|
|
5
|
+
// navigation qui se replient restent largement en dessous.
|
|
6
|
+
export const KEYBOARD_GAP_THRESHOLD = 150
|
|
7
|
+
|
|
8
|
+
interface ViewportHost {
|
|
9
|
+
innerHeight: number
|
|
10
|
+
visualViewport?: {
|
|
11
|
+
height: number
|
|
12
|
+
addEventListener: (type: "resize", listener: () => void) => void
|
|
13
|
+
removeEventListener: (type: "resize", listener: () => void) => void
|
|
14
|
+
} | null
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Android 15+ edge-to-edge (WebView >= 140) : le clavier ne reduit que
|
|
18
|
+
// visualViewport, innerHeight reste inchange. Sur iOS (Keyboard.resize native)
|
|
19
|
+
// ou Android classique la WebView entiere retrecit : l'ecart reste nul et on
|
|
20
|
+
// ne detecte rien, la mise en page suit deja le clavier.
|
|
21
|
+
export const isKeyboardOpen = (host: ViewportHost): boolean => {
|
|
22
|
+
const viewport = host.visualViewport
|
|
23
|
+
if (!viewport) return false
|
|
24
|
+
return host.innerHeight - viewport.height > KEYBOARD_GAP_THRESHOLD
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Appelle `onChange` a chaque variation de l'etat (et une fois a l'initialisation),
|
|
28
|
+
// rend la fonction de nettoyage. Sans visualViewport : etat false, rien a ecouter.
|
|
29
|
+
export const observeKeyboard = (
|
|
30
|
+
host: ViewportHost,
|
|
31
|
+
onChange: (open: boolean) => void
|
|
32
|
+
): (() => void) => {
|
|
33
|
+
const update = () => onChange(isKeyboardOpen(host))
|
|
34
|
+
update()
|
|
35
|
+
const viewport = host.visualViewport
|
|
36
|
+
if (!viewport) return () => undefined
|
|
37
|
+
viewport.addEventListener("resize", update)
|
|
38
|
+
return () => viewport.removeEventListener("resize", update)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const useKeyboardOpen = () => {
|
|
42
|
+
const keyboardOpen = ref(false)
|
|
43
|
+
let stop: (() => void) | undefined
|
|
44
|
+
onMounted(() => {
|
|
45
|
+
if (typeof window === "undefined") return
|
|
46
|
+
stop = observeKeyboard(window, (open) => {
|
|
47
|
+
keyboardOpen.value = open
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
onBeforeUnmount(() => {
|
|
51
|
+
stop?.()
|
|
52
|
+
stop = undefined
|
|
53
|
+
})
|
|
54
|
+
return { keyboardOpen }
|
|
55
|
+
}
|