ColorSelector
ColorSelectorは、ユーザーが色を選択するために使用されるコンポーネントです。
<ColorSelector.Root maxW="md" />
使い方
import { ColorPicker } from "@yamada-ui/react"
import { ColorPicker } from "@/components/ui"
import { ColorPicker } from "@workspaces/ui"
<ColorSelector.Root>
<ColorSelector.SaturationSlider />
<ColorSelector.HueSlider />
<ColorSelector.AlphaSlider />
<ColorSelector.ColorSwatchGroupLabel />
<ColorSelector.ColorSwatchGroup>
<ColorSelector.ColorSwatchItem />
</ColorSelector.ColorSwatchGroup>
</ColorSelector.Root>
サイズを変更する
<VStack>
<For each={["sm", "md", "lg"]}>
{(size, index) => <ColorSelector.Root maxW="md" key={index} size={size} />}
</For>
</VStack>
デフォルトの値を設定する
デフォルトの値を設定する場合は、defaultValueに値を設定します。
<ColorSelector.Root defaultValue="#775999" maxW="md" />
アルファ値を設定する
アルファ値を設定する場合は、defaultValueにアルファ値を含む値を設定するか、formatに"hexa"や"hsla"などを設定します。
<ColorSelector.Root defaultValue="#775999A0" maxW="md" />
候補を表示する
候補を表示する場合は、colorSwatchesに配列を設定します。
<ColorSelector.Root
colorSwatches={[
"hsl(0, 100%, 50%)",
"hsl(45, 100%, 50%)",
"hsl(90, 100%, 50%)",
"hsl(135, 100%, 50%)",
"hsl(180, 100%, 50%)",
"hsl(225, 100%, 50%)",
"hsl(270, 100%, 50%)",
"hsl(315, 100%, 50%)",
]}
colorSwatchGroupLabel="Pick a color"
maxW="md"
/>
候補の列を変更する
候補の列を変更する場合は、colorSwatchGroupColumnsに数値を設定します。
<ColorSelector.Root
colorSwatches={[
"hsl(0, 100%, 50%)",
"hsl(36, 100%, 50%)",
"hsl(72, 100%, 50%)",
"hsl(108, 100%, 50%)",
"hsl(144, 100%, 50%)",
"hsl(180, 100%, 50%)",
"hsl(216, 100%, 50%)",
"hsl(252, 100%, 50%)",
"hsl(288, 100%, 50%)",
"hsl(324, 100%, 50%)",
]}
colorSwatchGroupColumns={10}
colorSwatchGroupLabel="Pick a color"
maxW="md"
/>
形を変える
<VStack>
<For each={["rounded", "circle", "square"]}>
{(shape, index) => (
<ColorSelector.Root key={index} format="hexa" maxW="md" shape={shape} />
)}
</For>
</VStack>
無効にする
<ColorSelector.Root disabled maxW="md" />
読み取り専用にする
<ColorSelector.Root maxW="md" readOnly />
コンポーネントをカスタマイズする
const [value, setValue] = useState("#FF0000FF")
return (
<Popover.Root placement="end-start">
<Popover.Trigger>
<Center rounded="full" w="fit-content">
<ColorSwatch color={value} variant="circle" />
</Center>
</Popover.Trigger>
<Popover.Content w="xs" p="1">
<Popover.Body>
<ColorSelector.Root value={value} onChange={setValue} />
</Popover.Body>
</Popover.Content>
</Popover.Root>
)
"use client"をファイルの上部に追加する必要があります。制御する
const [value, setValue] = useState("#FF0000A0")
return <ColorSelector.Root maxW="md" value={value} onChange={setValue} />
"use client"をファイルの上部に追加する必要があります。Props
アクセシビリティ
ColorSelectorは、色選択のアクセシビリティを確保するために適切なARIA属性を使用しています。
キーボード操作
| キー | 説明 | 状態 |
|---|---|---|
ArrowRight, ArrowUp | スライダー内である場合はstepの値に基づいて値を増加します。 | - |
ArrowLeft, ArrowDown | スライダー内である場合はstepの値に基づいて値を減少します。 | - |
Home | 色相スライダーまたは透明スライダー内である場合はminの値を設定します。 | - |
End | 色相スライダーまたは透明スライダー内である場合はmaxの値を設定します。 | - |
PageUp | 色相スライダーまたは透明スライダー内である場合はminとmaxの値に基づいて値を増加します。 | - |
PageDown | 色相スライダーまたは透明スライダー内である場合はminとmaxの値に基づいて値を減少します。 | - |
ARIAロールと属性
| コンポーネントと要素 | ロールと属性 | 使い方 |
|---|---|---|
ColorSelector.EyeDropper | role="button" | ボタンであることを示します。 |
aria-disabled | disabledまたはreadOnlyが設定されている場合は"true"を設定します。 | |
aria-label | "色を選択する"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
ColorSelector.SaturationSlider > input | aria-hidden | 要素をアクセシビリティツリーから除外します。 |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
ColorSelector.SaturationSlider > div | role="slider" | スライダーであることを示します。 |
aria-label | "彩度と明度のつまみ"を設定します。 | |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
aria-roledescription | "2D slider"を設定します。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは100です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "彩度 18%, 明度 18%"のように、現在の値を設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
ColorSelector.HueSlider > input | aria-hidden | 要素をアクセシビリティツリーから除外します。 |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
ColorSelector.HueSlider > div | role="slider" | スライダーであることを示します。 |
aria-label | "スライダーのつまみ"を設定します。 | |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
aria-orientation | orientationの値に基づいて"horizontal"または"vertical"を設定します。デフォルトは"horizontal"です。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは360です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "18°, 赤"のように、現在の値を設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
ColorSelector.AlphaSlider > input | aria-hidden | 要素をアクセシビリティツリーから除外します。 |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
ColorSelector.AlphaSlider > div | role="slider" | スライダーであることを示します。 |
aria-label | "スライダーのつまみ"を設定します。 | |
aria-describedby | Field.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
aria-orientation | orientationの値に基づいて"horizontal"または"vertical"を設定します。デフォルトは"horizontal"です。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは1です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "18%"のように、現在の値を設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
ColorSelector.ColorSwatchGroupLabel | id | ColorSelector.ColorSwatchGroupに関連付けられます。 |
ColorSelector.ColorSwatchGroup | role="listbox" | リストボックスであることを示します。 |
aria-labelledby | ColorSelector.ColorSwatchGroupLabelに関連付けられます。 | |
ColorSelector.ColorSwatchItem | role="option" | オプションであることを示します。 |
aria-label | 現在の値を設定します。 | |
aria-roledescription | "color swatch"を設定します。 | |
aria-selected | valueと同じ値の場合は、"true"が設定されます。 | |
aria-disabled | disabledまたはreadOnlyが設定されている場合は"true"を設定します。 |
類似のコンポーネント
AlphaSlider
AlphaSliderは、ユーザーが色の透明度を選択するために使用されるコンポーネントです。
HueSlider
HueSliderは、ユーザーが色相を選択するために使用されるコンポーネントです。
SaturationSlider
SaturationSliderは、ユーザーが色の彩度を選択するために使用されるコンポーネントです。
ColorPicker
ColorPickerは、ユーザーが色を選択したり任意の色の値を入力するために使用されるコンポーネントです。
Checkbox
Checkboxは、ユーザーが複数の選択肢の中から複数の値を選択するために使用されるコンポーネントです。
Dropzone
Dropzoneは、ファイルをドラッグアンドドロップでアップロードするために使用されるコンポーネントです。
Editable
Editableは、インラインで編集可能なテキスト入力を取得するために使用されるコンポーネントです。
Field
Fieldは、フォーム要素に、ラベル、ヘルパーメッセージ、エラーメッセージなどをグループ化するために使用されるコンポーネントです。
使用しているコンポーネント・フック
NativeSelect
NativeSelectは、ユーザーがオプションのリストから1つの値を選択するために使用されるコンポーネントです。ブラウザ(ユーザーエージェント)によって提供されるネイティブなドロップダウンリストを表示します。
ColorSwatch
ColorSwatchは、色の見本を表示するコンポーネントです。
AlphaSlider
AlphaSliderは、ユーザーが色の透明度を選択するために使用されるコンポーネントです。
HueSlider
HueSliderは、ユーザーが色相を選択するために使用されるコンポーネントです。
Icon
Iconは、プロジェクトに使用できる一般的なアイコンコンポーネントです。
SaturationSlider
SaturationSliderは、ユーザーが色の彩度を選択するために使用されるコンポーネントです。
Slider
Sliderは、ユーザーが値の範囲から選択するために使用されるコンポーネントです。