Passer à la navigation

Début de l'installation

GitHub

You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:

Vous pouvez utiliser notre configuration assistée par l'IA pour installer le plugin. Ajoutez les __CAPGO_KEEP_0__ compétences à votre outil IA à l'aide de la commande suivante :
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Utilisez ensuite la prompt suivante :

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

Si vous préférez la configuration manuelle, installez le plugin en exécutant les commandes suivantes et suivez les instructions spécifiques à la plateforme ci-dessous :

  1. Installer le package

    Fenêtre de terminal
    npm install @capgo/capacitor-sheets
  2. Enregistrer les composants web

    import '@capgo/capacitor-sheets';
  3. Ajouter la mise en page pour les zones de sécurité

    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
  4. Rendre un feuillet

    <cap-sheet-trigger for="booking-sheet" action="present">Open route</cap-sheet-trigger>
    <cap-sheet id="booking-sheet" detents="18em 32em" content-placement="bottom">
    <cap-sheet-portal>
    <cap-sheet-view>
    <cap-sheet-backdrop></cap-sheet-backdrop>
    <cap-sheet-content class="route-sheet">
    <cap-sheet-bleeding-background></cap-sheet-bleeding-background>
    <cap-sheet-handle></cap-sheet-handle>
    <cap-sheet-title>Evening route</cap-sheet-title>
    <cap-sheet-description>Choose a route and confirm pickup.</cap-sheet-description>
    <cap-sheet-trigger action="dismiss">Done</cap-sheet-trigger>
    </cap-sheet-content>
    </cap-sheet-view>
    </cap-sheet-portal>
    </cap-sheet>
    .route-sheet {
    width: min(100%, 34em);
    padding: 0 1.25em 1.25em;
    }

Les zones de sécurité sont activées par défaut via safe-area="auto". La vue de la feuille lit les valeurs de l'environnement de navigateur et les variables de remplacement Capacitor :

env(safe-area-inset-top)
env(safe-area-inset-bottom)
env(safe-area-inset-left)
env(safe-area-inset-right)
var(--safe-area-inset-top)
var(--safe-area-inset-bottom)
var(--safe-area-inset-left)
var(--safe-area-inset-right)

Choisissez les bords protégés par feuille :

<cap-sheet safe-area="auto"></cap-sheet>
<cap-sheet safe-area="bottom left right"></cap-sheet>
<cap-sheet safe-area="none"></cap-sheet>

Pour les applications avec des barres de statut en surimpression ou des barres système, laissez les plugins natifs responsables de l'exposition des valeurs d'indent correctes :

import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
StatusBar: {
overlaysWebView: true,
},
Keyboard: {
resize: 'body',
resizeOnFullScreen: true,
},
SystemBars: {
insetsHandling: 'css',
},
},
};
export default config;

La gestion du clavier est contrôlée par native-focus-scroll-prevention, qui se définit par défaut à trueDésactivez-le uniquement lorsque votre application possède déjà une évitement de clavier :

<cap-sheet native-focus-scroll-prevention="false"></cap-sheet>

Ecouter les événements pour l'état contrôlé, les analyses, ou l'animation coordonnée :

const sheet = document.querySelector('cap-sheet');
await sheet?.present();
await sheet?.stepTo(2);
await sheet?.step('down');
await sheet?.dismiss();

For apps with overlay status bars or system bars, keep the native plugins responsible for exposing correct inset values:

sheet?.addEventListener('cap-sheet-presented-change', (event) => {
console.log(event.detail.presented);
});
sheet?.addEventListener('cap-sheet-active-detent-change', (event) => {
console.log(event.detail.activeDetent);
});
sheet?.addEventListener('cap-sheet-travel', (event) => {
console.log(event.detail.progress);
});
import { useEffect, useRef } from 'react';
import { setupSheet } from '@capgo/capacitor-sheets/react';
import '@capgo/capacitor-sheets';
export function BookingSheet() {
const sheetRef = useRef<HTMLElement>(null);
useEffect(() => {
if (!sheetRef.current) return;
return setupSheet(sheetRef.current, {
detents: ['18em', '32em'],
contentPlacement: 'bottom',
onPresentedChange: ({ presented }) => console.log({ presented }),
});
}, []);
return (
<cap-sheet id="booking-sheet" ref={sheetRef}>
<cap-sheet-trigger action="present">Open</cap-sheet-trigger>
<cap-sheet-view>
<cap-sheet-backdrop />
<cap-sheet-content>
<cap-sheet-handle />
<cap-sheet-title>React sheet</cap-sheet-title>
</cap-sheet-content>
</cap-sheet-view>
</cap-sheet>
);
}

Importation depuis @capgo/capacitor-sheets/react Il enregistre également les déclarations JSX pour les éléments personnalisés. Si TypeScript continue à signaler des balises inconnues, ajoutez un fichier de déclaration à l'intérieur de votre arborescence source :

src/capgo-feuilles.d.ts
import '@capgo/capacitor-sheets/react';
<script setup lang="ts">
import { onMounted, onUnmounted, ref } from 'vue';
import { setupSheet } from '@capgo/capacitor-sheets/vue';
import '@capgo/capacitor-sheets';
const sheetRef = ref<HTMLElement | null>(null);
let cleanup: (() => void) | undefined;
onMounted(() => {
if (sheetRef.value) {
cleanup = setupSheet(sheetRef.value, {
detents: ['18em', '32em'],
contentPlacement: 'bottom',
});
}
});
onUnmounted(() => cleanup?.());
</script>
<template>
<cap-sheet id="booking-sheet" ref="sheetRef">
<cap-sheet-trigger action="present">Open</cap-sheet-trigger>
<cap-sheet-view>
<cap-sheet-backdrop />
<cap-sheet-content>
<cap-sheet-handle />
<cap-sheet-title>Vue sheet</cap-sheet-title>
</cap-sheet-content>
</cap-sheet-view>
</cap-sheet>
</template>
import { AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, ViewChild } from '@angular/core';
import { setupSheet } from '@capgo/capacitor-sheets/angular';
import '@capgo/capacitor-sheets';
@Component({
selector: 'app-root',
standalone: true,
schemas: [CUSTOM_ELEMENTS_SCHEMA],
template: `
<cap-sheet id="booking-sheet" #sheet>
<cap-sheet-trigger action="present">Open</cap-sheet-trigger>
<cap-sheet-view>
<cap-sheet-backdrop></cap-sheet-backdrop>
<cap-sheet-content>
<cap-sheet-handle></cap-sheet-handle>
<cap-sheet-title>Angular sheet</cap-sheet-title>
</cap-sheet-content>
</cap-sheet-view>
</cap-sheet>
`,
})
export class AppComponent implements AfterViewInit {
@ViewChild('sheet', { static: true }) sheet?: ElementRef<HTMLElement>;
ngAfterViewInit(): void {
if (this.sheet?.nativeElement) {
setupSheet(this.sheet.nativeElement, {
detents: ['18em', '32em'],
contentPlacement: 'bottom',
});
}
}
}
<script lang="ts">
import { sheet } from '@capgo/capacitor-sheets/svelte';
import '@capgo/capacitor-sheets';
</script>
<cap-sheet id="booking-sheet" use:sheet={{ detents: ['18em', '32em'], contentPlacement: 'bottom' }}>
<cap-sheet-trigger action="present">Open</cap-sheet-trigger>
<cap-sheet-view>
<cap-sheet-backdrop />
<cap-sheet-content>
<cap-sheet-handle />
<cap-sheet-title>Svelte sheet</cap-sheet-title>
</cap-sheet-content>
</cap-sheet-view>
</cap-sheet>
import { onCleanup, onMount } from 'solid-js';
import { setupSheet } from '@capgo/capacitor-sheets/solid';
import '@capgo/capacitor-sheets';
export function BookingSheet() {
let sheetEl!: HTMLElement;
onMount(() => {
const cleanup = setupSheet(sheetEl, {
detents: ['18em', '32em'],
contentPlacement: 'bottom',
});
onCleanup(cleanup);
});
return (
<cap-sheet id="booking-sheet" ref={sheetEl}>
<cap-sheet-trigger action="present">Open</cap-sheet-trigger>
<cap-sheet-view>
<cap-sheet-backdrop />
<cap-sheet-content>
<cap-sheet-handle />
<cap-sheet-title>Solid sheet</cap-sheet-title>
</cap-sheet-content>
</cap-sheet-view>
</cap-sheet>
);
}
ÉlémentBut
cap-sheetÉtat de feuille, détenues, gestes, comportement modal et événements
cap-sheet-triggerDéclaratif présent, fermer, basculer et étapes d'actions
cap-sheet-portalPortail de corps optionnel pour la superposition de couches d'overlay
cap-sheet-viewHôte de vue fixe avec marge de zone de sécurité et de clavier
cap-sheet-backdropFond d'arrière-plan synchronisé avec le progrès
cap-sheet-contentSurface de feuille accessible
cap-sheet-bleeding-backgroundExtension de fond pour les feuilles arrondies aux bords
cap-sheet-handleManche de détenue pouvant être traînée et accessible au clavier
cap-sheet-titleTitre accessible
cap-sheet-descriptionDescription accessible
cap-sheet-special-wrapperFonction de composition pour les feuilles détachées, les cartes et les boîtes de dialogue légères
cap-sheet-stackGroupe de feuilles empilées
cap-sheet-outletSortie de progression pour la profondeur, le parallaxe et les effets de page
cap-scrollAssistant de progression de scroll
cap-fixedAideur de couche fixe
cap-islandContenu de l'île flottante lié
cap-external-overlayContenu d'overlay géré en dehors de l'arbre de feuille
OptionAttributDéfautDescription
contentPlacementcontent-placementbottomtop, bottom, left, right, ou center
detentsdetentsaucunLes longueurs CSS séparées par des espaces comme 18em 32em
safeAreasafe-areaautoLes bords de la zone de sécurité protégée
swipeswipetrueActiver les gestes de pointeur, de toucher, de trackpad et de roue
swipeDismissalswipe-dismissaltrueAutoriser les gestes pour fermer à la position de repos 0
inertOutsideinert-outsidetrueEmpêcher l'interaction derrière les feuilles de modal
focusTrapfocus-traptrueConserver l'attention du clavier à l'intérieur de la feuille
closeOnOutsideClickclose-on-outside-clicktrueFermer en cliquant sur le fond ou la vue
closeOnEscapeclose-on-escapetrueFermer en appuyant sur la touche Échap
nativeFocusScrollPreventionnative-focus-scroll-preventiontrueConserver les champs de saisie en focus visible au-dessus du clavier
themeColorDimmingtheme-color-dimmingautoDimmer la couleur du thème WebView pendant la modalité
  • @capgo/capacitor-sheets
  • @capgo/capacitor-sheets/react
  • @capgo/capacitor-sheets/vue
  • @capgo/capacitor-sheets/angular
  • @capgo/capacitor-sheets/svelte
  • @capgo/capacitor-sheets/solid

Si vous utilisez Débuter pour planifier le travail de plugin natif, connectez-le avec Capgo Répertoire des plugins pour le flux de travail du produit dans Capgo Répertoire des plugins, Capacitor Plugins par Capgo pour les détails d'implémentation dans Capacitor Plugins par Capgo, Ajouter ou Mettre à jour les plugins pour les détails d'implémentation dans Ajouter ou Mettre à jour les plugins, Alternatives de plugins Ionic Enterprise pour le flux de travail du produit dans les alternatives de plugins Ionic Enterprise, et Capgo Construction native pour le flux de travail du produit dans Capgo Construction native.