UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

68 lines 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const helpers_1 = require("../helpers"); function findConflict(props, context, cells, start, end) { const getValue = helpers_1.bindGetValue(props, context); return cells.find(e => (getValue(e, 'column') >= start && getValue(e, 'column') <= end) || (getValue(e, 'column') + getValue(e, 'width') - 1 >= start && getValue(e, 'column') + getValue(e, 'width') - 1 <= end)); } exports.findConflict = findConflict; function adjustPosition(props, context, where, source, target, parent) { const getValue = helpers_1.bindGetValue(props, context); if (!parent) { return getValue(target, 'column'); } let dimensions = parent.elements.reduce((prev, next) => ({ rows: prev.rows < next.props.row ? next.props.row : prev.rows, columns: prev.columns < next.props.column ? next.props.column : prev.columns }), { rows: 0, columns: 0 }); let column = where === 'left' ? getValue(target, 'column') : getValue(target, 'column') - getValue(target, 'width') + 1; column = column < 1 ? 1 : column; column = column + source.props.width > dimensions.columns ? dimensions.columns - getValue(source, 'width') + 1 : column; let cells = parent.elements.filter(e => e.props.row === target.props.row && e !== source); let conflict = findConflict(props, context, cells, column, column + source.props.width - 1); if (conflict) { return -1; } return column; } exports.adjustPosition = adjustPosition; function bind(formElement, item) { if (formElement.parent) { let parent = formElement.parent; let parentPath = ''; while (parent) { if (parent.props.value && parent.props.value.source) { parentPath = parentPath + parent.props.value + '.'; } parent = parent.parent; } let path = item.name.replace(parentPath, ''); formElement.setValue('source', path); return; } const schema = item.schema; item.label = item.name; item.source = item.name; if (schema.type === 'boolean') { item.name = 'Checkbox'; } else if (schema.type === 'array') { item.name = 'Table'; } else if (schema.type === 'number' || schema.type === 'integer') { item.name = 'Input'; item.controlProps = { type: 'number' }; } else if (schema.type === 'string') { item.name = 'Input'; } } exports.bind = bind; //# sourceMappingURL=editor_helpers.js.map