UNPKG

@etsoo/materialui

Version:

TypeScript Material-UI Implementation

41 lines (40 loc) 1.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Switch = Switch; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = __importDefault(require("react")); const Checkbox_1 = __importDefault(require("@mui/material/Checkbox")); const Switch_1 = __importDefault(require("@mui/material/Switch")); const FormControlLabel_1 = __importDefault(require("@mui/material/FormControlLabel")); /** * Switch * @param props Props * @returns Component */ function Switch(props) { // Destruct const { checked, defaultChecked, defaultValue, onChange, readOnly, size, checkbox = false, value = "true", ...rest } = props; // Checked state const [controlChecked, setControlChecked] = react_1.default.useState(checked ?? defaultChecked ?? defaultValue == value); react_1.default.useEffect(() => { if (checked) setControlChecked(checked); }, [checked]); // Handle change const handleChange = (event, checked) => { if (onChange) onChange(event, checked); setControlChecked(checked); }; // Control const control = checkbox ? ((0, jsx_runtime_1.jsx)(Checkbox_1.default, { readOnly: readOnly, checked: controlChecked, onChange: handleChange, size: size, value: value })) : ((0, jsx_runtime_1.jsx)(Switch_1.default, { readOnly: readOnly, checked: controlChecked, onChange: handleChange, size: size, value: value })); // Default state react_1.default.useEffect(() => { setControlChecked(controlChecked); }, [controlChecked]); // Layout return (0, jsx_runtime_1.jsx)(FormControlLabel_1.default, { control: control, ...rest }); }