"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
用法
import { ColorPicker } from "@chakra-ui/react"
<ColorPicker.Root>
<ColorPicker.HiddenInput />
<ColorPicker.Label />
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<ColorPicker.EyeDropper />
<ColorPicker.Sliders />
<ColorPicker.SwatchGroup>
<ColorPicker.SwatchTrigger>
<ColorPicker.Swatch />
</ColorPicker.SwatchTrigger>
</ColorPicker.SwatchGroup>
</ColorPicker.Content>
</ColorPicker.Positioner>
</ColorPicker.Root>
快捷方式
ColorPicker.ChannelSlider
此组件渲染滑块轨道、滑块和透明度网格。
<ColorPicker.ChannelSlider />
与
<ColorPicker.ChannelSlider>
<ColorPickerTransparencyGrid />
<ColorPickerChannelSliderTrack />
<ColorPickerChannelSliderThumb />
</ColorPicker.ChannelSlider>
ColorPicker.Sliders
这是色调和透明度滑块的快捷组件
<Stack>
<ColorPickerChannelSlider channel="hue" />
<ColorPickerChannelSlider channel="alpha" />
</Stack>
ColorPicker.Area
此组件渲染颜色区域滑块和背景。
<ColorPicker.Area>
<ColorPicker.AreaThumb />
<ColorPicker.AreaBackground />
</ColorPicker.Area>
与
<ColorPicker.Area />
ColorPicker.EyeDropper
这是...的快捷组件
<ColorPicker.EyeDropperTrigger asChild>
<IconButton>
<LuPipette />
</IconButton>
</ColorPicker.EyeDropperTrigger>
示例
尺寸
使用 size
属性来改变颜色选择器的尺寸。
"use client"
import {
ColorPicker,
For,
HStack,
Portal,
Stack,
parseColor,
} from "@chakra-ui/react"
import { LuCheck } from "react-icons/lu"
const Demo = () => {
return (
<Stack gap="8" maxW="sm">
<For each={["2xs", "xs", "sm", "md", "lg", "xl", "2xl"]}>
{(size) => (
<ColorPicker.Root
key={size}
defaultValue={parseColor("#eb5e41")}
size={size}
>
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color ({size})</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
</HStack>
<ColorPicker.SwatchGroup>
{swatches.map((item) => (
<ColorPicker.SwatchTrigger key={item} value={item}>
<ColorPicker.Swatch value={item} boxSize="4.5">
<ColorPicker.SwatchIndicator>
<LuCheck />
</ColorPicker.SwatchIndicator>
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
</ColorPicker.SwatchGroup>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)}
</For>
</Stack>
)
}
const swatches = ["red", "blue", "green"]
变体
使用 variant
属性来改变颜色选择器的视觉样式。可选值有 outline
或 subtle
。
"use client"
import {
ColorPicker,
For,
HStack,
Portal,
Stack,
parseColor,
} from "@chakra-ui/react"
const Demo = () => {
return (
<Stack gap="8">
<For each={["outline", "subtle"]}>
{(variant) => (
<ColorPicker.Root
defaultValue={parseColor("#eb5e41")}
maxW="200px"
variant={variant}
>
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color ({variant})</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)}
</For>
</Stack>
)
}
仅输入框
将 ColorPicker.ValueSwatch
和 ColorPicker.EyeDropper
结合到 InputGroup
上,以渲染一个仅包含输入框的颜色选择器。
"use client"
import { ColorPicker, InputGroup, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<InputGroup
startElement={<ColorPicker.ValueSwatch boxSize="4.5" />}
endElementProps={{ px: "1" }}
endElement={<ColorPicker.EyeDropper size="xs" variant="ghost" />}
>
<ColorPicker.Input />
</InputGroup>
</ColorPicker.Control>
</ColorPicker.Root>
)
}
仅色板
使用 ColorPicker.SwatchGroup
和 ColorPicker.SwatchTrigger
来仅渲染颜色色板。
import { ColorPicker } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root alignItems="flex-start">
<ColorPicker.HiddenInput />
<ColorPicker.Label>
Color: <ColorPicker.ValueText />
</ColorPicker.Label>
<ColorPicker.SwatchGroup>
{swatches.map((item) => (
<ColorPicker.SwatchTrigger key={item} value={item}>
<ColorPicker.Swatch value={item}>
<ColorPicker.SwatchIndicator boxSize="3" bg="white" />
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
</ColorPicker.SwatchGroup>
</ColorPicker.Root>
)
}
const swatches = ["red", "green", "blue", "purple", "orange", "pink"]
仅触发器
使用 ColorPicker.ValueSwatch
和 ColorPicker.ValueText
组合颜色选择器,使其最初只显示一个触发器。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Trigger px="2">
<ColorPicker.ValueSwatch boxSize="6" />
<ColorPicker.ValueText minW="160px" />
</ColorPicker.Trigger>
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
<ColorPicker.ValueSwatch />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
输入框内触发
使用 InputGroup
和 ColorPickerInput
组合颜色选择器,使其在输入框中触发。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Trigger px="2">
<ColorPicker.ValueSwatch boxSize="6" />
<ColorPicker.ValueText minW="160px" />
</ColorPicker.Trigger>
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
<ColorPicker.ValueSwatch />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
受控
使用 value
和 onValueChange
属性来控制颜色选择器的状态。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
import { useState } from "react"
const Demo = () => {
const [color, setColor] = useState(parseColor("#eb5e41"))
return (
<ColorPicker.Root
value={color}
format="hsla"
onValueChange={(e) => setColor(e.value)}
maxW="200px"
>
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
状态存储
控制颜色选择器的另一种方法是使用 RootProvider
组件和 useColorPicker
状态存储 Hook。
通过这种方式,您可以从颜色选择器外部访问其状态和方法。
"use client"
import {
ColorPicker,
HStack,
Portal,
parseColor,
useColorPicker,
} from "@chakra-ui/react"
const Demo = () => {
const colorPicker = useColorPicker({
defaultValue: parseColor("#eb5e41"),
})
return (
<ColorPicker.RootProvider value={colorPicker} maxW="200px">
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.RootProvider>
)
}
更改结束
使用 onValueChangeEnd
来监听用户何时完成颜色选择,而不是在他们拖动或擦过颜色区域时。
onChangeEnd: #EB5E41
"use client"
import {
Code,
ColorPicker,
HStack,
Portal,
Stack,
parseColor,
} from "@chakra-ui/react"
import { useState } from "react"
const Demo = () => {
const [value, setValue] = useState(parseColor("#eb5e41"))
return (
<Stack gap="8" align="flex-start">
<Code>
onChangeEnd: <b>{value.toString("hex")}</b>
</Code>
<ColorPicker.Root
defaultValue={value}
onValueChangeEnd={(e) => setValue(e.value)}
>
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
</Stack>
)
}
通道滑块
结合 ColorPickerChannelSliders
和 format
属性,将不同的颜色通道添加到颜色选择器。
"use client"
import {
ColorPicker,
For,
Portal,
Stack,
getColorChannels,
parseColor,
} from "@chakra-ui/react"
const ChannelSliders = (props: { format: ColorPicker.ColorFormat }) => {
const channels = getColorChannels(props.format)
return (
<ColorPicker.View format={props.format}>
<For each={channels}>
{(channel) => (
<Stack gap="1" key={channel}>
<ColorPicker.ChannelText minW="5ch">
{channel}
</ColorPicker.ChannelText>
<ColorPicker.ChannelSlider channel={channel} />
</Stack>
)}
</For>
</ColorPicker.View>
)
}
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.Control>
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.FormatSelect />
<ChannelSliders format="hsla" />
<ChannelSliders format="hsba" />
<ChannelSliders format="rgba" />
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
Hook 表单
这是一个如何将颜色选择器与 react-hook-form
集成的示例。
"use client"
import {
Button,
ColorPicker,
HStack,
Portal,
Stack,
parseColor,
} from "@chakra-ui/react"
import { Controller, useForm } from "react-hook-form"
interface FormValues {
color: string
}
const Demo = () => {
const { control, handleSubmit } = useForm<FormValues>({
defaultValues: { color: "#000000" },
})
const onSubmit = handleSubmit((data) => console.log(data))
return (
<form onSubmit={onSubmit}>
<Stack gap="4" align="flex-start" maxW="sm">
<Controller
name="color"
control={control}
render={({ field }) => (
<ColorPicker.Root
name={field.name}
defaultValue={parseColor(field.value)}
onValueChange={(e) => field.onChange(e.valueAsString)}
>
<ColorPicker.HiddenInput />
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)}
/>
<Button type="submit">Submit</Button>
</Stack>
</form>
)
}
内联
这是一个如何显示颜色选择器内联版本的示例。
"use client"
import { ColorPicker, HStack, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root open defaultValue={parseColor("#000")}>
<ColorPicker.HiddenInput />
<ColorPicker.Content animation="none" shadow="none" padding="0">
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
<ColorPicker.ValueSwatch />
</HStack>
</ColorPicker.Content>
</ColorPicker.Root>
)
}
禁用
传递 disabled
属性来禁用颜色选择器。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root
disabled
defaultValue={parseColor("#eb5e41")}
maxW="200px"
>
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
通道输入
使用 ChannelFormat.Select
和 ColorPicker.ChannelInput
创建一个允许用户选择首选通道的颜色选择器。
"use client"
import {
ColorPicker,
For,
HStack,
Portal,
VStack,
getColorChannels,
parseColor,
} from "@chakra-ui/react"
const ChannelInputs = (props: { format: ColorPicker.ColorFormat }) => {
const channels = getColorChannels(props.format)
return (
<ColorPicker.View format={props.format}>
<For each={channels}>
{(channel) => (
<VStack gap="1" key={channel} flex="1">
<ColorPicker.ChannelInput
channel={channel}
px="0"
height="7"
textStyle="xs"
textAlign="center"
/>
<ColorPicker.ChannelText>
{channel.charAt(0).toUpperCase()}
</ColorPicker.ChannelText>
</VStack>
)}
</For>
</ColorPicker.View>
)
}
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
<ChannelInputs format="rgba" />
<ChannelInputs format="hsla" />
<ChannelInputs format="hsba" />
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
适应内容
将 data-fit-content
属性传递给 ColorPicker.Trigger
,使其适应内容。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger data-fit-content rounded="full">
<ColorPicker.ValueSwatch rounded="inherit" />
</ColorPicker.Trigger>
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
</HStack>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
只读
使用 readOnly
属性使颜色选择器组件只读。
保存色板
这是一个如何将选定的颜色保存为色板的示例。
"use client"
import {
Button,
ColorPicker,
HStack,
IconButton,
Portal,
Show,
VStack,
parseColor,
} from "@chakra-ui/react"
import { useState } from "react"
import { LuCheck, LuPlus, LuType } from "react-icons/lu"
const Demo = () => {
const [color, setColor] = useState(parseColor("#000"))
const [view, setView] = useState<"picker" | "swatch">("swatch")
const [swatches, setSwatches] = useState<string[]>([
"#FF0000",
"#00FF00",
"#0000FF",
"#FFFF00",
])
return (
<ColorPicker.Root
defaultValue={color}
onValueChange={(e) => setColor(e.value)}
maxW="200px"
>
<ColorPicker.HiddenInput />
<ColorPicker.Control>
<ColorPicker.Trigger data-fit-content>
<VStack gap="1">
<LuType />
<ColorPicker.ValueSwatch h="2" />
</VStack>
</ColorPicker.Trigger>
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<Show when={view === "picker"}>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="sm" variant="outline" />
<ColorPicker.Sliders />
</HStack>
<Button
onClick={() => {
setSwatches((prev) => [...prev, color.toString("css")])
setView("swatch")
}}
>
Save Swatch
</Button>
</Show>
<Show when={view === "swatch"}>
<ColorPicker.SwatchGroup>
{swatches.map((swatch) => (
<ColorPicker.SwatchTrigger key={swatch} value={swatch}>
<ColorPicker.Swatch value={swatch}>
<ColorPicker.SwatchIndicator>
<LuCheck />
</ColorPicker.SwatchIndicator>
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
<IconButton
variant="outline"
size="xs"
onClick={() => setView("picker")}
>
<LuPlus />
</IconButton>
</ColorPicker.SwatchGroup>
</Show>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
色板
这是一个如何将颜色选择器与预定义色板结合使用的示例。
"use client"
import { ColorPicker, HStack, Portal, parseColor } from "@chakra-ui/react"
import { LuCheck } from "react-icons/lu"
const Demo = () => {
return (
<ColorPicker.Root defaultValue={parseColor("#eb5e41")} maxW="200px">
<ColorPicker.HiddenInput />
<ColorPicker.Label>Color</ColorPicker.Label>
<ColorPicker.Control>
<ColorPicker.Input />
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.Area />
<HStack>
<ColorPicker.EyeDropper size="xs" variant="outline" />
<ColorPicker.Sliders />
</HStack>
<ColorPicker.SwatchGroup>
{swatches.map((item) => (
<ColorPicker.SwatchTrigger key={item} value={item}>
<ColorPicker.Swatch boxSize="4.5" value={item}>
<ColorPicker.SwatchIndicator>
<LuCheck />
</ColorPicker.SwatchIndicator>
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
</ColorPicker.SwatchGroup>
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
// prettier-ignore
const swatches = ["#000000", "#4A5568", "#F56565", "#ED64A6", "#9F7AEA", "#6B46C1", "#4299E1", "#0BC5EA", "#00B5D8", "#38B2AC", "#48BB78", "#68D391", "#ECC94B", "#DD6B20"]
色板与输入框
这是如何将色板与输入框组合起来的示例。
"use client"
import { ColorPicker, Portal, parseColor } from "@chakra-ui/react"
import { LuCheck } from "react-icons/lu"
const Demo = () => {
return (
<ColorPicker.Root
size="xs"
defaultValue={parseColor("#eb5e41")}
maxW="200px"
>
<ColorPicker.HiddenInput />
<ColorPicker.Control>
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.SwatchGroup>
{swatches.map((item) => (
<ColorPicker.SwatchTrigger key={item} value={item}>
<ColorPicker.Swatch value={item}>
<ColorPicker.SwatchIndicator>
<LuCheck />
</ColorPicker.SwatchIndicator>
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
</ColorPicker.SwatchGroup>
<ColorPicker.ChannelInput channel="hex" />
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
const swatches = ["red", "blue", "green"]
色板与触发器
这是如何将色板与触发器组合起来的示例。
"use client"
import { ColorPicker, Portal, parseColor } from "@chakra-ui/react"
import { LuCheck } from "react-icons/lu"
const Demo = () => {
return (
<ColorPicker.Root
size="xs"
defaultValue={parseColor("#eb5e41")}
maxW="200px"
>
<ColorPicker.HiddenInput />
<ColorPicker.Control>
<ColorPicker.Trigger />
</ColorPicker.Control>
<Portal>
<ColorPicker.Positioner>
<ColorPicker.Content>
<ColorPicker.SwatchGroup>
{swatches.map((item) => (
<ColorPicker.SwatchTrigger key={item} value={item}>
<ColorPicker.Swatch value={item}>
<ColorPicker.SwatchIndicator>
<LuCheck />
</ColorPicker.SwatchIndicator>
</ColorPicker.Swatch>
</ColorPicker.SwatchTrigger>
))}
</ColorPicker.SwatchGroup>
<ColorPicker.ChannelInput channel="hex" />
</ColorPicker.Content>
</ColorPicker.Positioner>
</Portal>
</ColorPicker.Root>
)
}
const swatches = ["red", "blue", "green"]
属性
根
属性 | 默认值 | 类型 |
---|---|---|
closeOnSelect | false | boolean 选择色板时是否关闭颜色选择器 |
format | '\'rgba\'' | ColorFormat 要使用的颜色格式 |
lazyMount | false | boolean 是否启用懒加载 |
openAutoFocus | true | boolean 打开时是否自动聚焦颜色选择器 |
unmountOnExit | false | boolean 退出时是否卸载。 |
value | '#000000' | 颜色 当前颜色值 |
colorPalette | 'gray' | 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink' 组件的调色板 |
size | 'md' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' 组件的尺寸 |
variant | 'outline' | 'outline' | 'subtle' 组件的变体 |
asChild | ||
defaultOpen | boolean 颜色选择器首次渲染时的初始打开状态。在您不需要控制其打开状态时使用。 | |
defaultValue | 颜色 颜色选择器首次渲染时的初始值。在您不需要控制颜色选择器状态时使用。 | |
disabled | boolean 颜色选择器是否禁用 | |
id | string 机器的唯一标识符。 | |
ids | Partial<{ root: string; control: string; trigger: string; label: string; input: string; hiddenInput: string; content: string; area: string; areaGradient: string; positioner: string; formatSelect: string; areaThumb: string; channelInput(id: string): string; channelSliderTrack(id: ColorChannel): string; channelSliderT... 颜色选择器中元素的 ID。适用于组合。 | |
immediate | boolean 是立即同步当前更改还是推迟到下一帧 | |
initialFocusEl | () => HTMLElement | null 颜色选择器打开时的初始聚焦元素。 | |
invalid | boolean 颜色选择器是否无效 | |
name | string 表单输入的名称 | |
onExitComplete | () => void 动画在关闭状态结束时调用的函数 | |
onFocusOutside | (event: FocusOutsideEvent) => void 焦点移出组件时调用的函数 | |
onFormatChange | (details: FormatChangeDetails) => void 颜色格式更改时调用的函数 | |
onInteractOutside | (event: InteractOutsideEvent) => void 组件外部发生交互时调用的函数 | |
onOpenChange | (details: OpenChangeDetails) => void 用户打开或关闭颜色选择器时调用的处理程序。 | |
onPointerDownOutside | (event: PointerDownOutsideEvent) => void 指针在组件外部按下时调用的函数 | |
onValueChange | (details: ValueChangeDetails) => void 当用户拖动时,值发生变化时调用的处理程序。 | |
onValueChangeEnd | (details: ValueChangeDetails) => void 当用户停止拖动时调用的处理程序。 | |
open | boolean 颜色选择器是否打开 | |
positioning | PositioningOptions 颜色选择器的定位选项 | |
present | boolean 节点是否存在(由用户控制) | |
readOnly | boolean 颜色选择器是否只读 | |
required | boolean 颜色选择器是否为必填 |