SaturationSlider
SaturationSliderは、ユーザーが色の彩度を選択するために使用されるコンポーネントです。
<SaturationSlider.Root maxW="sm" />
使い方
import { SaturationSlider } from "@yamada-ui/react"
import { SaturationSlider } from "@/components/ui"
import { SaturationSlider } from "@workspaces/ui"
<SaturationSlider.Root />
サイズを変更する
<VStack>
<For each={["sm", "md", "lg"]}>
{(size, index) => (
<SaturationSlider.Root key={index} size={size} maxW="sm" />
)}
</For>
</VStack>
デフォルトの値を設定する
デフォルトの値を設定する場合は、defaultValueに値を設定します。
<SaturationSlider.Root defaultValue={[120, 0.33, 0.33]} maxW="sm" />
形を変更する
<VStack>
<For each={["circle", "rounded", "square"]}>
{(shape, index) => (
<SaturationSlider.Root
key={index}
defaultValue={[120, 0.33, 0.33]}
shape={shape}
maxW="sm"
/>
)}
</For>
</VStack>
ステップ値を設定する
ステップ値を設定する場合は、stepに値を設定します。
<SaturationSlider.Root step={0.1} maxW="sm" />
無効にする
無効にする場合は、disabledをtrueに設定します。
<SaturationSlider.Root disabled maxW="sm" />
読み取り専用にする
読み取り専用にする場合は、readOnlyをtrueに設定します。
<SaturationSlider.Root readOnly maxW="sm" />
ツールチップを表示する
const [value, setValue] = useState([120, 0.33, 0.33])
return (
<SaturationSlider.Root value={value} onChange={setValue} maxW="sm">
<SaturationSlider.Track>
<Tooltip content={value}>
<SaturationSlider.Thumb />
</Tooltip>
</SaturationSlider.Track>
</SaturationSlider.Root>
)
"use client"をファイルの上部に追加する必要があります。開始と終了のイベントをハンドルする
開始と終了のイベントをハンドルする場合は、onChangeStartやonChangeEndを使用します。
Value: [120,0.33,0.33], Start Value: [120,0.33,0.33], End Value: [120,0.33,0.33]
const [value, onChange] = useState([120, 0.33, 0.33])
const [startValue, onChangeStart] = useState([120, 0.33, 0.33])
const [endValue, onChangeEnd] = useState([120, 0.33, 0.33])
return (
<VStack>
<Text>
Value: {JSON.stringify(value)}, Start Value: {JSON.stringify(startValue)},
End Value: {JSON.stringify(endValue)}
</Text>
<SaturationSlider.Root
value={value}
onChange={onChange}
onChangeStart={onChangeStart}
onChangeEnd={onChangeEnd}
maxW="sm"
/>
</VStack>
)
"use client"をファイルの上部に追加する必要があります。制御する
const [value, setValue] = useState([120, 0.33, 0.33])
return <SaturationSlider.Root value={value} onChange={setValue} maxW="sm" />
"use client"をファイルの上部に追加する必要があります。Props
アクセシビリティ
SaturationSliderは、アクセシビリティに関してWAI-ARIA - Slider Patternに従います。
キーボード操作
| キー | 説明 | 状態 |
|---|---|---|
ArrowRight | stepの値に基づいて彩度を増加します。 | - |
ArrowLeft | stepの値に基づいて彩度を減少します。 | - |
ArrowUp | stepの値に基づいて明度を増加します。 | - |
ArrowDown | stepの値に基づいて明度を減少します。 | - |
ARIAロールと属性
| コンポーネント | ロールと属性 | 使い方 |
|---|---|---|
SaturationSlider.Thumb | role="slider" | スライダーであることを示します。 |
aria-label | "彩度と明度のつまみ"を設定します。 | |
aria-labelledby | 関連するSaturationSlider.Rootのidを設定します。 | |
aria-roledescription | "2D slider"を設定します。 | |
aria-valuemin | 0を設定します。 | |
aria-valuemax | 100を設定します。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "彩度 18%, 明度 18%"のように、現在の値を設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
aria-invalid | invalidが設定されている場合は"true"を設定します。 | |
aria-required | requiredが設定されている場合は"true"を設定します。 | |
aria-describedby | SaturationSlider.RootがField.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
input | aria-hidden | 要素をアクセシビリティツリーから除外します。 |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
aria-invalid | invalidが設定されている場合は"true"を設定します。 | |
aria-required | requiredが設定されている場合は"true"を設定します。 | |
aria-describedby | SaturationSlider.RootがField.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 |
類似のコンポーネント
HueSlider
HueSliderは、ユーザーが色相を選択するために使用されるコンポーネントです。
AlphaSlider
AlphaSliderは、ユーザーが色の透明度を選択するために使用されるコンポーネントです。
Slider
Sliderは、ユーザーが値の範囲から選択するために使用されるコンポーネントです。
ColorSelector
ColorSelectorは、ユーザーが色を選択するために使用されるコンポーネントです。
ColorPicker
ColorPickerは、ユーザーが色を選択したり任意の色の値を入力するために使用されるコンポーネントです。
使用しているコンポーネント・フック
HueSlider
HueSliderは、ユーザーが色相を選択するために使用されるコンポーネントです。
Slider
Sliderは、ユーザーが値の範囲から選択するために使用されるコンポーネントです。
Field
Fieldは、フォーム要素に、ラベル、ヘルパーメッセージ、エラーメッセージなどをグループ化するために使用されるコンポーネントです。