/* * CloudBeaver - Cloud Database Manager * Copyright (C) 2020-2021 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ import { observer } from 'mobx-react-lite'; import styled, { css } from 'reshadow'; import { useAdministrationSettings } from '@cloudbeaver/core-administration'; import { ErrorMessage, SubmittingForm, Loader, useFocus, ObjectPropertyInfoForm, FormBox, FormBoxElement, FormGroup, FieldCheckbox } from '@cloudbeaver/core-blocks'; import { SSH_TUNNEL_ID, SSHAuthForm } from '@cloudbeaver/core-connections'; import { useController } from '@cloudbeaver/core-di'; import { CommonDialogWrapper, DialogComponentProps } from '@cloudbeaver/core-dialogs'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useStyles } from '@cloudbeaver/core-theming'; import { ConnectionController, ConnectionStep } from './ConnectionController'; import { ConnectionDialogFooter } from './ConnectionDialogFooter'; import { TemplateConnectionSelector } from './TemplateConnectionSelector/TemplateConnectionSelector'; const styles = css` CommonDialogWrapper { max-height: 600px; min-height: 500px; } SubmittingForm, center { display: flex; flex: 1; margin: auto; } center { box-sizing: border-box; flex-direction: column; align-items: center; justify-content: center; } ObjectPropertyInfoForm { align-items: center; justify-content: center; display: inline-flex; } FormBox { align-items: center; justify-content: center; width: 450px; } `; export const ConnectionDialog = observer(function ConnectionDialog({ rejectDialog, }: DialogComponentProps) { const [focusedRef] = useFocus({ focusFirstChild: true }); const controller = useController(ConnectionController, rejectDialog); const translate = useTranslate(); const { credentialsSavingEnabled } = useAdministrationSettings(); let subtitle: string | undefined; if (controller.step === ConnectionStep.Connection && controller.template?.name) { subtitle = controller.template.name; } const sshConfig = controller.template?.networkHandlersConfig.find( handler => handler.id === SSH_TUNNEL_ID ); const isSSHAuthNeeded = sshConfig?.enabled && !sshConfig.savePassword; return styled(useStyles(styles))( controller.onStep(ConnectionStep.ConnectionTemplateSelect)} onConnect={controller.onConnect} /> )} onReject={rejectDialog} > {controller.isLoading && } {!controller.isLoading && controller.step === ConnectionStep.ConnectionTemplateSelect && ( )} {controller.step === ConnectionStep.Connection && (!controller.authModel ? (
{controller.isConnecting && translate('basicConnection_connectionDialog_connecting_message')}
) : ( {credentialsSavingEnabled && ( )} {isSSHAuthNeeded && sshConfig && ( )} ))} {controller.responseMessage && ( )}
); });