import * as React from 'react';
import StringInput from './StringInput';
import NumberInput from './NumberInput';
import FileSelector from './FileSelector';
import LovInput from './LovInput';
import Dropdown from './Dropdown';
import CascadeDropdown from './CascadeDropdown';
import MultiLineText from './MultiLineText';
import DateInput from './DateInput';
import CheckboxList from './CheckboxList';
import RadioList from './RadioList';
import MultiSelect from './MultiSelect';
import Password from './Password';
import FormTitle from './FormTitle';
import Checkbox from './Checkbox';
import Label from './Label';
import CollapsibleBlock from './CollapsibleBlock';
import Blank from './Blank';
import NextLine from './NextLine';

declare interface propTypes {
    name: string;
    hidden?: boolean;
}

declare class Form extends React.Component<propTypes> {
    static StringInput: typeof StringInput;
    static NumberInput: typeof NumberInput;
    static FileSelector: typeof FileSelector;
    static LovInput: typeof LovInput;
    static Dropdown: typeof Dropdown;
    static CascadeDropdown: typeof CascadeDropdown;
    static MultiLineText: typeof MultiLineText;
    static DateInput: typeof DateInput;
    static CheckboxList: typeof CheckboxList;
    static RadioList: typeof RadioList;
    static MultiSelect: typeof MultiSelect;
    static Password: typeof Password;
    static FormTitle: typeof FormTitle;
    static Checkbox: typeof Checkbox;
    static Label: typeof Label;
    static CollapsibleBlock: typeof CollapsibleBlock;
    static Blank: typeof Blank;
    static NextLine: typeof NextLine;
}

// @ts-ignore
Form.NumberInput = NumberInput;
Form.StringInput = StringInput;
Form.Password = Password;
Form.FileSelector = FileSelector;
Form.LovInput = LovInput;
Form.Dropdown = Dropdown;
Form.CascadeDropdown = CascadeDropdown;
Form.MultiLineText = MultiLineText;
Form.DateInput = DateInput;
Form.CheckboxList = CheckboxList;
Form.RadioList = RadioList;
Form.MultiSelect = MultiSelect;
Form.FormTitle = FormTitle;
Form.Checkbox = Checkbox;
Form.Label = Label;
Form.CollapsibleBlock = CollapsibleBlock;
Form.Blank = Blank;
Form.NextLine = NextLine;

export default Form;
