diff --git a/packages/vanilla/example/example.css b/packages/vanilla/example/example.css index cb1262f95..376103bc7 100644 --- a/packages/vanilla/example/example.css +++ b/packages/vanilla/example/example.css @@ -406,12 +406,12 @@ jsonforms-tree>dialog>.content { border-bottom: none; } -.array-table-layout.control>header { +.array-table-layout.control>header, .array-control-layout.control>header { display: flex; margin: 0.25em; } -.array-table-layout header label { +.array-table-layout header label, .array-control-layout header label { flex: 1; font-weight: bold; } @@ -447,4 +447,11 @@ jsonforms-tree>dialog>.content { .array-table-layout td>* { flex: 1; -} \ No newline at end of file +} +.array-control-layout .children>div { + border-top: 1px solid var(--jsf-border-color); + padding-top: 10px; +} + + + diff --git a/packages/vanilla/src/complex/array/ArrayControl.tsx b/packages/vanilla/src/complex/array/ArrayControl.tsx index a9b86a9d0..99eaeb9c5 100644 --- a/packages/vanilla/src/complex/array/ArrayControl.tsx +++ b/packages/vanilla/src/complex/array/ArrayControl.tsx @@ -24,58 +24,75 @@ */ import range from 'lodash/range'; import React, { useMemo } from 'react'; -import { ArrayControlProps, composePaths, createDefaultValue, findUISchema } from '@jsonforms/core'; +import { ArrayControlProps, composePaths, createDefaultValue, findUISchema, Helpers, ControlElement } from '@jsonforms/core'; import { JsonFormsDispatch } from '@jsonforms/react'; import { VanillaRendererProps } from '../../index'; +const { convertToValidClassName } = Helpers; + export const ArrayControl = ({ classNames, data, label, path, schema, + errors, addItem, uischema, uischemas, + getStyleAsClassName, renderers, rootSchema }: ArrayControlProps & VanillaRendererProps) => { + + const controlElement = uischema as ControlElement; const childUiSchema = useMemo( () => findUISchema(uischemas, schema, uischema.scope, path, undefined, uischema, rootSchema), [uischemas, schema, uischema.scope, path, uischema, rootSchema] ); + const isValid = errors.length === 0; + const validationClass = getStyleAsClassName('array.control.validation'); + const divClassNames = [validationClass] + .concat(isValid ? '' : getStyleAsClassName('array.control.validation.error')) + .join(' '); + const buttonClass = getStyleAsClassName('array.control.button'); + const labelClass = getStyleAsClassName('array.control.label'); + const controlClass = [ + getStyleAsClassName('array.control'), + convertToValidClassName(controlElement.scope) + ].join(' '); + return ( -
No data
+ )} +