UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

47 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const react_1 = tslib_1.__importDefault(require("react")); const classnames_1 = tslib_1.__importDefault(require("classnames")); const error_view_1 = require("../semantic/error_view"); const control_factory_1 = require("./control_factory"); const toolbelt_1 = require("@tomino/toolbelt"); const helpers_1 = require("../helpers"); const common_1 = require("../common"); 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))) && helpers_1.getValue({ formElement: e, owner, handlers, catalogue }, editorState, 'visible', true)); const props = { owner, catalogue, handlers, formElement: null }; let group = toolbelt_1.groupByArray(filtered, e => e.tuple || helpers_1.getPropValue(props, e, context, 'label')); return group.map((group, i) => { let display = group.values[0].props.display; return (react_1.default.createElement("div", { key: i, className: classnames_1.default('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_1.default.createElement("label", { className: "first", htmlFor: `corpix-${group.key}` }, group.key)), display === 'topLabel' && react_1.default.createElement("br", null), group.values.map((formElement, i) => { display = formElement.props.display; return (react_1.default.createElement("div", { key: i, className: classnames_1.default({ full: display === 'topLabel', second: group.key, only: !group.key, padded: display === 'padded' }) }, control_factory_1.renderControl({ formElement, owner, handlers, catalogue, uid }, filter), common_1.prop(formElement) && (react_1.default.createElement(error_view_1.ErrorView, { control: formElement, owner: owner, source: common_1.prop(formElement) })))); }))); }); } exports.renderElements = renderElements; //# sourceMappingURL=control_factory_helpers.js.map