Watch a live product demo 👀 See how Sanity powers richer commerce experiences

How to Conditionally set the Value of a Field Based on the Value of Another Field

2 replies
Last updated: May 2, 2022
Is there a way to conditionally set the value of a field based on the value of another field?
In detail, what I want is to present a dropdown to the user with nice human-readable
colorTheme
names. I would also like to have to hidden string fields called
textColor
and
backgroundColor
, and I would like to set the value of these fields based on the value of the
colorTheme
field. Then the user would be able to select a color field, and the API response would be something like
{
  "colorTheme": "forest",
  "textColor": "#fefefe",
  "backgroundColor": "#179e40"
}
May 2, 2022, 6:57 AM
You can do this using a custom input component for the select that patches the current document and some hidden fields, see https://www.sanity.io/docs/custom-input-widgets#1f69be67cfe0 .
But I’d rather put all these values in an object with a custom input component.


{
  name: 'theme',
  title: 'Theme',
  type: 'object',
  inputComponent: ThemeSelect,
  options: {
     themes: [{ name: 'forest', textColor: '#fefefe', backgroundColor: '#179e40' }]
  }
  fields: [
    {
      name: 'textColor',
      title: 'Text color',      
      type: 'string'
    },
    {
      name: 'backgroundColor',
      title: 'Background color',      
      type: 'string'
    }
  ]
}
I’d use
Sanity UI to add a select box in the custom component.

https://www.sanity.io/docs/custom-input-widgets

https://www.sanity.io/guides/asynchronous-list-options
May 2, 2022, 7:23 AM
Thanks, this looks like a good way to solve it!
May 2, 2022, 12:56 PM

Sanity.io – build remarkable experiences at scale

Sanity is a customizable solution that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Categorized in

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
After adding the subtitle and running this code npm run graphql-deploy It does nothingSep 15, 2020
how to limit a reference to just one entry in Studio reference input side versus the default as-many-entries-as-you-fill-in-an-array...Sep 18, 2020
Is it possible to fetch more than one "_type" using GROQ?Nov 2, 2020
I want to add a view with the Structure builder (S.view.component) where I list similar documents based on the title. What...Sep 23, 2020
Is there a structure builder example where the format of each preview for the document list is modified?Feb 3, 2021
I have an array of references to a country schema type but it always just returns NULL values for meJan 30, 2021
Hi, I need help with a query for getting the url of an image asset. Here is what I've been trying, but I only get the _ref...Dec 1, 2020
Sanity UI looks brilliant :smiley: Is something like the current date picker possible at the moment? I’m not sure if anicon...Dec 21, 2020
Hey everyone. I have been coding and may have potentially accidentally deleted something. Does anyone know how to resolve...Dec 26, 2020
Hello everyone and happy new year :raised_hands::skin-tone-2:, I have a problem with outputting Portable Text :disappointed:...Jan 1, 2021

Related contributions

Clean Next.js + Sanity app
- Template

Official(made by Sanity team)

A clean example of Next.js with embedded Sanity ready for recomposition.

Cody Olsen
Go to Clean Next.js + Sanity app

Blog with Built-in Content Editing
- Template

Official(made by Sanity team)

A Sanity-powered blog with built-in content editing and instant previews.

Go to Blog with Built-in Content Editing