Campo para uso em projetos com a biblioteca react-final-form (React e ReactNative)
Componentes relacionados a criação de formulários. Usado em conjunto com libs como react-final-form, redux-form e formik.
O mais aconselhado é o react-final-form.
npm install --save vwapp-react-form
import React from 'react';
import { Form as FinalForm, Field } from 'react-final-form';
import { InputField, Fieldset, Json } from 'vwapp-react-form';
import { Form, Button } from 'react-bootstrap';
class Example extends Component {
__onSubmit = data => {
console.log(data);
}
__validate = values => {
const errors = {};
if (!values.first_name)
errors.first_name = "Nome é obrigatório.";
return errors;
}
render() {
return (
<FinalForm
onSubmit={this.__onSubmit}
initialValues={{first_name: "Pedro"}}
validate={this.__validate}
render={({ handleSubmit, submitting, pristine, values }) => (
<Form noValidate onSubmit={handleSubmit}>
<Fieldset title="Formulário principal">
<Form.Row>
<Form.Group as={Col} md="12">
<Field
column
name="first_name"
placeholder="Primeiro Nome"
label="Primeiro Nome"
component={InputField}
></Field>
</Form.Group>
</Form.Row>
</Fieldset>
<Json values={values} ></Json>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
)}
/>
)
}
}
export default Example;
Campo de pequenos textos.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
placeholder: Leve descrição do campo. (String - Opcional)
size: Tamanho do input: “sm”, “md”, “lg”. (String - padrão “mg”)
readOnly: Fazer o campo ser um texto só de leitura. (Booleano - default false)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="12" controlId="formFirstName">
<Field
column
name="first_name"
placeholder="Primeiro Nome"
label="Primeiro Nome"
component={InputField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de pequenos textos com componentes laterais.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
placeholder: Leve descrição do campo. (String - Opcional)
left: Insere componentes do lado esquerdo do input. Por exemplo: InputGroup.Text
. (Component - Opcional)
right: Insere componentes do lado direiro do input. Por exemplo: Button
. (Component - Opcional)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="6" controlId="formLastName">
<Field
column
name="last_name"
placeholder="Último Nome"
label="Último Nome"
left={<InputGroup.Text>$</InputGroup.Text>}
right={
<DropdownButton
variant="outline-secondary"
title="Dropdown"
id="input-group-dropdown-1">
<Dropdown.Item onClick={() => console.log("Action 1")}>Action 1</Dropdown.Item>
<Dropdown.Item onClick={() => console.log("Action 2")}>Action 2</Dropdown.Item>
<Dropdown.Divider ></Dropdown.Divider>
<Dropdown.Item onClick={() => console.log("Action 3")}>Action 3</Dropdown.Item>
</DropdownButton>
}
component={InputGroupField}
/>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campos de checkbox, switch e radio
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
inline: Coloca o conjunto de campos com esse atributo na horizontal. (Booleano - Opcional)
type: Tipo do input. (String - Obrigatória)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formCheckbox">
<Field
name="check"
type="checkbox"
label="Teste Checkbox"
id="check"
component={CheckField}
></Field>
<Field
name="switch"
type="switch"
label="Teste Switch"
id="switch"
component={CheckField}
></Field>
</Form.Group>
<Form.Group as={Col} md="4" controlId="formRadioButton">
<Field
name="choice"
type="radio"
label="Teste Radio 01"
value="teste01"
id="radio1"
component={CheckField}
></Field>
<Field
name="choice"
type="radio"
label="Teste Radio 02"
value="teste02"
id="radio2"
component={CheckField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de seleção e seleção multipla
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
placeholder: Leve descrição do campo. (String - Opcional - defalt “Selecione uma opção”)
size: Tamanho do input: “sm”, “md”, “lg”. (String - padrão “mg”)
options: Lista de opções. (Lista de Objetos (title, value) - Obrigatório)
type: É obrigatório colocar o type como “select” nesse input. (String - Obrigatório - valor “select”)
multiple: Transforma o select em escolhas multiplas. (Booleano - default false)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formSelect">
<Field
column
multiple
name="multiselect"
type="select"
label="Selecione as melhores opções"
options={[
{title: "1", value: 1},
{title: "2", value: 2},
{title: "3", value: 3},
{title: "4", value: 4},
]}
component={SelectField}
></Field>
<Line ></Line>
<Field
name="select"
type="select"
placeholder="Selecione a melhor opção"
options={[
{title: "1", value: 1},
{title: "2", value: 2},
{title: "3", value: 3},
{title: "4", value: 4},
]}
component={SelectField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de grandes textos.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
placeholder: Leve descrição do campo. (String - Opcional)
size: Tamanho do input: “sm”, “md”, “lg”. (String - padrão “mg”)
readOnly: Fazer o campo ser um texto só de leitura. (Booleano - default false)
rows: Tamanho da caixa do campos. (Inteiro - Opcional)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="12" controlId="formDescription">
<Field
name="description"
placeholder="Descrição"
rows={5}
component={TextAreaField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de data e hora.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
maxDate: Data limite de inserção. Só funciona nos tipos date e datetime. (Date, Opcional)
minDate: Data mínima de inserção. Só funciona nos tipos date e datetime. (Date, Opcional)
type: Tipo do input. (String - Padrão “datetime”)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formDateTime">
<Field
column
name="datetime"
label="Date e Hora:"
type="datetime"
minDate={new Date()}
component={DateTimePicker}
></Field>
</Form.Group>
<Form.Group as={Col} md="4" controlId="formDate">
<Field
name="date"
label="Data:"
type="date"
minDate={new Date()}
component={DateTimePicker}
></Field>
</Form.Group>
<Form.Group as={Col} md="4" controlId="formTime">
<Field
name="time"
label="Hora:"
type="time"
component={DateTimePicker}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de imagens
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
type: Tipo do input. (String - Obrigatória - valor “file”)
placeholder: Leve descrição do campo. (String - Opcional)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formImage">
<Field
name="image"
type='file'
label="Imagem"
placeholder="Clique aqui para inserir a imagem."
component={ImageField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de arquivos
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
type: Tipo do input. (String - Obrigatória - valor “file”)
placeholder: Leve descrição do campo. (String - Opcional)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formFile">
<Field
name="file"
label="Arquivo:"
type='file'
placeholder="Clique para inserir o arquivo."
component={FileField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de range númerico
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
max: Valor máximo que o range pode alcançar. (Inteiro - default 100)
min: Valor mínimo que o range pode alcançar. (Inteiro - default 0)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="8" controlId="formRange" className="d-flex flex-column justify-content-between">
<Field
column
name="range"
label="Range"
max={80}
component={RangeField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de cores.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row>
<Form.Group as={Col} md="4" controlId="formCheckbox">
<Field
column
name="color"
label="Teste Color"
component={ColorField}
></Field>
</Form.Group>
</Form.Row>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Campo de inserção de texto com autocomplete.
name: Nome do atributo que irá ser populado pelo usuário. É esse atributo que irá para a submissão do formulário, ele deve ser único. (String - Obrigatório)
id: Identificado do campo no formulário. (String - Para o CheckField é obrigatório, para os outros ele é o atributo name.)
label: Label que acompanhará o input. (String - Opcional)
component: Componente do input. É aqui que fica os componentes citados acima. (Component - Obrigatório.)
disabled: Desativa o component. (Booleano - Opcional)
className: Conjunto de classes dos campos. (String - Opcional)
column: Faz a label ficar em cima do campo. (Booleano - defaul false)
placeholder: Leve descrição do campo. (String - Opcional)
size: Tamanho do input: “sm”, “md”, “lg”. (String - padrão “mg”)
<Form noValidate onSubmit={handleSubmit}>
<Form.Row className="d-flex flex-row">
<Form.Group as={Col} md="4" controlId="formRadioButton">
<Field
column
name="browsers"
label="Data List"
placeholder="Insira um navegador."
options={[
{title: "Internet Explore", value: "Internet Explore"},
{title: "Firefox", value: "Firefox"},
{title: "Chrome", value: "Chrome"},
{title: "Safari", value: "Safari"},
]}
component={DataListField}
></Field>
</Form.Group>
</Form.Row>
<Json values={values} ></Json>
<Button variant="dark" type="submit" disabled={submitting || pristine}>Enviar</Button>
</Form>
Componente para printar na tela dicionários/Json.
<Json values={{...}} ></Json>
Componente para encapsular Campos de formulários.
<Fieldset title="Formulário de pagamento">
<Form.Row>...</Form.Row>
</Fieldset>
Rode os dois comandos abaixo em 2 abas diferentes. O primeiro comando vai ficar observando modificações do seu pacote e o segundo
comando consome essas modificações no html.
No diretorio raiz rode o npm start
npm start
No diretorio example rode o npm start.
cd example
npm start
Para instalar um novo pacote tem que fazer o seguinte comando:
npm install --save-dev nome-do-pacote
Com ele instalado tem que coloca-lo no package.json
"dependencies": {
"nome-do-pacote": "^versao",
"...": "..."
},
"peerDependencies": {
"nome-do-pacote": "^versao",
"...": "..."
}
Com isso, teste se esse pacote está sendo utilizado, caso não rode o npm install e reinicie os servidores.
npm login
e logar com as credenciais criadas no npmjsnpm publish
na pasta do projetoRode o comando para criar uma pagina com a build do projeto example do seu repositório.
npm run deploy
Versões: MAJOR.MINOR.PATCH
MIT © VictorDeon
Criado a partir do pacote: Create React Library