diff --git a/assets/components/tracking/connector/ConnectorForm.tsx b/assets/components/tracking/connector/ConnectorForm.tsx index 97b1824..bca761d 100644 --- a/assets/components/tracking/connector/ConnectorForm.tsx +++ b/assets/components/tracking/connector/ConnectorForm.tsx @@ -1,8 +1,64 @@ -import type {FormInstance} from 'antd' +import type {FormInstance, StepProps} from 'antd' +import {Card, Col, Row, Steps} from 'antd' import type {Connector} from '../../../utils/api/connectors' import {ConnectorProvider} from '../../../utils/api/connectors' +import React, {useState} from 'react' +import {t} from "ttag" +import {BankOutlined, UserOutlined} from "@ant-design/icons" import {providersConfig} from "../../../utils/providers" + export function ConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) { - return providersConfig()[ConnectorProvider.OVHcloud].form({form, onCreate}) + const [provider, setProvider] = useState() + const providersConfigList = providersConfig() + const [current, setCurrent] = useState(0) + + const ProviderForm = provider !== undefined ? providersConfigList[provider].form : undefined + + const steps: StepProps[] = [ + { + title: t`Registrar`, + icon: , + }, + { + title: t`Authentication`, + icon: , + } + ] + + const next = () => { + setCurrent(current + 1) + } + + return ( + <> + setCurrent(c)}/> +
+ {current === 0 && ( + <> +

{t`Choose a registrar`}

+ + {Object.keys(providersConfigList).map((provider: string) => ( + + { + setProvider(provider as ConnectorProvider) + next() + }} + > +
+

{Object.keys(ConnectorProvider).find(p => ConnectorProvider[p as keyof typeof ConnectorProvider] === provider)}

+
+ + ))} +
+ + )} + + {current === 1 && ProviderForm && } +
+ + ) } diff --git a/assets/utils/providers/forms/AutoDnsConnectorForm.tsx b/assets/utils/providers/forms/AutoDnsConnectorForm.tsx index 48358a2..37435ae 100644 --- a/assets/utils/providers/forms/AutoDnsConnectorForm.tsx +++ b/assets/utils/providers/forms/AutoDnsConnectorForm.tsx @@ -1,10 +1,10 @@ import type {FormInstance} from 'antd' import {Alert, Checkbox, Form, Input, Typography} from 'antd' import React from 'react' -import type {Connector} from '../../../utils/api/connectors' -import {ConnectorProvider} from '../../../utils/api/connectors' +import type {Connector} from '../../api/connectors' +import {ConnectorProvider} from '../../api/connectors' import {t} from 'ttag' -import {DefaultConnectorFormItems} from "../../../utils/providers/forms" +import {DefaultConnectorFormItems} from "./index" import {providersConfig} from "../index" const formItemLayoutWithOutLabel = { @@ -14,7 +14,10 @@ const formItemLayoutWithOutLabel = { } } -export function AutoDnsConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) { +export default function AutoDnsConnectorForm({form, onCreate}: { + form: FormInstance, + onCreate: (values: Connector) => void +}) { return (
void }) { +export default function GandiConnectorForm({form, onCreate}: { + form: FormInstance, + onCreate: (values: Connector) => void +}) { return ( - diff --git a/assets/utils/providers/forms/NamecheapConnectorForm.tsx b/assets/utils/providers/forms/NamecheapConnectorForm.tsx index d3c85c7..2a7d94d 100644 --- a/assets/utils/providers/forms/NamecheapConnectorForm.tsx +++ b/assets/utils/providers/forms/NamecheapConnectorForm.tsx @@ -1,10 +1,10 @@ import type {FormInstance} from 'antd' import {Form, Input} from 'antd' import React from 'react' -import type {Connector} from '../../../utils/api/connectors' -import {ConnectorProvider} from '../../../utils/api/connectors' +import type {Connector} from '../../api/connectors' +import {ConnectorProvider} from '../../api/connectors' import {t} from 'ttag' -import {DefaultConnectorFormItems} from "../../../utils/providers/forms" +import {DefaultConnectorFormItems} from "./index" import {providersConfig} from "../index" const formItemLayoutWithOutLabel = { @@ -14,7 +14,7 @@ const formItemLayoutWithOutLabel = { } } -export function NamecheapConnectorForm({form, onCreate}: { +export default function NamecheapConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) { @@ -44,7 +44,6 @@ export function NamecheapConnectorForm({form, onCreate}: { > - ) diff --git a/assets/utils/providers/forms/NamecomConnectorForm.tsx b/assets/utils/providers/forms/NamecomConnectorForm.tsx index 4aefa0b..6a8b786 100644 --- a/assets/utils/providers/forms/NamecomConnectorForm.tsx +++ b/assets/utils/providers/forms/NamecomConnectorForm.tsx @@ -1,10 +1,10 @@ import type {FormInstance} from 'antd' import {Alert, Form, Input} from 'antd' import React from 'react' -import type {Connector} from '../../../utils/api/connectors' -import {ConnectorProvider} from '../../../utils/api/connectors' +import type {Connector} from '../../api/connectors' +import {ConnectorProvider} from '../../api/connectors' import {t} from 'ttag' -import {DefaultConnectorFormItems} from "../../../utils/providers/forms" +import {DefaultConnectorFormItems} from "./index" import {providersConfig} from "../index" const formItemLayoutWithOutLabel = { @@ -14,7 +14,10 @@ const formItemLayoutWithOutLabel = { } } -export function NamecomConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) { +export default function NamecomConnectorForm({form, onCreate}: { + form: FormInstance, + onCreate: (values: Connector) => void +}) { return (
({ - appKey: t`Application key`, - appSecret: t`Application secret`, - consumerKey: t`Consumer key` -}) - -const ovhEndpointListFunction = () => [ - { - label: t`European Region`, - value: 'ovh-eu' - } -] - -const ovhSubsidiaryListFunction = () => [...[ - 'CZ', 'DE', 'ES', 'FI', 'FR', 'GB', 'IE', 'IT', 'LT', 'MA', 'NL', 'PL', 'PT', 'SN', 'TN' -].map(c => ({value: c, label: regionNames.of(c) ?? c})), {value: 'EU', label: t`Europe`}] - -const ovhPricingModeFunction = () => [ - {value: 'create-default', label: t`The domain is free and at the standard price`}, - { - value: 'create-premium', - label: t`The domain is free but can be premium. Its price varies from one domain to another` - } -] - const formItemLayoutWithOutLabel = { wrapperCol: { xs: {span: 24, offset: 0}, @@ -40,14 +15,35 @@ const formItemLayoutWithOutLabel = { } } -export function OvhCloudConnectorForm({form, onCreate}: { form: FormInstance, onCreate: (values: Connector) => void }) { - const ovhFields = ovhFieldsFunction() - const ovhEndpointList = ovhEndpointListFunction() - const ovhSubsidiaryList = ovhSubsidiaryListFunction() - const ovhPricingMode = ovhPricingModeFunction() +export default function OvhCloudConnectorForm({form, onCreate}: { + form: FormInstance, + onCreate: (values: Connector) => void +}) { const [open, setOpen] = useState(false) const [ovhPricingModeValue, setOvhPricingModeValue] = useState() + const ovhFields = { + appKey: t`Application key`, + appSecret: t`Application secret`, + consumerKey: t`Consumer key` + } + const ovhEndpointList = [ + { + label: t`European Region`, + value: 'ovh-eu' + } + ] + const ovhSubsidiaryList = [...[ + 'CZ', 'DE', 'ES', 'FI', 'FR', 'GB', 'IE', 'IT', 'LT', 'MA', 'NL', 'PL', 'PT', 'SN', 'TN' + ].map(c => ({value: c, label: regionNames.of(c) ?? c})), {value: 'EU', label: t`Europe`}] + const ovhPricingMode = [ + {value: 'create-default', label: t`The domain is free and at the standard price`}, + { + value: 'create-premium', + label: t`The domain is free but can be premium. Its price varies from one domain to another` + } + ] + return ( - ) diff --git a/assets/utils/providers/forms/index.tsx b/assets/utils/providers/forms/index.tsx index 0e200d1..49ad530 100644 --- a/assets/utils/providers/forms/index.tsx +++ b/assets/utils/providers/forms/index.tsx @@ -1,8 +1,8 @@ -import {Button, Checkbox, Form, Space, Typography} from "antd" +import {Button, Checkbox, Form, Typography} from "antd" import {t} from "ttag" import React from "react" -export function DefaultConnectorFormItems({tosLink}: {tosLink: string}) { +export function DefaultConnectorFormItems({tosLink}: { tosLink: string }) { return <> - - - - - + + } \ No newline at end of file diff --git a/assets/utils/providers/index.tsx b/assets/utils/providers/index.tsx index 51e11a3..f8b6917 100644 --- a/assets/utils/providers/index.tsx +++ b/assets/utils/providers/index.tsx @@ -1,12 +1,12 @@ import type {Connector} from '../api/connectors' -import { ConnectorProvider} from '../api/connectors' -import {OvhCloudConnectorForm} from "./forms/OvhCloudConnectorForm" +import {ConnectorProvider} from '../api/connectors' +import OvhCloudConnectorForm from "./forms/OvhCloudConnectorForm" import type {FormInstance} from "antd" import type React from "react" -import {GandiConnectorForm} from "./forms/GandiConnectorForm" -import {NamecheapConnectorForm} from "./forms/NamecheapConnectorForm" -import {AutoDnsConnectorForm} from "./forms/AutoDnsConnectorForm" -import {NamecomConnectorForm} from "./forms/NamecomConnectorForm" +import GandiConnectorForm from "./forms/GandiConnectorForm" +import NamecheapConnectorForm from "./forms/NamecheapConnectorForm" +import AutoDnsConnectorForm from "./forms/AutoDnsConnectorForm" +import NamecomConnectorForm from "./forms/NamecomConnectorForm" export type ProviderConfig = { tosLink: string