summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--web-ui/app/account_recovery.html1
-rw-r--r--web-ui/app/js/account_recovery.js5
-rw-r--r--web-ui/app/js/account_recovery/page.js21
-rw-r--r--web-ui/app/scss/account_recovery/page.scss163
-rw-r--r--web-ui/app/scss/base/_colors.scss1
-rw-r--r--web-ui/config/loaders-webpack.js20
-rw-r--r--web-ui/package.json3
-rw-r--r--web-ui/test/spec/account_recovery/page.spec.js (renamed from web-ui/test/spec/account_recovery/account_recovery.spec.js)4
-rw-r--r--web-ui/webpack.config.js20
-rw-r--r--web-ui/webpack.production.config.js13
11 files changed, 214 insertions, 38 deletions
diff --git a/Makefile b/Makefile
index 5c17032e..a263ec42 100644
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,7 @@ requirements_js:
install_js:
@cd web-ui;\
+ npm rebuild node-sass;\
npm run build
create_virtualenv: ensure_virtualenv_installed
diff --git a/web-ui/app/account_recovery.html b/web-ui/app/account_recovery.html
index 407f5907..d2021f65 100644
--- a/web-ui/app/account_recovery.html
+++ b/web-ui/app/account_recovery.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
+ <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
<title>Pixelated Account Recovery</title>
</head>
<body>
diff --git a/web-ui/app/js/account_recovery.js b/web-ui/app/js/account_recovery.js
index 02183574..441a8936 100644
--- a/web-ui/app/js/account_recovery.js
+++ b/web-ui/app/js/account_recovery.js
@@ -1,6 +1,11 @@
import React from 'react'
import { render } from 'react-dom'
import Page from 'js/account_recovery/page'
+import a11y from 'react-a11y'
+
+import 'font-awesome/scss/font-awesome.scss'
+
+if(process.env.NODE_ENV === 'development') a11y(React);
render(
<Page/>,
diff --git a/web-ui/app/js/account_recovery/page.js b/web-ui/app/js/account_recovery/page.js
index a6be0c6e..5d4f2c36 100644
--- a/web-ui/app/js/account_recovery/page.js
+++ b/web-ui/app/js/account_recovery/page.js
@@ -3,9 +3,24 @@ import React from 'react'
import 'scss/account_recovery/page.scss'
const Page = () => (
- <div className="container">
- <img src="assets/images/forgot-my-password.svg" />
- <h1>E se você esquecer sua senha?</h1>
+ <div className='container'>
+ <img src='assets/images/forgot-my-password.svg' alt="Esqueci minha senha!"/>
+ <form>
+ <h1>E se você esquecer sua senha?</h1>
+ <p>Informe outro e-mail que você usa regularmente. Esse será o seu e-mail de recuperação.</p>
+ <p>Instruções para recuperar sua senha serão enviadas para esse e-mail, guarde com carinho.</p>
+ <div className="field-group">
+ <input type="text" name="email" className="email" required/>
+ <label className="animated-label" htmlFor="email">Digite seu e-mail de recuperação</label>
+ </div>
+ <button>Adicionar e-mail</button>
+ <div>
+ <a href="/">
+ <i className="fa fa-angle-left" aria-hidden="true"></i>
+ <span>Voltar</span>
+ </a>
+ </div>
+ </form>
</div>
);
diff --git a/web-ui/app/scss/account_recovery/page.scss b/web-ui/app/scss/account_recovery/page.scss
index b6a4c024..8bba1b5a 100644
--- a/web-ui/app/scss/account_recovery/page.scss
+++ b/web-ui/app/scss/account_recovery/page.scss
@@ -1,7 +1,10 @@
@import "../vendor/reset";
@import "../base/colors";
@import "../base/fonts";
-@import "../base/scaffolding";
+
+html {
+ min-height: 100%;
+}
body {
font-family: "Open Sans", "Microsoft YaHei", "Hiragino Sans GB", "Hiragino Sans GB W3", "微软雅黑", "Helvetica Neue", Arial, sans-serif;
@@ -10,22 +13,164 @@ body {
background: -o-linear-gradient(bottom right, $dark_blue, $middle_blue); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(bottom right, $dark_blue, $middle_blue); /* For Firefox 3.6 to 15 */
background: linear-gradient(to bottom right, $dark_blue, $middle_blue); /* Standard syntax */
+ color: $dark_grey_text;
+ min-height: 100%;
}
h1 {
- font-size: 4em;
- color: $dark_slate_gray;
+ font-size: 1.3em;
+ font-weight: 600;
+}
+
+p {
+ -webkit-margin-before: 0.5em;
+ -webkit-margin-after: 0.5em;
+ margin-before: 0.5em;
+ margin-after: 0.5em;
+}
+
+a {
+ text-decoration: none;
+ color: $dark_blue;
+ font-style: italic;
+
+ .fa {
+ font-size: 1.6em;
+ position: relative;
+ top: 3px;
+ margin-right: 0.3em;
+ }
+
+}
+
+.field-group {
+ position:relative;
+ margin: 1.5em 0;
+ width: 100%;
+
+ label {
+ font-size: 0.9em;
+ margin-bottom: 10px;
+ display: inline-block;
+ }
+
+ input {
+ display: block;
+ border: none;
+ border-bottom: solid 1px #4da3b6;
+ width: 100%;
+ height: auto;
+ padding: 0.3em 0px;
+ }
+
+ input:focus {
+ outline:none;
+ border-width: 2px;
+ }
+
+ input:focus ~ .animated-label, input:valid ~ .animated-label {
+ top:-12px;
+ left: 0;
+ font-size:0.7em;
+ color:#4da3b6;
+ }
+
+ .animated-label {
+ color:#999;
+ position:absolute;
+ pointer-events:none;
+ left: 6px;
+ top:10px;
+ transition:0.2s ease all;
+ -moz-transition:0.2s ease all;
+ -webkit-transition:0.2s ease all;
+ }
+}
+
+
+button {
+ background: $dark_blue;
+ padding: 0.8em;
+ color: $white;
+ text-align: center;
+ border: none;
+ border-radius: 2px;
+ font-weight: 300;
+ width: 100%;
+ margin-bottom: 1em;
}
.container {
background: $white;
- width: 90%;
- margin: 2% auto;
- padding: 3%;
+ width: 84%;
+ margin: 3% auto;
+ padding: 6% 5%;
+
+ -webkit-display: flex;
+ display: flex;
+ -webkit-align-items: flex-start;
+ align-items: flex-start;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+}
+
+img {
+ width: 50%;
+ -webkit-align-self: center;
+ align-self: center;
+}
+
+@media only screen and (min-width : 500px) {
+ body {
+ font-size: 1.3em;
+ }
+
+ form {
+ display: flex;
+ -webkit-display: flex;
+ -webkit-flex-direction: column;
+ flex-direction: column;
+
+ .field-group, button, div {
+ width: 70%;
+ -webkit-align-self: center;
+ align-self: center;
+ }
+ }
+}
+
+@media only screen and (min-width : 960px) {
+ .container{
+ width: 60%;
+ padding: 3%;
+ -webkit-align-items: flex-start;
+ align-items: flex-start;
+ -webkit-flex-direction: row;
+ flex-direction: row;
+ max-width: 700px;
+ }
+
+ form {
+ margin-left: 2.5em;
+
+ .field-group, button, div {
+ width: 300px;
+ -webkit-align-self: flex-start;
+ align-self: flex-start;
+ }
+
+ .field-group {
+ margin-top: 3em;
+ font-size: 1em;
+ }
+ }
img {
- display: block;
- width: 50%;
- margin: 0 auto;
+ width: 300px;
+ }
+
+ button {
+ font-size: 0.8em;
+ margin-bottom: 1em;
}
}
diff --git a/web-ui/app/scss/base/_colors.scss b/web-ui/app/scss/base/_colors.scss
index f3c245a9..e79781cf 100644
--- a/web-ui/app/scss/base/_colors.scss
+++ b/web-ui/app/scss/base/_colors.scss
@@ -38,6 +38,7 @@ $black: #000;
$top_pane: $contrast;
$total_count_bg: #C0B9B9;
$background_dropdown_grey: #f0f0f0;
+$dark_grey_text: #4a4a4a;
$background_light_grey: #F5F5F5;
$border_light_grey: #D9D9D9;
diff --git a/web-ui/config/loaders-webpack.js b/web-ui/config/loaders-webpack.js
new file mode 100644
index 00000000..21e9a572
--- /dev/null
+++ b/web-ui/config/loaders-webpack.js
@@ -0,0 +1,20 @@
+module.exports = [
+ {
+ test: /\.js$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel',
+ query: { presets: ['es2015', 'react']}
+ },
+ {
+ test: /\.scss|css$/,
+ loader: "style-loader!css-loader!sass-loader"
+ },
+ {
+ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
+ loader: "url-loader?limit=10000&mimetype=application/font-woff"
+ },
+ {
+ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
+ loader: "file-loader"
+ }
+]
diff --git a/web-ui/package.json b/web-ui/package.json
index 6f875280..6f9b03d4 100644
--- a/web-ui/package.json
+++ b/web-ui/package.json
@@ -17,6 +17,7 @@
"dompurify": "^0.8.4",
"enzyme": "^2.7.1",
"expect": "^1.20.2",
+ "file-loader": "^0.10.0",
"font-awesome": "^4.7.0",
"handlebars": "^4.0.5",
"he": "^1.1.0",
@@ -49,12 +50,14 @@
"node-sass": "^4.5.0",
"quoted-printable": "^1.0.1",
"react": "^15.4.2",
+ "react-a11y": "^0.3.3",
"react-addons-test-utils": "^15.4.2",
"react-dom": "^15.4.2",
"requirejs": "2.2.0",
"sass-loader": "^4.1.1",
"style-loader": "^0.13.1",
"typeahead.js": "^0.11.1",
+ "url-loader": "^0.5.7",
"utf8": "^2.1.2",
"watch": "0.19.1",
"webpack": "^1.14.0"
diff --git a/web-ui/test/spec/account_recovery/account_recovery.spec.js b/web-ui/test/spec/account_recovery/page.spec.js
index eaff257b..f550a51e 100644
--- a/web-ui/test/spec/account_recovery/account_recovery.spec.js
+++ b/web-ui/test/spec/account_recovery/page.spec.js
@@ -3,9 +3,9 @@ import expect from 'expect'
import React from 'react'
import Page from '../../../app/js/account_recovery/page'
-describe('test', () => {
+describe('Page', () => {
'use strict';
- it('react', () => {
+ it('renders backup email page title', () => {
const page = shallow(<Page />);
expect(page.find('h1').text()).toEqual('E se você esquecer sua senha?');
});
diff --git a/web-ui/webpack.config.js b/web-ui/webpack.config.js
index 59d2ae5b..5886154a 100644
--- a/web-ui/webpack.config.js
+++ b/web-ui/webpack.config.js
@@ -1,6 +1,7 @@
var path = require('path');
var webpack = require('webpack');
var copyWebpack = require('./config/copy-webpack');
+var loaders = require('./config/loaders-webpack');
var aliases = require('./config/alias-webpack');
module.exports = {
@@ -20,18 +21,11 @@ module.exports = {
extensions: ['', '.js']
},
module: {
- loaders: [
- {
- test: /\.js$/,
- exclude: /(node_modules|bower_components)/,
- loader: 'babel',
- query: { presets: ['es2015', 'react']}
- },
- {
- test: /\.scss|css$/,
- loader: "style-loader!css-loader!sass-loader"
- }
- ]
+ loaders: loaders
},
- plugins: [copyWebpack]
+ plugins: [copyWebpack, new webpack.DefinePlugin({
+ 'process.env': {
+ 'NODE_ENV': '"development"'
+ }
+ })]
}
diff --git a/web-ui/webpack.production.config.js b/web-ui/webpack.production.config.js
index bc10b90e..cf8ab8ff 100644
--- a/web-ui/webpack.production.config.js
+++ b/web-ui/webpack.production.config.js
@@ -1,6 +1,7 @@
var path = require('path');
var webpack = require('webpack');
var copyWebpack = require('./config/copy-webpack');
+var loaders = require('./config/loaders-webpack');
var aliases = require('./config/alias-webpack');
module.exports = {
@@ -20,17 +21,7 @@ module.exports = {
extensions: ['', '.js']
},
module: {
- loaders: [
- {
- test: /\.js$/,
- loader: 'babel',
- query: { presets: ['es2015', 'react']}
- },
- {
- test: /\.scss|css$/,
- loader: "style-loader!css-loader!sass-loader"
- }
- ]
+ loaders: loaders
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),