Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4379 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

/* eslint-disable react/prop-types */
import React, { useEffect, useState } from "react";
import styled from "styled-components";

const StyledSwitch = styled.label`
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
  input {
    opacity: 0;
    width: 0;
    height: 0;
  }
  .slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    -webkit-transition: 0.4s;
    transition: 0.4s;
  }
  .slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    -webkit-transition: 0.4s;
    transition: 0.4s;
  }
  input.active + .slider {
    background-color: #2196f3;
  }
  input:focus + .slider {
    box-shadow: 0 0 1px #2196f3;
  }
  input.active + .slider:before {
    -webkit-transform: translateX(26px);
    -ms-transform: translateX(26px);
    transform: translateX(26px);
  }
  .slider.round {
    border-radius: 34px;
  }

  .slider.round:before {
    border-radius: 50%;
  }
`;

const SwitchInput = ({ isChecked = false, setValue = () => null }) => {

  const [isActive, setIsActive] = useState(isChecked)

  useEffect(() => setValue(isActive), [isActive])
  useEffect(() => setIsActive(isChecked), [isChecked])

  return (
    <StyledSwitch className="switch" >
      <input
        type="checkbox"
        className={isActive && 'active'}
        onChange={() => setIsActive(!isActive)}
      />
      <span className="slider round"></span>
    </StyledSwitch>
  );
};

export default SwitchInput;