Zum Inhalt springen

Getting Started

GitHub

Sie können unser AI-gestütztes Setup verwenden, um das Plugin zu installieren. Fügen Sie die Capgo-Fähigkeiten zu Ihrem AI-Tool hinzu, indem Sie folgenden Befehl verwenden:

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

Verwenden Sie dann die folgende Anweisung:

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

Wenn Sie die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und folgen Sie den plattform-spezifischen Anweisungen unten:

  1. Installieren Sie das Paket

    Terminal-Fenster
    npm install @capgo/capacitor-sheets
  2. Registrieren Sie die Web-Komponenten

    import '@capgo/capacitor-sheets';
  3. Fügen Sie die Sichtbarkeits-Einstellung für sichere Bereiche hinzu

    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
  4. Rendern Sie ein Blatt

    <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;
    }

Sichere Bereiche sind standardmäßig aktiviert durch safe-area="auto". Die Ansicht des Blattes liest sowohl Browser-Umgebungs-Werte als auch Capacitor-Fallback-Variablen:

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)

Wählen Sie die geschützten Ecken pro Blatt:

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

Für Apps mit Überlagerungsstatusleisten oder Systemleisten, behalten Sie die native Plugins bei, die für die korrekte Anzeige von Einstellwerten verantwortlich sind:

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

Die Tastatureingabe wird durch native-focus-scroll-prevention, der standardmäßig auf truegesetzt ist. Deaktivieren Sie es nur, wenn Ihre App bereits die Tastatureingabe vermeidet:

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

Zur Zwischenablage kopieren

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

Zur Zwischenablage kopieren

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>
);
}

Importieren von @capgo/capacitor-sheets/react registriert außerdem JSX-Typen für die benutzerdefinierten Elemente. Wenn TypeScript immer noch unbekannte Tags meldet, fügen Sie eine Deklarationsdatei in Ihrem Quelltree ein:

src/capgo-sheets.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>
);
}

Komponenten

Element
Zweck__CAPGO_KEEP_0__
cap-sheetBlattzustand, Dämpfer, Gesten, Modalfunktionen und Ereignisse
cap-sheet-triggerDeklarative Präsentation, Abbruch, Toggle und Schrittaktionen
cap-sheet-portalOptionales Body-Portal für Überlagerungsschichten
cap-sheet-viewFestes Viewport-Host mit sicheren Bereichen und Tastaturabstand
cap-sheet-backdropProgress-synchronisierter Hintergrund
cap-sheet-contentZugängliche Blattoberfläche
cap-sheet-bleeding-backgroundHintergrund für gerundete Blattränder
cap-sheet-handleZiehbare und tastaturzugängliche Dämpferhandhabung
cap-sheet-titleZugänglicher Titel
cap-sheet-descriptionZugängliche Beschreibung
cap-sheet-special-wrapperKompositionshook für abgetrennte Blätter, Karten und Lichtboxen
cap-sheet-stackGruppierung von Blättern in Stufen
cap-sheet-outletProgress outlet für Tiefe, Parallax und Seiteneffekte
cap-scrollHilfe für die Scroll-Progress-Kontrolle
cap-fixedHilfe für die feste Layer-Ebene
cap-islandZugehörige schwebende Insel-Inhalte
cap-external-overlayÜberlagerte Inhalte, die außerhalb des Blattbaums verwaltet werden
OptionAttributStandardwertBeschreibung
contentPlacementcontent-placementbottomtop, bottom, left, right, oder center
detentsdetentskeineCSS-Längen wie z.B. 18em 32em
safeAreasafe-areaautoSchützen Sie die sicheren Randbereiche
swipeswipetrueAktivieren Sie die Zeiger-, Touch-, Trackpad- und Radgesten
swipeDismissalswipe-dismissaltrueErlauben Sie, dass Gesten zum Abtasten zum Detent abgelehnt werden 0
inertOutsideinert-outsidetrueVerhindern Sie die Interaktion hinter Modal-Scheiben
focusTrapfocus-traptrueHalten Sie die Tastaturfokus innerhalb der Scheibe
closeOnOutsideClickclose-on-outside-clicktrueSchließen Sie, wenn Sie auf den Hintergrund oder die Ansicht klicken
closeOnEscapeclose-on-escapetrueSchließen Sie, wenn Sie Escape drücken
nativeFocusScrollPreventionnative-focus-scroll-preventiontrueHalten Sie die fokussierten Eingabefelder über der Tastatur sichtbar
themeColorDimmingtheme-color-dimmingautoDimmen Sie die WebView-Themenfarbe während der Modal-Scheibe

Verfügbare Entrypoints

Verfügbare Eingänge
  • @capgo/capacitor-sheets
  • @capgo/capacitor-sheets/react
  • @capgo/capacitor-sheets/vue
  • @capgo/capacitor-sheets/angular
  • @capgo/capacitor-sheets/svelte
  • @capgo/capacitor-sheets/solid

Weitermachen von Getting Started

Weitermachen von Getting Started

Wenn Sie " Getting Started zur Planung von native Plugin-Arbeiten verwenden, verbinden Sie es mit Capgo Plugin-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins für die Implementierungsdetails in Hinzufügen oder Aktualisieren von Plugins, Ionic Enterprise Plugin Alternativen für den Produktworkflow in Ionic Enterprise Plugin Alternativen, und Capgo Native Builds für den Produktworkflow in Capgo Native Builds.