メインコンテンツにジャンプ

シートの__CAPGO_KEEP_0__リポジトリ

GitHub

CapgoのAIアシスタントセットアップを使用してプラグインをインストールできます。次のコマンドを使用して、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 Setupを使用する場合は、以下のコマンドを実行して、下記のプラットフォーム固有の手順に従ってください。

  1. パッケージをインストール

    ターミナルウィンドウ
    npm install @capgo/capacitor-sheets
  2. ウェブコンポーネントを登録

    import '@capgo/capacitor-sheets';
  3. 安全なエリア用ビューポート設定を追加

    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
  4. シートをレンダリング

    <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 Safe Areas

Capacitor セーフエリア

セクションのタイトルは “__CAPGO_KEEP_0__ Safe Areas” 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);
});
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>
);
}

インポート @capgo/capacitor-sheets/react カスタム要素のための JSX タイピングも登録される。TypeScript が未知のタグを報告している場合、ソース Tree 内の宣言ファイルを追加してください:

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

コンポーネント

コンポーネント
要素目的
cap-sheetシートの状態、デンテント、ジェスチャー、モーダル動作、イベント
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シート木構造外のオーバーレイコンテンツ
オプション属性デフォルト概要
contentPlacementcontent-placementbottomtop, bottom, left, right, または center
detentsdetentsなしスペース区切りのCSS長さなど 18em 32em
safeAreasafe-areaauto保護された安全エリアの境界
swipeswipetrueポインター、タッチ、トラックパッド、ホイールジェスチャーを有効にする
swipeDismissalswipe-dismissaltrueジェスチャーをデテントにdismissすることを許可する 0
inertOutsideinert-outsidetrueモーダルシートの背後でインタラクションを防止する
focusTrapfocus-traptrueシート内でキーボードフォーカスを維持する
closeOnOutsideClickclose-on-outside-clicktrueバックドロップまたはビューをクリックするとdismissする
closeOnEscapeclose-on-escapetrueエスケープキーを押すとdismissする
nativeFocusScrollPreventionnative-focus-scroll-preventiontrueキーボードの下に表示されるフォーカス入力を維持する
themeColorDimmingtheme-color-dimmingautoウェブビューのテーマ色をモーダル時暗くする

利用可能なエントリポイント

「利用可能なエントリポイント」
  • @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_KEEP_0__ プラグインディレクトリ Capgo プラグインディレクトリの製品ワークフロー Capgo プラグイン Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, プラグインの追加または更新 プラグインの追加または更新の実装詳細については Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの製品ワークフローについては Capgo ネイティブ ビルド 製品ワークフローについてはCapgo ネイティブ ビルド