UNPKG

sanity-plugin-taxonomy-manager

Version:

Create and manage SKOS compliant taxonomies, thesauri, and classification schemes in Sanity Studio.

41 lines (37 loc) 1.55 kB
import {EditIcon, DocumentsIcon} from '@sanity/icons' import type {StructureBuilder, ListBuilder, DefaultDocumentNodeResolver} from 'sanity/structure' import {TreeView} from './components/TreeView' import NodeTree from './static/NodeTree' import {ConceptUseView} from './views/ConceptUseView' /** * #### Default Desk Structure for Concept and Concept Scheme * Sets defaultDocumentNode. Consider exporting in the future, * if there is a use case for mixing taxonomy views in the main * desk structure. */ export const structure = (S: StructureBuilder): ListBuilder => S.list() .title('Taxonomy Manager') .items([ S.documentTypeListItem('skosConceptScheme').title('Concept Schemes'), S.documentTypeListItem('skosConcept').title('Concepts'), ]) // set default document node here — so that if users want concepts // and schemes elsewhere in desk, they'll get the right views. export const defaultDocumentNode: DefaultDocumentNodeResolver = (S, {schemaType}) => { // Conditionally return a different configuration based on the schema type switch (schemaType) { case 'skosConceptScheme': return S.document().views([ S.view.component(TreeView).title('Tree View').icon(NodeTree), S.view.form().icon(EditIcon), ]) case 'skosConcept': return S.document().views([ S.view.form().icon(EditIcon), S.view.component(ConceptUseView).title('Tagged Resources').icon(DocumentsIcon), ]) default: return S.document().views([S.view.form().icon(EditIcon)]) } }