session-desktop/ts/components/basic/SessionToggle.tsx

59 lines
1.4 KiB
TypeScript

import React from 'react';
import classNames from 'classnames';
import { updateConfirmModal } from '../../state/ducks/modalDialog';
import { useDispatch } from 'react-redux';
type Props = {
active: boolean;
onClick: () => void;
confirmationDialogParams?: any | undefined;
};
export const SessionToggle = (props: Props) => {
const dispatch = useDispatch();
const clickHandler = (event: any) => {
const stateManager = (e: any) => {
e.stopPropagation();
props.onClick();
};
if (props.confirmationDialogParams && props.confirmationDialogParams.shouldShowConfirm) {
// If item needs a confirmation dialog to turn ON, render it
const closeConfirmModal = () => {
dispatch(updateConfirmModal(null));
};
dispatch(
updateConfirmModal({
onClickOk: () => {
stateManager(event);
closeConfirmModal();
},
onClickClose: () => {
updateConfirmModal(null);
},
...props.confirmationDialogParams,
updateConfirmModal,
})
);
return;
}
stateManager(event);
};
return (
<div className="session-settings-item__selection">
<div
className={classNames('session-toggle', props.active ? 'active' : '')}
role="button"
onClick={clickHandler}
>
<div className="knob" />
</div>
</div>
);
};