1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-08 23:46:14 +01:00
fab-manager/app/frontend/src/javascript/components/select-gateway-modal.tsx

76 lines
2.7 KiB
TypeScript
Raw Normal View History

2021-03-03 15:28:56 +01:00
/**
2021-03-10 17:15:36 +01:00
* This component allows an administrator to select and configure a payment gateway.
* The configuration of a payment gateway is required to enable the online payments.
2021-03-03 15:28:56 +01:00
*/
2021-03-10 17:15:36 +01:00
import React, { BaseSyntheticEvent, useState } from 'react';
2021-03-03 15:28:56 +01:00
import { react2angular } from 'react2angular';
import { Loader } from './loader';
import { IApplication } from '../models/application';
import { useTranslation } from 'react-i18next';
import { FabModal, ModalSize } from './fab-modal';
import { User } from '../models/user';
declare var Application: IApplication;
interface SelectGatewayModalModalProps {
isOpen: boolean,
toggleModal: () => void,
currentUser: User,
}
const SelectGatewayModal: React.FC<SelectGatewayModalModalProps> = ({ isOpen, toggleModal }) => {
const { t } = useTranslation('admin');
2021-03-10 16:46:18 +01:00
const [preventConfirmGateway, setPreventConfirmGateway] = useState<boolean>(true);
const [selectedGateway, setSelectedGateway] = useState<string>('');
/**
* Callback triggered when the user has filled and confirmed the settings of his gateway
*/
const onGatewayConfirmed = () => {
setPreventConfirmGateway(true);
toggleModal();
}
const setGateway = (event: BaseSyntheticEvent) => {
const gateway = event.target.value;
setSelectedGateway(gateway);
setPreventConfirmGateway(!gateway);
}
2021-03-03 15:28:56 +01:00
return (
2021-03-10 16:46:18 +01:00
<FabModal title={t('app.admin.invoices.payment.gateway_modal.select_gateway_title')}
2021-03-03 15:28:56 +01:00
isOpen={isOpen}
toggleModal={toggleModal}
width={ModalSize.medium}
closeButton={false}
2021-03-10 16:46:18 +01:00
className="gateway-modal"
confirmButton={t('app.admin.invoices.payment.gateway_modal.confirm_button')}
onConfirm={onGatewayConfirmed}
preventConfirm={preventConfirmGateway}>
<p className="info-gateway">
{t('app.admin.invoices.payment.gateway_modal.gateway_info')}
</p>
<label htmlFor="gateway">{t('app.admin.invoices.payment.gateway_modal.select_gateway')}</label>
<select id="gateway" className="select-gateway" onChange={setGateway} value={selectedGateway}>
<option />
<option value="stripe">{t('app.admin.invoices.payment.gateway_modal.stripe')}</option>
<option value="payzen">{t('app.admin.invoices.payment.gateway_modal.payzen')}</option>
</select>
2021-03-03 15:28:56 +01:00
</FabModal>
);
}
2021-03-10 16:46:18 +01:00
const SelectGatewayModalWrapper: React.FC<SelectGatewayModalModalProps> = ({ isOpen, toggleModal, currentUser }) => {
2021-03-03 15:28:56 +01:00
return (
<Loader>
<SelectGatewayModal isOpen={isOpen} toggleModal={toggleModal} currentUser={currentUser} />
</Loader>
);
}
2021-03-10 16:46:18 +01:00
Application.Components.component('selectGatewayModal', react2angular(SelectGatewayModalWrapper, ['isOpen', 'toggleModal', 'currentUser']));