Commit abcac913477e0cee5dd5ff09328a967a57a22abf
1 parent
8e4d0b18
Added environment fields and ngMessages form validation
Showing
6 changed files
with
56 additions
and
24 deletions
Show diff stats
src/app/account/register-component.html
| @@ -4,47 +4,60 @@ | @@ -4,47 +4,60 @@ | ||
| 4 | <div class="environment-signup-intro" ng-bind-html="ctrl.environment.signup_intro"></div> | 4 | <div class="environment-signup-intro" ng-bind-html="ctrl.environment.signup_intro"></div> |
| 5 | <p>{{"account.register.seeMoreMessage" | translate}} <a href="#">{{"account.register.informationsMessage" | translate}} </a></p> | 5 | <p>{{"account.register.seeMoreMessage" | translate}} <a href="#">{{"account.register.informationsMessage" | translate}} </a></p> |
| 6 | </div> | 6 | </div> |
| 7 | - <form> | 7 | + <form name="signupForm"> |
| 8 | <div class="row"> | 8 | <div class="row"> |
| 9 | - <div class="col-md-6 register-field"> | 9 | + <div class="col-md-12 register-field"> |
| 10 | <div class="input-group"> | 10 | <div class="input-group"> |
| 11 | <span class="input-group-addon"><i class="fa fa-male"></i><i class="fa fa-female"></i></span> | 11 | <span class="input-group-addon"><i class="fa fa-male"></i><i class="fa fa-female"></i></span> |
| 12 | - <input type="text" class="form-control" id="name" placeholder="{{'account.register.firstNameLabel' | translate }}" ng-model="ctrl.account.name"> | 12 | + <input type="text" class="form-control" id="name" name="fullName" placeholder="{{'account.register.fullNameLabel' | translate }}" ng-model="ctrl.account.name"> |
| 13 | </div> | 13 | </div> |
| 14 | </div> | 14 | </div> |
| 15 | 15 | ||
| 16 | - <div class="col-md-6 register-field"> | 16 | + <div class="form-group col-md-12 register-field" ng-class="ctrl.isInvalid(signupForm.username)"> |
| 17 | <div class="input-group"> | 17 | <div class="input-group"> |
| 18 | - <span class="input-group-addon"><i class="fa fa-male"></i><i class="fa fa-female"></i></span> | ||
| 19 | - <input type="text" class="form-control" id="lastName" placeholder="{{'account.register.lastNameLabel' | translate }}" ng-model="ctrl.account.lastName"> | 18 | + <span class="input-group-addon" style="font-weight: bold;"><i class="fa fa-globe"></i> {{ ctrl.environment.host }}</span> |
| 19 | + <input type="text" id="username" name="username" class="form-control" placeholder="{{'account.register.usernameLabel' | translate }}" ng-model="ctrl.account.login" required> | ||
| 20 | </div> | 20 | </div> |
| 21 | - </div> | ||
| 22 | - | ||
| 23 | - <div class="col-md-12 register-field"> | ||
| 24 | - <div class="input-group"> | ||
| 25 | - <span class="input-group-addon" style="font-weight: bold;"><i class="fa fa-globe"></i> http://ola.coop.br/</span> | ||
| 26 | - <input type="text" class="form-control" id="login" placeholder="{{'account.register.usernameLabel' | translate }}" ng-model="ctrl.account.login"> | 21 | + <div class="help-block" ng-show="signupForm.username.$touched" ng-messages="signupForm.username.$error"> |
| 22 | + <ul class="list-unstyled"> | ||
| 23 | + <li ng-messages-include="languages/messages.html"></li> | ||
| 2 |
|
||
| 24 | + </ul> | ||
| 27 | </div> | 25 | </div> |
| 28 | </div> | 26 | </div> |
| 29 | 27 | ||
| 30 | - <div class="col-md-12 register-field"> | 28 | + <div class="form-group col-md-12 register-field" ng-class="ctrl.isInvalid(signupForm.email)"> |
| 31 | <div class="input-group"> | 29 | <div class="input-group"> |
| 32 | <span class="input-group-addon"><i class="fa fa-envelope"></i></span> | 30 | <span class="input-group-addon"><i class="fa fa-envelope"></i></span> |
| 33 | - <input type="text" class="form-control" id="email" placeholder="{{'account.register.emailLabel' | translate }}" ng-model="ctrl.account.email"> | 31 | + <input type="email" class="form-control" id="email" name="email" placeholder="{{'account.register.emailLabel' | translate }}" ng-model="ctrl.account.email" required> |
| 32 | + </div> | ||
| 33 | + <div class="help-block" ng-show="signupForm.email.$touched" ng-messages="signupForm.email.$error"> | ||
| 34 | + <ul class="list-unstyled"> | ||
| 35 | + <li ng-messages-include="languages/messages.html"></li> | ||
| 36 | + </ul> | ||
| 34 | </div> | 37 | </div> |
| 35 | </div> | 38 | </div> |
| 36 | 39 | ||
| 37 | - <div class="col-md-6 register-field"> | 40 | + <div class="form-group col-md-6 register-field" ng-class="ctrl.isInvalid(signupForm.password)"> |
| 38 | <div class="input-group"> | 41 | <div class="input-group"> |
| 39 | <span class="input-group-addon"><i class="fa fa-lock"></i></span> | 42 | <span class="input-group-addon"><i class="fa fa-lock"></i></span> |
| 40 | - <input type="password" class="form-control" id="password" placeholder="{{'account.register.passwordLabel' | translate }}" ng-model="ctrl.account.password"> | 43 | + <input type="password" class="form-control" id="password" name="password" placeholder="{{'account.register.passwordLabel' | translate }}" ng-model="ctrl.account.password" required> |
| 44 | + </div> | ||
| 45 | + <div class="help-block" ng-show="signupForm.password.$touched" ng-messages="signupForm.password.$error"> | ||
| 46 | + <ul class="list-unstyled"> | ||
| 47 | + <li ng-messages-include="languages/messages.html"></li> | ||
| 48 | + </ul> | ||
| 41 | </div> | 49 | </div> |
| 42 | </div> | 50 | </div> |
| 43 | 51 | ||
| 44 | - <div class="col-md-6 register-field"> | 52 | + <div class="form-group col-md-6 register-field" ng-class="ctrl.isInvalid(signupForm.passwordConfirm)"> |
| 45 | <div class="input-group"> | 53 | <div class="input-group"> |
| 46 | <span class="input-group-addon"><i class="fa fa-unlock-alt"></i></span> | 54 | <span class="input-group-addon"><i class="fa fa-unlock-alt"></i></span> |
| 47 | - <input type="password" class="form-control" id="passwordConfirmation" placeholder="{{'account.register.passwordConfirmationLabel' | translate}}" ng-model="ctrl.account.password_confirmation"> | 55 | + <input type="password" class="form-control" id="passwordConfirm" name="passwordConfirm" placeholder="{{'account.register.passwordConfirmationLabel' | translate}}" ng-model="ctrl.account.password_confirmation" required> |
| 56 | + </div> | ||
| 57 | + <div class="help-block" ng-show="signupForm.passwordConfirm.$touched" ng-messages="signupForm.passwordConfirm.$error"> | ||
| 58 | + <ul class="list-unstyled"> | ||
| 59 | + <li ng-messages-include="languages/messages.html"></li> | ||
| 60 | + </ul> | ||
| 48 | </div> | 61 | </div> |
| 49 | </div> | 62 | </div> |
| 50 | 63 | ||
| @@ -53,7 +66,7 @@ | @@ -53,7 +66,7 @@ | ||
| 53 | </div> | 66 | </div> |
| 54 | 67 | ||
| 55 | <div class="col-md-12"> | 68 | <div class="col-md-12"> |
| 56 | - <button type="submit" class="btn btn-default" ng-click="ctrl.signup()">{{"account.register.signupMessage" | translate}}</button> | 69 | + <button type="submit" class="btn btn-default" ng-disabled="signupForm.$invalid" ng-click="ctrl.signup()">{{"account.register.signupMessage" | translate}}</button> |
| 57 | </div> | 70 | </div> |
| 58 | 71 | ||
| 59 | </div> | 72 | </div> |
src/app/account/register.component.ts
| @@ -40,4 +40,8 @@ export class RegisterComponent { | @@ -40,4 +40,8 @@ export class RegisterComponent { | ||
| 40 | this.notificationService.error({ message: "account.register.passwordConfirmation.failed" }); | 40 | this.notificationService.error({ message: "account.register.passwordConfirmation.failed" }); |
| 41 | } | 41 | } |
| 42 | } | 42 | } |
| 43 | + | ||
| 44 | + isInvalid(field: Object): Object { | ||
| 45 | + return { 'has-error': field['$touched'] && field['$invalid'] }; | ||
| 46 | + } | ||
| 43 | } | 47 | } |
src/app/layout/scss/_forms.scss
src/languages/en.json
| @@ -102,8 +102,7 @@ | @@ -102,8 +102,7 @@ | ||
| 102 | "account.register.welcomeMessageTitle": "Nice to have you there!", | 102 | "account.register.welcomeMessageTitle": "Nice to have you there!", |
| 103 | "account.register.seeMoreMessage": "See more ", | 103 | "account.register.seeMoreMessage": "See more ", |
| 104 | "account.register.informationsMessage": "informations", | 104 | "account.register.informationsMessage": "informations", |
| 105 | - "account.register.firstNameLabel": "First name", | ||
| 106 | - "account.register.lastNameLabel": "Last name", | 105 | + "account.register.fullNameLabel": "Full name", |
| 107 | "account.register.usernameLabel": "Username", | 106 | "account.register.usernameLabel": "Username", |
| 108 | "account.register.emailLabel": "Email", | 107 | "account.register.emailLabel": "Email", |
| 109 | "account.register.passwordLabel": "Password", | 108 | "account.register.passwordLabel": "Password", |
| @@ -114,5 +113,9 @@ | @@ -114,5 +113,9 @@ | ||
| 114 | "account.register.termsOfUseMessage": "terms of use", | 113 | "account.register.termsOfUseMessage": "terms of use", |
| 115 | "account.register.success.title": "Good job!", | 114 | "account.register.success.title": "Good job!", |
| 116 | "account.register.success.message": "Account created!", | 115 | "account.register.success.message": "Account created!", |
| 117 | - "account.register.passwordConfirmation.failed": "Wrong password confirmation" | 116 | + "account.register.passwordConfirmation.failed": "Wrong password confirmation", |
| 117 | + "messages.invalid.required": "This field is required", | ||
| 118 | + "messages.invalid.maxlength": "This field is too long", | ||
| 119 | + "messages.invalid.minlength": "This field is too short", | ||
| 120 | + "messages.invalid.email": "This needs to be a valid email" | ||
| 118 | } | 121 | } |
| @@ -0,0 +1,4 @@ | @@ -0,0 +1,4 @@ | ||
| 1 | +<li ng-message="required" translate="messages.invalid.required"></li> | ||
| 2 | +<li ng-message="minlength" translate="messages.invalid.minlength"></li> | ||
| 3 | +<li ng-message="maxlength" translate="messages.invalid.maxlength"></li> | ||
| 4 | +<li ng-message="email" translate="messages.invalid.email"></li> |
src/languages/pt.json
| @@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
| 102 | "account.register.welcomeMessageTitle": "Ótimo ter você aqui!", | 102 | "account.register.welcomeMessageTitle": "Ótimo ter você aqui!", |
| 103 | "account.register.seeMoreMessage": "Saiba mais ", | 103 | "account.register.seeMoreMessage": "Saiba mais ", |
| 104 | "account.register.informationsMessage": "informações", | 104 | "account.register.informationsMessage": "informações", |
| 105 | - "account.register.firstNameLabel": "Nome", | 105 | + "account.register.fullNameLabel": "Nome completo", |
| 106 | "account.register.lastNameLabel": "Sobrenome", | 106 | "account.register.lastNameLabel": "Sobrenome", |
| 107 | "account.register.usernameLabel": "Nome de usuário", | 107 | "account.register.usernameLabel": "Nome de usuário", |
| 108 | "account.register.emailLabel": "Email", | 108 | "account.register.emailLabel": "Email", |
| @@ -114,5 +114,9 @@ | @@ -114,5 +114,9 @@ | ||
| 114 | "account.register.haveAccountMessage": "Já possui uma conta?", | 114 | "account.register.haveAccountMessage": "Já possui uma conta?", |
| 115 | "account.register.success.title": "Bom trabalho!", | 115 | "account.register.success.title": "Bom trabalho!", |
| 116 | "account.register.success.message": "Conta criada com sucesso!", | 116 | "account.register.success.message": "Conta criada com sucesso!", |
| 117 | - "account.register.passwordConfirmation.failed": "A confirmação de senha não corresponde à senha" | 117 | + "account.register.passwordConfirmation.failed": "A confirmação de senha não corresponde à senha", |
| 118 | + "messages.invalid.required": "Campo obrigatório", | ||
| 119 | + "messages.invalid.maxlength": "O valor é muito longo", | ||
| 120 | + "messages.invalid.minlength": "O valor é muito curto", | ||
| 121 | + "messages.invalid.email": "Informe um email válido" | ||
| 118 | } | 122 | } |