Open4
ハーフモーダル
選択肢は2つ
- Vaul
- react-modal
用途比較
ハーフモーダルをスマホで使うことが目的なのでVaulを選択
Vaul
ハーフモーダル特化。iOSのようなハーフモーダルをWebでも実現したい用途で利用する
react-modal
汎用的なモーダル使用での用途
Drawer.Root プロパティ一覧
基本的な動作制御
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
closeThreshold |
number |
0.25 |
ドロワーを閉じるためのスワイプ閾値。0.25 = 25%スワイプで閉じる、0.8 = 80%スワイプしないと閉じない |
<Drawer.Root closeThreshold={0.5}> |
onOpenChange |
(open: boolean) => void |
- | ドロワーの開閉状態が変わった時のコールバック | <Drawer.Root onOpenChange={(isOpen) => {...}}> |
defaultOpen |
boolean |
false |
最初からドロワーを開いた状態で表示するか | <Drawer.Root defaultOpen={true}> |
direction |
'top' | 'bottom' | 'left' | 'right' |
'bottom' |
ドロワーが開く方向 | <Drawer.Root direction="left"> |
スタイル・見た目の制御
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
noBodyStyles |
boolean |
- | Vaulがbody 要素に自動で適用するスタイルを無効にする |
<Drawer.Root noBodyStyles={true}> |
shouldScaleBackground |
boolean |
- | 背景をスケール(縮小)するかどうか。iOS風の効果 | <Drawer.Root shouldScaleBackground={true}> |
setBackgroundColorOnScale |
boolean |
true |
背景スケール時に背景色を変更するかどうか | <Drawer.Root setBackgroundColorOnScale={false}> |
ドラッグ・操作の制御
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
handleOnly |
boolean |
false |
<Drawer.Handle /> のみでドラッグ操作を許可する |
<Drawer.Root handleOnly={true}> |
dismissible |
boolean |
true |
ドロワーを閉じることができるかどうか。false の場合、ドラッグ、ESCキー、外部クリックで閉じない |
<Drawer.Root dismissible={false}> |
modal |
boolean |
true |
モーダル動作(背景の操作を無効)にするかどうか。false にすると背景も操作できる |
<Drawer.Root modal={false}> |
イベント・コールバック
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
onDrag |
(event, percentageDragged) => void |
- | ドラッグ中に呼び出される | <Drawer.Root onDrag={(event, percentage) => {...}}> |
onRelease |
(event, open) => void |
- | ドラッグを離した時に呼び出される | <Drawer.Root onRelease={(event, isOpen) => {...}}> |
onClose |
() => void |
- | ドロワーが閉じる時に呼び出される | <Drawer.Root onClose={() => {...}}> |
onAnimationEnd |
(open: boolean) => void |
- | 開閉アニメーションが終了した時に呼び出される | <Drawer.Root onAnimationEnd={(isOpen) => {...}}> |
スクロール・キーボード対応
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
scrollLockTimeout |
number |
500 |
ドロワー内でスクロール後、ドラッグを無効にする時間(ミリ秒) | <Drawer.Root scrollLockTimeout={1000}> |
disablePreventScroll |
boolean |
false |
ドキュメント全体のスクロールを防ぐかどうか。true にすると背景のスクロールを許可 |
<Drawer.Root disablePreventScroll={true}> |
repositionInputs |
boolean |
- | キーボード表示時にinput要素を再配置するかどうか | <Drawer.Root repositionInputs={false}> |
fixed |
boolean |
- | キーボード表示時にドロワーを上に移動させるかどうか | <Drawer.Root fixed={true}> |
スナップポイント関連
プロパティ | 型 | デフォルト値 | 説明 | 使用例 |
---|---|---|---|---|
snapToSequentialPoint |
boolean |
false |
高速スワイプでもスナップポイントを飛び越さないようにする | <Drawer.Root snapToSequentialPoint={true}> |
基準が画面(ビューポート)ではなく、全画面にハーフモーダルが表示される意味ではない。