From 4adc96390f05a3271e5daaa4d5e4d0317f4edad8 Mon Sep 17 00:00:00 2001 From: Tayane Fernandes Date: Tue, 14 Mar 2017 14:32:57 -0300 Subject: [#971] Extract Backup email page to a new component with @tuliocasagrande --- .../backup_account/backup_email/backup_email.js | 74 ++++++++++++++++++++ .../backup_email/backup_email.spec.js | 80 ++++++++++++++++++++++ web-ui/src/backup_account/page.js | 38 +--------- web-ui/src/backup_account/page.spec.js | 67 +----------------- 4 files changed, 159 insertions(+), 100 deletions(-) create mode 100644 web-ui/src/backup_account/backup_email/backup_email.js create mode 100644 web-ui/src/backup_account/backup_email/backup_email.spec.js (limited to 'web-ui/src/backup_account') diff --git a/web-ui/src/backup_account/backup_email/backup_email.js b/web-ui/src/backup_account/backup_email/backup_email.js new file mode 100644 index 00000000..3d5df1b0 --- /dev/null +++ b/web-ui/src/backup_account/backup_email/backup_email.js @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 ThoughtWorks, Inc. + * + * Pixelated is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pixelated is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pixelated. If not, see . + */ + +import React from 'react'; +import { translate } from 'react-i18next'; +import SubmitButton from 'src/common/submit_button/submit_button'; +import InputField from 'src/common/input_field/input_field'; +import validator from 'validator'; + + +export class BackupEmail extends React.Component { + + constructor(props) { + super(props); + this.state = { error: '', submitButtonDisabled: true }; + } + + validateEmail = (event) => { + const validEmail = validator.isEmail(event.target.value); + const emptyEmail = validator.isEmpty(event.target.value); + const t = this.props.t; + this.setState({ + error: !emptyEmail && !validEmail ? t('backup-account.backup-email.error.invalid-email') : '', + submitButtonDisabled: !validEmail || emptyEmail + }); + } + + render() { + const t = this.props.t; + return ( +
+ {t('backup-account.backup-email.image-description')} +
+

{t('backup-account.backup-email.title')}

+

{t('backup-account.backup-email.paragraph1')}

+

{t('backup-account.backup-email.paragraph2')}

+ + +