import * as React from 'react'; import { CaseInput } from '../Components/CaseInput'; import { useLanguage } from '../hooks/useLanguage'; import { makeError, makeNoError } from '../builder/tools'; import * as types from '../types'; let validation = ({ Element, data, Language, value }: types.Part.ValidationProps) => { if (Element.validation?.required && (value == null || value == "")) { return makeError(Element.name, Language["text"]?.["required"].replace("{field}", Element.props.label) ); } else if (Element.validation?.minlength && (value ?? "").length < Element.validation?.minlength) { return makeError(Element.name, Language["text"]?.["minlength"] .replace("{field}", Element.props.label) .replace("{minlength}", Element.validation?.minlength) ); } else if (Element.validation?.maxlength && (value ?? "").length > Element.validation?.maxlength) { return makeError(Element.name, Language["text"]?.["maxlength"] .replace("{field}", Element.props.label) .replace("{maxlength}", Element.validation?.maxlength)); } return makeNoError(Element.name); }; const Logic = ({ Element, Component, onChange, data, error, ...props }: types.Part.LogicProps) => { const Language = useLanguage(); let componentOnChange = (evt) => { let value = evt.currentTarget.value; return onChange({ data: { [Element.name]: value }, error: { ...(validation({ Element, data, value, Language }) ?? {}) } }); }; let propsToPass = { value: data[Element.name], error: error[Element.name], ...Element.props, onChange: componentOnChange, }; return ; }; const Component = ({ name, label, value, uppercase, lowercase, onChange }) => { return ; }; let Part: types.Part.Part = { Component, Logic, validation }; export { Part as text };