Changing the behavior of New Document and Action buttons in Studio v3.
4 replies
Last updated: Oct 4, 2022
K
Hi!
I'm testing out the new Studio v3, and I'm trying to change the
I'm testing out the new Studio v3, and I'm trying to change the
__experimental_actions__: ["update", "publish"]field that's suggested to use when you're creating site settings for instance. How do I emulate the same behavior in V3?
Oct 4, 2022, 11:42 AM
S
If its still experimental, Iโm out ๐
Should be a core feature to create singleton items!
Should be a core feature to create singleton items!
Oct 4, 2022, 1:07 PM
D
As I understand it
__experimental_actions__is depreciated.Instead you override how the New Document and Action buttons appear in your
sanity.config.ts.Here is how I did it.
//sanity.config.ts import {createConfig, DocumentBadgeComponent, DocumentBadgesResolver, isDev} from 'sanity' import {deskTool, StructureBuilder} from 'sanity/desk' import {schemaTypes} from './schemas' import {visionTool} from '@sanity/vision' import {media} from 'sanity-plugin-media' import {structure, defaultDocumentNode} from './structure/structure' import {CustomPublishAction} from './actions/CustomPublishAction' import {HelloWorldBadge} from './actions/HelloWorldBadge' import { colorInput } from "@sanity/color-input"; const devOnlyPlugins = [ visionTool() ] // array of document types that only publishing should be allowed on. // makes no sence to have 'create' or 'duplicate' export const publishOnlyDocuments = ['homePage', 'siteSettings'] // Determins the actions that appear in the Publish bar const actions = (actions: any, {schemaType}: any) => { // deconstruct all actions so we can order them if required. const [publish, discardChanges, unPublish, duplicate, deleteDocument, ...anyOtherActions] = actions // if this document is in the publishOnlyDocuments then we don't want // return only publish (or schedule if it is there) if (publishOnlyDocuments.includes(schemaType)) { return [publish] } return [ CustomPublishAction, // Example action which intercepts the current publish action. discardChanges, unPublish, duplicate, deleteDocument, ...anyOtherActions, ] } // Determins the Document badges that appear in the Publish bar. const badges = (badges: any) => { const [...otherBadges] = badges return [...otherBadges, HelloWorldBadge] } // Determins the New Documents Types that appear when clicking the New Document Button . const newDocumentOptions = (newDocumentOptions: any) => { const filteredNewDocumentOptions = newDocumentOptions.filter((documentOption: any) => { // return only the documentTypes that are not publishOnlyDocuments return !publishOnlyDocuments.includes(documentOption.templateId) }) return filteredNewDocumentOptions } export default createConfig({ name: 'default', title: 'WHATEVER', projectId: 'WHATEVER', dataset: 'production', document: { actions: actions, badges: badges, newDocumentOptions: newDocumentOptions, }, plugins: [ deskTool({ structure, defaultDocumentNode, }), // media(), colorInput(), ...(isDev ? devOnlyPlugins : []), ], schema: { types: schemaTypes, }, })
Oct 4, 2022, 1:10 PM
R
Hey
user U
! You'll want to ask V3 questions here until general release.Oct 4, 2022, 5:14 PM
K
Oh okay, thanks ๐ Will do.
Oct 4, 2022, 6:01 PM
Sanityโ build remarkable experiences at scale
The Sanity Composable Content Cloud is the headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.