@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
48 lines • 1.67 kB
JavaScript
import * as React from 'react';
import { safeEval } from '@tomino/dynamic-form';
import { getValue } from '../helpers';
import { Context } from '../context';
import { prop } from '../common';
export const IfView = controlProps => {
const { formElement, owner } = controlProps;
const { props: props } = formElement;
const context = React.useContext(Context);
if (!prop(controlProps.formElement)) {
return React.createElement("div", null, "Component not bound.");
}
const value = getValue(controlProps, context);
let isTrue = true;
if (props.exists && !value) {
isTrue = false;
}
else if (props.notExists && value) {
isTrue = false;
}
else if (props.equal && value != value) {
isTrue = false;
}
else if (props.notEqual && value == parseFloat(value)) {
isTrue = false;
}
else if (props.biggerThan && value <= parseFloat(value)) {
isTrue = false;
}
else if (props.biggerOrEqualThan && value < parseFloat(value)) {
isTrue = false;
}
else if (props.smallerThan && value <= parseFloat(value)) {
isTrue = false;
}
else if (props.smallerOrEqualThan && value > parseFloat(value)) {
isTrue = false;
}
else if (props.expression) {
isTrue = safeEval(owner, props.expression, owner);
}
if (formElement.elements && formElement.elements.length) {
return controlProps.catalogue.createComponent(controlProps, formElement.elements[isTrue ? 0 : 1], context);
}
return React.createElement("div", null, "Empty template");
};
IfView.displayName = 'IfView';
//# sourceMappingURL=if_view.js.map