Desktop: Abrir app-items en nueva ventana para lanzar PWAs
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 58s

- Crear composable useDeviceType para detectar desktop/móvil
- Modificar ApplicationsList para usar target='_blank' en desktop
- Ajustar pwa-link-handler para permitir nuevas ventanas en desktop
- En móvil mantener comportamiento original según openInNewTab
This commit is contained in:
2025-10-17 04:57:51 -06:00
parent c88b58aee8
commit 99062559c4
3 changed files with 64 additions and 4 deletions

View File

@@ -71,7 +71,7 @@
v-for="app in filteredApplications"
:key="app.pk"
:href="app.launchUrl"
:target="app.openInNewTab ? '_blank' : '_self'"
:target="shouldOpenInNewTab(app) ? '_blank' : '_self'"
class="app-card"
>
<div class="app-card-content">
@@ -96,7 +96,7 @@
{{ app.name }}
</h4>
<UIcon
v-if="app.openInNewTab"
v-if="shouldOpenInNewTab(app)"
name="i-heroicons-arrow-top-right-on-square"
class="external-icon"
/>
@@ -137,6 +137,9 @@ interface Application {
openInNewTab: boolean
}
// Detectar si estamos en desktop
const { isDesktop } = useDeviceType()
const { data: applicationsRaw, pending, error, refresh } = await useFetch<Application[]>('/api/authentik/applications', {
default: () => []
})
@@ -304,6 +307,13 @@ const refreshInterval = setInterval(() => {
refresh()
}, 5 * 60 * 1000)
// Determinar si un enlace debe abrirse en nueva ventana
// En desktop, siempre abrir en nueva ventana para lanzar PWAs
// En móvil, respetar la configuración de la app
const shouldOpenInNewTab = (app: Application): boolean => {
return isDesktop.value || app.openInNewTab
}
// Limpiar interval cuando el componente se desmonte
onUnmounted(() => {
clearInterval(refreshInterval)