import { registerExamples } from '../register' ; import { ControlElement , JsonFormsUISchemaRegistryEntry , JsonSchema , NOT_APPLICABLE } from '@jsonforms/core' ; import { StateProps } from '..' ; const schema = { type : 'object' , properties : { exampleArray : { type : 'array' , items : { type : 'object' , properties : { name : { type : 'string' } , choices : { type : 'array' , items : { type : 'string' } } } } } } } ; export const uischema = { type : 'HorizontalLayout' , elements : [ { type : 'Control' , label : { text : 'Example Array' , show : true } , scope : '#/properties/exampleArray' } ] } ; const data = { exampleArray : [ { choices : [ 'This' , 'is' , 'an' , 'example' ] , name : 'Hi there' } ] } ; const control1 = { type : 'Control' , scope : '#/properties/name' } ; const control2 = { type : 'Control' , scope : '#/properties/choices' } ; const uischemas = [ { tester : ( _jsonSchema , schemaPath ) => { return schemaPath === '#/properties/exampleArray' ? 2 : NOT_APPLICABLE ; } , uischema : { type : 'VerticalLayout' , elements : [ control1 , control2 ] } } ] ; const actions = [ { 'label' : 'Register NestedArray UISchema' , 'apply' : ( props ) => { return { ... props , uischemas : uischemas } ; } } , { 'label' : 'Unregister NestedArray UISchema' , 'apply' : ( props ) => { const uischemas = undefined ; return { ... props , uischemas : uischemas } ; } } , ] ; registerExamples ( [ { name : 'nestedArray' , label : 'Nested Array' , data , schema , uischema , actions } ] ) ;