UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

43 lines 2.32 kB
import React from 'react'; import names from 'classnames'; import { ErrorView } from '../semantic/error_view'; import { renderControl } from './control_factory'; import { groupByArray } from '@tomino/toolbelt'; import { getValue, getPropValue } from '../helpers'; import { prop } from '../common'; export function renderElements(context, elements, owner, handlers, catalogue, editorState, uid, filter) { const filtered = elements.filter(e => (!filter || (e.props.label || '').toLowerCase().indexOf(filter.toLowerCase()) >= 0 || (e.elements && e.elements.some(child => (child.props.label || '').toLowerCase().indexOf(filter.toLowerCase()) >= 0))) && getValue({ formElement: e, owner, handlers, catalogue }, editorState, 'visible', true)); const props = { owner, catalogue, handlers, formElement: null }; let group = groupByArray(filtered, e => e.tuple || getPropValue(props, e, context, 'label')); return group.map((group, i) => { let display = group.values[0].props.display; return (React.createElement("div", { key: i, className: names('property-table-row', { flexed: !display || display === 'inlineLabel' }), onClick: e => { e.preventDefault(); e.stopPropagation(); editorState.help = group.values.map(g => g.documentation).join('<br />'); } }, group.key && (React.createElement("label", { className: "first", htmlFor: `corpix-${group.key}` }, group.key)), display === 'topLabel' && React.createElement("br", null), group.values.map((formElement, i) => { display = formElement.props.display; return (React.createElement("div", { key: i, className: names({ full: display === 'topLabel', second: group.key, only: !group.key, padded: display === 'padded' }) }, renderControl({ formElement, owner, handlers, catalogue, uid }, filter), prop(formElement) && (React.createElement(ErrorView, { control: formElement, owner: owner, source: prop(formElement) })))); }))); }); } //# sourceMappingURL=control_factory_helpers.js.map