perbaikan tampilan login dan register

This commit is contained in:
Fuzi_fauzia 2024-04-26 10:34:08 +07:00
parent 5fa8e2314d
commit 457504442e
8 changed files with 260 additions and 151 deletions

View File

@ -1,35 +1,59 @@
.margin-left-5{
margin-left: 5px;
.margin-left-5 {
margin-left: 5px;
}
.terms {
float: right;
float: right;
}
:host ::ng-deep .content .content-wrapper {
padding: 0!important;
padding: 0 !important;
}
:host ::ng-deep .btn-outline-twitter {
border: 1px solid #55acee!important;
color: #55acee !important;
border: 1px solid #55acee !important;
color: #55acee !important;
}
:host ::ng-deep .icheckbox_square-blue, .iradio_square-blue {
display: inline-block;
vertical-align: middle;
margin: 0;
padding: 0;
width: 22px;
height: 22px;
background: url("../../assets/images/icons/blue.png") no-repeat;
border: none;
cursor: pointer;
:host ::ng-deep .icheckbox_square-blue,
.iradio_square-blue {
display: inline-block;
vertical-align: middle;
margin: 0;
padding: 0;
width: 22px;
height: 22px;
background: url("../../assets/images/icons/blue.png") no-repeat;
border: none;
cursor: pointer;
}
:host ::ng-deep .icheckbox_square-blue {
background-position: 0 0;
background-position: 0 0;
}
:host ::ng-deep .lb-remember {
color: #2b335e;
padding-left: 3px;
width: max-content;
color: #2b335e;
padding-left: 3px;
width: max-content;
}
:host ::ng-deep .icheckbox_square-blue.checked {
background-position: -48px 0;
}
background-position: -48px 0;
}
.center-card {
margin-top: 150px;
}
.card {
background-color: rgba(255, 255, 255, 0.7);
}
.card-header {
background-color: rgba(255, 255, 255, 0);
}
.form-control {
background-color: rgba(255, 255, 255, 0.7);
}
.line-on-side span {
background-color: rgba(255, 255, 255, 0);
}
.btn-custom-login {
background-color: rgba(255, 255, 255, 0.7);
}
.btn-custom-login:hover {
color: #ffffff !important;
background-color: #1e9ff2 !important;
border-color: #dae0e5 !important;
}

View File

@ -1,95 +1,152 @@
<div class="app-content content" *ngIf="isPageLoaded">
<div class="content-overlay"></div>
<div class="content-wrapper">
<div class="content-header row">
</div>
<div class="content-body">
<section class="row flexbox-container">
<div class="col-12 d-flex align-items-center justify-content-center">
<div class="col-lg-4 col-md-8 col-10 box-shadow-2 p-0">
<div class="card border-grey border-lighten-3 px-1 py-1 m-0">
<div class="card-header border-0">
<div class="card-title text-center">
<img src="assets/images/logo/logo-dark.png" alt="branding logo">
</div>
<h6 class="card-subtitle line-on-side text-muted text-center font-small-3 pt-2">
<span>Easily Using</span></h6>
</div>
<div class="card-content">
<app-social-signin></app-social-signin>
<p class="card-subtitle line-on-side text-muted text-center font-small-3 mx-2 my-1">
<span>OR Using Account Details</span></p>
<div class="card-body">
<form class="form-horizontal" [formGroup]="loginForm" (ngSubmit)="tryLogin()">
<fieldset class="form-group position-relative has-icon-left">
<input type="text" formControlName="email" class="form-control"
[ngClass]="{ 'is-invalid': submitted && f.email.errors }" id="user-name"
placeholder="Your Username" required>
<div class="form-control-position">
<i class="la la-user"></i>
</div>
<div *ngIf="submitted && f.email.errors" class="invalid-feedback">
<div *ngIf="f.email.errors.required">Username is required</div>
</div>
</fieldset>
<fieldset class="form-group position-relative has-icon-left">
<input type="password" placeholder="Enter Password"
formControlName="password" class="form-control"
[ngClass]="{ 'is-invalid': submitted && f.password.errors }" />
<div class="form-control-position">
<i class="la la-key"></i>
</div>
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Password is required</div>
</div>
</fieldset>
<div class="form-group row">
<div class="col-md-6 col-12 text-center text-sm-left pr-0">
<fieldset>
<div class="icheckbox_square-blue" id="icheckbox" (click)="addCheckbox($event)" style="position: relative;">
<input type="checkbox" class="chk-remember"
formControlName="rememberMe" name="remember-me"
id="remember-me" style="position: absolute; opacity: 0;">
<ins class="iCheck-helper"
style="position: absolute; top: 0%; left: 0%; display: block; width: 100%; height: 100%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"></ins>
</div>
<label class="lb-remember" for="remember-me">Remember Me</label>
</fieldset>
</div>
<div class="col-md-6 col-12 float-sm-left text-center text-sm-right"><a
href="recover-password.html" class="card-link">Forgot Password?</a>
</div>
</div>
<button type="submit" class="btn btn-outline-info btn-block">
<i class="fa fa-refresh fa-spin" *ngIf="submitted"></i>
<i class="feather ft-unlock" *ngIf="!submitted"></i> Login
</button>
</form>
</div>
<p class="card-subtitle line-on-side text-muted text-center font-small-3 mx-2 my-1">
<span>New to Modern ?</span></p>
<div class="card-body">
<a [routerLink]="['/register']" class="btn btn-outline-danger btn-block"><i
class="la la-user"></i> Register</a>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<a [routerLink]="['/privacypolicy']" target="_blank">Privacy Policy</a>
</div>
<div class="col-md-6 terms">
<a [routerLink]="['/termCondition']" target="_blank">Terms & Conditions</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content-overlay"></div>
<div class="content-wrapper">
<div class="content-header row"></div>
<div class="content-body">
<section class="row flexbox-container">
<div class="col-12 d-flex align-items-center justify-content-center">
<div class="col-lg-4 col-md-8 col-10 box-shadow-2 p-0 center-card">
<div class="card border-grey border-lighten-3 px-1 py-1 m-0">
<div class="card-header border-0">
<div class="card-title text-center">
<img
src="assets/images/logo/logo-dark.png"
alt="branding logo"
/>
</div>
</section>
</div>
<div class="card-content">
<div class="card-body">
<form
class="form-horizontal"
[formGroup]="loginForm"
(ngSubmit)="tryLogin()"
>
<fieldset
class="form-group position-relative has-icon-left"
>
<input
type="text"
formControlName="email"
class="form-control"
[ngClass]="{
'is-invalid': submitted && f.email.errors
}"
id="user-name"
placeholder="Your Username"
required
/>
<div class="form-control-position">
<i class="la la-user"></i>
</div>
<div
*ngIf="submitted && f.email.errors"
class="invalid-feedback"
>
<div *ngIf="f.email.errors.required">
Username is required
</div>
</div>
</fieldset>
<fieldset
class="form-group position-relative has-icon-left"
>
<input
type="password"
placeholder="Enter Password"
formControlName="password"
class="form-control"
[ngClass]="{
'is-invalid': submitted && f.password.errors
}"
/>
<div class="form-control-position">
<i class="la la-key"></i>
</div>
<div
*ngIf="submitted && f.password.errors"
class="invalid-feedback"
>
<div *ngIf="f.password.errors.required">
Password is required
</div>
</div>
</fieldset>
<div class="form-group row">
<div
class="col-md-6 col-12 text-center text-sm-left pr-0"
>
<fieldset>
<div
class="icheckbox_square-blue"
id="icheckbox"
(click)="addCheckbox($event)"
style="position: relative"
>
<input
type="checkbox"
class="chk-remember"
formControlName="rememberMe"
name="remember-me"
id="remember-me"
style="position: absolute; opacity: 0"
/>
<ins
class="iCheck-helper"
style="
position: absolute;
top: 0%;
left: 0%;
display: block;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
background: rgb(255, 255, 255);
border: 0px;
opacity: 0;
"
></ins>
</div>
<label class="lb-remember" for="remember-me"
>Remember Me</label
>
</fieldset>
</div>
<div
class="col-md-6 col-12 float-sm-left text-center text-sm-right"
>
<a href="recover-password.html" class="card-link"
>Forgot Password?</a
>
</div>
</div>
<button
type="submit"
class="btn btn-outline-info btn-block btn-custom-login"
>
<i class="fa fa-refresh fa-spin" *ngIf="submitted"></i>
<i class="feather ft-unlock" *ngIf="!submitted"></i> Login
</button>
</form>
</div>
<p
class="card-subtitle line-on-side text-muted text-center font-small-3 mx-2 my-1"
>
<span>New to Modern ?</span>
</p>
<div class="card-body">
<a
[routerLink]="['/register']"
class="btn btn-outline-danger btn-block"
><i class="la la-user"></i> Register</a
>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>

View File

@ -1,12 +1,12 @@
import { Component, OnInit, Renderer2 } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AuthService } from '../_services/auth.service';
import { AlertService } from '../_services/alert.service';
import { Component, OnInit, Renderer2 } from "@angular/core";
import { Router, ActivatedRoute } from "@angular/router";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { AuthService } from "../_services/auth.service";
import { AlertService } from "../_services/alert.service";
@Component({
templateUrl: 'login.component.html',
styleUrls: ['./login.component.css']
templateUrl: "login.component.html",
styleUrls: ["./login.component.css"],
})
export class LoginComponent implements OnInit {
loginForm: FormGroup;
@ -23,24 +23,23 @@ export class LoginComponent implements OnInit {
public authService: AuthService,
private renderer: Renderer2
) {
this.route.queryParams.subscribe(params => {
this.returnUrl = params['returnUrl'];
this.route.queryParams.subscribe((params) => {
this.returnUrl = params["returnUrl"];
});
}
ngOnInit() {
this.loginForm = this.formBuilder.group({
email: ['john@pixinvent.com', Validators.required],
password: ['password@123', Validators.required],
rememberMe: false
email: ["john@pixinvent.com", Validators.required],
password: ["password@123", Validators.required],
rememberMe: false,
});
// Remember Me
if (localStorage.getItem('remember')) {
this.renderer.removeClass(document.body, 'bg-full-screen-image');
localStorage.removeItem('currentLayoutStyle');
this.router.navigate(['/monitoring']);
} else if (localStorage.getItem('currentUser')) {
if (localStorage.getItem("remember")) {
this.renderer.removeClass(document.body, "bg-full-screen-image");
localStorage.removeItem("currentLayoutStyle");
this.router.navigate(["/monitoring"]);
} else if (localStorage.getItem("currentUser")) {
// Force logout on login if not remember me
this.authService.doLogout();
this.isPageLoaded = true;
@ -63,42 +62,47 @@ export class LoginComponent implements OnInit {
}
const value = {
email: this.f.email.value,
password: this.f.password.value
password: this.f.password.value,
};
this.authService.doLogin(value).then(
res => {
if (this.loginForm.controls['rememberMe'] && this.loginForm.controls['rememberMe'].value) {
localStorage.setItem('remember', 'true');
(res) => {
if (
this.loginForm.controls["rememberMe"] &&
this.loginForm.controls["rememberMe"].value
) {
localStorage.setItem("remember", "true");
} else {
localStorage.removeItem('remember');
localStorage.removeItem("remember");
}
this.setUserInStorage(res);
localStorage.removeItem('currentLayoutStyle');
let returnUrl = '/monitoring';
localStorage.removeItem("currentLayoutStyle");
let returnUrl = "/monitoring";
if (this.returnUrl) {
returnUrl = this.returnUrl;
}
this.router.navigate([returnUrl]);
},
err => {
(err) => {
this.submitted = false;
this.alertService.error(err.message);
}
);
}
addCheckbox(event) {
const toggle = document.getElementById('icheckbox');
if (event.currentTarget.className === 'icheckbox_square-blue') {
this.renderer.addClass(toggle, 'checked');
} else if (event.currentTarget.className === 'icheckbox_square-blue checked') {
this.renderer.removeClass(toggle, 'checked');
addCheckbox(event) {
const toggle = document.getElementById("icheckbox");
if (event.currentTarget.className === "icheckbox_square-blue") {
this.renderer.addClass(toggle, "checked");
} else if (
event.currentTarget.className === "icheckbox_square-blue checked"
) {
this.renderer.removeClass(toggle, "checked");
}
}
}
setUserInStorage(res) {
if (res.user) {
localStorage.setItem('currentUser', JSON.stringify(res.user));
localStorage.setItem("currentUser", JSON.stringify(res.user));
} else {
localStorage.setItem('currentUser', JSON.stringify(res));
localStorage.setItem("currentUser", JSON.stringify(res));
}
}
}

View File

@ -1,3 +1,27 @@
.margin-left-5{
margin-left: 5px;
}
}
.center-card {
margin-top: 150px;
}
.card {
background-color: rgba(255, 255, 255, 0.7);
}
.card-header {
background-color: rgba(255, 255, 255, 0);
}
.form-control {
background-color: rgba(255, 255, 255, 0.7);
}
.line-on-side span {
background-color: rgba(255, 255, 255, 0);
}
.btn-custom-login {
background-color: rgba(255, 255, 255, 0.7);
}
.btn-custom-login:hover {
color: #ffffff !important;
background-color: #1e9ff2 !important;
border-color: #dae0e5 !important;
}

View File

@ -68,7 +68,7 @@
href="recover-password.html" class="card-link">Forgot Password?</a>
</div>
</div>
<button type="submit" class="btn btn-outline-info btn-block">
<button type="submit" class="btn btn-outline-info btn-block btn-custom-login">
<i class="fa fa-refresh fa-spin" *ngIf="submitted"></i>
<i class="feather ft-user" *ngIf="!submitted"></i> Register
</button>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

View File

@ -167,7 +167,7 @@ html {
}
&.bg-full-screen-image {
background: url('/assets/images/backgrounds/bg-2.jpg') no-repeat center center fixed;
background: url('/assets/images/backgrounds/smart.jpg') no-repeat center center fixed;
background-size: cover;
}