👋 Next.js Conf 2024: Come build, party, run, and connect with us! See all events

Setting default values for video options in a document with Sanity.io

13 replies
Last updated: May 28, 2020
Is it possible to get initial values from an object like this:
{
  title: "Media",
  name: "media",
  type: "array",
  of: [
    {
      title: "Image",
      type: "image",
    },
    {
      title: "Video",
      type: "object",
      fields: [
        {
          title: "Video Url",
          name: "url",
          type: "url",
        },
        {
          title: "Autoplay",
          name: "autoplay",
          type: "boolean",
        },
        {
          title: "Controls",
          name: "controls",
         type: "boolean",   
        },
      ],
    },
  ],
},

May 28, 2020, 3:28 PM
I need to put default values on my video options (autoplay, controls, audio....)
May 28, 2020, 3:29 PM
(The whole thing is a document)
May 28, 2020, 3:35 PM
I need to put default values on my video options (autoplay, controls, audio....)
May 28, 2020, 3:29 PM
(The whole thing is a document)
May 28, 2020, 3:35 PM
For controls, for example, this should work:
...
initialValue: {
  media: [{
    _type: 'video',
    controls: true
  }]
},
...
May 28, 2020, 3:56 PM
Thanks
user M
May 28, 2020, 3:59 PM
user M
It works with
_type: "object"
May 28, 2020, 4:06 PM
But can I reference it from an object somewhere else with type: “video”. My document is a total mess now 😅
May 28, 2020, 4:08 PM
Depends on the schema - you might have to nest a lever deeper with
_type: 'video'
inside a
_type: 'object'
in that case I suspect. Or slightly differently. Would be good to see the schema 🙂
May 28, 2020, 4:09 PM
Sure, here is the schema
May 28, 2020, 4:13 PM
Basically I had everything in an object “Gallery”, which is cleaner, but then I needed initial values
May 28, 2020, 4:14 PM
Seems to work perfectly with
_type: video
and then my video object:

export default {
  title: "Video",
  name: "video",
  type: "object",
  fields: [
    {
      title: "Video Url",
      name: "url",
      type: "url",
    },
    {
      title: "Autoplay",
      name: "autoplay",
      type: "boolean",
    },
    {
      title: "Controls",
      name: "controls",
      type: "boolean",
    },
    {
      title: "Loop",
      name: "loop",
      type: "boolean",
    },
    {
      title: "Audio",
      name: "audio",
      type: "boolean",
    },
  ],
}
May 28, 2020, 4:22 PM
in case someone is interested, I passed the initial value to “gallery” like this
  initialValue: {
    gallery: {
      _type: "object",
      media: [
        {
          _type: "video",
          autoplay: true,
          controls: true,
          loop: true,
          audio: true,
        },
      ],
    },
  },
May 28, 2020, 4:56 PM

Sanity– build remarkable experiences at scale

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

Was this answer helpful?