feat(mask): Adiciona mascara nos input

This commit is contained in:
Amanda de Almeida Fonseca 2023-01-20 20:07:09 -03:00
parent b3c78b575b
commit 79307c5d71
6 changed files with 111 additions and 83 deletions

108
package-lock.json generated
View File

@ -18,17 +18,17 @@
"formik": "^2.2.9", "formik": "^2.2.9",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-imask": "^6.4.3",
"react-input-mask": "^2.0.4", "react-input-mask": "^2.0.4",
"react-router-dom": "^6.6.1", "react-router-dom": "^6.6.1",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-text-mask": "^5.5.0",
"sass": "^1.57.1", "sass": "^1.57.1",
"typescript": "^4.9.4", "typescript": "^4.9.4",
"web-vitals": "^2.1.4", "web-vitals": "^2.1.4",
"yup": "^0.32.11" "yup": "^0.32.11"
}, },
"devDependencies": { "devDependencies": {
"@types/jquery": "^3.5.16",
"@types/jquery-mask-plugin": "^1.14.4",
"@types/react-input-mask": "^3.0.2" "@types/react-input-mask": "^3.0.2"
} }
}, },
@ -3809,6 +3809,24 @@
"pretty-format": "^27.0.0" "pretty-format": "^27.0.0"
} }
}, },
"node_modules/@types/jquery": {
"version": "3.5.16",
"resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz",
"integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==",
"dev": true,
"dependencies": {
"@types/sizzle": "*"
}
},
"node_modules/@types/jquery-mask-plugin": {
"version": "1.14.4",
"resolved": "https://registry.npmjs.org/@types/jquery-mask-plugin/-/jquery-mask-plugin-1.14.4.tgz",
"integrity": "sha512-8la3UoP0/hclp+Gknxx+Tx8H+puBLj+Ybp7swLFTLk7rnItC5biPzikT15MroQbPdrBqWdfpNPdHQdfcdyPnNg==",
"dev": true,
"dependencies": {
"@types/jquery": "*"
}
},
"node_modules/@types/json-schema": { "node_modules/@types/json-schema": {
"version": "7.0.11", "version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@ -3931,6 +3949,12 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/@types/sizzle": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
"integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
"dev": true
},
"node_modules/@types/sockjs": { "node_modules/@types/sockjs": {
"version": "0.3.33", "version": "0.3.33",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
@ -8675,14 +8699,6 @@
"node": ">= 4" "node": ">= 4"
} }
}, },
"node_modules/imask": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/imask/-/imask-6.4.3.tgz",
"integrity": "sha512-aH2GHemGkr3cbRBfhogHMIx05eUxdHrZNlKTTLmz8VxpSopuHHJ8+85FsDlBVQqxPlDLhZuwj4lpHHWbLOdBSw==",
"engines": {
"npm": ">=4.0.0"
}
},
"node_modules/immer": { "node_modules/immer": {
"version": "9.0.16", "version": "9.0.16",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
@ -14050,21 +14066,6 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
}, },
"node_modules/react-imask": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/react-imask/-/react-imask-6.4.3.tgz",
"integrity": "sha512-5WyCbubQErO8Wr/zLDyUyC1zCqQXP979QXW6BNirUGsM1VxFmVG0nNfXA1PSXlgdbaXWBiBj+VJBvg/8BDzieA==",
"dependencies": {
"imask": "^6.4.3",
"prop-types": "^15.7.2"
},
"engines": {
"npm": ">=4.0.0"
},
"peerDependencies": {
"react": ">=0.14.0"
}
},
"node_modules/react-input-mask": { "node_modules/react-input-mask": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz", "resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz",
@ -14193,17 +14194,6 @@
} }
} }
}, },
"node_modules/react-text-mask": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
"dependencies": {
"prop-types": "^15.5.6"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/read-cache": { "node_modules/read-cache": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@ -19610,6 +19600,24 @@
"pretty-format": "^27.0.0" "pretty-format": "^27.0.0"
} }
}, },
"@types/jquery": {
"version": "3.5.16",
"resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz",
"integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==",
"dev": true,
"requires": {
"@types/sizzle": "*"
}
},
"@types/jquery-mask-plugin": {
"version": "1.14.4",
"resolved": "https://registry.npmjs.org/@types/jquery-mask-plugin/-/jquery-mask-plugin-1.14.4.tgz",
"integrity": "sha512-8la3UoP0/hclp+Gknxx+Tx8H+puBLj+Ybp7swLFTLk7rnItC5biPzikT15MroQbPdrBqWdfpNPdHQdfcdyPnNg==",
"dev": true,
"requires": {
"@types/jquery": "*"
}
},
"@types/json-schema": { "@types/json-schema": {
"version": "7.0.11", "version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@ -19732,6 +19740,12 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/sizzle": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
"integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
"dev": true
},
"@types/sockjs": { "@types/sockjs": {
"version": "0.3.33", "version": "0.3.33",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
@ -23206,11 +23220,6 @@
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
}, },
"imask": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/imask/-/imask-6.4.3.tgz",
"integrity": "sha512-aH2GHemGkr3cbRBfhogHMIx05eUxdHrZNlKTTLmz8VxpSopuHHJ8+85FsDlBVQqxPlDLhZuwj4lpHHWbLOdBSw=="
},
"immer": { "immer": {
"version": "9.0.16", "version": "9.0.16",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
@ -26903,15 +26912,6 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
}, },
"react-imask": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/react-imask/-/react-imask-6.4.3.tgz",
"integrity": "sha512-5WyCbubQErO8Wr/zLDyUyC1zCqQXP979QXW6BNirUGsM1VxFmVG0nNfXA1PSXlgdbaXWBiBj+VJBvg/8BDzieA==",
"requires": {
"imask": "^6.4.3",
"prop-types": "^15.7.2"
}
},
"react-input-mask": { "react-input-mask": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz", "resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz",
@ -27003,14 +27003,6 @@
"workbox-webpack-plugin": "^6.4.1" "workbox-webpack-plugin": "^6.4.1"
} }
}, },
"react-text-mask": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
"requires": {
"prop-types": "^15.5.6"
}
},
"read-cache": { "read-cache": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",

View File

@ -13,11 +13,9 @@
"formik": "^2.2.9", "formik": "^2.2.9",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-imask": "^6.4.3",
"react-input-mask": "^2.0.4", "react-input-mask": "^2.0.4",
"react-router-dom": "^6.6.1", "react-router-dom": "^6.6.1",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-text-mask": "^5.5.0",
"sass": "^1.57.1", "sass": "^1.57.1",
"typescript": "^4.9.4", "typescript": "^4.9.4",
"web-vitals": "^2.1.4", "web-vitals": "^2.1.4",
@ -48,6 +46,8 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@types/jquery": "^3.5.16",
"@types/jquery-mask-plugin": "^1.14.4",
"@types/react-input-mask": "^3.0.2" "@types/react-input-mask": "^3.0.2"
} }
} }

View File

@ -1,10 +1,18 @@
import react, { useState } from "react"; import React, { useState } from "react";
import styles from "./form.module.scss";
import stylesInput from "./input.module.scss"; import stylesInput from "./input.module.scss";
import stylesCheckbox from "./checkbox.module.scss"; import stylesCheckbox from "./checkbox.module.scss";
import { FormSchema } from "./schema/FormSchema"; import { FormSchema } from "./schema/FormSchema";
import InputMask from "react-input-mask";
import {
Formik,
Form,
Field,
ErrorMessage,
FormikHelpers,
FieldProps,
} from "formik";
import { Formik, Form, Field, ErrorMessage } from "formik"; import styles from "./form.module.scss";
interface FormikValues { interface FormikValues {
name: string; name: string;
@ -26,16 +34,24 @@ const initialValues = {
acceptTerms: false, acceptTerms: false,
}; };
let listClient: Array<any> = [];
const RegistrationForm = () => { const RegistrationForm = () => {
const [isSubmit, setIsSubmit] = useState(false); const [isSubmit, setIsSubmit] = useState(false);
const handleSubmit = (
values: FormikValues,
actions: FormikHelpers<FormikValues>
) => {
listClient.push(values);
console.log(listClient);
actions.resetForm();
setIsSubmit(!isSubmit);
};
return ( return (
<div className={styles["page-main__form"]}> <div className={styles["page-main__form"]}>
<Formik <Formik
onSubmit={(values: FormikValues, { resetForm }) => { onSubmit={handleSubmit}
console.log(values);
setIsSubmit(!isSubmit);
resetForm({ values: initialValues });
}}
initialValues={initialValues} initialValues={initialValues}
validationSchema={FormSchema} validationSchema={FormSchema}
> >
@ -78,11 +94,16 @@ const RegistrationForm = () => {
CPF CPF
</label> </label>
<Field <Field
name="cpf"
render={({ field }: any) => (
<InputMask
{...field}
className={stylesInput["page-main__input"]} className={stylesInput["page-main__input"]}
id="Cpf" id="Cpf"
placeholder="000.000.000-00" placeholder="000.000.000-00"
name="cpf" mask={"999.999.999-99"}
mask="999.999.999-99" />
)}
/> />
<ErrorMessage <ErrorMessage
component="span" component="span"
@ -95,11 +116,16 @@ const RegistrationForm = () => {
Data de Nascimento: Data de Nascimento:
</label> </label>
<Field <Field
name="data"
render={({ field }: FieldProps) => (
<InputMask
{...field}
mask="99.99.9999"
className={stylesInput["page-main__input"]} className={stylesInput["page-main__input"]}
id="Data" id="Data"
placeholder="00.00.0000" placeholder="00.00.0000"
name="data" />
mask="99.99.9999" )}
/> />
<ErrorMessage <ErrorMessage
component="span" component="span"
@ -112,12 +138,17 @@ const RegistrationForm = () => {
Telefone: Telefone:
</label> </label>
<Field <Field
name="tel"
render={({ field }: any) => (
<InputMask
{...field}
className={stylesInput["page-main__input"]} className={stylesInput["page-main__input"]}
id="tel" id="tel"
placeholder="(00) 00000-0000" placeholder="(00) 00000-0000"
name="tel"
mask="(99) 99999-9999" mask="(99) 99999-9999"
/> />
)}
/>
<ErrorMessage <ErrorMessage
component="span" component="span"
name="tel" name="tel"

View File

@ -6,10 +6,13 @@ const FormSchema = () =>
.min(3, "mínimo 3 caracteres") .min(3, "mínimo 3 caracteres")
.required("*Campo Obrigatório"), .required("*Campo Obrigatório"),
email: Yup.string().required("*Campo Obrigatório").email("Email inválido"), email: Yup.string().required("*Campo Obrigatório").email("Email inválido"),
cpf: Yup.string().length(14).required("*Campo Obrigatório"), cpf: Yup.string()
.min(14, "mínimo 14 caracteres")
.required("*Campo Obrigatório"),
data: Yup.date() data: Yup.date()
.required("*Campo Obrigatório") .min("01/01/1900")
.max(new Date(), "Não é possível incluir uma data futura"), .max(new Date())
.required("Campo obrigatório"),
tel: Yup.string().length(15).required("*Campo Obrigatório"), tel: Yup.string().length(15).required("*Campo Obrigatório"),
instagram: Yup.string(), instagram: Yup.string(),
acceptTerms: Yup.bool().oneOf([true], "*"), acceptTerms: Yup.bool().oneOf([true], "*"),

View File

@ -1,3 +1,4 @@
import React from "react";
import styles from "./subject.module.scss"; import styles from "./subject.module.scss";
interface SubjectTextProps { interface SubjectTextProps {

View File

@ -1,3 +1,4 @@
import React from "react";
import { Footer } from "../components/footer/Footer"; import { Footer } from "../components/footer/Footer";
import { Header } from "../components/Header/Header"; import { Header } from "../components/Header/Header";
import { Main } from "../components/Main/Main"; import { Main } from "../components/Main/Main";