ColorPicker
ColorPickerは、ユーザーが色を選択したり任意の色の値を入力するために使用されるコンポーネントです。
<ColorPicker placeholder="#4387f4" />
使い方
import { ColorPicker } from "@yamada-ui/react"
import { ColorPicker } from "@/components/ui"
import { ColorPicker } from "@workspaces/ui"
<ColorPicker />
バリアントを変更する
<VStack>
<For each={["outline", "filled", "flushed", "plain"]}>
{(variant, index) => (
<ColorPicker
key={index}
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
サイズを変更する
<VStack>
<For each={["xs", "sm", "md", "lg", "xl"]}>
{(size, index) => (
<ColorPicker key={index} size={size} placeholder={`Size (${size})`} />
)}
</For>
</VStack>
カラースキームを変更する
<VStack>
<For each={["success", "warning"]}>
{(colorScheme, index) => (
<ColorPicker
key={index}
colorScheme={colorScheme}
placeholder="#4387f4"
/>
)}
</For>
</VStack>
デフォルトの値を設定する
デフォルトの値を設定する場合は、defaultValueに値を設定します。
<ColorPicker defaultValue="#4387f4" placeholder="#4387f4" />
アルファ値を設定する
アルファ値を設定する場合は、defaultValueにアルファ値を含む値を設定するか、formatに"hexa"や"hsla"などを設定します。
<ColorPicker defaultValue="#775999A0" placeholder="#775999A0" />
フォーマットを変更する
フォーマットを変更する場合は、formatに値を設定します。デフォルトでは、valueまたはdefaultValueの文字列からフォーマットを判定しています。
<ColorPicker placeholder="hsl(0, 100%, 50%)" format="hsl" />
入力値を制限する
入力値を制限する場合は、patternに正規表現を設定します。
<ColorPicker placeholder="#4387f4" pattern={/[^a-fA-F0-9#]/g} />
入力値をフォーマットする
入力値をフォーマットする場合は、formatInputに関数を設定します。
<ColorPicker
placeholder="#4387f4"
pattern={/[^a-fA-F0-9#]/g}
formatInput={(value) => value.toUpperCase()}
/>
"use client"をファイルの上部に追加する必要があります。候補を表示する
候補を表示する場合は、colorSwatchesに配列を設定します。
<ColorPicker
placeholder="#4387f4"
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"
/>
候補の列を変更する
候補の列を変更する場合は、colorSwatchGroupColumnsに数値を設定します。
<ColorPicker
placeholder="#4387f4"
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%)",
]}
colorSwatchGroupLabel="Pick a color"
colorSwatchGroupColumns={10}
/>
オフセットを変更する
オフセットを変更する場合は、gutterまたはoffsetに値を設定します。
<ColorPicker placeholder="#4387f4" gutter={16} />
アニメーションを変更する
アニメーションを変更する場合は、animationSchemeに"block-start"や"inline-end"などを設定します。デフォルトでは、"scale"が設定されています。
<ColorPicker placeholder="#4387f4" animationScheme="inline-start" />
配置を変更する
配置を変更するには、placementにendやstart-centerなどを設定します。デフォルトでは、end-startが設定されています。
<ColorPicker
placeholder="#4387f4"
animationScheme="inline-start"
placement="center-end"
rootProps={{ w: "xs" }}
/>
スクロールをブロックする
スクロールをブロックするには、blockScrollOnMountをtrueに設定します。
<ColorPicker placeholder="#4387f4" blockScrollOnMount />
スクロール時にドロップダウンを閉じる
スクロール時にドロップダウンを閉じる場合は、closeOnScrollをtrueに設定します。
<ColorPicker placeholder="#4387f4" closeOnScroll />
変更時にドロップダウンを開くイベントをハンドルする
変更時にドロップダウンを開くイベントをハンドルする場合は、openOnChangeに関数を設定します。
<ColorPicker
placeholder="#4387f4"
openOnFocus={false}
openOnChange={(ev) => ev.target.value.length > 1}
/>
"use client"をファイルの上部に追加する必要があります。変更時にドロップダウンを閉じるイベントをハンドルする
変更時にドロップダウンを閉じるイベントをハンドルする場合は、closeOnChangeに関数を設定します。
<ColorPicker
placeholder="#4387f4"
openOnFocus={false}
closeOnChange={(ev) => !ev.target.value.length}
/>
"use client"をファイルの上部に追加する必要があります。フォーカス時にドロップダウンを開かない
フォーカス時にドロップダウンを開かない場合は、openOnFocusをfalseに設定します。
<ColorPicker placeholder="#4387f4" openOnFocus={false} />
クリック時にドロップダウンを開かない
クリック時にドロップダウンを開かない場合は、openOnClickをfalseに設定します。
<ColorPicker placeholder="#4387f4" openOnClick={false} />
フォーカスが外れた場合に閉じない
フォーカスが外れた場合にドロップダウンを閉じない場合は、closeOnBlurをfalseに設定します。
<ColorPicker placeholder="#4387f4" closeOnBlur={false} />
ESCキーが入力された時にドロップダウンを閉じない
ESCキーが入力された時にドロップダウンを閉じない場合は、closeOnEscをfalseに設定します。
<ColorPicker placeholder="#4387f4" closeOnEsc={false} />
入力を許可しない
入力を許可しない場合は、allowInputをfalseに設定します。
<ColorPicker placeholder="#4387f4" allowInput={false} />
形を変える
<VStack>
<For each={["rounded", "circle", "square"]}>
{(shape, index) => (
<ColorPicker
key={index}
placeholder="#4387f4"
selectorProps={{ shape }}
/>
)}
</For>
</VStack>
無効にする
無効にする場合は、disabledをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<ColorPicker
key={index}
variant={variant}
disabled
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
読み取り専用にする
読み取り専用にする場合は、readOnlyをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<ColorPicker
key={index}
variant={variant}
readOnly
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
無効な入力にする
無効な入力にする場合は、invalidをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<ColorPicker
key={index}
variant={variant}
invalid
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
ボーダーの色を変更する
ボーダーの色を変更する場合は、focusBorderColorまたはerrorBorderColorに値を設定します。
<VStack>
<ColorPicker focusBorderColor="green.500" placeholder="custom border color" />
<ColorPicker
invalid
errorBorderColor="orange.500"
placeholder="custom border color"
/>
</VStack>
制御する
const [value, onChange] = useState<string>("#4387f4")
return <ColorPicker value={value} onChange={onChange} />
Props
アクセシビリティ
ColorPickerは、アクセシビリティに関してWAI-ARIA - Combobox Patternに従います。
Field.Rootを使用しない場合は、ColorPickerにaria-labelまたはaria-labelledbyを設定します。
<ColorPicker placeholder="#4387f4" aria-label="Pick color" />
<VStack gap="sm">
<Text as="h3" id="label">
Pick Color
</Text>
<ColorPicker placeholder="#4387f4" aria-labelledby="label" />
</VStack>
キーボード操作
| キー | 説明 | 状態 |
|---|---|---|
Tab | フォーカスがカラーピッカーに移動するとダイアログを開きます。 | openOnFocus={true} |
Escape | ダイアログを閉じます。 | closeOnEsc={true} |
ArrowRight, ArrowUp | スライダー内である場合はstepの値に基づいて値を増加します。 | - |
ArrowLeft, ArrowDown | スライダー内である場合はstepの値に基づいて値を減少します。 | - |
Home | HueSliderまたはAlphaSlider内である場合はminの値を設定します。 | - |
End | HueSliderまたはAlphaSlider内である場合はmaxの値を設定します。 | - |
PageUp | HueSliderまたはAlphaSlider内である場合はminとmaxの値に基づいて値を増加します。 | - |
PageDown | HueSliderまたはAlphaSlider内である場合はminとmaxの値に基づいて値を減少します。 | - |
ARIAロールと属性
| コンポーネント | ロールと属性 | 使い方 |
|---|---|---|
ColorPickerField | role="combobox" | コンボボックスであることを示します。 |
aria-controls | ダイアログが開いている場合は関連したColorPickerContentのidを設定し、閉じている場合はundefinedを設定します。 | |
aria-describedby | ColorPickerがField.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
aria-disabled | disabledまたはreadOnlyが設定されている場合は"true"を設定します。 | |
aria-expanded | ダイアログが開いている場合は"true"を設定し、閉じている場合は"false"を設定します。 | |
aria-haspopup="dialog" | ダイアログが存在することを示します。 | |
aria-invalid | invalidが設定されている場合は"true"を設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-required | requiredが設定されている場合は"true"を設定します。 | |
ColorPickerEyeDropper | role="button" | ボタンであることを示します。 |
aria-disabled | disabledまたはreadOnlyが設定されている場合は"true"を設定します。 | |
aria-label | "色を選択する"を設定します。 | |
ColorPickerContent | role="dialog" | ダイアログであることを示します。 |
ColorPickerColorSwatch | role="img" | 画像であることを示します。 |
aria-label | 現在の値を設定します。 | |
aria-roledescription | "color swatch"を設定します。 | |
SaturationSlider.Thumb | role="slider" | スライダーであることを示します。 |
aria-label | "彩度と明度のつまみ"を設定します。 | |
aria-roledescription | "2D slider"を設定します。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは100です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "彩度 18%, 明度 18%"のように、現在の値を設定します。 | |
HueSlider.Thumb | role="slider" | スライダーであることを示します。 |
aria-label | "スライダーのつまみ"を設定します。 | |
aria-orientation | orientationの値に基づいて"horizontal"または"vertical"を設定します。デフォルトは"horizontal"です。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは360です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "18°, 赤"のように、現在の値を設定します。 | |
AlphaSlider.Thumb | role="slider" | スライダーであることを示します。 |
aria-label | "スライダーのつまみ"を設定します。 | |
aria-orientation | orientationの値に基づいて"horizontal"または"vertical"を設定します。デフォルトは"horizontal"です。 | |
aria-valuemin | minの値を設定します。デフォルトは0です。 | |
aria-valuemax | maxの値を設定します。デフォルトは1です。 | |
aria-valuenow | 現在の値を設定します。 | |
aria-valuetext | "18%"のように、現在の値を設定します。 |
類似のコンポーネント
ColorSelector
ColorSelectorは、ユーザーが色を選択するために使用されるコンポーネントです。
SaturationSlider
SaturationSliderは、ユーザーが色の彩度を選択するために使用されるコンポーネントです。
HueSlider
HueSliderは、ユーザーが色相を選択するために使用されるコンポーネントです。
DatePicker
DatePickerは、ユーザーが日付を選択するために使用されるコンポーネントです。
AlphaSlider
AlphaSliderは、ユーザーが色の透明度を選択するために使用されるコンポーネントです。
Select
Selectは、ユーザーがオプションのリストから値を選択するために使用されるコンポーネントです。
使用しているコンポーネント・フック
DatePicker
DatePickerは、ユーザーが日付を選択するために使用されるコンポーネントです。
NativeSelect
NativeSelectは、ユーザーがオプションのリストから1つの値を選択するために使用されるコンポーネントです。ブラウザ(ユーザーエージェント)によって提供されるネイティブなドロップダウンリストを表示します。
ColorSwatch
ColorSwatchは、色の見本を表示するコンポーネントです。
Input
Inputは、ユーザーからのテキスト入力を取得するために使用されるコンポーネントです。
Popover
Popoverは、要素の周りにフローティングして情報を表示するコンポーネントです。
ColorSelector
ColorSelectorは、ユーザーが色を選択するために使用されるコンポーネントです。
Group
Groupは、複数の要素をまとめて扱うためのコンポーネントです。
Icon
Iconは、プロジェクトに使用できる一般的なアイコンコンポーネントです。
Field
Fieldは、フォーム要素に、ラベル、ヘルパーメッセージ、エラーメッセージなどをグループ化するために使用されるコンポーネントです。