import React from 'react'; import { FormFieldContainer, TextInput } from '@mongodb-js/compass-components'; import type ConnectionStringUrl from 'mongodb-connection-string-url'; import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; import type { ConnectionFormError } from '../../../utils/validation'; import { errorMessageByFieldName } from '../../../utils/validation'; import { getConnectionStringPassword, getConnectionStringUsername, } from '../../../utils/connection-string-helpers'; export const PLAIN_USERNAME_LABEL = 'Username'; export const PLAIN_PASSWORD_LABEL = 'Password'; function AuthenticationPlain({ connectionStringUrl, updateConnectionFormField, errors, }: { connectionStringUrl: ConnectionStringUrl; errors: ConnectionFormError[]; updateConnectionFormField: UpdateConnectionFormField; }): React.ReactElement { const username = getConnectionStringUsername(connectionStringUrl); const password = getConnectionStringPassword(connectionStringUrl); const usernameError = errorMessageByFieldName(errors, 'username'); const passwordError = errorMessageByFieldName(errors, 'password'); return ( <> ) => { updateConnectionFormField({ type: 'update-username', username: value, }); }} label={PLAIN_USERNAME_LABEL} value={username || ''} errorMessage={usernameError} state={usernameError ? 'error' : undefined} /> ) => { updateConnectionFormField({ type: 'update-password', password: value, }); }} label={PLAIN_PASSWORD_LABEL} type="password" value={password || ''} errorMessage={passwordError} state={passwordError ? 'error' : undefined} /> ); } export default AuthenticationPlain;