import * as React from "react"; import * as moment from "moment"; import MagaMultiProgressBar from "../maga-multi-progress-bar"; import DatePicker, { registerLocale } from "react-datepicker"; // @ts-ignore import MultiSelect from "@kenshooui/react-multi-select"; import ptBr from "date-fns/locale/pt-BR"; registerLocale("pt-BR", ptBr); import "moment/locale/pt-br"; import { DatesRangeInput } from "semantic-ui-calendar-react"; import { Accordion, Button, Divider, Dropdown, Header, Icon, Label, Popup, Segment, Radio, Checkbox as CheckboxSemantic, Search, Grid, } from "semantic-ui-react"; const ReactInputMask = require("react-input-mask"); const cloneDeep = require("clone-deep"); import { Picky } from "react-picky"; const { Form, Checkbox, RadioGroup } = require("formsy-semantic-ui-react"); interface Row { row: { grouped?: boolean; groupedCopy?: boolean; removed?: boolean; groupName?: string; fields: Field[]; }; } interface Field { label: string; name: string; type: string; value?: string; placeholder?: string; maxLength?: number; mask?: string; maskChar?: string; required?: boolean; disabled?: boolean; validations?: object; validationErrors?: object; width: number; data?: any[]; multiple?: boolean; defaultChecked?: boolean; position?: number; grouped?: boolean; handleChange?: any; } interface Props { /** Título fdo formulário */ title?: string; /** Objeto de retorno com todos valores do formulário no submit */ onSubmit?: ((data: {}) => void) | any; /** Objeto de retorno com todos valores do formulário no onChange */ onChange?: ((data: {}) => void) | any; /** Objeto de retorno com todos valores do formulário no onChange */ onBlur?: ((data: {}) => void) | any; /** Coleção da definição dos campos do formulário */ formTemplate: Row[]; /** Tipo de borda do formulário */ border?: "attached" | "segment"; /** Loading do formulário */ loading?: boolean; /** Referência do formulário */ refForm?: string; /** Formulário em com modo accordion */ accordion?: boolean; /** Estado inicial do accordion do formulário */ accordionOpened?: boolean; /** Estado atual do accordion do formulário */ accordionStatusOpened?: any; /** Componente superior a direita do form */ actionRightTop?: any; /** Add children no final do Segment */ children?: any; } interface State { formState: any; multiSelect: any[]; formTemplate: Row[]; count: number; activeAccordion: boolean | undefined; } const errorLabel =