Desktop: Abrir app-items en nueva ventana para lanzar PWAs
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 58s
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user