finished all assigned tasks

MOE_DEV_NEW_TEMPORARY_DESIGN
enadhilal 5 years ago
parent f119467787
commit 84abf319ac

@ -116,6 +116,8 @@ export class AppComponent implements OnInit {
this.events.subscribe('setMenu', () => {
const user = this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
if (user) {
const digitalIDUser: any = JSON.stringify(user);
localStorage.setItem('digitalIDUser', digitalIDUser);
this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions';
this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME;

@ -22,6 +22,7 @@ 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'
import { DigitalIdComponent } from './digital-id/digital-id.component';
const routes: Routes = [
{
@ -82,12 +83,14 @@ const routes: Routes = [
CheckUserComponent,
ChangePasswordComponent,
// ConfirmLoginComponent,
WelcomeComponent
WelcomeComponent,
DigitalIdComponent
],
providers:[
FingerprintAIO,
Device,
SplashScreen
]
],
entryComponents:[DigitalIdComponent]
})
export class AuthenticationPageModule { }

@ -66,4 +66,9 @@
</ion-grid>
<ion-button *ngIf="userInfo" class="button-digital-id" (click)="openDigitalId()">
<p style="color: black;">{{ts.trPK('general','digital-id')}}</p>
<img [ngClass]=" direction === 'en' ? 'digital-id-en' : 'digital-id-ar'" src="../assets/imgs/ID_ico.png">
</ion-button>
</ion-content>

@ -7,4 +7,31 @@
}
.button-digital-id{
--background: white !important;
background: white !important;
white-space: normal;
color: white;
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
border: 1px solid black;
}
.digital-id-en{
color: black;
position: absolute;
right: 20px;
width: 10%;
}
.digital-id-ar{
color: black;
position: absolute;
left: 20px;
width: 10%;
}

@ -12,12 +12,13 @@ import { GetLoginInfoResponse } from '../../hmg-common/services/authentication/m
import { SMSCheckRequest } from 'src/app/hmg-common/services/authentication/models/smscheck.request';
import { SMSCheckResponse } from 'src/app/hmg-common/services/authentication/models/smscheck.response';
import { PushService } from 'src/app/hmg-common/services/push/push.service';
import { Platform } from '@ionic/angular';
import { ModalController, Platform } from '@ionic/angular';
import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response';
import { LoginModel } from '../models/LoginModel';
import * as moment from 'moment';
import { CheckAppVersionResponse } from 'src/app/hmg-common/services/authentication/models/check-app-version.response';
import { NFC } from "@ionic-native/nfc/ngx";
import { DigitalIdComponent } from '../digital-id/digital-id.component';
@Component({
selector: 'app-confirm-login',
@ -49,6 +50,8 @@ export class ConfirmLoginComponent implements OnInit {
private iosLink: string;
private androidLink: string;
public isNFCAvailable = false;
direction:string;
userInfo: any;
constructor(
public ts: TranslatorService,
@ -58,6 +61,7 @@ export class ConfirmLoginComponent implements OnInit {
private faio: FingerprintAIO,
public pushService: PushService,
public platform: Platform,
public modalController: ModalController,
private nfc: NFC
) {
this.loginData = this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false);
@ -75,6 +79,8 @@ export class ConfirmLoginComponent implements OnInit {
}
ngOnInit() {
this.direction = TranslatorService.getCurrentLanguageName();
this.userInfo = JSON.parse(localStorage.getItem('digitalIDUser'));
this.checkNFCStatus();
// **checkIfAvailable FAIO **//
this.checkIfAvailable();
@ -474,4 +480,12 @@ checkAccess(el: any) {
}
}
async openDigitalId() {
const modal = await this.modalController.create({
component: DigitalIdComponent,
cssClass: 'digital-id-modal-css'
});
return await modal.present();
}
}

@ -0,0 +1,33 @@
<ion-content>
<img *ngIf="userInfo.PAYROLL_CODE === 'CS' " style="width: 100%; max-width: 100%;" src="../assets/imgs/IDTOP.png">
<img *ngIf="userInfo.PAYROLL_CODE !== 'CS' " style="width: 100%; max-width: 100%;" src="../assets/imgs/IDTOP_HMG.png.png">
<ion-grid>
<ion-row>
<ion-col>
<img style="width: 65%; bottom: 0%; position:absolute" [src]="'data:image/png;base64,'+userInfo.EMPLOYEE_IMAGE">
</ion-col>
<ion-col>
<p><b style="font-size: 25px !important;">{{userInfo.ASSIGNMENT_NUMBER}}</b></p>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<p><b style="font-size: 20px !important;">{{userInfo.EMPLOYEE_DISPLAY_NAME}}</b></p>
<p style="font-size: 15px !important;">{{userInfo.JOB_NAME}}</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col offset="2">
<img style="width: 85%; max-width: 100%;" [src]="userInfo.EmployeeQR">
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
<ion-footer>
<div class="centerDiv" style="margin-top: 20px !important;">
<ion-button class="button-login" (click)="dismiss()"><b>{{ts.trPK('general','close')}}</b></ion-button>
</div>
</ion-footer>

@ -0,0 +1,13 @@
.button-login{
--background: #c1272d !important;
background: #c1272d !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;
}

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

@ -0,0 +1,30 @@
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-digital-id',
templateUrl: './digital-id.component.html',
styleUrls: ['./digital-id.component.scss'],
})
export class DigitalIdComponent implements OnInit {
userInfo: any;
constructor(
public modalCtrl: ModalController,
public ts: TranslatorService,
) { }
ngOnInit() {
this.userInfo = JSON.parse(localStorage.getItem('digitalIDUser'));
console.log(this.userInfo);
}
dismiss() {
this.modalCtrl.dismiss({
'dismissed': true
});
}
}

@ -26,9 +26,6 @@
<img style="margin: 9px 8px 9px 0 !important;" class="item-icon" src="assets/imgs/password.png" item-start />
<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>
<div class="centerDiv signupDiv" *ngIf="isAppleStore==false">
@ -40,6 +37,8 @@
</div>
</div>
<!-- <div *ngIf="welcomeBack"> -->
<welcome-login (onLogin)="login()" (loginWithUser)="loginWithUser()" *ngIf="user ">
</welcome-login>
@ -47,6 +46,17 @@
<div class="centerDiv" style="margin-top: 20px !important;">
<ion-button [ngClass]="{'disable-button-opacity': isValidForm()}" class="button-login" (click)="onLogin()" [disabled]="isValidForm()">{{ts.trPK('login','login')}}</ion-button>
<!-- digital ID button -->
<!-- <ion-button *ngIf="userInfo" class="button-digital-id" (click)="openDigitalId()">
<p style="color: black;">{{ts.trPK('general','digital-id')}}</p>
<img [ngClass]=" currentLang === '2' ? 'digital-id-en' : 'digital-id-ar'" src="../assets/imgs/ID_ico.png">
</ion-button> -->
<br><br>
<button ion-button clear class="forgetText" type="button" (click)="forgetPasswordPage()" item-right >
{{ts.trPK('login','forgot-password')}}
</button>
</div>
</ion-content>

@ -141,6 +141,22 @@ img.centerDiv {
--min-height: 1.6cm !important;
width: 315px;
}
.button-digital-id{
--background: white !important;
background: white !important;
white-space: normal;
color: white;
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 33px !important;
border-radius: 33px !important;
--min-height: 1.6cm !important;
width: 315px;
border: 1px solid black;
}
.content {
width: 500px;
margin-left: auto;
@ -227,4 +243,19 @@ img.centerDiv {
display:inline-block;
margin-top:20px;
margin-right: 15%;
}
.digital-id-en{
color: black;
position: absolute;
right: 20px;
width: 10%;
}
.digital-id-ar{
color: black;
position: absolute;
left: 20px;
width: 10%;
}

@ -18,6 +18,8 @@ import { CheckAppVersionResponse } from 'src/app/hmg-common/services/authenticat
import { PushService } from 'src/app/hmg-common/services/push/push.service';
import { KeyboardService } from 'src/app/hmg-common/services/keyboard/keyboard.service';
import { KeyboardStatusModel } from 'src/app/hmg-common/services/keyboard/keyboard-status.model';
import { ModalController } from '@ionic/angular';
import { DigitalIdComponent } from '../digital-id/digital-id.component';
@Component({
selector: 'login',
@ -26,6 +28,7 @@ import { KeyboardStatusModel } from 'src/app/hmg-common/services/keyboard/keyboa
})
export class LoginComponent implements OnInit, OnDestroy {
deviceToken1: any;
userInfo: any;
constructor(
public cs: CommonService,
@ -42,21 +45,22 @@ export class LoginComponent implements OnInit, OnDestroy {
public sharedData: SharedDataService,
public plt: Platform,
public pushService: PushService,
public keyboardService: KeyboardService
public keyboardService: KeyboardService,
public modalController: ModalController
) {
this.events.subscribe('logoutFlage', logoutFlage => {
console.log('login compont logoutFlage: ' + logoutFlage);
// tslint:disable-next-line: triple-equals
if (logoutFlage == true) {
console.log(' subscribe check logoutFlage: ' + logoutFlage);
this.logoutFlage = logoutFlage;
localStorage.setItem('logoutFlage', logoutFlage);
console.log(' subscribe check logoutFlage: ' + logoutFlage);
this.logoutFlage = logoutFlage;
localStorage.setItem('logoutFlage', logoutFlage);
}
});
this.getuser = this.cs.sharedService.getSharedData(
AuthenticationService.IMEI_USER_DATA,
false
);
);
if (this.getuser) {
this.user = true;
@ -91,7 +95,7 @@ export class LoginComponent implements OnInit, OnDestroy {
user = false;
DeviceType: string;
requestGetLoginInfo: any;
logoutFlage: boolean ;
logoutFlage: boolean;
getuser: any = '';
getlastlogin: any;
public keyboardOpened = false;
@ -99,6 +103,7 @@ export class LoginComponent implements OnInit, OnDestroy {
ngOnInit() {
this.monitorKeyboardChange();
this.userInfo = JSON.parse(localStorage.getItem('digitalIDUser'));
this.currentLang = TranslatorService.getCurrentLanguageCode();
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
@ -113,19 +118,19 @@ export class LoginComponent implements OnInit, OnDestroy {
this.deviceToken = this.cs.getDeviceToken();
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
} else {
console.log('no deviceToken' );
this.pushService.startReceiving();
}
} else {
console.log('no deviceToken');
this.pushService.startReceiving();
}
// here will delete below part and depdding on user (response from getMobileInfo)
this.username = localStorage.getItem('user');
this.password = localStorage.getItem('password'); // ****//
const remember = localStorage.getItem('remember'); // ****//
this.empname = localStorage.getItem('emp-name');
this.empname = localStorage.getItem('emp-name');
this.logintype = localStorage.getItem('login-type');
// tslint:disable-next-line: triple-equals
if (remember == 'true') { this.remeberMe = true ; } else { this.remeberMe = false; }
if (remember == 'true') { this.remeberMe = true; } else { this.remeberMe = false; }
}
ngOnDestroy(): void {
@ -133,9 +138,9 @@ export class LoginComponent implements OnInit, OnDestroy {
}
public changeLanguage(langNumber) {
console.log("current lang: "+this.currentLang)
console.log("click lang: "+langNumber)
if(this.currentLang == langNumber){
console.log("current lang: " + this.currentLang)
console.log("click lang: " + langNumber)
if (this.currentLang == langNumber) {
this.currentLang = langNumber;
return;
} else {
@ -167,9 +172,9 @@ export class LoginComponent implements OnInit, OnDestroy {
this.remeberMyInfo();
}
public remeberMyInfo() {
if (this.username) {localStorage.setItem('user', this.username); }
if (this.password) {localStorage.setItem('password', this.password); }
localStorage.setItem('remember', 'true');
if (this.username) { localStorage.setItem('user', this.username); }
if (this.password) { localStorage.setItem('password', this.password); }
localStorage.setItem('remember', 'true');
}
public onLogin() {
@ -183,21 +188,21 @@ export class LoginComponent implements OnInit, OnDestroy {
this.checkAppUpdated();
console.log('login enabled second time: ' + this.deviceToken);
}, 1000);
}
}
}
public checkAppUpdated() {
this.authService.checkApplicationVersion(() => {}).subscribe((result: CheckAppVersionResponse) => {
// tslint:disable-next-line: triple-equals
if (result.MessageStatus == 2 && result.ErrorType == 4) {
this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => {
this.handleAppUpdate(result);
});
this.authService.checkApplicationVersion(() => { }).subscribe((result: CheckAppVersionResponse) => {
// tslint:disable-next-line: triple-equals
if (result.MessageStatus == 2 && result.ErrorType == 4) {
this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => {
this.handleAppUpdate(result);
});
// tslint:disable-next-line: triple-equals
} else if (result.MessageStatus == 1) {
this.checkUserAuthentication();
}
});
} else if (result.MessageStatus == 1) {
this.checkUserAuthentication();
}
});
}
private handleAppUpdate(result) {
@ -332,7 +337,7 @@ export class LoginComponent implements OnInit, OnDestroy {
login() {
let anotherUser = this.sharedData.getSharedData('anotherUser');
if(anotherUser){
if (anotherUser) {
this.username = '';
this.password = '';
}
@ -340,42 +345,51 @@ export class LoginComponent implements OnInit, OnDestroy {
console.log('login');
// this.loginDiv=true;
this.user = false;
}
}
loginWithUser() {
loginWithUser() {
console.log('loginWithUser');
this.cs.openConfirmLoginPage();
}
}
getLastLoginInfo() {
getLastLoginInfo() {
this.requestGetLoginInfo = {
DeviceType: this.cs.getDeviceType(), // "Android",//this.cs.getDeviceType(),
DeviceToken: this.cs.getDeviceToken()// "5ca8a69cf1804db55264c349edffb99b9d63acd9fa9b6b18956bcb2ad3f2ba36"//this.deviceToken
};
this.authService.getLoginInfo(this.requestGetLoginInfo, () => {}, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
this.authService.getLoginInfo(this.requestGetLoginInfo, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(
// res.Patient_SELECTDeviceIMEIbyIMEIList[0],
res.Mohemm_GetMobileLoginInfoList[0],
AuthenticationService.IMEI_USER_DATA
);
this.user = true;
this.cs.sharedService.setSharedData(
// res.Patient_SELECTDeviceIMEIbyIMEIList[0],
res.Mohemm_GetMobileLoginInfoList[0],
AuthenticationService.IMEI_USER_DATA
);
this.user = true;
} else {
this.user = false;
}
}
} else {
this.user = false;
}
}
});
}
}
private monitorKeyboardChange() {
this.events.subscribe(KeyboardService.KEYBOARD_STATUS, (status: KeyboardStatusModel) => {
this.keyboardOpened = status.opened;
});
}
private monitorKeyboardChange() {
this.events.subscribe ( KeyboardService.KEYBOARD_STATUS , ( status: KeyboardStatusModel) => {
this.keyboardOpened = status.opened;
async openDigitalId() {
const modal = await this.modalController.create({
component: DigitalIdComponent,
cssClass: 'digital-id-modal-css'
});
}
return await modal.present();
}
}

@ -11,7 +11,7 @@ export class AccordinTabCustomComponent implements OnInit {
private accordion: AccordinCustomComponent;
private id: number;
public show = false;
@Input() public show = false;
public direction = 'ltr';
@Input() header: string;
@Input() subHeader: string;
@ -30,7 +30,6 @@ export class AccordinTabCustomComponent implements OnInit {
}
public setVisibility(show: boolean) {
this.show = show;
}
public setAccordion(accordion: AccordinCustomComponent) {
@ -38,6 +37,7 @@ export class AccordinTabCustomComponent implements OnInit {
}
public onClick() {
this.show = !this.show;
this.setVisibility(!this.show);
if (this.show) {
if (this.accordion) {

@ -57,7 +57,7 @@
<accordin-custom>
<accordin-tab-custom *ngFor="let notificationList of notificationBodyRes; let i=index; "
[header]="notificationList.DESCRIPTION">
[header]="notificationList.DESCRIPTION" [show]="i === 0 ? true: false">

@ -35,13 +35,12 @@
<ion-slides #slides (ionSlideDidChange)="slideChanged($event)">
<ion-slide>
<ng-container *ngIf="activeSegment === 'line_details'">
<div [hidden]="POLines && POLines.length > 0" style="width: 100% !important;">
<p>{{ 'general, empty' | translate}}</p>
</div>
<accordin-custom style="width: 100% !important;">
<accordin-tab-custom *ngFor="let Lines of POLines; let i=index;"
[header]="Lines.ITEM_DESCRIPTION">
[header]="Lines.ITEM_DESCRIPTION" [show]="i === 0 ? true: false">
<div class="itemReqDiv">
<ion-grid>
<ion-row class="rowBorder">

@ -39,7 +39,7 @@
<p>{{ 'general, empty' | translate}}</p>
</div>
<accordin-custom>
<accordin-tab-custom *ngFor="let Lines of PRLines; let i=index;" [header]="Lines.DESCRIPTION">
<accordin-tab-custom *ngFor="let Lines of PRLines; let i=index;" [header]="Lines.DESCRIPTION" [show]="i === 0 ? true: false">
<div class="itemReqDiv" style="width: 100% !important;">
<ion-row class="rowBorder">
<ion-col [ngClass]=" direction === 'en' ? 'colBorder' :'colBorder-ar' " class="colItems">

@ -28,23 +28,60 @@
</div>
<ion-grid *ngIf="personalInfo">
<div class="gridService">
<div class="gridService" style="background: #0B4775; border-radius: 20px;">
<ion-row>
<ion-col>
<label style="font-size: 12px; color: white; margin: 5%;">We appreciate you for completing service of</label>
</ion-col>
</ion-row>
<ion-row >
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
<ion-grid>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
<ion-grid>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
<ion-grid>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
</ion-col>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
</ion-row>
</div>
</ion-grid>

@ -82,22 +82,22 @@
margin-top: 87px;
border-radius: 10px;
margin-bottom: -49px;
margin-left: 14px;
margin-right: 14px;
margin-left: 30px;
margin-right: 30px;
}
.columns{
margin: 10px;
background: #269DB8;
background: #0B4775;
border-radius: 27px;
padding-left: 30px;
padding-right: 6px;
padding-top: 19px;
padding-bottom: 26px;
// padding-left: 30px;
// padding-right: 6px;
// padding-top: 19px;
// padding-bottom: 26px;
}
.columns-ar{
margin: 10px;
background: #269DB8;
background: #0B4775;
border-radius: 27px;
padding-left: 7px;
padding-right: 3px;
@ -134,8 +134,8 @@
margin-left: 14px;
margin-right: 14px;
border-radius: 10px;
background: white;
border: solid #bebbbb !important;
// background: white;
border:#bebbbb !important;
padding: 2px;
}
.p{
@ -183,4 +183,12 @@
color: grey;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
}
.verticalLine {
width:1%;
height:50px;
background:white;
margin-top: 100%;
// margin-left: 10%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

@ -938,6 +938,10 @@
"success-attendance": {
"en": "Your attendance is marked successfully.",
"ar": "تم تسجيل حضورك بنجاح"
},
"digital-id":{
"en":"Employee Digital ID",
"ar":"هوية الموظف الرقمية"
}
},
"home": {

@ -1545,3 +1545,11 @@ table.monthview-datetable th small {
.disable-button-opacity {
opacity: .2;
}
.digital-id-modal-css .modal-wrapper {
height: 90%;
width: 90%;
top: 3%;
position: absolute;
display: block;
}
Loading…
Cancel
Save