シートの__CAPGO_KEEP_0__リポジトリ
このプラグインのインストール手順とフルマークダウンガイドを含むセットアップのコピー可能な質問をコピーしてください。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-sheets`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/sheets/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
インストール
インストールのセクションAI-Assisted セットアップを使用してプラグインをインストールできます。次のコマンドを使用して、Capgo スキルをAIツールに追加します。
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins次のプロンプトを使用します:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-sheets` plugin in my project.Manual セットアップを使用する場合は、以下のコマンドを実行して、下記のプラットフォーム固有の手順に従ってください。
-
パッケージをインストール
ターミナルウィンドウ npm install @capgo/capacitor-sheets -
ウェブコンポーネントを登録
import '@capgo/capacitor-sheets'; -
安全なエリア用ビューポート設定を追加
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> -
シートをレンダリング
<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;}
Capacitor セーフ エリア
セクション「Capacitor セーフ エリア」セーフ エリアはデフォルトで有効になっています。 safe-area="auto"ブラウザ環境の値と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)シートごとの保護されたエッジを選択してください:
<cap-sheet safe-area="auto"></cap-sheet><cap-sheet safe-area="bottom left right"></cap-sheet><cap-sheet safe-area="none"></cap-sheet>オーバーレイのステータスバーまたはシステムバーを持つアプリの場合、ネイティブのプラグインを使用して正しいインセット値を表示する責任を負うプラグインを維持してください:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { plugins: { StatusBar: { overlaysWebView: true, }, Keyboard: { resize: 'body', resizeOnFullScreen: true, }, SystemBars: { insetsHandling: 'css', }, },};
export default config;キーボードのハンドリングは native-focus-scroll-preventionによって制御されます。 trueデフォルトでは
<cap-sheet native-focus-scroll-prevention="false"></cap-sheet>クリップボードにコピー
命令的制御「命令的制御」のセクション
const sheet = document.querySelector('cap-sheet');
await sheet?.present();await sheet?.stepTo(2);await sheet?.step('down');await sheet?.dismiss();制御された状態、分析、調整されたアニメーション用のイベントをリスンします:
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);});React
Reactimport { 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> );}Importing from @capgo/capacitor-sheets/react また、カスタム要素のための JSX タイピングも登録されます。TypeScript が未知のタグを報告している場合、ソースツリー内に宣言ファイルを追加してください:
import '@capgo/capacitor-sheets/react';Vue
Vue<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> );}コンポーネント
コンポーネント| 要素 | 目的 |
|---|---|
cap-sheet | コンテキスト:Capgoのマーケティングサイト。ロール:短いUIラベルまたはナビゲーションアイテム。メッセージキー`subprocessors_table_purpose` (Subprocessors Table Purpose)。 |
cap-sheet-trigger | シートの状態、デンテント、ジェスチャー、モーダル動作、イベント |
cap-sheet-portal | 宣言的プレゼント、閉じる、切り替え、ステップアクション |
cap-sheet-view | オプションのボディポータルオーバーレイレイヤー |
cap-sheet-backdrop | 固定ビューのホスト、セーフエリア、キーボードパディング |
cap-sheet-content | 進行中のバックグラウンド |
cap-sheet-bleeding-background | アクセシビリティのシート表面 |
cap-sheet-handle | 丸い角のシートの背景拡張 |
cap-sheet-title | ドラッグ可能でキーボードアクセシビリティのデンテントハンドル |
cap-sheet-description | アクセシビリティのタイトル |
cap-sheet-special-wrapper | 分離されたシート、カード、ライトボックス用のコンポジションフック |
cap-sheet-stack | スタックされたシートグループ |
cap-sheet-outlet | 深度、パララックス、ページ効果用の進行出力 |
cap-scroll | スクロール進行ヘルパー |
cap-fixed | 固定レイヤーヘルパー |
cap-island | 関連する浮遊島のコンテンツ |
cap-external-overlay | シート木構造外のオーバーレイコンテンツ |
メインオプション
「メインオプション」タイトルのセクション| オプション | 属性 | デフォルト | 概要 |
|---|---|---|---|
contentPlacement | content-placement | bottom | top, bottom, left, right, または center |
detents | detents | なし | スペース区切りのCSS長さなど 18em 32em |
safeArea | safe-area | auto | 保護された安全エリアの境界 |
swipe | swipe | true | ポインター、タッチ、トラックパッド、ホイールジェスチャーを有効にする |
swipeDismissal | swipe-dismissal | true | ジェスチャーをデタントにdismissすることを許可する 0 |
inertOutside | inert-outside | true | モーダルシートの背後でインタラクションを防止する |
focusTrap | focus-trap | true | シート内でキーボードフォーカスを維持する |
closeOnOutsideClick | close-on-outside-click | true | バックドロップまたはビューをクリックするとdismissする |
closeOnEscape | close-on-escape | true | エスケープキーを押すとdismissする |
nativeFocusScrollPrevention | native-focus-scroll-prevention | true | キーボードの下に表示されるフォーカス入力を維持する |
themeColorDimming | theme-color-dimming | auto | ウェブビューのテーマ色をモーダル時暗くする |
利用可能なエントリポイント
「利用可能なエントリポイント」@capgo/capacitor-sheets@capgo/capacitor-sheets/react@capgo/capacitor-sheets/vue@capgo/capacitor-sheets/angular@capgo/capacitor-sheets/svelte@capgo/capacitor-sheets/solid
「始めてから続けて」
「始めてから続けて」Capgoを使用している場合 Capgoを使用して __CAPGO_KEEP_0__ プラグインディレクトリ Capgo プラグインディレクトリの製品ワークフロー Capgo プラグイン Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, プラグインの追加または更新 プラグインの追加または更新の実装詳細については Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの製品ワークフローについては Capgo ネイティブ ビルド 製品ワークフローについては Capgo ネイティブ ビルド