Pasar al contenido

Inicio

GitHub

Puedes utilizar nuestra configuración asistida por IA para instalar el plugin. Agrega las Capgo habilidades a tu herramienta de IA utilizando el siguiente comando:

Ventana de terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Luego utilice la siguiente solicitud:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-transitions` plugin in my project.

Si prefiere la configuración manual, instale el complemento ejecutando los siguientes comandos y siguiendo las instrucciones específicas de la plataforma a continuación:

  1. Instalar el paquete

    Ventana de terminal
    npm install @capgo/capacitor-transitions
  2. Registrar los componentes web

    import '@capgo/capacitor-transitions';
  3. Envolver páginas con rutas

    <cap-router-outlet platform="auto" swipe-gesture="auto">
    <cap-page>
    <cap-header slot="header">
    <h1>Inbox</h1>
    </cap-header>
    <cap-content slot="content">
    <button>Open message</button>
    </cap-content>
    <cap-footer slot="footer">
    <nav>Tabs</nav>
    </cap-footer>
    </cap-page>
    </cap-router-outlet>
  4. Establecer la dirección antes de que su router cambie de ruta

    import { setDirection } from '@capgo/capacitor-transitions/react';
    setDirection('forward');
    router.push('/message/42');
    setDirection('back');
    router.back();
import { useEffect, useRef } from 'react';
import { useNavigate } from 'react-router-dom';
import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
import '@capgo/capacitor-transitions';
initTransitions({ platform: 'auto' });
export function AppShell() {
const outletRef = useRef<HTMLElement>(null);
useEffect(() => {
if (!outletRef.current) return;
setupRouterOutlet(outletRef.current, {
platform: 'auto',
swipeGesture: 'auto',
});
}, []);
return (
<cap-router-outlet ref={outletRef}>
{/* Your router renders cap-page children here. */}
</cap-router-outlet>
);
}
export function InboxPage() {
const navigate = useNavigate();
const pageRef = useRef<HTMLElement>(null);
useEffect(() => {
if (!pageRef.current) return;
return setupPage(pageRef.current, {
onDidEnter: () => console.log('Inbox visible'),
});
}, []);
return (
<cap-page ref={pageRef}>
<cap-header slot="header">
<h1>Inbox</h1>
</cap-header>
<cap-content slot="content">
<button
onClick={() => {
setDirection('forward');
navigate('/message/42');
}}
>
Open message
</button>
</cap-content>
</cap-page>
);
}

Importando desde @capgo/capacitor-transitions/react incluye tipificaciones JSX para cap-router-outlet, cap-page, cap-header, cap-content, y cap-footer. En la mayoría de los proyectos de React, esa importación hace que los elementos personalizados sean válidos automáticamente en TSX.

Si TypeScript sigue reportando errores Property 'cap-router-outlet' does not exist on type 'JSX.IntrinsicElements'agregue un archivo de declaración de proyecto:

src/capgo-transiciones.d.ts
import '@capgo/capacitor-transitions/react';

Para Vite, Create React App y la mayoría de las aplicaciones de React con webpack, colocar ese archivo dentro src/ es suficiente. Para Next.js, colóquelo en src/ o la raíz del proyecto y asegúrese de que tsconfig.json lo incluya:

{
"include": ["src", "src/capgo-transitions.d.ts"]
}

Para configuraciones de TypeScript o webpack personalizadas que utilizan una carpeta separada, incluya esa carpeta en su lugar: types/ Copy to clipboard

{
"include": ["src", "types"]
}

Habilitar o deshabilitar el gesto de borde de iOS desde markup:

<cap-router-outlet swipe-gesture="auto"></cap-router-outlet>
<cap-router-outlet swipe-gesture="true"></cap-router-outlet>
<cap-router-outlet swipe-gesture="false"></cap-router-outlet>

O desde JavaScript:

const outlet = document.querySelector('cap-router-outlet');
outlet?.setSwipeGesture('auto');
outlet?.setSwipeGesture(true);
outlet?.setSwipeGesture(false);

auto Habilita el gesto solo cuando Capacitor informa un tiempo de ejecución nativo de iOS. Durante el gesto, la transición de página sigue el dedo. Cuando el usuario suelta, la transición se completa y pide al historial del navegador que regrese, o cancela y restaura la página actual.

Para evitar que un elemento inicie el gesto, agrega data-swipe-gesture-ignore:

<button data-swipe-gesture-ignore>Open drawer</button>

Usar @capgo/capacitor-transitions con @capgo/native-navigation cuando native debe tener el control de las barras superior e inferior mientras que el contenido web mantiene la animación de página de Ionic.

  1. Instale y sincronice el paquete de navegación nativa:

    Ventana de terminal
    npm install @capgo/native-navigation
    npx cap sync
  2. Configurar el navegador nativo:

    import { NativeNavigation } from '@capgo/native-navigation';
    await NativeNavigation.configure({
    contentInsetMode: 'css',
    });
    await NativeNavigation.setNavbar({
    title: 'Inbox',
    backButton: { visible: false },
    });
  3. Mantenga la salida de transición web responsable de las páginas solo:

    <cap-router-outlet platform="auto" swipe-gesture="auto">
    <cap-page>
    <cap-content slot="content" fullscreen>
    <main class="native-page">Inbox content</main>
    </cap-content>
    </cap-page>
    </cap-router-outlet>
    .native-page {
    padding-top: var(--cap-native-navigation-top);
    padding-bottom: var(--cap-native-navigation-bottom);
    }
  4. Haga que ambos sistemas se controlen desde los mismos eventos de router:

    import { NativeNavigation } from '@capgo/native-navigation';
    import { setDirection } from '@capgo/capacitor-transitions/react';
    import { router } from './router';
    await NativeNavigation.addListener('navbarBack', () => {
    setDirection('back');
    router.back();
    });
    async function openMessage(id: string) {
    setDirection('forward');
    router.push(`/message/${id}`);
    await NativeNavigation.setNavbar({
    title: 'Message',
    backButton: { visible: true, title: 'Inbox' },
    });
    }

No renderizar la barra superior nativa de nuevo como un elemento en movimiento <cap-header>. Deje @capgo/native-navigation que la barra sea nativa y utilice @capgo/capacitor-transitions para el contenido de la página de WebView debajo de ella.

AtributoTipoValor predeterminadoDescripción
platform'ios' | 'android' | 'auto''auto'Estilo de animación
durationnumberPor defecto del plataformaDuración de la animación en milisegundos
keep-in-dombooleantrueMantener páginas inactivas en el DOM
max-cachednumber10Número máximo de páginas en caché
swipe-gestureboolean | 'auto''auto'Habilitar, deshabilitar o detectar nativamente el gesto de borde de iOS

Métodos:

  • push(element, config?)
  • pop(config?)
  • setRoot(element, config?)
  • setSwipeGesture(true | false | 'auto')

Envuelve una página y emite eventos de ciclo de vida:

  • cap-will-enter
  • cap-did-enter
  • cap-will-leave
  • cap-did-leave
AtributoTipoPor defectoDescripción
fullscreenbooleanfalseDejar que el contenido se desplace detrás del encabezado
scroll-xbooleantrueHabilitar desplazamiento horizontal
scroll-ybooleantrueHabilitar desplazamiento vertical

Los puntos de entrada del marco expuestos ofrecen los mismos ayudantes básicos:

import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
initTransitions({ platform: 'auto' });
setDirection('forward');
setupRouterOutlet(element, { platform: 'auto', swipeGesture: 'auto' });
setupPage(element, { onWillEnter, onDidEnter, onWillLeave, onDidLeave });

Puntos de entrada disponibles:

  • @capgo/capacitor-transitions/react
  • @capgo/capacitor-transitions/vue
  • @capgo/capacitor-transitions/angular
  • @capgo/capacitor-transitions/svelte
  • @capgo/capacitor-transitions/solid

Si está utilizando Iniciación para planificar la migración y las operaciones empresariales, conecte con Usando @capgo/capacitor-transiciones para la capacidad nativa en Usando @capgo/capacitor-transiciones, Capgo Empresas para el flujo de trabajo del producto en Capgo Empresas, Alternativas de plugin empresarial de Ionic para el flujo de trabajo del producto en Alternativas de plugin empresarial de Ionic, Capgo Alternativas para el flujo de trabajo del producto en Capgo Alternativas, y Capgo Consultoría Sobre el flujo de trabajo del producto en Capgo Consultoría.