Skip to main content

Overview

Formats​

This module doesn't define any new formats.

Filters​

This module doesn't define any new filters.

Widgets​

color_picker​

This module provides a color_picker field to allow users to choose from a predetermined list of colors. To use this field in the uiSchema set the ui:widget of an enum to color_picker and define the colorProps for each value.

Fields​

This module doesn't define any new fields.

uiSchema​

colorProps​

For more complex field configuration the colorProps key contains an objet keyed by the values set in the field schema. Each value can have the following properties

hex​

Any valid hex color code, this will be used as the background color for the preview box.

"ui:colorProps":{
"black":{
"hex":"#000"
}
}

style​

Any valid css style string. The css string will be applied directly to the preview box. Due to translation issues with react when using background-* properties it is required to use the specific background property and not the generic background.

"ui:colorProps":{
"gradient-red":{
"style":"background-image: linear-gradient(to right, red , yellow);"
},
}

groups​

Colors can be grouped together when displayed by specifying an array of groups for each color.

"ui:colorProps":{
"black":{
"hex":"#000",
"groups":["Background"]
}
}

displayGroups​

If your uiSchema has groups defined but you don't want to show them then you can set ui:displayGroups to false which will render all configured colors in one grid.

"example":{
"ui:widget":"color_picker",
"ui:displayGroups":false,
"ui:colorProps":{...}
}

Examples​

Hex only colors​

The simplest usage of this field requires that you only provide a list of hex numbers in an enum. The hex code will be used as both the saved value and as the display color.

{
"schema":{
"properties":{
"example":{
"title":"Hex only example",
"type":"string",
"enum":[
"#000",
"#FFF",
"#555"
],
"enumNames":[
"Black",
"White",
"Gray"
]
}
}
},
"uiSchema":{
"color":{
"ui:widget":"color_picker"
}
}
}

Grouped colors​

Grouped color picker

{
"schema":{
"properties":{
"example":{
"title":"Grouped color example",
"type":"string",
"enum":[
"#000",
"#FFF",
"#555",
"#FF1919"
],
"enumNames":[
"Black",
"White",
"Gray",
"Red"
]
}
}
},
"uiSchema":{
"example":{
"ui:widget":"color_picker",
"ui:colorProps":{
"#000":{
"group":[
"Primary Colors"
]
},
"#FFF":{
"group":[
"Primary Colors"
]
},
"#555":{
"group":[
"Accent Colors",
"Primary Colors"
]
}
}
}
}
}

Don't show groups​

{
"schema":{
"properties":{
"example":{
"title":"Grouped color example",
"type":"string",
"enum":[
"#000",
"#FFF",
"#555",
"#FF1919"
],
"enumNames":[
"Black",
"White",
"Gray",
"Red"
]
}
}
},
"uiSchema":{
"example":{
"ui:widget":"color_picker",
"ui:displayGroups":false,
"ui:colorProps":{
"#000":{
"group":[
"Primary Colors"
]
},
"#FFF":{
"group":[
"Primary Colors"
]
},
"#555":{
"group":[
"Accent Colors",
"Primary Colors"
]
}
}
}
}
}

String value colors​

The enum values for a color don't have to be hex, they can be any valid enum value. When using a non hex value a hex or style value must be provided in the ui:colorProps of the field.

{
"schema":{
"properties":{
"example":{
"title":"String values example",
"type":"string",
"enum":[
"black",
"white",
"gray",
"red"
],
"enumNames":[
"Black",
"White",
"Gray",
"Red"
]
}
}
},
"uiSchema":{
"example":{
"ui:widget":"color_picker",
"ui:colorProps":{
"black":{
"hex":"#000"
},
"white":{
"hex":"#FFF"
},
"gray":{
"hex":"#555"
},
"red":{
"hex":"#FF1919"
}
}
}
}
}

Color styles​

{
"schema":{
"properties":{
"example":{
"title":"Color styles example",
"type":"string",
"enum":[
"gradient-red",
"transparent-green"
],
"enumNames":[
"Gradient red",
"Transparent green"
]
}
}
},
"uiSchema":{
"example":{
"ui:widget":"color_picker",
"ui:colorProps":{
"gradient-red":{
"style":"background-image: linear-gradient(to right, red , yellow);"
},
"transparent-green":{
"style":"background-color: rgba(0, 128, 0, 0.3);"
}
}
}
}
}

Optional field​

To make a field optional the property type needs to be either type: ["string", "null"] or unset completely because RJSF will store an empty field as a null value. Additionally null must be added to the enum array as a possible value. Typically this is best to add at the end of the array, if you add it anywhere else make sure to also give it a corresponding enumNames label.

{
"schema":{
"properties":{
"example":{
"title":"Hex only example",
"type":["string", "null"],
"enum":[
"#000",
"#FFF",
"#555",
null
],
"enumNames":[
"Black",
"White",
"Gray"
]
}
}
},
"uiSchema":{
"color":{
"ui:widget":"color_picker"
}
}
}

Required field​

Setting a property using the color picker to required will remove the "Clear" button and disable unselecting the current color by clicking on it.

{
"schema":{
"required": ["example"],
"properties":{
"example":{
"title":"Hex only example",
"type":"string",
"enum":[
"#000",
"#FFF",
"#555"
],
"enumNames":[
"Black",
"White",
"Gray"
]
}
}
},
"uiSchema":{
"color":{
"ui:widget":"color_picker"
}
}
}

Everything​

{
"schema":{
"properties":{
"example":{
"title":"Everything example",
"type":"string",
"enum":[
"#000",
"white",
"no-group-gray",
"gradient-red",
"transparent-green"
],
"enumNames":[
"Black",
"White",
"No group gray",
"Gradient red",
"Transparent green"
]
}
}
},
"uiSchema":{
"example":{
"ui:widget":"color_picker",
"ui:colorProps":{
"#000":{
"group":[
"Hex Colors"
]
},
"white":{
"hex":"#FFF",
"group":[
"Hex Colors"
]
},
"no-group-gray":{
"hex":"#555"
},
"gradient-red":{
"group":[
"Style Colors"
],
"style":"background-image: linear-gradient(to right, red , yellow);"
},
"transparent-green":{
"group":[
"Style Colors"
],
"style":"background-color: rgba(0, 128, 0, 0.3);"
}
}
}
}
}