ステッパー
住所
ここに住所を追加してください
配送
ご希望の配送方法を設定してください
チェックアウト
注文を確認してください
<script setup lang="ts">
import { Icon } from '@iconify/vue'
import { StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperSeparator, StepperTitle, StepperTrigger } from 'radix-vue'
const steps = [{
step: 1,
title: 'Address',
description: 'Add your address here',
icon: 'radix-icons:home',
}, {
step: 2,
title: 'Shipping',
description: 'Set your preferred shipping method',
icon: 'radix-icons:archive',
}, {
step: 3,
title: 'Checkout',
description: 'Confirm your order',
icon: 'radix-icons:check',
}]
</script>
<template>
<StepperRoot
:default-value="2"
class="flex gap-2 w-full max-w-[32rem]"
>
<StepperItem
v-for="item in steps"
:key="item.step"
class="w-full flex justify-center gap-2 cursor-pointer group data-[disabled]:pointer-events-none relative px-4"
:step="item.step"
>
<StepperTrigger class="inline-flex items-center group-data-[disabled]:text-gray-400 group-data-[state=active]:bg-green11 group-data-[state=active]:text-white justify-center rounded-full text-gray-400 w-10 h-10 shrink-0 bg-gray-300 group-data-[state=completed]:bg-white group-data-[state=completed]:text-green10 focus:shadow-[0_0_0_2px] focus:shadow-black focus:outline-none">
<StepperIndicator>
<Icon
:icon="item.icon"
class="w-5 h-5"
/>
</StepperIndicator>
</StepperTrigger>
<StepperSeparator
v-if="item.step !== steps[steps.length - 1].step"
class="absolute block top-5 left-[calc(50%+30px)] right-[calc(-50%+20px)] h-0.5 rounded-full group-data-[disabled]:bg-gray-300 bg-gray-300 group-data-[state=completed]:bg-white bg-green5 shrink-0"
/>
<div class="absolute text-center top-full left-0 w-full mt-2 text-white group-data-[state=inactive]:text-gray-300">
<StepperTitle class="font-medium">
{{ item.title }}
</StepperTitle>
<StepperDescription class="hidden sm:block text-xs">
{{ item.description }}
</StepperDescription>
</div>
</StepperItem>
</StepperRoot>
</template>
機能
- 制御可能または非制御にできます。
- 水平/垂直方向をサポートします。
- 線形/非線形のアクティベーションをサポートします。
- 完全なキーボードナビゲーション。
インストール
コマンドラインからコンポーネントをインストールします。
$ npm add radix-vue
構造
すべてのパーツをインポートして組み合わせます。
<script setup>
import { StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperTitle, StepperTrigger } from 'radix-vue'
</script>
<template>
<StepperRoot>
<StepperItem>
<StepperTrigger />
<StepperIndicator />
<StepperTitle />
<StepperDescription />
<StepperSeparator />
</StepperItem>
</StepperRoot>
</template>
APIリファレンス
ルート
すべてのステッパーコンポーネントパーツを含みます。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'div' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 | |
defaultValue | 1 | number 最初にレンダリングされたときにアクティブにする必要があるタブの値。タブの状態を制御する必要がない場合に使用します |
dir | 'ltr' | 'rtl' 該当する場合のコンボボックスの読み取り方向。 | |
linear | true | boolean ステップを順番に完了する必要があるかどうか |
modelValue | number アクティブにするタブの制御された値。 | |
orientation | 'horizontal' | 'vertical' | 'horizontal' タブのレイアウト方向。主に、矢印ナビゲーションが適切に行われるようにします(左右または上下)。 |
Emit | ペイロード |
---|---|
update:modelValue | [payload: number] 値が変更されたときに呼び出されるイベントハンドラー |
スロット (デフォルト) | ペイロード |
---|---|
modelValue | number | undefined 現在のステップ |
totalSteps | number ステップの総数 |
isNextDisabled | boolean 次のステップが無効かどうか |
isPrevDisabled | boolean 前のステップが無効かどうか |
isFirstStep | boolean 最初のステップがアクティブかどうか |
isLastStep | boolean 最後のステップがアクティブかどうか |
goToStep |
特定のステップに移動する |
nextStep |
次のステップに移動する |
prevStep |
前のステップに移動する |
データ属性 | 値 |
---|---|
[data-orientation] | "vertical" | "horizontal" |
[data-linear] | 線形の場合に表示 |
アイテム
ステップアイテムコンポーネント。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'div' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 | |
completed | false | boolean ステップが完了したかどうかを示します。 |
disabled | false | boolean
|
step* | number ステッパーアイテムをインデックスに関連付ける一意の値 |
スロット (デフォルト) | ペイロード |
---|---|
state | 'active' | 'completed' | 'inactive' ステッパーアイテムの現在の状態 |
データ属性 | 値 |
---|---|
[data-state] | "active" | "inactive" | "completed" |
[data-disabled] | 無効の場合に表示 |
[data-orientation] | "vertical" | "horizontal" |
トリガー
ステップを切り替えるトリガー。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'button' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 |
データ属性 | 値 |
---|---|
[data-state] | "active" | "inactive" | "completed" |
[data-disabled] | 無効の場合に表示 |
[data-orientation] | "vertical" | "horizontal" |
インジケーター
ステップのインジケーター。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'div' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 |
タイトル
ステッパートリガーにフォーカスがある場合にアナウンスされるアクセシブルなタイトル。
タイトルを非表示にする場合は、<VisuallyHidden asChild>
のように、視覚的に非表示ユーティリティでラップします。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'h4' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 |
説明
ステッパートリガーにフォーカスがある場合にアナウンスされるオプションのアクセシブルな説明。
説明を非表示にする場合は、<VisuallyHidden asChild>
のように、視覚的に非表示ユーティリティでラップします。説明を完全に削除する場合は、この部分を削除し、StepperTrigger
にaria-describedby="undefined"
を渡します。
プロパティ | デフォルト | タイプ |
---|---|---|
as | 'div' | AsTag | コンポーネント このコンポーネントがレンダリングする要素またはコンポーネント。 |
asChild | boolean 子として渡された要素のデフォルトのレンダリング要素を変更し、それらのプロパティと動作をマージします。 詳細については、コンポジションガイドをご覧ください。 | |
completed | false | boolean ステップが完了したかどうかを示します。 |
disabled | false | boolean
|
step* | number ステッパーアイテムをインデックスに関連付ける一意の値 |
スロット (デフォルト) | ペイロード |
---|---|
state | 'active' | 'completed' | 'inactive' ステッパーアイテムの現在の状態 |
例
垂直
orientation
プロパティを使用して、垂直タブを作成できます。
<script setup>
import { StepperDescription, StepperIndicator, StepperItem, StepperList, StepperRoot, StepperTitle } from 'radix-vue'
</script>
<template>
<StepperRoot
:default-value="1"
orientation="vertical"
>
<StepperList aria-label="stepper example">
<StepperItem>
<StepperIndicator />
<StepperTitle />
<StepperDescription />
</StepperItem>
<StepperItem>
<StepperIndicator />
<StepperTitle />
<StepperDescription />
</StepperItem>
</StepperList>
</StepperRoot>
</template>
アクセシビリティ
キーボード操作
キー | 説明 |
---|---|
Tab | フォーカスがステップに移動すると、最初のステップにフォーカスが移動します。 |
ArrowDown | orientation に応じて、次のステップにフォーカスを移動します。 |
ArrowRight | orientation に応じて、次のステップにフォーカスを移動します。 |
ArrowUp | orientation に応じて、前のステップにフォーカスを移動します。 |
ArrowLeft | orientation に応じて、前のステップにフォーカスを移動します。 |
EnterSpace | フォーカスされたステップを選択します。 |