import { Label, LabelProps, mergeClasses, Switch, SwitchOnChangeData, SwitchProps } from "@fluentui/react-components"; import { ReactElement } from "react"; import { useStyles } from "./DoubleLabeledSwitch.styles"; export default function DoubleLabledSwitch(props: DoubleLabledSwitchProps): ReactElement { const [isOn, setOn] = useState(props.checked ?? props.defaultChecked ?? false); const cls = useStyles(); const switchRef = useRef(); const setChecked = useCallback((checked: boolean) => { if (!switchRef.current || isOn === checked) return; switchRef.current.click(); }, [switchRef.current, isOn]); const onChange = useCallback((ev: React.ChangeEvent, data: SwitchOnChangeData) => { setOn(data.checked); props.onChange?.(ev, data); }, [props.onChange]); return (
switchRef.current = input } onChange={ onChange } />
); } export type DoubleLabledSwitchProps = Omit & { offLabel?: string; onLabel?: string; outerRoot?: React.HTMLAttributes; offLabelProps?: LabelProps; onLabelProps?: LabelProps; };