Como inserir um asterisco no label de um custom input do formik
Opa, beleza? Bora ver como fazer um custom input massa com direito a um asterisco de required.
InputFormik
Label
Vamos ver alguns códigos:
const Label = ({ children, labelMsg, labelTop = true, name, formik }: IProps) =>
labelTop ? (
<ContentStyled isRequired={formik && isRequiredField(formik, name)}>
<label htmlFor={name}>
{labelMsg}
{children}
</label>
</ContentStyled>
) : (
<ContentStyled isRequired={formik && isRequiredField(formik, name)}>
<LabelStyled label={labelMsg}>{children}</LabelStyled>
</ContentStyled>
);
labelTop
define se o label
vai ficar no topo ou do lado do input
.
Agora vamos para a mágica, o isRequired
e o isRequiredField
:
export const ContentStyled = styled.div`${(props: IProps) => props.isRequired &&`label::before {
display: inline-block;
margin-right: 4px;
color: #f5222d;
font-size: 14px;
font-family: SimSun, sans-serif;
line-height: 1;
content: '\*';
}`}`;
Como visto no código a cima, temos um styled-component com a props isRequired
e ali temos então o css que insere
o asterisco do lado do label
.
const isRequiredField = ({ validationSchema }: any, name: string) => {
try {
const isRequired = validationSchema.fields[name]
? !!validationSchema.fields[name].tests.find(
(test: any) => test.OPTIONS.name === 'required'
).OPTIONS.name
: false;
return isRequired;
} catch (event) {
return false;
}
};
Então temos a função que identifica se o field
é required ou não por meio do validationSchema
do formik.
Nesse InputFormik
ainda temos uma validação de senha conforme a imagem:
strongerlevel
Top comments (0)