add login design

MOE_DEV_NEW_TEMPORARY_DESIGN
ashwaq 6 years ago
parent bdab18c114
commit 335758fbd0

@ -21,7 +21,7 @@ import { SmsPageComponent } from './sms-page/sms-page.page';
import { CheckUserComponent } from './check-user/check-user.component';
import { ChangePasswordComponent } from './change-password/change-password.component';
import {ConfirmLoginComponent} from '../authentication/confirm-login/confirm-login.component'
import {WelcomeComponent} from '../authentication/welcome/welcome.component'
const routes: Routes = [
{
@ -51,6 +51,10 @@ const routes: Routes = [
{
path: 'confirmLogin',
component: ConfirmLoginComponent
},
{
path: 'welcom',
component: WelcomeComponent
}
]
}
@ -77,7 +81,8 @@ const routes: Routes = [
SmsPageComponent,
CheckUserComponent,
ChangePasswordComponent,
ConfirmLoginComponent
// ConfirmLoginComponent,
WelcomeComponent
],
providers:[
FingerprintAIO,

@ -12,23 +12,37 @@
<ion-content padding>
<ion-grid>
<ion-item>
<ion-row >
<ion-col [size]="4">
<img [src]="logo" class="logoHeader" />
</ion-col>
</ion-row>
<br/>
<br/>
<p class="headerTxt" color="light" > {{'changePassword,changePassword' | translate}}</p>
<ion-item class="item-input" >
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,currentPassword' | translate}}</ion-label> -->
<ion-input required type="password" placeholder="{{ts.trPK('changePassword','currentPassword')}}"[(ngModel)]="P_OLD_PASSWORD"></ion-input>
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','currentPassword')}}"[(ngModel)]="P_OLD_PASSWORD"></ion-input>
</ion-item>
<ion-item>
<p class="headerTxt" color="light" > {{'changePassword,newPassword' | translate}}</p>
<ion-item class="item-input" >
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,newPassword' | translate}}</ion-label> -->
<ion-input required type="password" placeholder="{{ts.trPK('changePassword','newPassword')}}"
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','newPassword')}}"
[(ngModel)]="P_NEW_PASSWORD">
</ion-input>
</ion-item>
<ion-item>
<img class="item-icon" src="assets/imgs/password.png" item-start />
<ion-item class="item-input" >
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,confirmPassword' | translate}}</ion-label> -->
<ion-input required type="password" placeholder="{{ts.trPK('changePassword','confirmPassword')}}"
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','confirmPassword')}}"
[(ngModel)]="P_Confirm_NEW_PASSWORD">
</ion-input>
</ion-item>
@ -40,6 +54,6 @@
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button color="customnavy" ion-button (click)="submit()">{{ts.trPK('login','changepassword')}}</ion-button>
<ion-button class="button-login" ion-button (click)="submit()">{{ts.trPK('login','changepassword')}}</ion-button>
</div>
</ion-footer>

@ -0,0 +1,31 @@
.login-input {
border: none;
}
.item-input{
--min-height: 1.0cm !important;
--border-radius: 12px;
--ion-color-base: white !important;
// --background: color: var(--darkgray) !important;
// background: #7f8c8d !important;
border-radius: 33px;
--border: solid #9999992b !important;
border: solid #9999992b !important;
margin-bottom :12px;
margin-left: 12px;
margin-right: 12px;
}
.button-login{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
}

@ -24,7 +24,8 @@ export class ChangePasswordComponent implements OnInit {
public P_Confirm_NEW_PASSWORD : string;
public P_OLD_PASSWORD : string;
public P_USER_NAME : string;
public logo = "assets/icon/login/lock.png";
userData: any = {};
public isExpiredPwd: boolean = false;
constructor(

@ -8,10 +8,27 @@
</ion-header>
<ion-content padding>
<ion-grid>
<ion-item>
<ion-row >
<ion-col [size]="4">
<img [src]="logo" class="logoHeader" />
</ion-col>
</ion-row>
<br/>
<br/>
<ion-row>
<ion-col>
<p class="leftDiv">{{ts.trPK('login','check-user-text1')}}<span class="boldTxtNav">{{ts.trPK('login','check-user-text2')}}</span> {{ts.trPK('login','check-user-text3')}}</p>
</ion-col>
</ion-row>
<ion-item class="item-input">
<img class="item-icon" src="assets/imgs/username.png" item-start />
<ion-label>{{ts.trPK('login','username')}}</ion-label>
<ion-input required type="text" [(ngModel)]="P_USER_NAME">
<ion-label>{{ts.trPK('login','check-user-text1')}}</ion-label>
<ion-input class="login-input" required type="text" [(ngModel)]="P_USER_NAME">
</ion-input>
</ion-item>
</ion-grid>
@ -19,6 +36,6 @@
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button color="customnavy" ion-button (click)=" userCheck()">{{ts.trPK('login','changepassword')}}</ion-button>
<ion-button class="button-login" ion-button (click)=" userCheck()">{{ts.trPK('login','changepassword')}}</ion-button>
</div>
</ion-footer>

@ -4,4 +4,38 @@
.btnBack{
background: transparent;
}
}
///////////////////////////////////////////////////////////
.login-input {
border: none;
}
.item-input{
--min-height: 1.0cm !important;
--border-radius: 12px;
--ion-color-base: white !important;
// --background: color: var(--darkgray) !important;
// background: #7f8c8d !important;
border-radius: 33px;
--border: solid #9999992b !important;
border: solid #9999992b !important;
margin-bottom :12px;
margin-left: 12px;
margin-right: 12px;
}
.button-login{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
}
///////////////////////////////////////////

@ -21,7 +21,8 @@ import {LoginComponent} from 'src/app/authentication/login/login.component';
export class CheckUserComponent implements OnInit {
public P_USER_NAME : string;
private loginData = new LoginModel();
public logo = "assets/icon/login/lock.png";
@ViewChild(InternationalMobileComponent) internationlMobile: InternationalMobileComponent;
constructor(public cs: CommonService,
public authService: AuthenticationService,

@ -1,4 +1,4 @@
<ion-header>
<ion-header *ngIf="!accessFromOutSide">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button>
@ -9,20 +9,28 @@
<ion-content padding>
<ion-grid>
<ion-content [scrollEvents]="true"
[ngClass]="{'content-class':accessFromOutSide, 'ion-padding': !accessFromOutSide}" has-bouncing="false" forceOverscroll="false" scrollY="false" class="ion-no-padding">
<ion-grid class="ion-justify-content-center">
<ion-row class="ion-justify-content-center">
<ion-row *ngIf="!accessFromOutSide">
<ion-col [size]="4">
<img [src]="logo" class="logo" />
</ion-col>
</ion-row>
<ion-row class="description">
<ion-col size="12">
<ion-row class="description" *ngIf="!accessFromOutSide">
<ion-col size="12">
<!-- <type-writer *ngIf="onlySMSBox" [text]="'login,verify-login-with' | translate" class="description"
color="primary" fontSize="0.55cm" lineHeight="1cm" fontSize="0.55cm"></type-writer>
-->
<div *ngIf="onlySMSBox"><p>{{ts.trPK('login','verify-login-with')}}</p></div>
<ion-row>
<ion-col [size]="12">
<!-- <img [src]="logo" class="loginLogo" />
<h1 class="heading1">{{welcome}} </h1> -->
<!-- <p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 22px;">{{ts.trPK('login','Verify-text')}} </p> -->
<p class="text1" style="font-size: 28px;margin-bottom: 0px" >{{empname}}</p>
</ion-col>
</ion-row> <div *ngIf="onlySMSBox"><p>{{ts.trPK('login','verify-login-with')}}</p></div>
<!-- <type-writer *ngIf="!onlySMSBox" [text]="'login, verify-fingerprint' | translate" class="description"
color="primary" fontSize="0.55cm" lineHeight="1cm" fontSize="0.55cm"></type-writer>
-->
@ -32,19 +40,32 @@
</ion-col>
</ion-row>
<page-trailer [small]="true"></page-trailer>
<ion-row [dir]="direction" class="zoomIn">
<ng-container *ngFor="let buttonsGroup of buttons">
<ion-row [ngClass]=" accessFromOutSide ? 'rowOutside' : ''" [dir]="direction" class="zoomIn">
<ng-container *ngFor="let buttonsGroup of buttons">
<ng-container *ngFor="let button of buttonsGroup">
<ion-col [size]="accessFromOutSide ? 12 : 6" *ngIf="button.visible">
<!-- <ng-container *ngFor="let buttonsGroup of buttons">
<ion-col *ngFor="let button of buttonsGroup" [size]="6">
<app-button (click)="confirm(button)" [title]="button.title | translate " [icon]="button.icon"
<ion-col [size]="accessFromOutSide ? 12 : 6" *ngIf="button.visible"> -->
<app-button (click)="checkAccess(button)" [title]="button.title | translate " [icon]="button.icon"
[settings]="button.settings" [strong]="button.txt" [class]="button.class" [disabled]="button.disabled"
*ngIf="button.visible">
*ngIf="button.visible"
[buttonClass]="button.buttonClass" [pClass]="button.pClass">
</app-button>
</ion-col>
</ng-container>
</ng-container>
</ion-row>
<page-trailer [small]="true"></page-trailer>
</ion-grid>
</ion-content>
</ion-content>

@ -0,0 +1,10 @@
.content-class {
height: 25vh;
}
.rowOutside{
// margin-top: -37px;
}

@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';
import {ButtonSettings} from "src/app/hmg-common/ui/button/models/button-settingsl";
@ -27,6 +27,8 @@ import { SMSCheckResponse } from "src/app/hmg-common/services/authentication/mod
import { PushService } from 'src/app/hmg-common/services/push/push.service';
import { Platform } from '@ionic/angular';
import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response';
import { LoginModel } from '../models/LoginModel';
@ -44,7 +46,7 @@ import { Platform } from '@ionic/angular';
export class ConfirmLoginComponent implements OnInit {
public logo = "assets/imgs/CS.png";
public logo = "assets/icon/login/password.png";
public buttons:any=[];
@ -52,7 +54,7 @@ export class ConfirmLoginComponent implements OnInit {
onlySMSBox: any = true;
loginData:any;
public loginData = new LoginModel();
selectedOption: any;
@ -62,7 +64,12 @@ export class ConfirmLoginComponent implements OnInit {
deviceToken:any;
@Input() accessFromOutSide = false;
@Input() visible = true;
username: any;
password:any;
loginType: any;
empname: string;
constructor(
@ -90,11 +97,11 @@ export class ConfirmLoginComponent implements OnInit {
this.loginData= this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false);
console.log(this.loginData);
console.log("logindata: "+this.loginData);
this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
console.log("deviceToken :"+this.deviceToken);
console.log("deviceToken :"+this.deviceToken);
//if device token undefind
@ -121,8 +128,9 @@ export class ConfirmLoginComponent implements OnInit {
this.checkIfAvailable();
//**getSharedData of IMEI_USER_DATA and REGISTER_DATA_FOR_LOGIIN to set defult value **//
this.username = localStorage.getItem("user");
this.password = localStorage.getItem("password");
this.empname = localStorage.getItem("emp-name");
// this.setDefault();
@ -214,7 +222,10 @@ export class ConfirmLoginComponent implements OnInit {
disabled: this.isFaceorFinger === "finger" || this.isFaceorFinger === "biometric" ? false : true,
visible: this.onlySMSBox
visible: this.onlySMSBox,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
},
@ -232,7 +243,10 @@ export class ConfirmLoginComponent implements OnInit {
disabled: this.isFaceorFinger === "face" ? false : true,
visible: this.onlySMSBox
visible: this.onlySMSBox,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
},
@ -248,7 +262,10 @@ export class ConfirmLoginComponent implements OnInit {
value: 4,
visible: true
visible: true,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
},
@ -264,7 +281,10 @@ export class ConfirmLoginComponent implements OnInit {
value: 1,
visible: true
visible: true,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
}
@ -278,6 +298,7 @@ export class ConfirmLoginComponent implements OnInit {
confirm(el: any) {
console.log("confirm:"+ el );
this.selectedOption = this.selectedOption && !this.onlySMSBox ? this.selectedOption : el.value;
@ -286,13 +307,15 @@ export class ConfirmLoginComponent implements OnInit {
case 1:
console.log(el.value);
console.log(el.value);
localStorage.setItem("login-type",el.value);
console.log("login-type: "+ localStorage.getItem("login-type"))
this.loginWithSMS(el);
break;
case 2:
localStorage.setItem("login-type",el.value);
console.log(el.value);
@ -303,6 +326,7 @@ export class ConfirmLoginComponent implements OnInit {
break;
case 3:
localStorage.setItem("login-type",el.value);
console.log(el.value);
@ -316,6 +340,7 @@ export class ConfirmLoginComponent implements OnInit {
console.log(el.value);
localStorage.setItem("login-type",el.value);
this.loginWithWhatsapp(el);
@ -335,7 +360,7 @@ export class ConfirmLoginComponent implements OnInit {
AuthenticationService.LAST_LOGIN
);
}
@ -460,7 +485,7 @@ export class ConfirmLoginComponent implements OnInit {
this.cs.sharedService.setSharedData({
MobileNumber: this.loginData.mobileNumber,
MobileNumber: this.loginData.MobileNumber,
loginType: this.selectedOption
@ -651,7 +676,7 @@ export class ConfirmLoginComponent implements OnInit {
if ( result.Mohemm_GetPatientID_List[0].LoginType == 2 || result.Mohemm_GetPatientID_List[0].LoginType == 3) {
this.loginTokenID = result.LogInTokenID;
//send silent sms
this.checkSMS();
} else {
@ -712,11 +737,13 @@ export class ConfirmLoginComponent implements OnInit {
this.authService.setAuthenticatedUser(result).subscribe(() => {
console.log("insert");
localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME);
console.log("empnmae: "+ localStorage.getItem("emp-name"));
if (this.platform.is("cordova")) {
this.insertMobileLogin();
}
this.cs.openHome();
@ -785,6 +812,77 @@ console.log("succssful insertMobileLoginInfo" );
}
//do silent login
private checkUserAuthentication() {
console.log("debug Here!!");
this.cs.startLoading();
const request = new LoginRequest();
request.P_USER_NAME = this.username;
request.P_LANGUAGE = "US";//this.language;
request.P_PASSWORD = this.password;
console.log(request);
this.authService
.login(request, () => {
console.log("error here");
//console.log(result.MessageStatus);
//this.sharedData.setSharedData(true, Password.IS_EXPIRED_PSW);
//this.userCheck();
}, this.ts.trPK("general", "ok"))
.subscribe((result: CheckUserAuthenticationResponse) => {
console.log("success");
this.cs.stopLoading();
if (this.cs.validResponse(result)) {
console.log("result.LogInTokenID "+ result.LogInTokenID);
console.log("this.loginData before "+ this.loginData);
this.loginData = new LoginModel();
console.log("this.loginData after "+ this.loginData);
this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER;
this.loginData.P_USER_NAME = this.username;
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
//this.remeberMyInfo();
//this.cs.openSMSPage(); phase#1 one type of OTP
// if(!this.welcomeBack){
//this.cs.openConfirmLoginPage();//phase#2 add 4 types for OTP
// }
this.confirm(this.loginType);
} else {
console.log("result.IsPasswordExpired");
console.log(result.IsPasswordExpired);
if (result.IsPasswordExpired) {
// alert("dont forget to handelpresentPasswordExpiredDialog() ");
// this.presentPasswordExpiredDialog(); *****
}
}
});
}
checkAccess(el:any){
let data = this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false);
this.loginType=el;
if(this.accessFromOutSide){
// alert("this.accessFromOutSide" + this.accessFromOutSide);
this.checkUserAuthentication();
}
else{
// alert("this.accessFromOutSide" + this.accessFromOutSide);
if(!data == undefined ){
// alert("data.LogInTokenID" + data.LogInTokenID);
this.confirm(this.loginType);
}
else{
this.checkUserAuthentication();
}
}
}//end checkAccess
}

@ -10,20 +10,30 @@
<ion-content padding>
<ion-grid>
<ion-item>
<ion-row>
<ion-col [size]="4">
<img [src]="logo" class="logoHeader" />
</ion-col>
</ion-row>
<br/>
<br/>
<ion-item class="item-input">
<img class="item-icon" src="assets/imgs/password.png" item-start />
<ion-label>{{'changePassword,newPassword' | translate}}</ion-label>
<ion-input required type="password"
<ion-input class="login-input" required type="password"
[(ngModel)]="P_NEW_PASSWORD">
</ion-input>
</ion-item>
<ion-item>
<ion-item class="item-input">
<img class="item-icon" src="assets/imgs/password.png" item-start />
<ion-label>{{'changePassword,confirmPassword' | translate}}</ion-label>
<ion-input required type="password"
<ion-input class="login-input" required type="password"
[(ngModel)]="P_Confirm_NEW_PASSWORD">
</ion-input>
</ion-item>
@ -35,6 +45,6 @@
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button color="customnavy" ion-button (click)=" forgotpassword()">{{ts.trPK('login','changepassword')}}</ion-button>
<ion-button class="button-login" ion-button (click)=" forgotpassword()">{{ts.trPK('login','changepassword')}}</ion-button>
</div>
</ion-footer>

@ -21,6 +21,8 @@ export class ForgotComponent implements OnInit {
public P_NEW_PASSWORD: string;
public P_Confirm_NEW_PASSWORD : string;
public P_USER_NAME : string;
public logo = "assets/icon/login/lock.png";
constructor(
public cs: CommonService,
public authService: AuthenticationService,

@ -1,28 +1,57 @@
<ion-content padding>
<ion-grid class="customGrid">
<ion-row>
<!-- <ion-row>
<ion-col class="colPad">
<img class="centerDiv" src="../assets/imgs/CS.png" />
<img class="centerDiv" src="../assets/imgs/header.png" />
</ion-col>
</ion-row> -->
<ion-row *ngIf="loginDiv">
<div class="content">
<div class="first-circle"></div>
<div class="middle-circle"></div>
<div class="last-circle"></div>
</div>
</ion-row>
<ion-row *ngIf="welcomeBack ">
<ion-col [size]="4">
<img [src]="logo" class="logo" />
<!-- <ion-img class="centerDiv" src="../assets/imgs/CS.png"></ion-img> -->
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<ion-col *ngIf="loginDiv">
<P class="pageTitle text-caps">{{ts.trPK('login','login')}}</P>
</ion-col>
</ion-row>
</ion-grid>
<ion-item>
<div *ngIf="loginDiv">
<ion-item class="item-input">
<img class="item-icon" src="assets/imgs/username.png" item-start />
<ion-input required type="text" [(ngModel)]="username" placeholder="{{ts.trPK('login','username')}}">
<ion-input class="login-input" required type="text" [(ngModel)]="username" placeholder="{{ts.trPK('login','username')}}">
</ion-input>
</ion-item>
<ion-item>
<ion-item class="item-input">
<img class="item-icon" src="assets/imgs/password.png" item-start />
<ion-input required type="password" [(ngModel)]="password" placeholder="{{ts.trPK('login','password')}}">
<ion-input class="login-input" required type="password" [(ngModel)]="password" placeholder="{{ts.trPK('login','password')}}">
</ion-input>
<button ion-button clear class="forgetText" type="button" (click)="forgetPasswordPage()" item-right >
{{ts.trPK('login','forgot-password')}}
</button>
</ion-item>
<ion-item>
<ion-label>{{ts.trPK('login','remeber-me')}}</ion-label>
@ -39,13 +68,33 @@
<button disabled class="gridBtn arTxt" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">عربي</button>
</div>
</div>
<!-- div login-->
<!-- <div *ngIf="welcomeBack"> -->
<welcome-login (onLogin)="login()" (loginWithUser)="loginWithUser()" *ngIf="welcomeBack ">
</welcome-login>
<!-- </div> -->
</ion-content>
<ion-footer>
<ion-footer *ngIf="loginDiv">
<div class="centerDiv">
<ion-button color="customnavy" (click)="onLogin()">{{ts.trPK('login','login')}}</ion-button>
<ion-button class="button-login" (click)="onLogin()">{{ts.trPK('login','login')}}</ion-button>
</div>
<br />
<div class="centerDiv">
<!-- <div class="centerDiv">
<a (click)="forgetPasswordPage()">{{ts.trPK('login','forgot-password')}}</a>
</div>
</div> -->
<ion-row>
<ion-col class="colPad">
<img class="centerDiv logoFotor" src="../assets/imgs/CSLogo.png" />
</ion-col>
</ion-row>
</ion-footer>

@ -110,3 +110,121 @@ img.centerDiv {
}
.login-input {
border: none;
}
.item-input{
--min-height: 1.0cm !important;
--border-radius: 12px;
--ion-color-base: white !important;
// --background: color: var(--darkgray) !important;
// background: #7f8c8d !important;
border-radius: 33px;
--border: solid #9999992b !important;
border: solid #9999992b !important;
margin-bottom :12px;
margin-left: 12px;
margin-right: 12px;
}
.button-login{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
}
.content {
width: 500px;
margin-left: auto;
margin-right: auto;
}
.first-circle {
background: var(--newgreen) !important;
border-radius: 50%;
height: 292px;
width: 288px;
float: left;
margin-left: -55px;
margin-top: -140px;
}
.middle-circle {
position: relative;
background:var(--darkblue) !important;
border-radius: 50%;
height: 160px;
width: 170px;
margin: -115px 0px 0px 179px;
}
.last-circle {
position: inherit;
background: var(--lightblue) !important;
border-radius: 50%;
height: 166px;
width: 140px;
margin: -147px 0px 0px 274px;
}
.logoFotor {
width: 45px !important;
height: 45px !important;
}
.welcomeText{
justify-content: center;
align-items: center;
text-align: left;
font-size: 26px;
font-weight: bold;
color: #f2f2f2;
margin-top: 178px;
margin-left: 48px;
}
.forgetText{
background: transparent;
color: var(--darkblue) !important;
}
@media only screen and (max-width: 980px) {
.content{width:100%;}
}
.circle1{
width: 15%;
padding-top: 15%;
margin:0 42%;
background-color: black;
border-radius: 50%;
display:inline-block;
}
.circle2{
width: 15%;
padding-top: 15%;
margin-left: 20%;
background-color:darkred;
border-radius: 50%;
display:inline-block;
margin-top:20px;
}
.circle3{
width: 15%;
padding-top: 15%;
margin-left: 26%;
background-color:gold;
border-radius: 50%;
display:inline-block;
margin-top:20px;
margin-right: 15%;
}

@ -39,6 +39,12 @@ export class LoginComponent implements OnInit, OnDestroy {
private isMobileFingerPrint: boolean;
private FingerPrintPatientIdentificationID: string;
private loginData = new LoginModel();
private empname:any;
private logintype:any;
public loginDiv:boolean =true;
public welcomeBack:boolean =false;
public logo = "assets/icon/login/password.png";
constructor(
public cs: CommonService,
@ -56,11 +62,21 @@ export class LoginComponent implements OnInit, OnDestroy {
) { }
ngOnInit() {
this.username = localStorage.getItem("user");
this.password = localStorage.getItem("password");
let remember = localStorage.getItem("remember");
this.empname= localStorage.getItem("emp-name");
this.logintype= localStorage.getItem("login-type");
if (remember == "true") { this.remeberMe = true } else { this.remeberMe = false }
if(this.username || this.empname){
this.loginDiv=false;
this.welcomeBack=true;
}else{
this.loginDiv=true;
this.welcomeBack=false;
}
// alert("user>>" + this.username);
// alert("pass>>>" + this.password);
// alert("remember>>>" + this.remeberMe);
@ -91,7 +107,7 @@ export class LoginComponent implements OnInit, OnDestroy {
public addValue(e): void {
// console.log(e.currentTarget.checked);
this.remeberMe = e.currentTarget.checked;
this.remeberMe = true;//e.currentTarget.checked;
this.remeberMyInfo();
}
public remeberMyInfo() {
@ -107,6 +123,7 @@ export class LoginComponent implements OnInit, OnDestroy {
}
public onLogin() {
console.log("onLogin");
this.checkAppUpdated();
// this.checkUserAuthentication();
}
@ -165,7 +182,9 @@ export class LoginComponent implements OnInit, OnDestroy {
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
this.remeberMyInfo();
//this.cs.openSMSPage(); phase#1 one type of OTP
// if(!this.welcomeBack){
this.cs.openConfirmLoginPage();//phase#2 add 4 types for OTP
// }
} else {
@ -250,4 +269,18 @@ export class LoginComponent implements OnInit, OnDestroy {
});
}
login() {
console.log("login emit");
console.log("login");
// this.checkUserAuthentication();
this.loginDiv=true;
this.welcomeBack=false;
}
loginWithUser() {
console.log("loginWithUser")
this.cs.openConfirmLoginPage();
}
}

@ -10,13 +10,19 @@
<ion-content padding>
<ion-grid>
<ion-row>
<ion-col class="colPad">
<ion-img class="centerDiv" src="../assets/imgs/CS.png"></ion-img>
<ion-col [size]="4">
<img [src]="logo" class="logo" />
<!-- <ion-img class="centerDiv" src="../assets/imgs/CS.png"></ion-img> -->
</ion-col>
</ion-row>
<br/>
<br/>
<ion-row>
<ion-col>
<p class="centerDiv">{{'verificationcode,title' | translate}}<span class="boldTxtNav">{{'verificationcode,verificationcode' | translate}}</span> {{'verificationcode,by' | translate}}<span class="boldTxtNav">{{'verificationcode,sms' | translate}}</span>{{'verificationcode,instruct' | translate}}<span class="boldTxtNav">{{'general,submit' | translate}}</span></p>
<p class="headerTxt" > {{'verificationcode,verificationcode' | translate}}</p>
<br/>
<p class="leftDiv">{{'verificationcode,title' | translate}}<span class="boldTxtNav">{{'verificationcode,verificationcode' | translate}}</span> {{'verificationcode,by' | translate}}<span class="boldTxtNav">{{'verificationcode,sms' | translate}}</span>{{'verificationcode,instruct' | translate}}<span class="boldTxtNav">{{'general,submit' | translate}}</span></p>
</ion-col>
</ion-row>
</ion-grid>
@ -25,15 +31,34 @@
<div>
<h1 text-center>{{displayTime}}</h1>
<br/><br/>
<ion-item>
<!-- <ion-label>{{'verificationcode,verificationcode' | translate}}</ion-label> -->
<!-- <img class="item-icon" src="assets/imgs/password.png" item-start /> -->
<!-- <ion-item>
//<ion-label>{{'verificationcode,verificationcode' | translate}}</ion-label>
// <img class="item-icon" src="assets/imgs/password.png" item-start />
<ion-input required type="tel" maxlength="4" (keyup)="checkOTPLength()" placeholder="{{translate.trPK('verificationcode','verificationcode')}}" [(ngModel)]="activationCode"></ion-input>
</ion-item>
</div>
</ion-item> -->
<ion-row class="sms_code" dir="ltr">
<ion-col [size]="12">
<ion-input type="tel" [(ngModel)]="smc_code[0]" maxLength="1" size="1" min="0" max="9" pattern="[0-9]{1}"
inputmode="tel" (ionInput)="goToNextInput($event)" (ionChange)="onChange()" #ref autofocus="true">
</ion-input>
<ion-input type="tel" [(ngModel)]="smc_code[1]" maxLength="1" size="1" min="0" max="9" pattern="[0-9]{1}"
inputmode="tel" (ionInput)="goToNextInput($event)" (ionChange)="onChange()"></ion-input>
<ion-input type="tel" [(ngModel)]="smc_code[2]" maxLength="1" size="1" min="0" max="9" pattern="[0-9]{1}"
inputmode="tel" (ionInput)="goToNextInput($event)" (ionChange)="onChange()"></ion-input>
<ion-input type="tel" [(ngModel)]="smc_code[3]" maxLength="1" size="1" min="0" max="9" pattern="[0-9]{1}"
inputmode="tel" (ionInput)="goToNextInput($event)" (ionChange)="onChange()"></ion-input>
</ion-col>
</ion-row>
</div>
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button color="customnavy" ion-button (click)="checkVerificationCode()">{{'general,submit' | translate}}</ion-button>
<ion-button class="button-login" ion-button (click)="checkVerificationCode()">{{'general,submit' | translate}}</ion-button>
</div>
</ion-footer>

@ -18,4 +18,51 @@ h1{
span{
font-weight: bold;
}
}
.button-login{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
}
.leftDiv {
margin: auto;
text-align: left;
display: block;
}
.sms_code{
margin: 0px;
text-align: center;
}
ion-input {
margin: 0 5px;
text-align: center;
line-height: 0;
font-size: 32px;
//border: solid 1px #ccc;
border: solid 0.01cm #000000;
//box-shadow: 0 0 5px #ccc inset;
outline: none;
width: 20%;
transition: all .2s ease-in-out;
border-radius: 3px;
display: inline-block;
&:focus {
border-color:var(--ion-color-secondary) !important;
box-shadow: 0 0 5px var(--ion-color-secondary) !important inset;
}
&::selection {
background: transparent;
}
}

@ -75,6 +75,12 @@ export class SmsPageComponent implements OnInit {
public loginTypeData:any;
public logo = "assets/icon/login/password.png";
public smc_code: any = [];
code: any;
constructor(
public navCtrl: NavController,
@ -258,16 +264,17 @@ export class SmsPageComponent implements OnInit {
}
checkVerificationCode() {
this.code=this.smc_code.join('');
if (this.count < 3) {
if (
this.activationCode == undefined ||
this.code == undefined ||
this.activationCode == null ||
this.code == null ||
this.activationCode == ""
this.code == ""
) {
@ -282,7 +289,7 @@ export class SmsPageComponent implements OnInit {
this.checkForgetPwdSMS();
} else {
console.log("checkSMS");
this.checkSMS();
}
@ -304,7 +311,7 @@ export class SmsPageComponent implements OnInit {
public checkSMS() {
// alert("checkSMS in page")
console.log("code" + this.code);
const data = this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false);
const request = new SMSCheckRequest();
@ -313,7 +320,7 @@ export class SmsPageComponent implements OnInit {
request.LogInTokenID = data.LogInTokenID;
request.activationCode = this.activationCode;
request.activationCode = this.code; //code;this.activationCode;
request.P_USER_NAME = data.P_USER_NAME;
@ -336,15 +343,17 @@ export class SmsPageComponent implements OnInit {
this.authService.setAuthenticatedUser(result).subscribe(() => {
//call insert Mobile Login
console.log("insert");
localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME);
console.log("empnmae: "+ localStorage.getItem("emp-name"));
if (this.platform.is("cordova")) {
// localStorage.setItem("full-name", result.P_USER_NAME);
this.insertMobileLogin();
}
this.common.openHome();
@ -417,7 +426,7 @@ console.log("successful insertMobileLogin" );
request.LogInTokenID = data.LogInTokenID;
request.activationCode = this.activationCode;
request.activationCode =this.code;// this.activationCode;
request.P_USER_NAME = data.P_USER_NAME;
@ -457,6 +466,53 @@ console.log("successful insertMobileLogin" );
});
}
onChange() {
const filtered = this.smc_code.filter(function (el) {
if (el) {
return el;
}
});
if (filtered.length === 4) {
//this.validate();
console.log("validate");
this.checkVerificationCode();
}
}
goToNextInput(e) {
// let value = e.target.value;
// if (value.length === 1) {
const key = e.which;
const t = e.target;
let sib = t.nextElementSibling;
if (key !== 9 && (key < 48 || key > 57)) {
if (key === 8 || key === 46) {
return true;
} else {
e.preventDefault();
return false;
}
}
if (key === 9) {
return true;
}
if (sib) {
//sib = document.querySelector('input');
if (e.target.value) {
sib.setFocus();
}
}
// } else {
// e.target.value = value.substring(0, value.length - 1);
// }
}
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { WelcomeComponent } from './welcome.component';
describe('WelcomeComponent', () => {
let component: WelcomeComponent;
let fixture: ComponentFixture<WelcomeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WelcomeComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WelcomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,14 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-welcome',
templateUrl: './welcome.component.html',
styleUrls: ['./welcome.component.scss'],
})
export class WelcomeComponent implements OnInit {
constructor() { }
ngOnInit() {}
}

@ -99,7 +99,9 @@ import {File} from '@ionic-native/file/ngx';
import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uploder-profile.component'
import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
import { AccordinCustomComponent } from './ui/accordin-custom/accordin-custom.component';
import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-custom/accordin-tab-custom.component'
import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-custom/accordin-tab-custom.component';
import{ConfirmLoginComponent} from '../authentication/confirm-login/confirm-login.component'
import{WelcomeComponent} from './ui/welcome-login/welcome.component'
@NgModule({
imports: [
CommonModule,
@ -112,6 +114,7 @@ import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-cus
PdfViewerModule
],
declarations: [
WelcomeComponent,
NumberRangeComponent,
SSpacerComponent,
MSpacerComponent,
@ -165,9 +168,12 @@ import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-cus
WorkListAttachViewComponent,
FileUploderProfileComponent,
AccordinTabCustomComponent,
AccordinCustomComponent
AccordinCustomComponent,
ConfirmLoginComponent
],
exports: [
WelcomeComponent,
NumberRangeComponent,
SSpacerComponent,
MSpacerComponent,
@ -218,7 +224,9 @@ import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-cus
WorkListAttachViewComponent,
FileUploderProfileComponent,
AccordinTabCustomComponent,
AccordinCustomComponent
AccordinCustomComponent,
ConfirmLoginComponent
],
providers: [
ConnectorService,

@ -16,5 +16,6 @@ export class SMSCheckResponse extends Response {
public CompanyImageDescription:string;
public CompanyImageURL:string;
public EMPLOYEE_MOBILE_NUMBER:string;
public EMPLOYEE_NAME:string;
}

@ -6,7 +6,7 @@
box-shadow: 0px 0px 8px 2px #d5d5d5ab;
background: white;
margin-bottom: 0.3cm;
border-color: #ececec;
// border-color: #ececec;
border-style: solid;
border-width: 0.02cm;
}

@ -13,6 +13,8 @@ export class ButtonComponent implements OnInit {
@Input() class: any = '';
@Input() icon: string;
@Input() title: string;
@Input() buttonClass: any = '';
@Input() pClass: any = '';
@Output() trigger = new EventEmitter();
@Input() settings: ButtonSettings;
public direction: string;

@ -0,0 +1,69 @@
<ion-content has-bouncing="false" forceOverscroll="false" class="ion-no-padding">
<ion-grid padding>
<ion-row>
<ion-col [size]="12">
<!-- <img [src]="logo" class="loginLogo" />
<h1 class="heading1">{{welcome}} </h1> -->
<p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 28px;">{{'home,welcome-back' | translate}} </p>
<p class="text1" style="font-size: 28px;margin-top: 0px;" >{{empname}}</p>
<p *ngIf="!empname" class="text1">{{welcome_txt}} </p>
<p class="text1">{{txt_account}} </p>
</ion-col>
</ion-row>
<ion-row class="row-border" *ngIf="empname && isLastLogin">
<ion-col size="6" style="padding: 5px 10px; border-right:1px solid #bbbbbb">
<p class="last-login" style="font-weight: bold">{{'login,last-login' | translate}} </p>
<!-- <p class="last-login small-font-size">{{user.EditedOn | date}}
{{lastLoginTime}}</p>-->
</ion-col>
<ion-col size="6" style="padding: 5px 10px;">
<p class="last-login" style="font-weight: bold" [ngClass]="{'fadein':empname && isLastLogin }">
{{'login,last-login-with' | translate}}
</p>
<p class="last-login">{{getLoginType(logintype)}}</p>
</ion-col>
</ion-row>
<ion-row class="ion-no-padding description" *ngIf="empname && isLastLogin">
<ion-col style="margin-top:-5px" class="ion-no-padding " [size]=6>
<app-confirm-login [accessFromOutSide]="true" *ngIf="empname"></app-confirm-login>
</ion-col>
<ion-col [size]=6>
<app-button (click)="loginwithuser()" [title]="button.title | translate " [icon]="button.icon"
[settings]="button.settings" [strong]="button.txt" [disabled]="button.disabled"
[buttonClass]="button.buttonClass" [pClass]="button.pClass" [class]="button.class">
</app-button>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
<ion-footer class="welcome-footer">
<ion-row class="ion-justify-content-center " *ngIf="empname">
<ion-col [size]="12">
<ion-button class="centerDiv button-login" expand="block" (click)="login()">
{{'login, another-acc' | translate}}
</ion-button>
</ion-col>
</ion-row>
<ng-template #userinfo_login>
<ion-row class="ion-justify-content-center bottom-buttons">
<ion-col [size]="12">
<ion-button class="gray-button" expand="block" (click)="login()">
{{'rate,yes' | translate}}
</ion-button>
<!-- <ion-button class="red-button" expand="block" (click)="register()">
{{'general,no' | translate}}
</ion-button> -->
</ion-col>
</ion-row>
</ng-template>
</ion-footer>

@ -0,0 +1,68 @@
.logo-en {
text-align: left;
}
.logo-ar {
text-align: right;
}
.welcome {
margin: 10px;
display: inline-block;
font-weight: bold;
font-size: 0.55cm;
}
.description {
margin-top: .5cm;
}
.last-login {
margin: 0;
font-size: 12px;
text-align: center;
}
.row-border {
margin-top: 20px;
border: 1px solid #bbbbbb;
border-radius: 10px;
padding: 5px;
background: #dddddd;
}
.fadein {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
.small-font-size {
font-size: 14px;
;
}
.bottom-buttons {
margin-bottom: 0;
}
@-webkit-keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.welcome-footer {
position: fixed;
bottom: 10px;
left: 0;
right: 0;
}
.text1 {
line-height: 1.5;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { WelcomeComponent } from './welcome.component';
describe('WelcomeComponent', () => {
let component: WelcomeComponent;
let fixture: ComponentFixture<WelcomeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WelcomeComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WelcomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,182 @@
import {
Component,
OnInit,
Output,
EventEmitter,
AfterViewInit,
ViewChild,
OnDestroy
} from "@angular/core";
import { TranslatorService } from "../../services/translator/translator.service";
import { CommonService } from "../../services/common/common.service";
import { AuthenticationService } from "../../services/authentication/authentication.service";
import { ConfirmLoginComponent } from 'src/app/authentication/confirm-login/confirm-login.component';
import * as moment from 'moment'
import { ButtonSettings } from '../button/models/button-settingsl';
import { Events } from '@ionic/angular';
@Component({
selector: "welcome-login",
templateUrl: "./welcome.component.html",
styleUrls: ["./welcome.component.scss"]
})
export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
@ViewChild(ConfirmLoginComponent, {read: ConfirmLoginComponent }) confimLogin: ConfirmLoginComponent;
// @ViewChild(ConfirmLoginComponent, { static: false, read: ConfirmLoginComponent }) confimLogin: ConfirmLoginComponent;
public logo = "assets/imgs/bell.png";
public direction: any;
public user: any;
public count: number = 0;
public count2: number = 0;
public txt_account: any;
public isLastLogin: any;
public welcome: string;
public userName: string;
public lastLoginTime: any;
public welcome_txt: any;
// public loginTypeDef = {
// 1: this.ts.trPK("sms", "title"),
// 2: this.ts.trPK("sms", "fingerprint"),
// 3: this.ts.trPK("sms", "face-recognition"),
// 4: this.ts.trPK("sms", "whatsapp")
// };
public loginTypeDef = {
1: this.ts.trPK("sms", "title"),
2: this.ts.trPK("sms", "fingerprint"),
3: this.ts.trPK("sms", "face-recognition"),
4: this.ts.trPK("sms", "whatsapp")
};
@Output() onLogin = new EventEmitter();
@Output() loginWithUser = new EventEmitter();
public button =
{
title: "login, more-verify",
url: null,
icon: "assets/imgs/more.png",
settings: new ButtonSettings(true, true, true, true),
value: 2,
txt: 'More',
disabled: false,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
visible: true
};
password: string;
empname: string;
logintype: any;
constructor(
public ts: TranslatorService,
public cs: CommonService,
public authservice: AuthenticationService,
public events: Events
) { }
ngOnInit() {
// retrive user info **
this.userName = localStorage.getItem("user");
this.password = localStorage.getItem("password");
let remember = localStorage.getItem("remember");
this.empname= localStorage.getItem("emp-name");
this.logintype= localStorage.getItem("login-type");
this.logintype = parseInt(this.logintype)
this.welcome_txt = this.ts.trPK("home", "welcome-txt");
this.txt_account = this.user
? this.ts.trPK("home", "account-info")
: "";
this.setWelcomeMessage();
this.setDescription();
//later to fix below code
if (this.user) {
// this.lastLoginTime = moment(this.cs.evaluteDateAsObject(this.user.EditedOn)).format("HH:mm");
}
}
ngOnDestroy(): void {
}
private setWelcomeMessage() {
console.log(this.userName + "this.userName");
if (this.userName) {
this.welcome = this.ts.trPK("home", "welcome-back");
console.log(this.welcome + "this.welcome");
this.welcome += " " + this.empname || '';
this.isLastLogin = true;
console.log(this.isLastLogin + "this.isLastLogin");
} else {
this.welcome = this.ts.trPK("home", "welcome-head");
}
}
private setDescription() {
this.txt_account = this.userName ?
this.ts.trPK("home", "account-info") :"";
}
ngAfterViewInit() {
console.log("this.confimLogin.buttons[0]" + this.confimLogin.buttons[0]);
setTimeout(() => {
if (this.userName && this.confimLogin.buttons[0]) {
console.log(this.userName );
console.log(this.confimLogin.buttons[0]);
this.confimLogin.buttons[0].forEach(element => {
if (this.logintype === element.value) {
console.log(this.logintype );
console.log(element.value);
console.log("this.logintype === element.value");
element.visible = true;
} else {
console.log("this.logintype != element.value");
element.visible = false;
}
});
}
}, 200);
}
public moreLoginOptions() {}
login() {
this.onLogin.emit();
}
loginwithuser() {
this.loginWithUser.emit();
}
// getDate(date: string) {
// return this.cs.getDateTimeISOFromString(date);
// }
getLoginType(type: any) {
return this.loginTypeDef[type];
}
convertTime(time) {
// alert(time)
return time;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -5,6 +5,14 @@
"fr"
],
"login": {
"another-acc": {
"en": "Use another account",
"ar": "استخدم حسابا آخر"
},
"more-verify": {
"en": "More Verification Options",
"ar": "المزيد من خيارات التحقق"
},
"login": {
"en": "Login",
"ar": "الدخول"
@ -144,6 +152,22 @@
"verify-fingerprint": {
"en": "To activate fingerprint login service, please verify by using one of the following options. ",
"ar": "لتفعيل خدمة الدخول بالبصمة، يرجى التحقق من خلال احدى الخيارات التالية"
},
"Verify-text":{
"en":"Verify its you",
"ar":"Verify its you"
},
"check-user-text1":{
"en":"Please Enter your Employee ID, A ",
"ar":""
},
"check-user-text2":{
"en":"login Code ",
"ar":""
},
"check-user-text3":{
"en":"will be sent to your mobile number",
"ar":""
}
},
"verificationcode": {
@ -870,6 +894,26 @@
"timeAndAttendance":{
"en":"Time & Attendance",
"ar":"الوقت و الحضور"
},
"welcome-head": {
"en": "Welcome",
"ar": "مرحبا"
},
"welcome-back": {
"en": "Welcome back!",
"ar": "مرحبا بعودتك!"
},
"welcome": {
"en": "Welcome to",
"ar": "مرحبا بك في"
},
"welcome-txt": {
"en": "mohemm Mobile Application",
"ar": "مهم لتطبيقات الجوال"
},
"account-info": {
"en": "Would you like to login with current username?",
"ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"
}
},
"userProfile": {
@ -2082,5 +2126,23 @@
"ar":"المجموع "
}
},
"sms": {
"title": {
"en": "SMS",
"ar": "رسالة قصيرة"
},
"fingerprint": {
"en": "Fingerprint",
"ar": "بصمة"
},
"face-recognition": {
"en": "Face recognition",
"ar": "التعرف على الوجه"
},
"whatsapp": {
"en": "Whatsapp",
"ar": "واتس اب"
}
}
}

@ -229,7 +229,7 @@ p.text-caps{
}
}
.boldTxtNav,p.boldTxtNav,.boldTxtNav>label {
color: var(--customnavy) !important;
color: var(--dark) !important;
:root[dir="ltr"]{
font-family: var(--fontFamilyBoldEN) !important;
}
@ -240,7 +240,7 @@ p.text-caps{
}
ion-label.boldTxtNav.label.label-md,ion-label.boldTxtNav.label.label-ios{
// font-weight: bold;
color:var(--customnavy);
color:var(--dark);
:root[dir="ltr"]{
font-family: var(--fontFamilySemiBoldEN) !important;
}
@ -845,7 +845,77 @@ color: var(--dark);
margin: 8px !important;
}
.buttonClassWhite {
border-radius: 10px !important;
width: 95% !important;
height: 3.7cm !important;
background: var(--newred) !important;
box-shadow: none !important;
border: 1px solid #cccccc !important;
}
.nationalIdIcon {
text-align: center;
margin: 0 auto;
display: block;
padding-top: 14px;
max-height: 130px !important;
}
.pClassMyFileIconBlack {
color: #515a5d !important;
font-weight: bold !important;
font-size: 15px !important;
// margin-top: cm !important;
}
.logo {
max-width:150%;
width:150%;
border:0px
}
.logoHeader {
max-width: 130%;
width: 130%;
border: 0px;
}
.headerTxt{
font-size: 20px;
font-weight: bold;
}
.login-input {
border: none;
}
.item-input{
--min-height: 1.0cm !important;
--border-radius: 12px;
--ion-color-base: white !important;
// --background: color: var(--darkgray) !important;
// background: #7f8c8d !important;
border-radius: 33px;
--border: solid #9999992b !important;
border: solid #9999992b !important;
margin-bottom :12px;
margin-left: 12px;
margin-right: 12px;
}
.button-login{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
}
// .slides-gray-bullets .swiper-wrapper {
// margin-top: 14px !important;
// }

@ -69,7 +69,10 @@
--red:#BE1E2D;
--blue:#223262;
--cyanblue:#1b75bc;
--newgreen:#22c6b3;
--darkblue:#094875;
--lightblue:#3cb9d5;
--newred:#cb3232;
// $font-family-base: $fontFamilyMediumEN !default;
// $font-family-ios-base: $fontFamilyMediumEN !default;
// $font-family-md-base:$fontFamilyMediumEN !default;

Loading…
Cancel
Save