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 --- web-ui/.eslintrc.json | 4 ++ web-ui/app/locales/en_US/translation.json | 18 ++--- web-ui/app/locales/pt_BR/translation.json | 18 ++--- web-ui/package.json | 3 +- .../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 +----------------- 8 files changed, 185 insertions(+), 117 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') diff --git a/web-ui/.eslintrc.json b/web-ui/.eslintrc.json index 554498f9..5a57efaa 100644 --- a/web-ui/.eslintrc.json +++ b/web-ui/.eslintrc.json @@ -6,6 +6,10 @@ "jsx-a11y", "import" ], + "parser": "babel-eslint", + "rules": { + "strict": 0 + }, "rules": { "import/no-extraneous-dependencies": ["off"], "import/extensions": ["off"], diff --git a/web-ui/app/locales/en_US/translation.json b/web-ui/app/locales/en_US/translation.json index 9df1867e..25d406b2 100644 --- a/web-ui/app/locales/en_US/translation.json +++ b/web-ui/app/locales/en_US/translation.json @@ -81,14 +81,16 @@ }, "backup-account": { "page-title": "Pixelated Backup Account", - "image-description": "Forgot my password!", - "title": "What if you forget your password?", - "paragraph1": "You will need a backup account. Choose an alternative email address you use regularly.", - "paragraph2": "Instructions to recover your password will be sent to this email address, save it.", - "input-label": "Type your backup account", - "button": "Add Account", - "error": { - "invalid-email": "Please enter a valid email address" + "backup-email": { + "image-description": "Forgot my password!", + "title": "What if you forget your password?", + "paragraph1": "You will need a backup account. Choose an alternative email address you use regularly.", + "paragraph2": "Instructions to recover your password will be sent to this email address, save it.", + "input-label": "Type your backup account", + "button": "Add Account", + "error": { + "invalid-email": "Please enter a valid email address" + } } }, "back-to-inbox": "Back to my inbox", diff --git a/web-ui/app/locales/pt_BR/translation.json b/web-ui/app/locales/pt_BR/translation.json index ac4fe10d..ec353ff1 100644 --- a/web-ui/app/locales/pt_BR/translation.json +++ b/web-ui/app/locales/pt_BR/translation.json @@ -81,14 +81,16 @@ }, "backup-account": { "page-title": "Pixelated E-mail de Recuperação", - "image-description": "Esqueci minha senha!", - "title": "E se você esquecer sua senha?", - "paragraph1": "Informe outro e-mail que você usa regularmente. Esse será o seu e-mail de recuperação.", - "paragraph2": "Instruções para recuperar sua senha serão enviadas para esse e-mail, guarde com carinho.", - "input-label": "Digite seu e-mail de recuperação", - "button": "Adicionar e-mail", - "error": { - "invalid-email": "Por favor informe um e-mail válido" + "backup-email": { + "image-description": "Esqueci minha senha!", + "title": "E se você esquecer sua senha?", + "paragraph1": "Informe outro e-mail que você usa regularmente. Esse será o seu e-mail de recuperação.", + "paragraph2": "Instruções para recuperar sua senha serão enviadas para esse e-mail, guarde com carinho.", + "input-label": "Digite seu e-mail de recuperação", + "button": "Adicionar e-mail", + "error": { + "invalid-email": "Por favor informe um e-mail válido" + } } }, "back-to-inbox": "Voltar", diff --git a/web-ui/package.json b/web-ui/package.json index 20b06ffd..5a5375e6 100644 --- a/web-ui/package.json +++ b/web-ui/package.json @@ -8,6 +8,7 @@ "babel": "^6.5.2", "babel-cli": "^6.22.2", "babel-core": "^6.21.0", + "babel-eslint": "^7.1.1", "babel-loader": "^6.2.10", "babel-plugin-istanbul": "^3.1.2", "babel-preset-es2015": "^6.18.0", @@ -18,7 +19,7 @@ "css-loader": "^0.26.1", "dompurify": "^0.8.4", "enzyme": "^2.7.1", - "eslint": "^3.15.0", + "eslint": "^3.17.1", "eslint-config-airbnb": "^14.1.0", "eslint-plugin-import": "^2.2.0", "eslint-plugin-jsx-a11y": "^4.0.0", 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')}

+ + +