var __rest = (this && this.__rest) || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
};
import { Input, Button, TextArea } from "semantic-ui-react";
import * as React from 'react';
export var StringFieldControl = function (props) {
    var onChange = props.onChange, value = props.value, onSetError = props.onSetError, ctlProps = __rest(props, ["onChange", "value", "onSetError"]);
    var _a = React.useState(value), internalValue = _a[0], setValue = _a[1];
    var handleOnChange = function (v) {
        setValue(v);
        onChange(v);
    };
    React.useEffect(function () {
        setValue(value);
    }, [value]);
    return <Input value={internalValue || ''} onChange={function (a, b) { return handleOnChange(b.value); }} {...ctlProps}/>;
};
export var MultilineStringFieldControl = function (props) {
    var onChange = props.onChange, value = props.value, onSetError = props.onSetError, ctlProps = __rest(props, ["onChange", "value", "onSetError"]);
    var _a = React.useState(value), internalValue = _a[0], setValue = _a[1];
    var handleOnChange = function (v) {
        setValue(v);
        onChange(v);
    };
    React.useEffect(function () {
        setValue(value);
    }, [value]);
    return <TextArea value={internalValue || ''} onChange={function (a, b) { return handleOnChange(b.value); }} {...ctlProps}/>;
};
export var NumberFieldControl = function (props) {
    var onChange = props.onChange, value = props.value, onSetError = props.onSetError, ctlProps = __rest(props, ["onChange", "value", "onSetError"]);
    var _a = React.useState(value), internalValue = _a[0], setValue = _a[1];
    var handleOnChange = function (v) {
        setValue(v);
        onChange(v);
    };
    React.useEffect(function () {
        setValue(value);
    }, [value]);
    return <Input type="number" value={internalValue || ''} onChange={function (a, b) { return handleOnChange(parseFloat(b.value)); }} {...ctlProps}/>;
};
export var DateFieldControl = function (props) {
    var onChange = props.onChange, value = props.value, onSetError = props.onSetError, ctlProps = __rest(props, ["onChange", "value", "onSetError"]);
    var _a = React.useState(value), internalValue = _a[0], setValue = _a[1];
    var handleOnChange = function (v) {
        setValue(v);
        onChange(v);
    };
    React.useEffect(function () {
        setValue(value);
    }, [value]);
    return <Input type="date" value={internalValue || ''} onChange={function (a, b) { return handleOnChange(b.value); }} {...ctlProps}/>;
};
export var BooleanFieldControl = function (props) {
    var onChange = props.onChange, value = props.value, onSetError = props.onSetError, ctlProps = __rest(props, ["onChange", "value", "onSetError"]);
    var _a = React.useState(value), internalValue = _a[0], setValue = _a[1];
    /*
    const handleOnChange = (v: boolean) => {
      setValue(v);
      onChange(v);
    }
  */
    React.useEffect(function () {
        setValue(value);
    }, [value]);
    return <Button.Group>
    <Button primary={value === true} content="YES" onClick={function () { return onChange(value === true ? undefined : true); }} {...ctlProps}/>
    <Button primary={value === false} content="NO" onClick={function () { return onChange(value === false ? undefined : false); }} {...ctlProps}/>

  </Button.Group>;
};
