Open4

ハーフモーダル

なおきなおき
なおきなおき

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}>
なおきなおき

https://vaul.emilkowal.ski/snap-points
スナップポイントで1を設定した場合は、ハーフモーダル内にある要素がすべて表示されるという意味。
基準が画面(ビューポート)ではなく、全画面にハーフモーダルが表示される意味ではない。