2025-02-18 17:20:33 +01:00
|
|
|
import type {FormInstance, StepProps} from 'antd'
|
|
|
|
|
import {Card, Col, Row, Steps} from 'antd'
|
2024-12-31 13:55:42 +01:00
|
|
|
import type {Connector} from '../../../utils/api/connectors'
|
2025-01-06 22:58:00 +01:00
|
|
|
import {ConnectorProvider} from '../../../utils/api/connectors'
|
2025-02-18 17:20:33 +01:00
|
|
|
import React, {useState} from 'react'
|
|
|
|
|
import {t} from "ttag"
|
|
|
|
|
import {BankOutlined, UserOutlined} from "@ant-design/icons"
|
2025-02-18 15:41:59 +01:00
|
|
|
import {providersConfig} from "../../../utils/providers"
|
2024-07-29 19:37:17 +02:00
|
|
|
|
2025-02-18 17:20:33 +01:00
|
|
|
|
2024-07-29 19:37:17 +02:00
|
|
|
export function ConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) {
|
2025-02-18 17:20:33 +01:00
|
|
|
const [provider, setProvider] = useState<ConnectorProvider>()
|
|
|
|
|
const providersConfigList = providersConfig()
|
|
|
|
|
const [current, setCurrent] = useState(0)
|
|
|
|
|
|
|
|
|
|
const ProviderForm = provider !== undefined ? providersConfigList[provider].form : undefined
|
|
|
|
|
|
|
|
|
|
const steps: StepProps[] = [
|
|
|
|
|
{
|
|
|
|
|
title: t`Registrar`,
|
|
|
|
|
icon: <BankOutlined/>,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: t`Authentication`,
|
|
|
|
|
icon: <UserOutlined/>,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
const next = () => {
|
|
|
|
|
setCurrent(current + 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<Steps current={current} items={steps} onChange={(c: number) => setCurrent(c)}/>
|
|
|
|
|
<div style={{padding: 20}}>
|
|
|
|
|
{current === 0 && (
|
|
|
|
|
<>
|
|
|
|
|
<h2>{t`Choose a registrar`}</h2>
|
|
|
|
|
<Row gutter={[16, 16]}>
|
|
|
|
|
{Object.keys(providersConfigList).map((provider: string) => (
|
|
|
|
|
<Col key={provider as ConnectorProvider} span={8}>
|
|
|
|
|
<Card
|
|
|
|
|
hoverable
|
|
|
|
|
style={{textAlign: "center"}}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setProvider(provider as ConnectorProvider)
|
|
|
|
|
next()
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<div style={{fontSize: "3rem"}}><BankOutlined/></div>
|
|
|
|
|
<h3>{Object.keys(ConnectorProvider).find(p => ConnectorProvider[p as keyof typeof ConnectorProvider] === provider)}</h3>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
))}
|
|
|
|
|
</Row>
|
|
|
|
|
</>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{current === 1 && ProviderForm && <ProviderForm form={form} onCreate={onCreate}/>}
|
|
|
|
|
</div>
|
|
|
|
|
</>
|
|
|
|
|
)
|
2024-12-30 23:50:15 +01:00
|
|
|
}
|