UNPKG

@jsonforms/vue-vuetify

Version:

Vue Vuetify renderers for JSON Forms

43 lines (39 loc) 1.06 kB
import { and, hasType, rankWith, schemaMatches, schemaSubPathMatches, uiTypeIs, type JsonFormsRendererRegistryEntry, type JsonSchema, } from '@jsonforms/core'; import controlRenderer from './EnumArrayRenderer.vue'; export const entry: JsonFormsRendererRegistryEntry = { renderer: controlRenderer, tester: rankWith( 5, and( uiTypeIs('Control'), and( schemaMatches( (schema) => hasType(schema, 'array') && !Array.isArray(schema.items) && schema.uniqueItems === true, ), schemaSubPathMatches('items', (schema) => { return hasOneOfItems(schema) || hasEnumItems(schema); }), ), ), ), }; const hasOneOfItems = (schema: JsonSchema): boolean => schema.oneOf !== undefined && schema.oneOf.length > 0 && (schema.oneOf as JsonSchema[]).every((entry: JsonSchema) => { return entry.const !== undefined; }); const hasEnumItems = (schema: JsonSchema): boolean => schema.type === 'string' && schema.enum !== undefined;