スイッチ
スイッチコンポーネントは、チェック状態と非チェック状態を切り替える代替手段として使用されます。
インストール
npx nextui-cli@latest add switch
上記のコマンドは個別のインストール専用です。もし、 @nextui-org/react がグローバルにインストール済みであれば、この手順はスキップできます。
インポート
使い方
ラベル付き
無効
サイズ
色
サムネイルアイコン付き
アイコン付き
startContent および endContent プロパティを使用することで、スイッチの開始と終了にアイコンを追加することもできます。
制御された
注: NextUIの
Switchは、onChangeのようなネイティブイベントもサポートしており、Formik や React Hook Form のようなフォームライブラリで役立ちます。
スロット
- base: スイッチのベーススロット。メインのラッパーです。
- wrapper: スタートアイコン、エンドアイコン、サムのラッパー。
- thumb: スイッチのサム要素。円形の要素です。
- label: スイッチのラベルスロット。
- startContent: スイッチの開始位置にあるアイコンスロット。
- endContent: スイッチの終了位置にあるアイコンスロット。
- thumbIcon: サムの内側にあるアイコンスロット。
カスタムスタイル
コンポーネントスロットにカスタムTailwind CSSクラスを渡すことで、Switchコンポーネントをカスタマイズできます。
カスタム実装
さらにスイッチをカスタマイズする必要がある場合は、useSwitch フックを使用して独自の実装を作成できます。
データ属性
Switchのbase要素には次の属性があります。
- data-selected: スイッチがチェックされている場合。
isSelectedプロップに基づきます。 - data-pressed: スイッチが押されたとき。usePress に基づきます。
- data-readonly: スイッチが読み取り専用の場合。
isReadOnlyプロップに基づきます。 - data-hover: スイッチがホバーされている場合。useHover に基づきます。
- data-focus: スイッチがフォーカスされている場合。useFocusRing に基づきます。
- data-focus-visible: スイッチがキーボードでフォーカスされている場合。useFocusRing に基づきます。
- data-disabled: スイッチが無効になっている場合。
isDisabledプロップに基づきます。
アクセシビリティ
- ネイティブHTMLの
<input>要素で構築されています。 - フォームの自動入力のようなブラウザ機能を完全にサポートします。
- キーボードフォーカスの管理とクロスブラウザの正規化。
- Tab キーと Space キーのキーボードイベントをサポートします。
- 支援技術のためのラベル付けサポート。
- ARIAを介して支援技術にスイッチとして公開します。
API
SwitchのProps
| 属性 | 型 | 説明 | デフォルト |
|---|---|---|---|
| children | ReactNode | スイッチのラベル。 | - |
| value | string | HTMLフォームを送信するときに使用するinput要素の値。 | - |
| name | string | HTMLフォームを送信するときに使用するinput要素の名前。 | - |
| size | sm | md | lg | スイッチのサイズ。 | md |
| color | default | primary | secondary | success | warning | danger | スイッチの色。 | primary |
| thumbIcon | ThumbIconProps | スイッチがチェックされたときに表示されるアイコン。 | - |
| startContent | ReactNode | スイッチの開始位置に表示されるアイコン。 | - |
| endContent | ReactNode | スイッチの終了位置に表示されるアイコン。 | - |
| isSelected | boolean | 要素が選択されるべきかどうか(制御付き)。 | - |
| defaultSelected | boolean | 要素が選択されるべきかどうか(制御なし)。 | - |
| isRequired | boolean | フォーム送信前に、入力欄でユーザー入力が必須かどうか。 | false |
| isReadOnly | boolean | 入力欄が選択できるが、ユーザーによって変更できないかどうか。 | - |
| isDisabled | boolean | スイッチが無効かどうか。 | false |
| disableAnimation | boolean | アニメーションを無効にするかどうか。 | false |
| classNames | Record<"base"| "wrapper"| "thumb"| "label" | "startContent" | "endContent" | "thumbIcon" , string> | スイッチのスロットにカスタムクラス名を指定できます。 | - |
スイッチのイベント
| 属性 | 型 | 説明 |
|---|---|---|
| onChange | React.ChangeEvent<HTMLInputElement> | 要素の選択状態が変更されたときに呼び出されるハンドラー。 event.target.checked (boolean) にアクセスして、新しいチェック状態を取り出すことができます。 |
| onValueChange | (isSelected: boolean) => void | 要素の選択状態が変更されたときに呼び出されるハンドラー。 |
型
スイッチのアイコンのプロパティ
type IconProps = {"data-checked": string;width: string;height: string;isSelected: boolean;className: string;};type CheckboxIconProps = ReactNode | ((props: IconProps) => ReactNode);

