@heycar-uikit/core
Version:
The React UI library from HeyCar
30 lines (26 loc) • 1.1 kB
JavaScript
import React, { useState, useEffect } from 'react';
import cn from 'classnames';
var styles = {"container":"switch__container_141qq","switch":"switch__switch_141qq"};
require('./styles/default.css');
const Switch = React.forwardRef(({ checked, onChange, disabled = false, className }, ref) => {
const classNames = cn(styles.container, className);
const [isChecked, setChecked] = useState(checked);
useEffect(() => {
setChecked(checked);
}, [checked]);
const handleSwitch = () => {
setChecked(!isChecked);
onChange();
};
const handleKeyDown = (e) => {
if (e?.key === 'Enter') {
handleSwitch();
onChange();
}
};
return (React.createElement("label", { className: classNames },
React.createElement("input", { checked: isChecked, disabled: disabled, onChange: () => handleSwitch(), ref: ref, type: "checkbox" }),
React.createElement("span", { className: styles.switch, tabIndex: 0, onKeyDown: handleKeyDown })));
});
Switch.displayName = 'Switch';
export { Switch, Switch as default };