Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1259 | Rev 1261 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1257 stevensc 1
import React from 'react'
2
import { useController } from 'react-hook-form'
3
import styled from 'styled-components'
4
 
5
import FormErrorFeedback from '../FormErrorFeedback'
6
 
7
const CheckboxContainer = styled.div`
8
  display: inline-flex;
9
  align-items: center;
10
  * {
11
    cursor: pointer;
12
  }
13
 
1258 stevensc 14
  span {
15
    display: inline-block;
16
    width: 15px;
17
    height: 15px;
18
    position: relative;
19
    border: 1px solid #d2d2d2;
20
    border-radius: 100px;
21
    &::before {
22
      content: '';
1257 stevensc 23
      border-radius: 100px;
1258 stevensc 24
      background-color: #e44d3a;
25
      width: 8px;
26
      height: 8px;
27
      inset: 0;
28
      margin: auto;
29
      position: absolute;
30
      opacity: 0;
31
      visibility: hidden;
1257 stevensc 32
    }
33
  }
1258 stevensc 34
 
35
  input {
36
    visibility: hidden;
37
  }
38
 
1260 stevensc 39
  input:checked ~ span::before {
40
    visibility: 1;
1258 stevensc 41
    opacity: 1;
42
  }
43
 
1257 stevensc 44
  label {
45
    font-size: 14px;
46
    margin-left: 10px;
1260 stevensc 47
    line-height: 1;
1257 stevensc 48
  }
49
`
50
 
51
const Checkbox = ({ name, control, rules = {}, label = '', error = '' }) => {
52
  const { field } = useController({
53
    name,
54
    control,
55
    rules
56
  })
57
 
58
  return (
59
    <>
60
      <CheckboxContainer>
61
        <span></span>
62
        <input
63
          type='checkbox'
64
          onChange={field.onChange}
65
          onBlur={field.onBlur}
66
          value={field.value}
67
          name={field.name}
68
          ref={field.ref}
1259 stevensc 69
          id={field.name}
1257 stevensc 70
        />
71
        <label htmlFor={field.name}>{label}</label>
72
      </CheckboxContainer>
73
      {error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
74
    </>
75
  )
76
}
77
 
78
export default Checkbox