Rev 3719 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react';import { styled } from '@mui/material';const SwitchContainer = styled('label')`display: flex;flex-direction: column;`;const StyledSwitch = styled('div')(({ isChecked }) => ({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,backgroundColor: isChecked ? '#2196f3' : '#ccc',WebkitTransition: '0.4s',transition: '0.4s'},'& .slider:before': {position: 'absolute',content: '""',height: '26px',width: '26px',left: '4px',bottom: '4px',backgroundColor: 'white',WebkitTransition: '0.4s',transform: isChecked ? 'translateX(26px)' : 'translateX(0px)',transition: '0.4s'},'& input:focus + .slider': {boxShadow: '0 0 1px #2196f3'},'& .slider.round': {borderRadius: '34px'},'& .slider.round:before': {borderRadius: '50%'}}));const SwitchInput = ({ label = '', isChecked: initialValue = false, setValue = () => null }) => {const [isChecked, setIsChecked] = useState(false);const handleToggle = () => {setIsChecked(!isChecked);setValue(!isChecked);};useEffect(() => {setIsChecked(initialValue);}, [initialValue]);return (<SwitchContainer>{label}<StyledSwitch isChecked={isChecked}><input type='checkbox' checked={isChecked} onChange={handleToggle} /><span className='slider round'></span></StyledSwitch></SwitchContainer>);};export default SwitchInput;