@skysoftware-co/bayan-hr-widgets-ui 1.0.12 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/README.md +19 -140
  2. package/fesm2022/skysoftware-co-bayan-hr-widgets-ui.mjs +1067 -102
  3. package/fesm2022/skysoftware-co-bayan-hr-widgets-ui.mjs.map +1 -1
  4. package/lib/my-vacation-team-widget/components/vacation-subordinates-popup/vacation-subordinates-popup.component.d.ts +38 -0
  5. package/lib/my-vacation-team-widget/my-vacation-team-widget.component.d.ts +33 -0
  6. package/lib/profile-bank-information-widget/profile-bank-information-widget.component.d.ts +5 -3
  7. package/lib/profile-job-information-contract-widget/profile-job-information-contract-widget.component.d.ts +30 -0
  8. package/lib/profile-job-information-main-widget/profile-job-information-main-widget.component.d.ts +30 -0
  9. package/lib/profile-job-information-salary-widget/profile-job-information-salary-widget.component.d.ts +36 -0
  10. package/lib/profile-job-information-service-charge-widget/profile-job-information-service-charge-widget.component.d.ts +32 -0
  11. package/lib/profile-personal-info-contact-widget/profile-personal-info-contact-widget.component.d.ts +2 -1
  12. package/lib/profile-personal-info-languages-widget/profile-personal-info-languages-widget.component.d.ts +2 -1
  13. package/lib/profile-personal-info-main-widget/profile-personal-info-main-widget.component.d.ts +2 -1
  14. package/lib/profile-personal-info-other-nationalities-widget/profile-personal-info-other-nationalities-widget.component.d.ts +2 -1
  15. package/lib/profile-profile-personal-info-address-widget/profile-personal-info-address-widget.component.d.ts +2 -1
  16. package/lib/services/hr-self-widgets.service.d.ts +10 -2
  17. package/lib/shared/services/job-information-cache.service.d.ts +22 -0
  18. package/lib/shared/types/common.d.ts +64 -26
  19. package/package.json +1 -1
  20. package/public-api.d.ts +6 -1
  21. package/lib/my-bank-information-widget/my-bank-information-widget.component.d.ts +0 -41
  22. package/lib/personal-info-address-widget/personal-info-address-widget.component.d.ts +0 -25
  23. package/lib/personal-info-contact-widget/personal-info-contact-widget.component.d.ts +0 -28
  24. package/lib/personal-info-languages-widget/personal-info-languages-widget.component.d.ts +0 -22
  25. package/lib/personal-info-main-widget/personal-info-main-widget.component.d.ts +0 -28
  26. package/lib/personal-info-other-nationalities-widget/personal-info-other-nationalities-widget.component.d.ts +0 -22
@@ -1,20 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Pipe, EventEmitter, Input, Output, Component, inject, ViewChild } from '@angular/core';
3
3
  import * as i1$1 from 'devextreme-angular';
4
- import { DxTooltipModule, DxPopupModule, DxScrollViewModule, DxLoadPanelModule, DxCalendarModule } from 'devextreme-angular';
4
+ import { DxTooltipModule, DxPopupModule, DxScrollViewModule, DxLoadPanelModule, DxCalendarModule, DxDataGridModule, DxTextBoxModule, DxDataGridComponent } from 'devextreme-angular';
5
5
  import * as i2$1 from '@angular/common';
6
6
  import { NgClass, DecimalPipe, DatePipe, LowerCasePipe, CommonModule } from '@angular/common';
7
7
  import * as i1$2 from '@fortawesome/angular-fontawesome';
8
8
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
9
9
  import { BayanEmployeeBadgeComponent } from '@skysoftware-co/bayan-components-ui';
10
- import { SkyShortcutIconComponent, SkySectionDividerComponent } from '@skysoftware-co/sky-components-ui';
10
+ import { SkyShortcutIconComponent, SkySectionDividerComponent, SkyWidgetSectionItemComponent } from '@skysoftware-co/sky-components-ui';
11
11
  import * as i1 from '@angular/common/http';
12
12
  import { HttpParams } from '@angular/common/http';
13
- import { map, shareReplay, catchError, throwError } from 'rxjs';
14
- import { faCakeCandles, faTreePalm, faCalendarStar, faMoneyCheckDollarPen, faMemoCircleInfo, faPhone, faBolt, faHouse, faLanguage, faEarthAfrica } from '@fortawesome/pro-light-svg-icons';
13
+ import { map, shareReplay, catchError, throwError, lastValueFrom } from 'rxjs';
14
+ import { faCakeCandles, faTreePalm, faCalendarStar, faMoneyCheckDollarPen, faMemoCircleInfo, faPhone, faBolt, faLanguage, faEarthAfrica, faHouse, faBriefcase, faFileContract, faMoneyBillTrendUp, faXmark } from '@fortawesome/pro-light-svg-icons';
15
15
  import * as i2 from 'devextreme-angular/core';
16
16
  import { faCircle, faCalendarDays } from '@fortawesome/pro-regular-svg-icons';
17
17
  import moment from 'moment';
18
+ import { faPlaneDeparture, faPlaneArrival } from '@fortawesome/pro-solid-svg-icons';
19
+ import CustomStore from 'devextreme/data/custom_store';
20
+ import * as i5 from 'devextreme-angular/ui/nested';
18
21
 
19
22
  var MainWidgetShortcut;
20
23
  (function (MainWidgetShortcut) {
@@ -54,6 +57,18 @@ var ScheduleVacationTypes;
54
57
  ScheduleVacationTypes[ScheduleVacationTypes["AddedVacations"] = 4] = "AddedVacations";
55
58
  ScheduleVacationTypes[ScheduleVacationTypes["Events"] = 5] = "Events";
56
59
  })(ScheduleVacationTypes || (ScheduleVacationTypes = {}));
60
+ var ServiceChargeEntitlementMode;
61
+ (function (ServiceChargeEntitlementMode) {
62
+ ServiceChargeEntitlementMode[ServiceChargeEntitlementMode["Points"] = 1] = "Points";
63
+ ServiceChargeEntitlementMode[ServiceChargeEntitlementMode["SalaryRatio"] = 2] = "SalaryRatio";
64
+ ServiceChargeEntitlementMode[ServiceChargeEntitlementMode["FixedAmount"] = 3] = "FixedAmount";
65
+ ServiceChargeEntitlementMode[ServiceChargeEntitlementMode["FixedRate"] = 4] = "FixedRate";
66
+ })(ServiceChargeEntitlementMode || (ServiceChargeEntitlementMode = {}));
67
+ var VacationPopupType;
68
+ (function (VacationPopupType) {
69
+ VacationPopupType[VacationPopupType["Upcoming"] = 1] = "Upcoming";
70
+ VacationPopupType[VacationPopupType["ExpectedToReturn"] = 2] = "ExpectedToReturn";
71
+ })(VacationPopupType || (VacationPopupType = {}));
57
72
 
58
73
  var ReportingTo$2 = "Reporting to";
59
74
  var NotAnknown$2 = "N\\A";
@@ -128,6 +143,38 @@ var City$2 = "City";
128
143
  var PostalCode$2 = "Postal code";
129
144
  var Phone$2 = "Phone";
130
145
  var Relation$2 = "Relation";
146
+ var jobMain$2 = "Job information";
147
+ var jobContract$2 = "Contract";
148
+ var jobSalary$2 = "Salary";
149
+ var jobServiceCharge$2 = "Service charge";
150
+ var AdminUnit$2 = "Admin unit";
151
+ var Position$2 = "Position";
152
+ var Grade$2 = "Grade";
153
+ var JoiningDate$2 = "Joining date";
154
+ var CorporateJoiningDate$2 = "Corporate joining date";
155
+ var Sponsor$2 = "Sponsor";
156
+ var ContractType$2 = "Contract type";
157
+ var ContractStartDate$2 = "Contract start date";
158
+ var ContractEndDate$2 = "Contract end date";
159
+ var ContractMaritalStatus$2 = "Contract marital status";
160
+ var ContractDependentsCount$2 = "Contract dependents count";
161
+ var BasicSalary$2 = "Basic salary";
162
+ var GrossSalary$2 = "Gross salary";
163
+ var ServiceChargeModePoints$2 = "Points";
164
+ var ServiceChargeModeSalaryRatio$2 = "Salary ratio";
165
+ var ServiceChargeModeFixedAmount$2 = "Fixed amount";
166
+ var ServiceChargeModeFixedRate$2 = "Fixed rate";
167
+ var ThereIsNoJobMainYet$2 = "There is no job information yet";
168
+ var ThereIsNoJobContractYet$2 = "There is no contract information yet";
169
+ var ThereIsNoJobSalaryYet$2 = "There is no salary information yet";
170
+ var ThereIsNoJobServiceChargeYet$2 = "There is no service charge information yet";
171
+ var NextWeekVacationInsights$2 = "Next week vacation insights";
172
+ var UpcomingVacations$2 = "Upcoming vacations";
173
+ var ExpectedToReturn$2 = "Expected to return";
174
+ var Employee$2 = "Employee";
175
+ var StartDate$2 = "Start date";
176
+ var EndDate$2 = "End date";
177
+ var ReturnDate$2 = "Return date";
131
178
  var en = {
132
179
  ReportingTo: ReportingTo$2,
133
180
  NotAnknown: NotAnknown$2,
@@ -202,7 +249,40 @@ var en = {
202
249
  "P.OBox": "P.O. box",
203
250
  PostalCode: PostalCode$2,
204
251
  Phone: Phone$2,
205
- Relation: Relation$2
252
+ Relation: Relation$2,
253
+ jobMain: jobMain$2,
254
+ jobContract: jobContract$2,
255
+ jobSalary: jobSalary$2,
256
+ jobServiceCharge: jobServiceCharge$2,
257
+ AdminUnit: AdminUnit$2,
258
+ Position: Position$2,
259
+ Grade: Grade$2,
260
+ JoiningDate: JoiningDate$2,
261
+ CorporateJoiningDate: CorporateJoiningDate$2,
262
+ Sponsor: Sponsor$2,
263
+ ContractType: ContractType$2,
264
+ ContractStartDate: ContractStartDate$2,
265
+ ContractEndDate: ContractEndDate$2,
266
+ ContractMaritalStatus: ContractMaritalStatus$2,
267
+ ContractDependentsCount: ContractDependentsCount$2,
268
+ BasicSalary: BasicSalary$2,
269
+ GrossSalary: GrossSalary$2,
270
+ ServiceChargeModePoints: ServiceChargeModePoints$2,
271
+ ServiceChargeModeSalaryRatio: ServiceChargeModeSalaryRatio$2,
272
+ ServiceChargeModeFixedAmount: ServiceChargeModeFixedAmount$2,
273
+ ServiceChargeModeFixedRate: ServiceChargeModeFixedRate$2,
274
+ ThereIsNoJobMainYet: ThereIsNoJobMainYet$2,
275
+ ThereIsNoJobContractYet: ThereIsNoJobContractYet$2,
276
+ ThereIsNoJobSalaryYet: ThereIsNoJobSalaryYet$2,
277
+ ThereIsNoJobServiceChargeYet: ThereIsNoJobServiceChargeYet$2,
278
+ NextWeekVacationInsights: NextWeekVacationInsights$2,
279
+ UpcomingVacations: UpcomingVacations$2,
280
+ ExpectedToReturn: ExpectedToReturn$2,
281
+ Employee: Employee$2,
282
+ StartDate: StartDate$2,
283
+ EndDate: EndDate$2,
284
+ ReturnDate: ReturnDate$2,
285
+ "Search...": "Search..."
206
286
  };
207
287
 
208
288
  var ReportingTo$1 = "مفوض الى";
@@ -278,6 +358,38 @@ var City$1 = "المدينة";
278
358
  var PostalCode$1 = "الرمز البريدي";
279
359
  var Phone$1 = "الهاتف";
280
360
  var Relation$1 = "العلاقة";
361
+ var jobMain$1 = "المعلومات الوظيفية";
362
+ var jobContract$1 = "العقد";
363
+ var jobSalary$1 = "الراتب";
364
+ var jobServiceCharge$1 = "مستحقات نهاية الخدمة";
365
+ var AdminUnit$1 = "الوحدة الإدارية";
366
+ var Position$1 = "المنصب";
367
+ var Grade$1 = "الدرجة";
368
+ var JoiningDate$1 = "تاريخ الالتحاق";
369
+ var CorporateJoiningDate$1 = "تاريخ الالتحاق بالشركة";
370
+ var Sponsor$1 = "الكفيل";
371
+ var ContractType$1 = "نوع العقد";
372
+ var ContractStartDate$1 = "تاريخ بداية العقد";
373
+ var ContractEndDate$1 = "تاريخ نهاية العقد";
374
+ var ContractMaritalStatus$1 = "الحالة الاجتماعية في العقد";
375
+ var ContractDependentsCount$1 = "عدد المعالين في العقد";
376
+ var BasicSalary$1 = "الراتب الأساسي";
377
+ var GrossSalary$1 = "إجمالي الراتب";
378
+ var ServiceChargeModePoints$1 = "نقاط";
379
+ var ServiceChargeModeSalaryRatio$1 = "نسبة من الراتب";
380
+ var ServiceChargeModeFixedAmount$1 = "مبلغ ثابت";
381
+ var ServiceChargeModeFixedRate$1 = "نسبة ثابتة";
382
+ var ThereIsNoJobMainYet$1 = "لا توجد معلومات وظيفية بعد";
383
+ var ThereIsNoJobContractYet$1 = "لا توجد معلومات عقد بعد";
384
+ var ThereIsNoJobSalaryYet$1 = "لا توجد معلومات راتب بعد";
385
+ var ThereIsNoJobServiceChargeYet$1 = "لا توجد معلومات مستحقات نهاية الخدمة بعد";
386
+ var NextWeekVacationInsights$1 = "رؤى إجازات الأسبوع القادم";
387
+ var UpcomingVacations$1 = "الإجازات القادمة";
388
+ var ExpectedToReturn$1 = "المتوقع عودتهم";
389
+ var Employee$1 = "الموظف";
390
+ var StartDate$1 = "تاريخ البداية";
391
+ var EndDate$1 = "تاريخ النهاية";
392
+ var ReturnDate$1 = "تاريخ العودة";
281
393
  var ar = {
282
394
  ReportingTo: ReportingTo$1,
283
395
  NotAnknown: NotAnknown$1,
@@ -352,7 +464,40 @@ var ar = {
352
464
  "P.OBox": "صندوق البريد",
353
465
  PostalCode: PostalCode$1,
354
466
  Phone: Phone$1,
355
- Relation: Relation$1
467
+ Relation: Relation$1,
468
+ jobMain: jobMain$1,
469
+ jobContract: jobContract$1,
470
+ jobSalary: jobSalary$1,
471
+ jobServiceCharge: jobServiceCharge$1,
472
+ AdminUnit: AdminUnit$1,
473
+ Position: Position$1,
474
+ Grade: Grade$1,
475
+ JoiningDate: JoiningDate$1,
476
+ CorporateJoiningDate: CorporateJoiningDate$1,
477
+ Sponsor: Sponsor$1,
478
+ ContractType: ContractType$1,
479
+ ContractStartDate: ContractStartDate$1,
480
+ ContractEndDate: ContractEndDate$1,
481
+ ContractMaritalStatus: ContractMaritalStatus$1,
482
+ ContractDependentsCount: ContractDependentsCount$1,
483
+ BasicSalary: BasicSalary$1,
484
+ GrossSalary: GrossSalary$1,
485
+ ServiceChargeModePoints: ServiceChargeModePoints$1,
486
+ ServiceChargeModeSalaryRatio: ServiceChargeModeSalaryRatio$1,
487
+ ServiceChargeModeFixedAmount: ServiceChargeModeFixedAmount$1,
488
+ ServiceChargeModeFixedRate: ServiceChargeModeFixedRate$1,
489
+ ThereIsNoJobMainYet: ThereIsNoJobMainYet$1,
490
+ ThereIsNoJobContractYet: ThereIsNoJobContractYet$1,
491
+ ThereIsNoJobSalaryYet: ThereIsNoJobSalaryYet$1,
492
+ ThereIsNoJobServiceChargeYet: ThereIsNoJobServiceChargeYet$1,
493
+ NextWeekVacationInsights: NextWeekVacationInsights$1,
494
+ UpcomingVacations: UpcomingVacations$1,
495
+ ExpectedToReturn: ExpectedToReturn$1,
496
+ Employee: Employee$1,
497
+ StartDate: StartDate$1,
498
+ EndDate: EndDate$1,
499
+ ReturnDate: ReturnDate$1,
500
+ "Search...": "بحث..."
356
501
  };
357
502
 
358
503
  var ReportingTo = "Rapport à";
@@ -428,6 +573,38 @@ var City = "Ville";
428
573
  var PostalCode = "Code postal";
429
574
  var Phone = "Téléphone";
430
575
  var Relation = "Relation";
576
+ var jobMain = "Informations professionnelles";
577
+ var jobContract = "Contrat";
578
+ var jobSalary = "Salaire";
579
+ var jobServiceCharge = "Indemnité de fin de service";
580
+ var AdminUnit = "Unité administrative";
581
+ var Position = "Poste";
582
+ var Grade = "Grade";
583
+ var JoiningDate = "Date d'embauche";
584
+ var CorporateJoiningDate = "Date d'embauche dans l'entreprise";
585
+ var Sponsor = "Sponsor";
586
+ var ContractType = "Type de contrat";
587
+ var ContractStartDate = "Date de début du contrat";
588
+ var ContractEndDate = "Date de fin du contrat";
589
+ var ContractMaritalStatus = "État civil du contrat";
590
+ var ContractDependentsCount = "Nombre de personnes à charge du contrat";
591
+ var BasicSalary = "Salaire de base";
592
+ var GrossSalary = "Salaire brut";
593
+ var ServiceChargeModePoints = "Points";
594
+ var ServiceChargeModeSalaryRatio = "Ratio du salaire";
595
+ var ServiceChargeModeFixedAmount = "Montant fixe";
596
+ var ServiceChargeModeFixedRate = "Taux fixe";
597
+ var ThereIsNoJobMainYet = "Il n'y a pas encore d'informations professionnelles";
598
+ var ThereIsNoJobContractYet = "Il n'y a pas encore d'informations de contrat";
599
+ var ThereIsNoJobSalaryYet = "Il n'y a pas encore d'informations salariales";
600
+ var ThereIsNoJobServiceChargeYet = "Il n'y a pas encore d'informations d'indemnité de fin de service";
601
+ var NextWeekVacationInsights = "Aperçu des vacances de la semaine prochaine";
602
+ var UpcomingVacations = "Vacances à venir";
603
+ var ExpectedToReturn = "Retour prévu";
604
+ var Employee = "Employé";
605
+ var StartDate = "Date de début";
606
+ var EndDate = "Date de fin";
607
+ var ReturnDate = "Date de retour";
431
608
  var fr = {
432
609
  ReportingTo: ReportingTo,
433
610
  NotAnknown: NotAnknown,
@@ -502,7 +679,40 @@ var fr = {
502
679
  "P.OBox": "Boîte postale",
503
680
  PostalCode: PostalCode,
504
681
  Phone: Phone,
505
- Relation: Relation
682
+ Relation: Relation,
683
+ jobMain: jobMain,
684
+ jobContract: jobContract,
685
+ jobSalary: jobSalary,
686
+ jobServiceCharge: jobServiceCharge,
687
+ AdminUnit: AdminUnit,
688
+ Position: Position,
689
+ Grade: Grade,
690
+ JoiningDate: JoiningDate,
691
+ CorporateJoiningDate: CorporateJoiningDate,
692
+ Sponsor: Sponsor,
693
+ ContractType: ContractType,
694
+ ContractStartDate: ContractStartDate,
695
+ ContractEndDate: ContractEndDate,
696
+ ContractMaritalStatus: ContractMaritalStatus,
697
+ ContractDependentsCount: ContractDependentsCount,
698
+ BasicSalary: BasicSalary,
699
+ GrossSalary: GrossSalary,
700
+ ServiceChargeModePoints: ServiceChargeModePoints,
701
+ ServiceChargeModeSalaryRatio: ServiceChargeModeSalaryRatio,
702
+ ServiceChargeModeFixedAmount: ServiceChargeModeFixedAmount,
703
+ ServiceChargeModeFixedRate: ServiceChargeModeFixedRate,
704
+ ThereIsNoJobMainYet: ThereIsNoJobMainYet,
705
+ ThereIsNoJobContractYet: ThereIsNoJobContractYet,
706
+ ThereIsNoJobSalaryYet: ThereIsNoJobSalaryYet,
707
+ ThereIsNoJobServiceChargeYet: ThereIsNoJobServiceChargeYet,
708
+ NextWeekVacationInsights: NextWeekVacationInsights,
709
+ UpcomingVacations: UpcomingVacations,
710
+ ExpectedToReturn: ExpectedToReturn,
711
+ Employee: Employee,
712
+ StartDate: StartDate,
713
+ EndDate: EndDate,
714
+ ReturnDate: ReturnDate,
715
+ "Search...": "Rechercher..."
506
716
  };
507
717
 
508
718
  const BUILT_IN_LEXICONS = { en, ar, fr };
@@ -604,6 +814,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
604
814
  }]
605
815
  }] });
606
816
 
817
+ class JobInformationCacheService {
818
+ baseUrl = '';
819
+ mainDetails$ = null;
820
+ contractDetails$ = null;
821
+ salaryDetails$ = null;
822
+ serviceChargeDetails$ = null;
823
+ getMainDetails(baseUrl) {
824
+ return this.baseUrl === baseUrl ? this.mainDetails$ : null;
825
+ }
826
+ setMainDetails(baseUrl, value) {
827
+ this.ensureBaseUrl(baseUrl);
828
+ this.mainDetails$ = value;
829
+ }
830
+ getContractDetails(baseUrl) {
831
+ return this.baseUrl === baseUrl ? this.contractDetails$ : null;
832
+ }
833
+ setContractDetails(baseUrl, value) {
834
+ this.ensureBaseUrl(baseUrl);
835
+ this.contractDetails$ = value;
836
+ }
837
+ getSalaryDetails(baseUrl) {
838
+ return this.baseUrl === baseUrl ? this.salaryDetails$ : null;
839
+ }
840
+ setSalaryDetails(baseUrl, value) {
841
+ this.ensureBaseUrl(baseUrl);
842
+ this.salaryDetails$ = value;
843
+ }
844
+ getServiceChargeDetails(baseUrl) {
845
+ return this.baseUrl === baseUrl ? this.serviceChargeDetails$ : null;
846
+ }
847
+ setServiceChargeDetails(baseUrl, value) {
848
+ this.ensureBaseUrl(baseUrl);
849
+ this.serviceChargeDetails$ = value;
850
+ }
851
+ clear() {
852
+ this.baseUrl = '';
853
+ this.mainDetails$ = null;
854
+ this.contractDetails$ = null;
855
+ this.salaryDetails$ = null;
856
+ this.serviceChargeDetails$ = null;
857
+ }
858
+ ensureBaseUrl(baseUrl) {
859
+ if (this.baseUrl && this.baseUrl !== baseUrl) {
860
+ this.clear();
861
+ }
862
+ this.baseUrl = baseUrl;
863
+ }
864
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: JobInformationCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
865
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: JobInformationCacheService, providedIn: 'root' });
866
+ }
867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: JobInformationCacheService, decorators: [{
868
+ type: Injectable,
869
+ args: [{
870
+ providedIn: 'root'
871
+ }]
872
+ }] });
873
+
607
874
  class PersonalInformationCacheService {
608
875
  baseUrl = '';
609
876
  mainDetails$ = null;
@@ -673,11 +940,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
673
940
  class HRSelfWidgetsService {
674
941
  http;
675
942
  bankInformationCacheService;
943
+ jobInformationCacheService;
676
944
  personalInformationCacheService;
677
945
  headers = { 'api-version': '1' };
678
- constructor(http, bankInformationCacheService, personalInformationCacheService) {
946
+ constructor(http, bankInformationCacheService, jobInformationCacheService, personalInformationCacheService) {
679
947
  this.http = http;
680
948
  this.bankInformationCacheService = bankInformationCacheService;
949
+ this.jobInformationCacheService = jobInformationCacheService;
681
950
  this.personalInformationCacheService = personalInformationCacheService;
682
951
  }
683
952
  getMainDetails(baseUrl) {
@@ -810,10 +1079,92 @@ class HRSelfWidgetsService {
810
1079
  this.personalInformationCacheService.setOtherNationalities(baseUrl, request$);
811
1080
  return request$;
812
1081
  }
1082
+ getJobInformationMain(baseUrl, forceRefresh = false) {
1083
+ if (!forceRefresh) {
1084
+ const cachedRequest$ = this.jobInformationCacheService.getMainDetails(baseUrl);
1085
+ if (cachedRequest$) {
1086
+ return cachedRequest$;
1087
+ }
1088
+ }
1089
+ const request$ = this.http
1090
+ .get(`${baseUrl}/hr/widgets/me/profile/job-information/main`, {
1091
+ headers: this.headers
1092
+ })
1093
+ .pipe(map((response) => response?.ResponseData ?? null), shareReplay(1), catchError((error) => {
1094
+ this.jobInformationCacheService.clear();
1095
+ return throwError(() => error);
1096
+ }));
1097
+ this.jobInformationCacheService.setMainDetails(baseUrl, request$);
1098
+ return request$;
1099
+ }
1100
+ getJobInformationContract(baseUrl, forceRefresh = false) {
1101
+ if (!forceRefresh) {
1102
+ const cachedRequest$ = this.jobInformationCacheService.getContractDetails(baseUrl);
1103
+ if (cachedRequest$) {
1104
+ return cachedRequest$;
1105
+ }
1106
+ }
1107
+ const request$ = this.http
1108
+ .get(`${baseUrl}/hr/widgets/me/profile/job-information/contract`, {
1109
+ headers: this.headers
1110
+ })
1111
+ .pipe(map((response) => response?.ResponseData ?? null), shareReplay(1), catchError((error) => {
1112
+ this.jobInformationCacheService.clear();
1113
+ return throwError(() => error);
1114
+ }));
1115
+ this.jobInformationCacheService.setContractDetails(baseUrl, request$);
1116
+ return request$;
1117
+ }
1118
+ getJobInformationSalary(baseUrl, forceRefresh = false) {
1119
+ if (!forceRefresh) {
1120
+ const cachedRequest$ = this.jobInformationCacheService.getSalaryDetails(baseUrl);
1121
+ if (cachedRequest$) {
1122
+ return cachedRequest$;
1123
+ }
1124
+ }
1125
+ const request$ = this.http
1126
+ .get(`${baseUrl}/hr/widgets/me/profile/job-information/salary`, {
1127
+ headers: this.headers
1128
+ })
1129
+ .pipe(map((response) => response?.ResponseData ?? null), shareReplay(1), catchError((error) => {
1130
+ this.jobInformationCacheService.clear();
1131
+ return throwError(() => error);
1132
+ }));
1133
+ this.jobInformationCacheService.setSalaryDetails(baseUrl, request$);
1134
+ return request$;
1135
+ }
1136
+ getJobInformationServiceCharge(baseUrl, forceRefresh = false) {
1137
+ if (!forceRefresh) {
1138
+ const cachedRequest$ = this.jobInformationCacheService.getServiceChargeDetails(baseUrl);
1139
+ if (cachedRequest$) {
1140
+ return cachedRequest$;
1141
+ }
1142
+ }
1143
+ const request$ = this.http
1144
+ .get(`${baseUrl}/hr/widgets/me/profile/job-information/service-charge`, {
1145
+ headers: this.headers
1146
+ })
1147
+ .pipe(map((response) => response?.ResponseData ?? null), shareReplay(1), catchError((error) => {
1148
+ this.jobInformationCacheService.clear();
1149
+ return throwError(() => error);
1150
+ }));
1151
+ this.jobInformationCacheService.setServiceChargeDetails(baseUrl, request$);
1152
+ return request$;
1153
+ }
813
1154
  clearPersonalInformationCache() {
814
1155
  this.personalInformationCacheService.clear();
815
1156
  }
816
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRSelfWidgetsService, deps: [{ token: i1.HttpClient }, { token: BankInformationCacheService }, { token: PersonalInformationCacheService }], target: i0.ɵɵFactoryTarget.Injectable });
1157
+ clearJobInformationCache() {
1158
+ this.jobInformationCacheService.clear();
1159
+ }
1160
+ getVacationSummary(baseUrl) {
1161
+ const params = new HttpParams().set('ShowDirectSubordinatesOnly', 'false');
1162
+ return this.http.get(`${baseUrl}/hr/widgets/me/team/subordinates/vacations/summary`, {
1163
+ params,
1164
+ headers: this.headers
1165
+ });
1166
+ }
1167
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRSelfWidgetsService, deps: [{ token: i1.HttpClient }, { token: BankInformationCacheService }, { token: JobInformationCacheService }, { token: PersonalInformationCacheService }], target: i0.ɵɵFactoryTarget.Injectable });
817
1168
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRSelfWidgetsService, providedIn: 'root' });
818
1169
  }
819
1170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRSelfWidgetsService, decorators: [{
@@ -821,7 +1172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
821
1172
  args: [{
822
1173
  providedIn: 'root'
823
1174
  }]
824
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: BankInformationCacheService }, { type: PersonalInformationCacheService }] });
1175
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: BankInformationCacheService }, { type: JobInformationCacheService }, { type: PersonalInformationCacheService }] });
825
1176
 
826
1177
  class HRConstantsService {
827
1178
  defaultVacationBalanceColor = '#727070';
@@ -1867,10 +2218,11 @@ class ProfileBankInformationWidgetComponent {
1867
2218
  this.employeeBankInformation = response ?? [];
1868
2219
  this.isLoadingChanged.emit(false);
1869
2220
  },
1870
- error: () => {
2221
+ error: (error) => {
1871
2222
  this.isLoading = false;
1872
2223
  this.employeeBankInformation = [];
1873
2224
  this.isLoadingChanged.emit(false);
2225
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1874
2226
  }
1875
2227
  });
1876
2228
  }
@@ -1891,7 +2243,7 @@ class ProfileBankInformationWidgetComponent {
1891
2243
  responsiveTopSpacingColClass = 'col-md-4 col-6 mt-md-0 mt-4';
1892
2244
  topSpacingColClass = 'col-md-4 col-6 mt-4';
1893
2245
  labelClass = 'field-secondary-label-sm';
1894
- valueClass = 'table-cell-md';
2246
+ valueClass = 'table-cell-md text-ellipsis-one-line';
1895
2247
  emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
1896
2248
  emptyStateTextClass = 'field-secondary-label-md';
1897
2249
  bankInformationIcon = faMoneyCheckDollarPen;
@@ -1899,8 +2251,14 @@ class ProfileBankInformationWidgetComponent {
1899
2251
  sectionTitle = 'BankInformation';
1900
2252
  language = 'en';
1901
2253
  baseUrl = '';
2254
+ errorOccurred = new EventEmitter();
1902
2255
  isRTL = this.language === 'ar';
1903
2256
  isLoadingChanged = new EventEmitter();
2257
+ ngOnChanges(changes) {
2258
+ if (changes['language']) {
2259
+ this.isRTL = this.language === 'ar';
2260
+ }
2261
+ }
1904
2262
  formatAmount(value) {
1905
2263
  if (value == null) {
1906
2264
  return '-';
@@ -1908,7 +2266,7 @@ class ProfileBankInformationWidgetComponent {
1908
2266
  return this.commonMethodsService.currencyDecimalFormat(value, this.currencyDecimals) || '-';
1909
2267
  }
1910
2268
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileBankInformationWidgetComponent, deps: [{ token: HRCommonMethodsService }, { token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
1911
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileBankInformationWidgetComponent, isStandalone: true, selector: "hr-profile-bank-information-widget", inputs: { currencyCode: "currencyCode", currencyDecimals: "currencyDecimals", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", cardClass: "cardClass", mainBadgeClass: "mainBadgeClass", mainBadgeTextClass: "mainBadgeTextClass", triangleClass: "triangleClass", rowClass: "rowClass", rowMainPtClass: "rowMainPtClass", rowNormalPtClass: "rowNormalPtClass", columnClass: "columnClass", responsiveTopSpacingColClass: "responsiveTopSpacingColClass", topSpacingColClass: "topSpacingColClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", bankInformationIcon: "bankInformationIcon", sectionHeaderVisibility: "sectionHeaderVisibility", sectionTitle: "sectionTitle", language: "language", baseUrl: "baseUrl" }, outputs: { isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "@if(sectionHeaderVisibility){\r\n<sky-section-divider [fontAwesomeIcon]=\"bankInformationIcon\"\r\n [text]=\"(sectionTitle | HRTranslate|uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n}\r\n@if(employeeBankInformation.length > 0){\r\n@for (bankInfo of employeeBankInformation; track bankInfo){\r\n<div [class]=\"cardClass\">\r\n @if(bankInfo.IsMainBank && employeeBankInformation.length > 1){\r\n <div [class]=\"mainBadgeClass\"\r\n style=\"padding-top: 2px\"\r\n [style.margin-left]=\"!isRTL ? '-6px' : 'unset'\">\r\n <span [class]=\"mainBadgeTextClass\">{{'MainBank' | HRTranslate}}</span>\r\n </div>\r\n\r\n <div [class]=\"triangleClass\"\r\n [style.margin-left]=\"!isRTL ? '-6px' : 'unset'\"\r\n [style.margin-right]=\"isRTL ? '-5px' : '20px'\"\r\n [style.margin-top]=\"!isRTL ? '7px' : '4px'\">\r\n <svg viewBox=\"4 2 16 16\" class=\"status-badge-triangle\" fill=\"#e67e0f\">\r\n <path d=\"m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z\"></path>\r\n </svg>\r\n </div>\r\n }\r\n\r\n <div [ngClass]=\"[rowClass, bankInfo.IsMainBank ? rowMainPtClass : rowNormalPtClass]\">\r\n <div [class]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Bank'\"\r\n [value]=\"bankInfo.BankName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Branch'\"\r\n [value]=\"bankInfo.BranchName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"responsiveTopSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'IBAN'\"\r\n [value]=\"bankInfo.IBAN\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'AccountNumber'\"\r\n [value]=\"bankInfo.AccountNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'Beneficiary'\"\r\n [value]=\"bankInfo.Beneficiary\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n @if(bankInfo.TransferAmount != null){\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'TransferAmount'\"\r\n [value]=\"formatAmount(bankInfo.TransferAmount) + ' (' + currencyCode + ')'\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoBankYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2269
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileBankInformationWidgetComponent, isStandalone: true, selector: "hr-profile-bank-information-widget", inputs: { currencyCode: "currencyCode", currencyDecimals: "currencyDecimals", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", cardClass: "cardClass", mainBadgeClass: "mainBadgeClass", mainBadgeTextClass: "mainBadgeTextClass", triangleClass: "triangleClass", rowClass: "rowClass", rowMainPtClass: "rowMainPtClass", rowNormalPtClass: "rowNormalPtClass", columnClass: "columnClass", responsiveTopSpacingColClass: "responsiveTopSpacingColClass", topSpacingColClass: "topSpacingColClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", bankInformationIcon: "bankInformationIcon", sectionHeaderVisibility: "sectionHeaderVisibility", sectionTitle: "sectionTitle", language: "language", baseUrl: "baseUrl" }, outputs: { errorOccurred: "errorOccurred", isLoadingChanged: "isLoadingChanged" }, usesOnChanges: true, ngImport: i0, template: "@if(sectionHeaderVisibility){\r\n<sky-section-divider [fontAwesomeIcon]=\"bankInformationIcon\"\r\n [text]=\"(sectionTitle | HRTranslate|uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n}\r\n@if(employeeBankInformation.length > 0){\r\n@for (bankInfo of employeeBankInformation; track bankInfo){\r\n<div [class]=\"cardClass\">\r\n @if(bankInfo.IsMainBank && employeeBankInformation.length > 1){\r\n <div [class]=\"mainBadgeClass\"\r\n style=\"padding-top: 2px\"\r\n [style.margin-left]=\"!isRTL ? '-6px' : 'unset'\">\r\n <span [class]=\"mainBadgeTextClass\">{{'MainBank' | HRTranslate}}</span>\r\n </div>\r\n\r\n <div [class]=\"triangleClass\"\r\n [style.margin-left]=\"!isRTL ? '-6px' : 'unset'\"\r\n [style.margin-right]=\"isRTL ? '-5px' : '20px'\"\r\n [style.margin-top]=\"!isRTL ? '7px' : '4px'\">\r\n <svg viewBox=\"4 2 16 16\" class=\"status-badge-triangle\" fill=\"#e67e0f\">\r\n <path d=\"m3.86 8.753 5.482 4.796c.646.566 1.658.106 1.658-.753V3.204a1 1 0 0 0-1.659-.753l-5.48 4.796a1 1 0 0 0 0 1.506z\"></path>\r\n </svg>\r\n </div>\r\n }\r\n\r\n <div [ngClass]=\"[rowClass, bankInfo.IsMainBank ? rowMainPtClass : rowNormalPtClass]\">\r\n <div [class]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Bank'\"\r\n [value]=\"bankInfo.BankName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Branch'\"\r\n [value]=\"bankInfo.BranchName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"responsiveTopSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'IBAN'\"\r\n [value]=\"bankInfo.IBAN\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'AccountNumber'\"\r\n [value]=\"bankInfo.AccountNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'Beneficiary'\"\r\n [value]=\"bankInfo.Beneficiary\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n @if(bankInfo.TransferAmount != null){\r\n <div [class]=\"topSpacingColClass\">\r\n <hr-info-field [labelKey]=\"'TransferAmount'\"\r\n [value]=\"formatAmount(bankInfo.TransferAmount) + ' (' + currencyCode + ')'\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoBankYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
1912
2270
  }
1913
2271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileBankInformationWidgetComponent, decorators: [{
1914
2272
  type: Component,
@@ -1962,6 +2320,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1962
2320
  }], baseUrl: [{
1963
2321
  type: Input,
1964
2322
  args: [{ required: true }]
2323
+ }], errorOccurred: [{
2324
+ type: Output
1965
2325
  }], isLoadingChanged: [{
1966
2326
  type: Output
1967
2327
  }] } });
@@ -1988,6 +2348,7 @@ class ProfilePersonalInfoMainWidgetComponent {
1988
2348
  mainIcon = faMemoCircleInfo;
1989
2349
  sectionTitle = 'main';
1990
2350
  isLoadingChanged = new EventEmitter();
2351
+ errorOccurred = new EventEmitter();
1991
2352
  constructor(hrSelfWidgetsService) {
1992
2353
  this.hrSelfWidgetsService = hrSelfWidgetsService;
1993
2354
  }
@@ -2003,15 +2364,16 @@ class ProfilePersonalInfoMainWidgetComponent {
2003
2364
  this.isLoadingChanged.emit(false);
2004
2365
  this.employeePersonalInformation = response;
2005
2366
  },
2006
- error: () => {
2367
+ error: (error) => {
2007
2368
  this.isLoading = false;
2008
2369
  this.isLoadingChanged.emit(false);
2009
2370
  this.employeePersonalInformation = null;
2371
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2010
2372
  }
2011
2373
  });
2012
2374
  }
2013
2375
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoMainWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2014
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoMainWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-main-widget", inputs: { baseUrl: "baseUrl", alternateLanguage: "alternateLanguage", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", hiddenSpacerColClass: "hiddenSpacerColClass", topSpacingColumnClass: "topSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", mainIcon: "mainIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"mainIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(employeePersonalInformation){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Name'\"\r\n [value]=\"employeePersonalInformation.EmployeeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{'Name' | HRTranslate}} ({{alternateLanguage}})</div>\r\n @if(employeePersonalInformation.EmployeeNameAlternate){\r\n <div [ngClass]=\"valueClass\">{{employeePersonalInformation.EmployeeNameAlternate}}</div>\r\n }@else{\r\n <div [ngClass]=\"valueClass\">{{'\u2014'}}</div>\r\n }\r\n </div>\r\n\r\n <div [ngClass]=\"hiddenSpacerColClass\"></div>\r\n\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Nationality'\"\r\n [value]=\"employeePersonalInformation.NationalityName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'NationalNumber'\"\r\n [value]=\"employeePersonalInformation.NationalNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'SocialSecurityNumber'\"\r\n [value]=\"employeePersonalInformation.SocialSecurityNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'MaritalStatus'\"\r\n [value]=\"employeePersonalInformation.MaritalStateName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BirthDate'\"\r\n [value]=\"employeePersonalInformation.BirthDate ? (employeePersonalInformation.BirthDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BirthPlace'\"\r\n [value]=\"employeePersonalInformation.BirthPlace\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BloodType'\"\r\n [value]=\"employeePersonalInformation.BloodTypeCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Religion'\"\r\n [value]=\"employeePersonalInformation.ReligionName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'MinistryOfLaborNumber'\"\r\n [value]=\"employeePersonalInformation.MinistryOfLaborNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoMainYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoMainWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-main-widget", inputs: { baseUrl: "baseUrl", alternateLanguage: "alternateLanguage", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", hiddenSpacerColClass: "hiddenSpacerColClass", topSpacingColumnClass: "topSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", mainIcon: "mainIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"mainIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(employeePersonalInformation){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Name'\"\r\n [value]=\"employeePersonalInformation.EmployeeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{'Name' | HRTranslate}} ({{alternateLanguage}})</div>\r\n @if(employeePersonalInformation.EmployeeNameAlternate){\r\n <div [ngClass]=\"valueClass\">{{employeePersonalInformation.EmployeeNameAlternate}}</div>\r\n }@else{\r\n <div [ngClass]=\"valueClass\">{{'\u2014'}}</div>\r\n }\r\n </div>\r\n\r\n <div [ngClass]=\"hiddenSpacerColClass\"></div>\r\n\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Nationality'\"\r\n [value]=\"employeePersonalInformation.NationalityName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'NationalNumber'\"\r\n [value]=\"employeePersonalInformation.NationalNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'SocialSecurityNumber'\"\r\n [value]=\"employeePersonalInformation.SocialSecurityNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'MaritalStatus'\"\r\n [value]=\"employeePersonalInformation.MaritalStateName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BirthDate'\"\r\n [value]=\"employeePersonalInformation.BirthDate ? (employeePersonalInformation.BirthDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BirthPlace'\"\r\n [value]=\"employeePersonalInformation.BirthPlace\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'BloodType'\"\r\n [value]=\"employeePersonalInformation.BloodTypeCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Religion'\"\r\n [value]=\"employeePersonalInformation.ReligionName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'MinistryOfLaborNumber'\"\r\n [value]=\"employeePersonalInformation.MinistryOfLaborNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoMainYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2015
2377
  }
2016
2378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoMainWidgetComponent, decorators: [{
2017
2379
  type: Component,
@@ -2053,6 +2415,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2053
2415
  type: Input
2054
2416
  }], isLoadingChanged: [{
2055
2417
  type: Output
2418
+ }], errorOccurred: [{
2419
+ type: Output
2056
2420
  }] } });
2057
2421
 
2058
2422
  class ProfilePersonalInfoContactWidgetComponent {
@@ -2070,7 +2434,7 @@ class ProfilePersonalInfoContactWidgetComponent {
2070
2434
  topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
2071
2435
  labelClass = 'field-secondary-label-sm';
2072
2436
  valueClass = 'fs-14 fw-medium';
2073
- emergencyContactLabelClass = 'fs-14 fw-semi-bold';
2437
+ emergencyContactLabelClass = 'fs-14 fw-semibold';
2074
2438
  emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2075
2439
  emptyStateTextClass = 'field-secondary-label-md';
2076
2440
  contactIcon = faPhone;
@@ -2079,6 +2443,7 @@ class ProfilePersonalInfoContactWidgetComponent {
2079
2443
  showEmergencyContact = true;
2080
2444
  emergencyContactRowClass = 'row mt-3 mb-4';
2081
2445
  isLoadingChanged = new EventEmitter();
2446
+ errorOccurred = new EventEmitter();
2082
2447
  constructor(hrSelfWidgetsService) {
2083
2448
  this.hrSelfWidgetsService = hrSelfWidgetsService;
2084
2449
  }
@@ -2094,15 +2459,16 @@ class ProfilePersonalInfoContactWidgetComponent {
2094
2459
  this.isLoadingChanged.emit(false);
2095
2460
  this.employeePersonalInfoContactDetails = response;
2096
2461
  },
2097
- error: () => {
2462
+ error: (error) => {
2098
2463
  this.isLoading = false;
2099
2464
  this.isLoadingChanged.emit(false);
2100
2465
  this.employeePersonalInfoContactDetails = null;
2466
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2101
2467
  }
2102
2468
  });
2103
2469
  }
2104
2470
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoContactWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2105
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoContactWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-contact-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emergencyContactLabelClass: "emergencyContactLabelClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", contactIcon: "contactIcon", emergencyContactIcon: "emergencyContactIcon", sectionTitle: "sectionTitle", showEmergencyContact: "showEmergencyContact", emergencyContactRowClass: "emergencyContactRowClass" }, outputs: { isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"contactIcon\"\r\n [text]=\"(sectionTitle | HRTranslate|uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(employeePersonalInfoContactDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'MobileNumber'\"\r\n [value]=\"employeePersonalInfoContactDetails.MobileNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'HomePhone'\"\r\n [value]=\"employeePersonalInfoContactDetails.HomePhone\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n \r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Email'\"\r\n [value]=\"employeePersonalInfoContactDetails.Email\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n@if(showEmergencyContact)\r\n{\r\n<div [ngClass]=\"rowClass\">\r\n <div class=\"col-12\">\r\n <div [ngClass]=\"emergencyContactLabelClass\">\r\n &#x2022; {{'EmergencyContact' | HRTranslate}}\r\n </div>\r\n </div>\r\n</div>\r\n<div [ngClass]=\"emergencyContactRowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Name'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.Name || employeePersonalInfoContactDetails.EmergencyContactLegacy\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Relation'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.Relation\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Phone'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.PhoneNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoContactYet' | HRTranslate)}}</p>\r\n</div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2471
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoContactWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-contact-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emergencyContactLabelClass: "emergencyContactLabelClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", contactIcon: "contactIcon", emergencyContactIcon: "emergencyContactIcon", sectionTitle: "sectionTitle", showEmergencyContact: "showEmergencyContact", emergencyContactRowClass: "emergencyContactRowClass" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"contactIcon\"\r\n [text]=\"(sectionTitle | HRTranslate|uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(employeePersonalInfoContactDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'MobileNumber'\"\r\n [value]=\"employeePersonalInfoContactDetails.MobileNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'HomePhone'\"\r\n [value]=\"employeePersonalInfoContactDetails.HomePhone\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n \r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Email'\"\r\n [value]=\"employeePersonalInfoContactDetails.Email\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n@if(showEmergencyContact)\r\n{\r\n<div [ngClass]=\"rowClass\">\r\n <div class=\"col-12\">\r\n <div [ngClass]=\"emergencyContactLabelClass\">\r\n &#x2022; {{'EmergencyContact' | HRTranslate}}\r\n </div>\r\n </div>\r\n</div>\r\n<div [ngClass]=\"emergencyContactRowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Name'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.Name || employeePersonalInfoContactDetails.EmergencyContactLegacy\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Relation'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.Relation\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Phone'\"\r\n [value]=\"employeePersonalInfoContactDetails.EmergencyContact?.PhoneNumber\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoContactYet' | HRTranslate)}}</p>\r\n</div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2106
2472
  }
2107
2473
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoContactWidgetComponent, decorators: [{
2108
2474
  type: Component,
@@ -2148,85 +2514,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2148
2514
  type: Input
2149
2515
  }], isLoadingChanged: [{
2150
2516
  type: Output
2151
- }] } });
2152
-
2153
- class ProfilePersonalInfoAddressWidgetComponent {
2154
- hrSelfWidgetsService;
2155
- personalInfoAddressDetails = null;
2156
- isLoading = true;
2157
- baseUrl = '';
2158
- headerIconClass = 'primary-icon-xl';
2159
- headerTextClass = 'fs-16 mt-2 text-secondary';
2160
- headerDividerClass = 'flex-grow-1 ms-2';
2161
- rowClass = 'row mt-4';
2162
- columnClass = 'col-md-4 col-6';
2163
- responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
2164
- topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
2165
- labelClass = 'field-secondary-label-sm';
2166
- valueClass = 'fs-14 fw-medium';
2167
- emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2168
- emptyStateTextClass = 'field-secondary-label-md';
2169
- addressIcon = faHouse;
2170
- sectionTitle = 'address';
2171
- isLoadingChanged = new EventEmitter();
2172
- constructor(hrSelfWidgetsService) {
2173
- this.hrSelfWidgetsService = hrSelfWidgetsService;
2174
- }
2175
- ngOnInit() {
2176
- if (!this.baseUrl) {
2177
- this.isLoading = false;
2178
- return;
2179
- }
2180
- this.isLoadingChanged.emit(true);
2181
- this.hrSelfWidgetsService.getPersonalInfoAddressDetails(this.baseUrl).subscribe({
2182
- next: (response) => {
2183
- this.isLoading = false;
2184
- this.isLoadingChanged.emit(false);
2185
- this.personalInfoAddressDetails = response;
2186
- },
2187
- error: () => {
2188
- this.isLoading = false;
2189
- this.isLoadingChanged.emit(false);
2190
- this.personalInfoAddressDetails = null;
2191
- }
2192
- });
2193
- }
2194
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoAddressWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2195
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoAddressWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-address-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", addressIcon: "addressIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"addressIcon\"\r\n [text]=\"( sectionTitle | HRTranslate | uppercase )\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(personalInfoAddressDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Address'\"\r\n [value]=\"personalInfoAddressDetails.Address\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'City'\"\r\n [value]=\"personalInfoAddressDetails.City\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'P.OBox'\"\r\n [value]=\"personalInfoAddressDetails.POBox\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'PostalCode'\"\r\n [value]=\"personalInfoAddressDetails.PostalCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoAddressYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2196
- }
2197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoAddressWidgetComponent, decorators: [{
2198
- type: Component,
2199
- args: [{ selector: 'hr-profile-personal-info-address-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"addressIcon\"\r\n [text]=\"( sectionTitle | HRTranslate | uppercase )\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(personalInfoAddressDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Address'\"\r\n [value]=\"personalInfoAddressDetails.Address\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'City'\"\r\n [value]=\"personalInfoAddressDetails.City\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'P.OBox'\"\r\n [value]=\"personalInfoAddressDetails.POBox\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'PostalCode'\"\r\n [value]=\"personalInfoAddressDetails.PostalCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoAddressYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
2200
- }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
2201
- type: Input,
2202
- args: [{ required: true }]
2203
- }], headerIconClass: [{
2204
- type: Input
2205
- }], headerTextClass: [{
2206
- type: Input
2207
- }], headerDividerClass: [{
2208
- type: Input
2209
- }], rowClass: [{
2210
- type: Input
2211
- }], columnClass: [{
2212
- type: Input
2213
- }], responsiveTopSpacingColumnClass: [{
2214
- type: Input
2215
- }], topSpacingBottomSpacingColumnClass: [{
2216
- type: Input
2217
- }], labelClass: [{
2218
- type: Input
2219
- }], valueClass: [{
2220
- type: Input
2221
- }], emptyStateContainerClass: [{
2222
- type: Input
2223
- }], emptyStateTextClass: [{
2224
- type: Input
2225
- }], addressIcon: [{
2226
- type: Input
2227
- }], sectionTitle: [{
2228
- type: Input
2229
- }], isLoadingChanged: [{
2517
+ }], errorOccurred: [{
2230
2518
  type: Output
2231
2519
  }] } });
2232
2520
 
@@ -2245,6 +2533,7 @@ class ProfilePersonalInfoLanguagesWidgetComponent {
2245
2533
  languagesIcon = faLanguage;
2246
2534
  sectionTitle = "languages";
2247
2535
  isLoadingChanged = new EventEmitter();
2536
+ errorOccurred = new EventEmitter();
2248
2537
  constructor(hrSelfWidgetsService) {
2249
2538
  this.hrSelfWidgetsService = hrSelfWidgetsService;
2250
2539
  }
@@ -2262,11 +2551,12 @@ class ProfilePersonalInfoLanguagesWidgetComponent {
2262
2551
  this.languages = response ?? [];
2263
2552
  this.emitHasData();
2264
2553
  },
2265
- error: () => {
2554
+ error: (error) => {
2266
2555
  this.isLoading = false;
2267
2556
  this.languages = [];
2268
2557
  this.emitHasData();
2269
2558
  this.isLoadingChanged.emit(false);
2559
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2270
2560
  }
2271
2561
  });
2272
2562
  }
@@ -2277,7 +2567,7 @@ class ProfilePersonalInfoLanguagesWidgetComponent {
2277
2567
  return this.languages?.join(', ') || '-';
2278
2568
  }
2279
2569
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoLanguagesWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2280
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoLanguagesWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-languages-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", contentTextClass: "contentTextClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", languagesIcon: "languagesIcon", sectionTitle: "sectionTitle" }, outputs: { hasDataChange: "hasDataChange", isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"languagesIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if((languages?.length ?? 0) > 0){\r\n<div [ngClass]=\"contentTextClass\">\r\n {{getLanguages()}}\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoLanguagesYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
2570
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoLanguagesWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-languages-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", contentTextClass: "contentTextClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", languagesIcon: "languagesIcon", sectionTitle: "sectionTitle" }, outputs: { hasDataChange: "hasDataChange", isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"languagesIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if((languages?.length ?? 0) > 0){\r\n<div [ngClass]=\"contentTextClass\">\r\n {{getLanguages()}}\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoLanguagesYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
2281
2571
  }
2282
2572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoLanguagesWidgetComponent, decorators: [{
2283
2573
  type: Component,
@@ -2304,6 +2594,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2304
2594
  type: Input
2305
2595
  }], isLoadingChanged: [{
2306
2596
  type: Output
2597
+ }], errorOccurred: [{
2598
+ type: Output
2307
2599
  }] } });
2308
2600
 
2309
2601
  class ProfilePersonalInfoOtherNationalitiesWidgetComponent {
@@ -2320,6 +2612,7 @@ class ProfilePersonalInfoOtherNationalitiesWidgetComponent {
2320
2612
  emptyStateTextKey = 'ThereIsNoOtherNationalitiesYet';
2321
2613
  hasDataChange = new EventEmitter();
2322
2614
  isLoadingChanged = new EventEmitter();
2615
+ errorOccurred = new EventEmitter();
2323
2616
  otherNationalitiesIcon = faEarthAfrica;
2324
2617
  sectionTitle = 'otherNationalities';
2325
2618
  constructor(hrSelfWidgetsService) {
@@ -2339,11 +2632,12 @@ class ProfilePersonalInfoOtherNationalitiesWidgetComponent {
2339
2632
  this.personalInfo = response ?? [];
2340
2633
  this.emitHasData();
2341
2634
  },
2342
- error: () => {
2635
+ error: (error) => {
2343
2636
  this.isLoading = false;
2344
2637
  this.isLoadingChanged.emit(false);
2345
2638
  this.personalInfo = [];
2346
2639
  this.emitHasData();
2640
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2347
2641
  }
2348
2642
  });
2349
2643
  }
@@ -2354,7 +2648,7 @@ class ProfilePersonalInfoOtherNationalitiesWidgetComponent {
2354
2648
  return this.personalInfo?.join(', ') || '-';
2355
2649
  }
2356
2650
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoOtherNationalitiesWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2357
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoOtherNationalitiesWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-other-nationalities-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", contentTextClass: "contentTextClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", emptyStateTextKey: "emptyStateTextKey", otherNationalitiesIcon: "otherNationalitiesIcon", sectionTitle: "sectionTitle" }, outputs: { hasDataChange: "hasDataChange", isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"otherNationalitiesIcon\"\r\n [text]=\"( sectionTitle | HRTranslate |uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if((personalInfo?.length ?? 0) > 0){\r\n<div [ngClass]=\"contentTextClass\">\r\n {{getOtherNationalities()}}\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : (emptyStateTextKey | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
2651
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoOtherNationalitiesWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-other-nationalities-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", contentTextClass: "contentTextClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", emptyStateTextKey: "emptyStateTextKey", otherNationalitiesIcon: "otherNationalitiesIcon", sectionTitle: "sectionTitle" }, outputs: { hasDataChange: "hasDataChange", isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"otherNationalitiesIcon\"\r\n [text]=\"( sectionTitle | HRTranslate |uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if((personalInfo?.length ?? 0) > 0){\r\n<div [ngClass]=\"contentTextClass\">\r\n {{getOtherNationalities()}}\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : (emptyStateTextKey | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
2358
2652
  }
2359
2653
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoOtherNationalitiesWidgetComponent, decorators: [{
2360
2654
  type: Component,
@@ -2380,12 +2674,683 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2380
2674
  type: Output
2381
2675
  }], isLoadingChanged: [{
2382
2676
  type: Output
2677
+ }], errorOccurred: [{
2678
+ type: Output
2383
2679
  }], otherNationalitiesIcon: [{
2384
2680
  type: Input
2385
2681
  }], sectionTitle: [{
2386
2682
  type: Input
2387
2683
  }] } });
2388
2684
 
2685
+ class ProfilePersonalInfoAddressWidgetComponent {
2686
+ hrSelfWidgetsService;
2687
+ personalInfoAddressDetails = null;
2688
+ isLoading = true;
2689
+ baseUrl = '';
2690
+ headerIconClass = 'primary-icon-xl';
2691
+ headerTextClass = 'fs-16 mt-2 text-secondary';
2692
+ headerDividerClass = 'flex-grow-1 ms-2';
2693
+ rowClass = 'row mt-4';
2694
+ columnClass = 'col-md-4 col-6';
2695
+ responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
2696
+ topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
2697
+ labelClass = 'field-secondary-label-sm';
2698
+ valueClass = 'fs-14 fw-medium';
2699
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2700
+ emptyStateTextClass = 'field-secondary-label-md';
2701
+ addressIcon = faHouse;
2702
+ sectionTitle = 'address';
2703
+ isLoadingChanged = new EventEmitter();
2704
+ errorOccurred = new EventEmitter();
2705
+ constructor(hrSelfWidgetsService) {
2706
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
2707
+ }
2708
+ ngOnInit() {
2709
+ if (!this.baseUrl) {
2710
+ this.isLoading = false;
2711
+ return;
2712
+ }
2713
+ this.isLoadingChanged.emit(true);
2714
+ this.hrSelfWidgetsService.getPersonalInfoAddressDetails(this.baseUrl).subscribe({
2715
+ next: (response) => {
2716
+ this.isLoading = false;
2717
+ this.isLoadingChanged.emit(false);
2718
+ this.personalInfoAddressDetails = response;
2719
+ },
2720
+ error: (error) => {
2721
+ this.isLoading = false;
2722
+ this.isLoadingChanged.emit(false);
2723
+ this.personalInfoAddressDetails = null;
2724
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2725
+ }
2726
+ });
2727
+ }
2728
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoAddressWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2729
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfilePersonalInfoAddressWidgetComponent, isStandalone: true, selector: "hr-profile-personal-info-address-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", addressIcon: "addressIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"addressIcon\"\r\n [text]=\"( sectionTitle | HRTranslate | uppercase )\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(personalInfoAddressDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Address'\"\r\n [value]=\"personalInfoAddressDetails.Address\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'City'\"\r\n [value]=\"personalInfoAddressDetails.City\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'P.OBox'\"\r\n [value]=\"personalInfoAddressDetails.POBox\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'PostalCode'\"\r\n [value]=\"personalInfoAddressDetails.PostalCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoAddressYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2730
+ }
2731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfilePersonalInfoAddressWidgetComponent, decorators: [{
2732
+ type: Component,
2733
+ args: [{ selector: 'hr-profile-personal-info-address-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"addressIcon\"\r\n [text]=\"( sectionTitle | HRTranslate | uppercase )\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(personalInfoAddressDetails){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Address'\"\r\n [value]=\"personalInfoAddressDetails.Address\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'City'\"\r\n [value]=\"personalInfoAddressDetails.City\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'P.OBox'\"\r\n [value]=\"personalInfoAddressDetails.POBox\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'PostalCode'\"\r\n [value]=\"personalInfoAddressDetails.PostalCode\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoAddressYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
2734
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
2735
+ type: Input,
2736
+ args: [{ required: true }]
2737
+ }], headerIconClass: [{
2738
+ type: Input
2739
+ }], headerTextClass: [{
2740
+ type: Input
2741
+ }], headerDividerClass: [{
2742
+ type: Input
2743
+ }], rowClass: [{
2744
+ type: Input
2745
+ }], columnClass: [{
2746
+ type: Input
2747
+ }], responsiveTopSpacingColumnClass: [{
2748
+ type: Input
2749
+ }], topSpacingBottomSpacingColumnClass: [{
2750
+ type: Input
2751
+ }], labelClass: [{
2752
+ type: Input
2753
+ }], valueClass: [{
2754
+ type: Input
2755
+ }], emptyStateContainerClass: [{
2756
+ type: Input
2757
+ }], emptyStateTextClass: [{
2758
+ type: Input
2759
+ }], addressIcon: [{
2760
+ type: Input
2761
+ }], sectionTitle: [{
2762
+ type: Input
2763
+ }], isLoadingChanged: [{
2764
+ type: Output
2765
+ }], errorOccurred: [{
2766
+ type: Output
2767
+ }] } });
2768
+
2769
+ class ProfileJobInformationMainWidgetComponent {
2770
+ hrSelfWidgetsService;
2771
+ jobInformationMain = null;
2772
+ isLoading = true;
2773
+ baseUrl = '';
2774
+ headerIconClass = 'primary-icon-xl';
2775
+ headerTextClass = 'mt-2 field-secondary-label-lg';
2776
+ headerDividerClass = 'flex-grow-1 ms-2';
2777
+ rowClass = 'row mt-4';
2778
+ columnClass = 'col-md-4 col-6';
2779
+ responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
2780
+ topSpacingBottomMdSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-md-5';
2781
+ topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
2782
+ labelClass = 'field-secondary-label-sm';
2783
+ valueClass = 'fs-14 fw-medium';
2784
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2785
+ emptyStateTextClass = 'field-secondary-label-md';
2786
+ mainIcon = faBriefcase;
2787
+ sectionTitle = 'jobMain';
2788
+ isLoadingChanged = new EventEmitter();
2789
+ errorOccurred = new EventEmitter();
2790
+ constructor(hrSelfWidgetsService) {
2791
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
2792
+ }
2793
+ ngOnInit() {
2794
+ if (!this.baseUrl) {
2795
+ this.isLoading = false;
2796
+ return;
2797
+ }
2798
+ this.isLoadingChanged.emit(true);
2799
+ this.hrSelfWidgetsService.getJobInformationMain(this.baseUrl).subscribe({
2800
+ next: (response) => {
2801
+ this.isLoading = false;
2802
+ this.jobInformationMain = response;
2803
+ this.isLoadingChanged.emit(false);
2804
+ },
2805
+ error: (error) => {
2806
+ this.isLoading = false;
2807
+ this.jobInformationMain = null;
2808
+ this.isLoadingChanged.emit(false);
2809
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2810
+ }
2811
+ });
2812
+ }
2813
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationMainWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2814
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInformationMainWidgetComponent, isStandalone: true, selector: "hr-profile-job-information-main-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", mainIcon: "mainIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"mainIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationMain){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'AdminUnit'\"\r\n [value]=\"jobInformationMain.AdminUnitName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Position'\"\r\n [value]=\"jobInformationMain.PositionName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Grade'\"\r\n [value]=\"jobInformationMain.GradeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'JoiningDate'\"\r\n [value]=\"jobInformationMain.JoiningDate ? (jobInformationMain.JoiningDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'CorporateJoiningDate'\"\r\n [value]=\"jobInformationMain.CorporateJoiningDate ? (jobInformationMain.CorporateJoiningDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Sponsor'\"\r\n [value]=\"jobInformationMain.SponsorName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobMainYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2815
+ }
2816
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationMainWidgetComponent, decorators: [{
2817
+ type: Component,
2818
+ args: [{ selector: 'hr-profile-job-information-main-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"mainIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationMain){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'AdminUnit'\"\r\n [value]=\"jobInformationMain.AdminUnitName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'Position'\"\r\n [value]=\"jobInformationMain.PositionName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Grade'\"\r\n [value]=\"jobInformationMain.GradeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'JoiningDate'\"\r\n [value]=\"jobInformationMain.JoiningDate ? (jobInformationMain.JoiningDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'CorporateJoiningDate'\"\r\n [value]=\"jobInformationMain.CorporateJoiningDate ? (jobInformationMain.CorporateJoiningDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'Sponsor'\"\r\n [value]=\"jobInformationMain.SponsorName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobMainYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
2819
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
2820
+ type: Input,
2821
+ args: [{ required: true }]
2822
+ }], headerIconClass: [{
2823
+ type: Input
2824
+ }], headerTextClass: [{
2825
+ type: Input
2826
+ }], headerDividerClass: [{
2827
+ type: Input
2828
+ }], rowClass: [{
2829
+ type: Input
2830
+ }], columnClass: [{
2831
+ type: Input
2832
+ }], responsiveTopSpacingColumnClass: [{
2833
+ type: Input
2834
+ }], topSpacingBottomMdSpacingColumnClass: [{
2835
+ type: Input
2836
+ }], topSpacingBottomSpacingColumnClass: [{
2837
+ type: Input
2838
+ }], labelClass: [{
2839
+ type: Input
2840
+ }], valueClass: [{
2841
+ type: Input
2842
+ }], emptyStateContainerClass: [{
2843
+ type: Input
2844
+ }], emptyStateTextClass: [{
2845
+ type: Input
2846
+ }], mainIcon: [{
2847
+ type: Input
2848
+ }], sectionTitle: [{
2849
+ type: Input
2850
+ }], isLoadingChanged: [{
2851
+ type: Output
2852
+ }], errorOccurred: [{
2853
+ type: Output
2854
+ }] } });
2855
+
2856
+ class ProfileJobInformationContractWidgetComponent {
2857
+ hrSelfWidgetsService;
2858
+ jobInformationContract = null;
2859
+ isLoading = true;
2860
+ baseUrl = '';
2861
+ headerIconClass = 'primary-icon-xl';
2862
+ headerTextClass = 'mt-2 field-secondary-label-lg';
2863
+ headerDividerClass = 'flex-grow-1 ms-2';
2864
+ rowClass = 'row mt-4';
2865
+ columnClass = 'col-md-4 col-6';
2866
+ responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
2867
+ topSpacingBottomMdSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-md-5';
2868
+ topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
2869
+ labelClass = 'field-secondary-label-sm';
2870
+ valueClass = 'fs-14 fw-medium';
2871
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2872
+ emptyStateTextClass = 'field-secondary-label-md';
2873
+ contractIcon = faFileContract;
2874
+ sectionTitle = 'jobContract';
2875
+ isLoadingChanged = new EventEmitter();
2876
+ errorOccurred = new EventEmitter();
2877
+ constructor(hrSelfWidgetsService) {
2878
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
2879
+ }
2880
+ ngOnInit() {
2881
+ if (!this.baseUrl) {
2882
+ this.isLoading = false;
2883
+ return;
2884
+ }
2885
+ this.isLoadingChanged.emit(true);
2886
+ this.hrSelfWidgetsService.getJobInformationContract(this.baseUrl).subscribe({
2887
+ next: (response) => {
2888
+ this.isLoading = false;
2889
+ this.jobInformationContract = response;
2890
+ this.isLoadingChanged.emit(false);
2891
+ },
2892
+ error: (error) => {
2893
+ this.isLoading = false;
2894
+ this.jobInformationContract = null;
2895
+ this.isLoadingChanged.emit(false);
2896
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2897
+ }
2898
+ });
2899
+ }
2900
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationContractWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2901
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInformationContractWidgetComponent, isStandalone: true, selector: "hr-profile-job-information-contract-widget", inputs: { baseUrl: "baseUrl", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", responsiveTopSpacingColumnClass: "responsiveTopSpacingColumnClass", topSpacingBottomMdSpacingColumnClass: "topSpacingBottomMdSpacingColumnClass", topSpacingBottomSpacingColumnClass: "topSpacingBottomSpacingColumnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", contractIcon: "contractIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"contractIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationContract){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'ContractType'\"\r\n [value]=\"jobInformationContract.ContractTypeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'ContractStartDate'\"\r\n [value]=\"jobInformationContract.ContractStartDate ? (jobInformationContract.ContractStartDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractEndDate'\"\r\n [value]=\"jobInformationContract.ContractEndDate ? (jobInformationContract.ContractEndDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractMaritalStatus'\"\r\n [value]=\"jobInformationContract.ContractMaritalStateName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractDependentsCount'\"\r\n [value]=\"jobInformationContract.ContractDependentsCount?.toString()\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobContractYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2902
+ }
2903
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationContractWidgetComponent, decorators: [{
2904
+ type: Component,
2905
+ args: [{ selector: 'hr-profile-job-information-contract-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"contractIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationContract){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'ContractType'\"\r\n [value]=\"jobInformationContract.ContractTypeName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"columnClass\">\r\n <hr-info-field [labelKey]=\"'ContractStartDate'\"\r\n [value]=\"jobInformationContract.ContractStartDate ? (jobInformationContract.ContractStartDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"responsiveTopSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractEndDate'\"\r\n [value]=\"jobInformationContract.ContractEndDate ? (jobInformationContract.ContractEndDate | date: 'dd/MM/yyyy') : null\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [ngClass]=\"topSpacingBottomMdSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractMaritalStatus'\"\r\n [value]=\"jobInformationContract.ContractMaritalStateName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n <div [ngClass]=\"topSpacingBottomSpacingColumnClass\">\r\n <hr-info-field [labelKey]=\"'ContractDependentsCount'\"\r\n [value]=\"jobInformationContract.ContractDependentsCount?.toString()\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobContractYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
2906
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
2907
+ type: Input,
2908
+ args: [{ required: true }]
2909
+ }], headerIconClass: [{
2910
+ type: Input
2911
+ }], headerTextClass: [{
2912
+ type: Input
2913
+ }], headerDividerClass: [{
2914
+ type: Input
2915
+ }], rowClass: [{
2916
+ type: Input
2917
+ }], columnClass: [{
2918
+ type: Input
2919
+ }], responsiveTopSpacingColumnClass: [{
2920
+ type: Input
2921
+ }], topSpacingBottomMdSpacingColumnClass: [{
2922
+ type: Input
2923
+ }], topSpacingBottomSpacingColumnClass: [{
2924
+ type: Input
2925
+ }], labelClass: [{
2926
+ type: Input
2927
+ }], valueClass: [{
2928
+ type: Input
2929
+ }], emptyStateContainerClass: [{
2930
+ type: Input
2931
+ }], emptyStateTextClass: [{
2932
+ type: Input
2933
+ }], contractIcon: [{
2934
+ type: Input
2935
+ }], sectionTitle: [{
2936
+ type: Input
2937
+ }], isLoadingChanged: [{
2938
+ type: Output
2939
+ }], errorOccurred: [{
2940
+ type: Output
2941
+ }] } });
2942
+
2943
+ class ProfileJobInformationSalaryWidgetComponent {
2944
+ hrSelfWidgetsService;
2945
+ commonMethodsService;
2946
+ jobInformationSalary = null;
2947
+ isLoading = true;
2948
+ baseUrl = '';
2949
+ currencyCode = '';
2950
+ currencyDecimals = 2;
2951
+ headerIconClass = 'primary-icon-xl';
2952
+ headerTextClass = 'mt-2 field-secondary-label-lg';
2953
+ headerDividerClass = 'flex-grow-1 ms-2';
2954
+ rowClass = 'row mt-4';
2955
+ columnClass = 'col-md-4 col-6 mt-4';
2956
+ grossSalaryColumnClass = 'col-md-4 col-6 my-4';
2957
+ labelClass = 'field-secondary-label-sm';
2958
+ valueClass = 'fs-14 fw-medium';
2959
+ currencyClass = 'fs-10 text-secondary fw-light';
2960
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2961
+ emptyStateTextClass = 'field-secondary-label-md';
2962
+ salaryIcon = faMoneyBillTrendUp;
2963
+ sectionTitle = 'jobSalary';
2964
+ isLoadingChanged = new EventEmitter();
2965
+ errorOccurred = new EventEmitter();
2966
+ constructor(hrSelfWidgetsService, commonMethodsService) {
2967
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
2968
+ this.commonMethodsService = commonMethodsService;
2969
+ }
2970
+ ngOnInit() {
2971
+ if (!this.baseUrl) {
2972
+ this.isLoading = false;
2973
+ return;
2974
+ }
2975
+ this.isLoadingChanged.emit(true);
2976
+ this.hrSelfWidgetsService.getJobInformationSalary(this.baseUrl).subscribe({
2977
+ next: (response) => {
2978
+ this.isLoading = false;
2979
+ this.jobInformationSalary = response;
2980
+ this.isLoadingChanged.emit(false);
2981
+ },
2982
+ error: (error) => {
2983
+ this.isLoading = false;
2984
+ this.jobInformationSalary = null;
2985
+ this.isLoadingChanged.emit(false);
2986
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2987
+ }
2988
+ });
2989
+ }
2990
+ get basicSalary() {
2991
+ return this.jobInformationSalary?.BasicSalary ?? this.jobInformationSalary?.CurrentBasicSalary ?? null;
2992
+ }
2993
+ get allowances() {
2994
+ return this.jobInformationSalary?.Allowances ?? [];
2995
+ }
2996
+ formatAmount(value) {
2997
+ if (value == null) {
2998
+ return '—';
2999
+ }
3000
+ return this.commonMethodsService.currencyDecimalFormat(value, this.currencyDecimals) || '—';
3001
+ }
3002
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationSalaryWidgetComponent, deps: [{ token: HRSelfWidgetsService }, { token: HRCommonMethodsService }], target: i0.ɵɵFactoryTarget.Component });
3003
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInformationSalaryWidgetComponent, isStandalone: true, selector: "hr-profile-job-information-salary-widget", inputs: { baseUrl: "baseUrl", currencyCode: "currencyCode", currencyDecimals: "currencyDecimals", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", grossSalaryColumnClass: "grossSalaryColumnClass", labelClass: "labelClass", valueClass: "valueClass", currencyClass: "currencyClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", salaryIcon: "salaryIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"salaryIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationSalary){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{'BasicSalary' | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(basicSalary)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n\r\n @for(allowance of allowances; track allowance){\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{allowance.AllowanceName}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(allowance.AllowanceAmount)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n }\r\n\r\n <div [ngClass]=\"grossSalaryColumnClass\">\r\n <div [ngClass]=\"labelClass\">{{'GrossSalary' | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(jobInformationSalary.GrossSalary)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobSalaryYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
3004
+ }
3005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationSalaryWidgetComponent, decorators: [{
3006
+ type: Component,
3007
+ args: [{ selector: 'hr-profile-job-information-salary-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"salaryIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationSalary){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{'BasicSalary' | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(basicSalary)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n\r\n @for(allowance of allowances; track allowance){\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{allowance.AllowanceName}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(allowance.AllowanceAmount)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n }\r\n\r\n <div [ngClass]=\"grossSalaryColumnClass\">\r\n <div [ngClass]=\"labelClass\">{{'GrossSalary' | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{formatAmount(jobInformationSalary.GrossSalary)}} <span [ngClass]=\"currencyClass\">{{currencyCode}}</span></div>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobSalaryYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
3008
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }, { type: HRCommonMethodsService }], propDecorators: { baseUrl: [{
3009
+ type: Input,
3010
+ args: [{ required: true }]
3011
+ }], currencyCode: [{
3012
+ type: Input
3013
+ }], currencyDecimals: [{
3014
+ type: Input
3015
+ }], headerIconClass: [{
3016
+ type: Input
3017
+ }], headerTextClass: [{
3018
+ type: Input
3019
+ }], headerDividerClass: [{
3020
+ type: Input
3021
+ }], rowClass: [{
3022
+ type: Input
3023
+ }], columnClass: [{
3024
+ type: Input
3025
+ }], grossSalaryColumnClass: [{
3026
+ type: Input
3027
+ }], labelClass: [{
3028
+ type: Input
3029
+ }], valueClass: [{
3030
+ type: Input
3031
+ }], currencyClass: [{
3032
+ type: Input
3033
+ }], emptyStateContainerClass: [{
3034
+ type: Input
3035
+ }], emptyStateTextClass: [{
3036
+ type: Input
3037
+ }], salaryIcon: [{
3038
+ type: Input
3039
+ }], sectionTitle: [{
3040
+ type: Input
3041
+ }], isLoadingChanged: [{
3042
+ type: Output
3043
+ }], errorOccurred: [{
3044
+ type: Output
3045
+ }] } });
3046
+
3047
+ class ProfileJobInformationServiceChargeWidgetComponent {
3048
+ hrSelfWidgetsService;
3049
+ commonMethodsService;
3050
+ jobInformationServiceCharge = null;
3051
+ isLoading = true;
3052
+ baseUrl = '';
3053
+ currencyCode = '';
3054
+ headerIconClass = 'primary-icon-xl';
3055
+ headerTextClass = 'mt-2 field-secondary-label-lg';
3056
+ headerDividerClass = 'flex-grow-1 ms-2';
3057
+ rowClass = 'row mt-4 mb-5';
3058
+ columnClass = 'col-md-4 col-6';
3059
+ labelClass = 'field-secondary-label-sm';
3060
+ valueClass = 'fs-14 fw-medium';
3061
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3062
+ emptyStateTextClass = 'field-secondary-label-md';
3063
+ serviceChargeIcon = faMoneyCheckDollarPen;
3064
+ sectionTitle = 'jobServiceCharge';
3065
+ isLoadingChanged = new EventEmitter();
3066
+ errorOccurred = new EventEmitter();
3067
+ constructor(hrSelfWidgetsService, commonMethodsService) {
3068
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
3069
+ this.commonMethodsService = commonMethodsService;
3070
+ }
3071
+ ngOnInit() {
3072
+ if (!this.baseUrl) {
3073
+ this.isLoading = false;
3074
+ return;
3075
+ }
3076
+ this.isLoadingChanged.emit(true);
3077
+ this.hrSelfWidgetsService.getJobInformationServiceCharge(this.baseUrl).subscribe({
3078
+ next: (response) => {
3079
+ this.isLoading = false;
3080
+ this.jobInformationServiceCharge = response;
3081
+ this.isLoadingChanged.emit(false);
3082
+ },
3083
+ error: (error) => {
3084
+ this.isLoading = false;
3085
+ this.jobInformationServiceCharge = null;
3086
+ this.isLoadingChanged.emit(false);
3087
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3088
+ }
3089
+ });
3090
+ }
3091
+ get modeLabelKey() {
3092
+ const mode = this.jobInformationServiceCharge?.ServiceChargeEntitlementMode;
3093
+ if (mode === ServiceChargeEntitlementMode.Points) {
3094
+ return 'ServiceChargeModePoints';
3095
+ }
3096
+ if (mode === ServiceChargeEntitlementMode.SalaryRatio) {
3097
+ return 'ServiceChargeModeSalaryRatio';
3098
+ }
3099
+ if (mode === ServiceChargeEntitlementMode.FixedAmount) {
3100
+ return 'ServiceChargeModeFixedAmount';
3101
+ }
3102
+ if (mode === ServiceChargeEntitlementMode.FixedRate) {
3103
+ return 'ServiceChargeModeFixedRate';
3104
+ }
3105
+ return 'serviceCharge';
3106
+ }
3107
+ get value() {
3108
+ const data = this.jobInformationServiceCharge;
3109
+ if (!data || data.ServiceChargeValue == null) {
3110
+ return '—';
3111
+ }
3112
+ if (data.ServiceChargeEntitlementMode === ServiceChargeEntitlementMode.FixedAmount) {
3113
+ return `${this.commonMethodsService.currencyDecimalFormat(data.ServiceChargeValue, 4)} (${this.currencyCode})`;
3114
+ }
3115
+ return this.commonMethodsService.currencyDecimalFormat(data.ServiceChargeValue, 2) || '—';
3116
+ }
3117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationServiceChargeWidgetComponent, deps: [{ token: HRSelfWidgetsService }, { token: HRCommonMethodsService }], target: i0.ɵɵFactoryTarget.Component });
3118
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInformationServiceChargeWidgetComponent, isStandalone: true, selector: "hr-profile-job-information-service-charge-widget", inputs: { baseUrl: "baseUrl", currencyCode: "currencyCode", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", columnClass: "columnClass", labelClass: "labelClass", valueClass: "valueClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass", serviceChargeIcon: "serviceChargeIcon", sectionTitle: "sectionTitle" }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"serviceChargeIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationServiceCharge){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{modeLabelKey | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{value}}</div>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobServiceChargeYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }] });
3119
+ }
3120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInformationServiceChargeWidgetComponent, decorators: [{
3121
+ type: Component,
3122
+ args: [{ selector: 'hr-profile-job-information-service-charge-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"serviceChargeIcon\"\r\n [text]=\"(sectionTitle | HRTranslate | uppercase)\"\r\n [iconClass]=\"headerIconClass\"\r\n [textClass]=\"headerTextClass\"\r\n [dividerClass]=\"headerDividerClass\">\r\n</sky-section-divider>\r\n\r\n@if(jobInformationServiceCharge){\r\n<div [ngClass]=\"rowClass\">\r\n <div [ngClass]=\"columnClass\">\r\n <div [ngClass]=\"labelClass\">{{modeLabelKey | HRTranslate}}</div>\r\n <div [ngClass]=\"valueClass\">{{value}}</div>\r\n </div>\r\n</div>\r\n}@else{\r\n<div [class]=\"emptyStateContainerClass\">\r\n <p [class]=\"emptyStateTextClass\">{{isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobServiceChargeYet' | HRTranslate)}}</p>\r\n</div>\r\n}\r\n" }]
3123
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }, { type: HRCommonMethodsService }], propDecorators: { baseUrl: [{
3124
+ type: Input,
3125
+ args: [{ required: true }]
3126
+ }], currencyCode: [{
3127
+ type: Input
3128
+ }], headerIconClass: [{
3129
+ type: Input
3130
+ }], headerTextClass: [{
3131
+ type: Input
3132
+ }], headerDividerClass: [{
3133
+ type: Input
3134
+ }], rowClass: [{
3135
+ type: Input
3136
+ }], columnClass: [{
3137
+ type: Input
3138
+ }], labelClass: [{
3139
+ type: Input
3140
+ }], valueClass: [{
3141
+ type: Input
3142
+ }], emptyStateContainerClass: [{
3143
+ type: Input
3144
+ }], emptyStateTextClass: [{
3145
+ type: Input
3146
+ }], serviceChargeIcon: [{
3147
+ type: Input
3148
+ }], sectionTitle: [{
3149
+ type: Input
3150
+ }], isLoadingChanged: [{
3151
+ type: Output
3152
+ }], errorOccurred: [{
3153
+ type: Output
3154
+ }] } });
3155
+
3156
+ class HRVacationSubordinatesPopupComponent {
3157
+ http;
3158
+ dataGrid;
3159
+ popupVisible = false;
3160
+ popupType = VacationPopupType.Upcoming;
3161
+ baseUrl = '';
3162
+ width = '700px';
3163
+ height = '480px';
3164
+ gridHeight = '320px';
3165
+ pageSize = 20;
3166
+ showProperty = false;
3167
+ closePopupClickHandler = new EventEmitter();
3168
+ popupTitle = '';
3169
+ popupSubTitle = '';
3170
+ keyExpr = 'EmployeeNumber';
3171
+ VacationPopupType = VacationPopupType;
3172
+ dataSource = null;
3173
+ xMarkIcon = faXmark;
3174
+ searchValue = '';
3175
+ constructor(http) {
3176
+ this.http = http;
3177
+ }
3178
+ onShown() {
3179
+ setTimeout(() => this.initDataSource());
3180
+ }
3181
+ initDataSource() {
3182
+ this.dataSource = new CustomStore({
3183
+ key: this.keyExpr,
3184
+ load: (loadOptions) => {
3185
+ const skip = loadOptions.skip ?? 0;
3186
+ const pageIndex = Math.floor(skip / this.pageSize) + 1;
3187
+ let params = new HttpParams()
3188
+ .set('ShowDirectSubordinatesOnly', 'false')
3189
+ .set('LoadOptions.PageIndex', pageIndex.toString())
3190
+ .set('LoadOptions.PageSize', this.pageSize.toString());
3191
+ if (this.searchValue) {
3192
+ params = params.set('LoadOptions.SearchValue', this.searchValue);
3193
+ }
3194
+ return lastValueFrom(this.http.get(this.baseUrl, { params }))
3195
+ .then((response) => {
3196
+ const items = response.ResponseData?.Data ?? [];
3197
+ const totalCount = response.ResponseData?.TotalCount ?? 0;
3198
+ return { data: items, totalCount };
3199
+ });
3200
+ }
3201
+ });
3202
+ }
3203
+ onSearchValueChanged(e) {
3204
+ this.searchValue = e.value ?? '';
3205
+ this.initDataSource();
3206
+ }
3207
+ getPopupTitle() {
3208
+ return this.popupSubTitle || (this.popupType === VacationPopupType.Upcoming ? 'UpcomingVacations' : 'ExpectedToReturn');
3209
+ }
3210
+ onPopupClose() {
3211
+ this.searchValue = '';
3212
+ this.dataSource = null;
3213
+ this.closePopupClickHandler.emit();
3214
+ }
3215
+ onHidden() {
3216
+ this.onPopupClose();
3217
+ }
3218
+ getEmployeeBadge(item) {
3219
+ return {
3220
+ EmployeePhotoKey: item.PhotoPath || null,
3221
+ EmployeePhotoFailed: item.FailedToLoadPhoto || false,
3222
+ EmployeeNameInitials: item.EmployeeNameInitials || ''
3223
+ };
3224
+ }
3225
+ handleEmployeePhotoError(employee) {
3226
+ employee.FailedToLoadPhoto = true;
3227
+ }
3228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRVacationSubordinatesPopupComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
3229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: HRVacationSubordinatesPopupComponent, isStandalone: true, selector: "hr-vacation-subordinates-popup", inputs: { popupVisible: "popupVisible", popupType: "popupType", baseUrl: "baseUrl", width: "width", height: "height", gridHeight: "gridHeight", pageSize: "pageSize", showProperty: "showProperty" }, outputs: { closePopupClickHandler: "closePopupClickHandler" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: DxDataGridComponent, descendants: true }], ngImport: i0, template: "<dx-popup [visible]=\"popupVisible\"\r\n [height]=\"height\"\r\n [minHeight]=\"'40%'\"\r\n [maxHeight]=\"'70%'\"\r\n [width]=\"width\"\r\n contentTemplate=\"popup-content\"\r\n [showCloseButton]=\"false\"\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n titleTemplate=\"title\"\r\n [showTitle]=\"true\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\">\r\n\r\n <div *dxTemplate=\"let data of 'title'\">\r\n <div class=\"d-flex justify-content-between align-items-center my-0\">\r\n <p class=\"mx-3 fs-16 fw-meduim text-ellipsis-one-line\">\r\n <span class=\"text-dark-gray\">{{popupTitle ? (popupTitle | HRTranslate) : ('NextWeekVacationInsights' | HRTranslate)}}</span>\r\n <span class=\"mx-2 text-primary\">({{getPopupTitle() | HRTranslate}})</span>\r\n </p>\r\n <div class=\"p-2\" (click)=\"onPopupClose()\">\r\n <fa-icon [icon]=\"xMarkIcon\" class=\"fs-18 me-1 text-dark-gray cursor-pointer\"></fa-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *dxTemplate=\"let d of 'popup-content'\">\r\n <div class=\"mb-2\">\r\n <dx-text-box [width]=\"'250px'\"\r\n mode=\"search\"\r\n [value]=\"searchValue\"\r\n [placeholder]=\"'Search...' | HRTranslate\"\r\n (onValueChanged)=\"onSearchValueChanged($event)\">\r\n </dx-text-box>\r\n </div>\r\n @if(dataSource){\r\n <dx-data-grid class=\"popup-data-grid\"\r\n [dataSource]=\"dataSource\"\r\n [showBorders]=\"false\"\r\n [showRowLines]=\"false\"\r\n [showColumnLines]=\"false\"\r\n [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"true\"\r\n [height]=\"gridHeight\"\r\n [allowColumnReordering]=\"false\"\r\n [remoteOperations]=\"{paging: true}\">\r\n\r\n <dxo-sorting mode=\"none\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"infinite\"\r\n [useNative]=\"false\"\r\n [scrollByContent]=\"true\"\r\n [scrollByThumb]=\"true\"\r\n showScrollbar=\"always\">\r\n </dxo-scrolling>\r\n\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"pageSize\"></dxo-paging>\r\n\r\n <dxi-column caption=\"{{'Employee' | HRTranslate}}\"\r\n dataField=\"EmployeeName\"\r\n cellTemplate=\"employeeCellTemplate\"\r\n [minWidth]=\"250\">\r\n </dxi-column>\r\n\r\n @if(popupType === VacationPopupType.Upcoming){\r\n <dxi-column caption=\"{{'StartDate' | HRTranslate}}\"\r\n dataField=\"VacationStartDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n <dxi-column caption=\"{{'EndDate' | HRTranslate}}\"\r\n dataField=\"VacationEndDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n }@else{\r\n <dxi-column caption=\"{{'ReturnDate' | HRTranslate}}\"\r\n dataField=\"ReturnDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n }\r\n\r\n <div *dxTemplate=\"let cell of 'employeeCellTemplate'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bayan-employee-badge\r\n [badge]=\"getEmployeeBadge(cell.data)\"\r\n badgeClass=\"badge employee-rounded-badge-xl fs-6\"\r\n imageClass=\"rounded-circle m-1\"\r\n [width]=\"'40px'\"\r\n [height]=\"'40px'\"\r\n (employeePhotoError)=\"handleEmployeePhotoError(cell.data)\">\r\n </bayan-employee-badge>\r\n <div class=\"d-flex flex-column ms-1\">\r\n <div class=\"d-flex flex-row\">\r\n @if(showProperty){\r\n <span class=\"property-badge cursor-pointer mx-1\" [title]=\"cell.data.PropertyName\" [innerHTML]=\"cell.data.PropertySymbol\"></span>\r\n }\r\n <span class=\"text-ellipsis-one-line fs-14 text-dark-gray fw-normal\"\r\n [title]=\"cell.data.EmployeeNumber + ' | ' + cell.data.EmployeeName\">\r\n {{cell.data.EmployeeNumber}} | {{cell.data.EmployeeName}}\r\n </span>\r\n </div>\r\n <p class=\"mt-1 text-ellipsis-one-line fs-12 text-dark-gray fw-normal mb-0\">\r\n {{cell.data.EmployeeAdminUnitName}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </dx-data-grid>\r\n }\r\n </div>\r\n</dx-popup>\r\n", dependencies: [{ kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: DxDataGridModule }, { kind: "component", type: i1$1.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i5.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i5.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i5.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i5.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: BayanEmployeeBadgeComponent, selector: "bayan-employee-badge", inputs: ["badge", "width", "height", "imageClass", "badgeClass"], outputs: ["employeePhotoError"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1$1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }] });
3230
+ }
3231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRVacationSubordinatesPopupComponent, decorators: [{
3232
+ type: Component,
3233
+ args: [{ selector: 'hr-vacation-subordinates-popup', standalone: true, imports: [DxPopupModule, HRTranslatePipe, CommonModule, FontAwesomeModule,
3234
+ DxDataGridModule, BayanEmployeeBadgeComponent, DxTextBoxModule], template: "<dx-popup [visible]=\"popupVisible\"\r\n [height]=\"height\"\r\n [minHeight]=\"'40%'\"\r\n [maxHeight]=\"'70%'\"\r\n [width]=\"width\"\r\n contentTemplate=\"popup-content\"\r\n [showCloseButton]=\"false\"\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n titleTemplate=\"title\"\r\n [showTitle]=\"true\"\r\n (onShown)=\"onShown()\"\r\n (onHidden)=\"onHidden()\">\r\n\r\n <div *dxTemplate=\"let data of 'title'\">\r\n <div class=\"d-flex justify-content-between align-items-center my-0\">\r\n <p class=\"mx-3 fs-16 fw-meduim text-ellipsis-one-line\">\r\n <span class=\"text-dark-gray\">{{popupTitle ? (popupTitle | HRTranslate) : ('NextWeekVacationInsights' | HRTranslate)}}</span>\r\n <span class=\"mx-2 text-primary\">({{getPopupTitle() | HRTranslate}})</span>\r\n </p>\r\n <div class=\"p-2\" (click)=\"onPopupClose()\">\r\n <fa-icon [icon]=\"xMarkIcon\" class=\"fs-18 me-1 text-dark-gray cursor-pointer\"></fa-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *dxTemplate=\"let d of 'popup-content'\">\r\n <div class=\"mb-2\">\r\n <dx-text-box [width]=\"'250px'\"\r\n mode=\"search\"\r\n [value]=\"searchValue\"\r\n [placeholder]=\"'Search...' | HRTranslate\"\r\n (onValueChanged)=\"onSearchValueChanged($event)\">\r\n </dx-text-box>\r\n </div>\r\n @if(dataSource){\r\n <dx-data-grid class=\"popup-data-grid\"\r\n [dataSource]=\"dataSource\"\r\n [showBorders]=\"false\"\r\n [showRowLines]=\"false\"\r\n [showColumnLines]=\"false\"\r\n [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"true\"\r\n [height]=\"gridHeight\"\r\n [allowColumnReordering]=\"false\"\r\n [remoteOperations]=\"{paging: true}\">\r\n\r\n <dxo-sorting mode=\"none\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"infinite\"\r\n [useNative]=\"false\"\r\n [scrollByContent]=\"true\"\r\n [scrollByThumb]=\"true\"\r\n showScrollbar=\"always\">\r\n </dxo-scrolling>\r\n\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"pageSize\"></dxo-paging>\r\n\r\n <dxi-column caption=\"{{'Employee' | HRTranslate}}\"\r\n dataField=\"EmployeeName\"\r\n cellTemplate=\"employeeCellTemplate\"\r\n [minWidth]=\"250\">\r\n </dxi-column>\r\n\r\n @if(popupType === VacationPopupType.Upcoming){\r\n <dxi-column caption=\"{{'StartDate' | HRTranslate}}\"\r\n dataField=\"VacationStartDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n <dxi-column caption=\"{{'EndDate' | HRTranslate}}\"\r\n dataField=\"VacationEndDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n }@else{\r\n <dxi-column caption=\"{{'ReturnDate' | HRTranslate}}\"\r\n dataField=\"ReturnDate\"\r\n dataType=\"date\"\r\n format=\"dd/MM/yyyy\"\r\n [width]=\"120\"\r\n alignment=\"center\">\r\n </dxi-column>\r\n }\r\n\r\n <div *dxTemplate=\"let cell of 'employeeCellTemplate'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bayan-employee-badge\r\n [badge]=\"getEmployeeBadge(cell.data)\"\r\n badgeClass=\"badge employee-rounded-badge-xl fs-6\"\r\n imageClass=\"rounded-circle m-1\"\r\n [width]=\"'40px'\"\r\n [height]=\"'40px'\"\r\n (employeePhotoError)=\"handleEmployeePhotoError(cell.data)\">\r\n </bayan-employee-badge>\r\n <div class=\"d-flex flex-column ms-1\">\r\n <div class=\"d-flex flex-row\">\r\n @if(showProperty){\r\n <span class=\"property-badge cursor-pointer mx-1\" [title]=\"cell.data.PropertyName\" [innerHTML]=\"cell.data.PropertySymbol\"></span>\r\n }\r\n <span class=\"text-ellipsis-one-line fs-14 text-dark-gray fw-normal\"\r\n [title]=\"cell.data.EmployeeNumber + ' | ' + cell.data.EmployeeName\">\r\n {{cell.data.EmployeeNumber}} | {{cell.data.EmployeeName}}\r\n </span>\r\n </div>\r\n <p class=\"mt-1 text-ellipsis-one-line fs-12 text-dark-gray fw-normal mb-0\">\r\n {{cell.data.EmployeeAdminUnitName}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </dx-data-grid>\r\n }\r\n </div>\r\n</dx-popup>\r\n" }]
3235
+ }], ctorParameters: () => [{ type: i1.HttpClient }], propDecorators: { dataGrid: [{
3236
+ type: ViewChild,
3237
+ args: [DxDataGridComponent, { static: false }]
3238
+ }], popupVisible: [{
3239
+ type: Input
3240
+ }], popupType: [{
3241
+ type: Input
3242
+ }], baseUrl: [{
3243
+ type: Input
3244
+ }], width: [{
3245
+ type: Input
3246
+ }], height: [{
3247
+ type: Input
3248
+ }], gridHeight: [{
3249
+ type: Input
3250
+ }], pageSize: [{
3251
+ type: Input
3252
+ }], showProperty: [{
3253
+ type: Input
3254
+ }], closePopupClickHandler: [{
3255
+ type: Output
3256
+ }] } });
3257
+
3258
+ class MyVacationTeamWidgetComponent {
3259
+ selfWidgetsService;
3260
+ translatePipe;
3261
+ baseUrl = '';
3262
+ showProperty = false;
3263
+ cardClass = 'card rounded rounded-4 card-shadow p-16 border-top-0 h-100 p-4';
3264
+ titleClass = 'table-header-lg fw-meduim';
3265
+ valueClass = 'fs-24 mt-1 link-dark hover-primary text-decoration-none';
3266
+ disabledValueClass = 'fs-24 mt-1 text-muted pe-none text-decoration-none';
3267
+ upcomingContainerClass = 'border-start border-5 mb-3';
3268
+ expectedContainerClass = 'border-start border-5';
3269
+ isLoadingChanged = new EventEmitter();
3270
+ popupVisible = false;
3271
+ popupType = VacationPopupType.Upcoming;
3272
+ popupBaseUrl = '';
3273
+ VacationPopupType = VacationPopupType;
3274
+ upcomingVacationsBadge;
3275
+ expectedToReturnBadge;
3276
+ constructor(selfWidgetsService, translatePipe) {
3277
+ this.selfWidgetsService = selfWidgetsService;
3278
+ this.translatePipe = translatePipe;
3279
+ }
3280
+ ngOnInit() {
3281
+ this.initBadges(0, 0);
3282
+ this.loadVacationSummary();
3283
+ }
3284
+ loadVacationSummary() {
3285
+ this.isLoadingChanged.emit(true);
3286
+ this.selfWidgetsService.getVacationSummary(this.baseUrl).subscribe({
3287
+ next: (response) => {
3288
+ const data = response.ResponseData;
3289
+ this.initBadges(data.UpcomingVacationsCount, data.ExpectedToReturnCount);
3290
+ this.isLoadingChanged.emit(false);
3291
+ },
3292
+ error: () => {
3293
+ this.isLoadingChanged.emit(false);
3294
+ }
3295
+ });
3296
+ }
3297
+ openPopup(type) {
3298
+ if (type === VacationPopupType.Upcoming && this.upcomingVacationsBadge?.Value === 0)
3299
+ return;
3300
+ if (type === VacationPopupType.ExpectedToReturn && this.expectedToReturnBadge?.Value === 0)
3301
+ return;
3302
+ this.popupType = type;
3303
+ if (type === VacationPopupType.Upcoming) {
3304
+ this.popupBaseUrl = `${this.baseUrl}/hr/widgets/me/team/subordinates/vacations/upcoming`;
3305
+ }
3306
+ else {
3307
+ this.popupBaseUrl = `${this.baseUrl}/hr/widgets/me/team/subordinates/vacations/expected-to-return`;
3308
+ }
3309
+ this.popupVisible = true;
3310
+ }
3311
+ closePopup() {
3312
+ this.popupVisible = false;
3313
+ }
3314
+ initBadges(upcomingVacations, expectedToReturn) {
3315
+ this.upcomingVacationsBadge = {
3316
+ Id: 1,
3317
+ Title: this.translatePipe.transform('UpcomingVacations'),
3318
+ Value: upcomingVacations,
3319
+ Icon: faPlaneDeparture
3320
+ };
3321
+ this.expectedToReturnBadge = {
3322
+ Id: 2,
3323
+ Title: this.translatePipe.transform('ExpectedToReturn'),
3324
+ Value: expectedToReturn,
3325
+ Icon: faPlaneArrival
3326
+ };
3327
+ }
3328
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MyVacationTeamWidgetComponent, deps: [{ token: HRSelfWidgetsService }, { token: HRTranslatePipe }], target: i0.ɵɵFactoryTarget.Component });
3329
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: MyVacationTeamWidgetComponent, isStandalone: true, selector: "hr-my-vacation-team-widget", inputs: { baseUrl: "baseUrl", showProperty: "showProperty", cardClass: "cardClass", titleClass: "titleClass", valueClass: "valueClass", disabledValueClass: "disabledValueClass", upcomingContainerClass: "upcomingContainerClass", expectedContainerClass: "expectedContainerClass" }, outputs: { isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<div [class]=\"cardClass\">\r\n <div class=\"card-body d-flex flex-column p-0\">\r\n <div [class]=\"titleClass\">\r\n {{'NextWeekVacationInsights' | HRTranslate}}\r\n </div>\r\n <div class=\"d-flex flex-column mt-4\">\r\n <sky-widget-section-item\r\n [data]=\"upcomingVacationsBadge\"\r\n [containerClass]=\"upcomingContainerClass\"\r\n [valueClass]=\"upcomingVacationsBadge?.Value === 0 ? disabledValueClass : valueClass\"\r\n [ngClass]=\"{'pe-none': upcomingVacationsBadge?.Value === 0}\"\r\n (OnWidgetSectionClick)=\"openPopup(VacationPopupType.Upcoming)\">\r\n </sky-widget-section-item>\r\n <sky-widget-section-item\r\n [data]=\"expectedToReturnBadge\"\r\n [containerClass]=\"expectedContainerClass\"\r\n [valueClass]=\"expectedToReturnBadge?.Value === 0 ? disabledValueClass : valueClass\"\r\n [ngClass]=\"{'pe-none': expectedToReturnBadge?.Value === 0}\"\r\n (OnWidgetSectionClick)=\"openPopup(VacationPopupType.ExpectedToReturn)\">\r\n </sky-widget-section-item>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<hr-vacation-subordinates-popup\r\n [popupVisible]=\"popupVisible\"\r\n [popupType]=\"popupType\"\r\n [baseUrl]=\"popupBaseUrl\"\r\n [showProperty]=\"showProperty\"\r\n (closePopupClickHandler)=\"closePopup()\">\r\n</hr-vacation-subordinates-popup>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: SkyWidgetSectionItemComponent, selector: "sky-widget-section-item", inputs: ["data", "iconContainerClass", "iconClass", "iconSize", "iconWidth", "iconHeight", "buttonClass", "titleClass", "valueClass", "containerClass", "borderColorClass"], outputs: ["OnWidgetSectionClick"] }, { kind: "component", type: HRVacationSubordinatesPopupComponent, selector: "hr-vacation-subordinates-popup", inputs: ["popupVisible", "popupType", "baseUrl", "width", "height", "gridHeight", "pageSize", "showProperty"], outputs: ["closePopupClickHandler"] }] });
3330
+ }
3331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MyVacationTeamWidgetComponent, decorators: [{
3332
+ type: Component,
3333
+ args: [{ selector: 'hr-my-vacation-team-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, FontAwesomeModule, SkyWidgetSectionItemComponent, HRVacationSubordinatesPopupComponent], template: "<div [class]=\"cardClass\">\r\n <div class=\"card-body d-flex flex-column p-0\">\r\n <div [class]=\"titleClass\">\r\n {{'NextWeekVacationInsights' | HRTranslate}}\r\n </div>\r\n <div class=\"d-flex flex-column mt-4\">\r\n <sky-widget-section-item\r\n [data]=\"upcomingVacationsBadge\"\r\n [containerClass]=\"upcomingContainerClass\"\r\n [valueClass]=\"upcomingVacationsBadge?.Value === 0 ? disabledValueClass : valueClass\"\r\n [ngClass]=\"{'pe-none': upcomingVacationsBadge?.Value === 0}\"\r\n (OnWidgetSectionClick)=\"openPopup(VacationPopupType.Upcoming)\">\r\n </sky-widget-section-item>\r\n <sky-widget-section-item\r\n [data]=\"expectedToReturnBadge\"\r\n [containerClass]=\"expectedContainerClass\"\r\n [valueClass]=\"expectedToReturnBadge?.Value === 0 ? disabledValueClass : valueClass\"\r\n [ngClass]=\"{'pe-none': expectedToReturnBadge?.Value === 0}\"\r\n (OnWidgetSectionClick)=\"openPopup(VacationPopupType.ExpectedToReturn)\">\r\n </sky-widget-section-item>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<hr-vacation-subordinates-popup\r\n [popupVisible]=\"popupVisible\"\r\n [popupType]=\"popupType\"\r\n [baseUrl]=\"popupBaseUrl\"\r\n [showProperty]=\"showProperty\"\r\n (closePopupClickHandler)=\"closePopup()\">\r\n</hr-vacation-subordinates-popup>\r\n" }]
3334
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }, { type: HRTranslatePipe }], propDecorators: { baseUrl: [{
3335
+ type: Input
3336
+ }], showProperty: [{
3337
+ type: Input
3338
+ }], cardClass: [{
3339
+ type: Input
3340
+ }], titleClass: [{
3341
+ type: Input
3342
+ }], valueClass: [{
3343
+ type: Input
3344
+ }], disabledValueClass: [{
3345
+ type: Input
3346
+ }], upcomingContainerClass: [{
3347
+ type: Input
3348
+ }], expectedContainerClass: [{
3349
+ type: Input
3350
+ }], isLoadingChanged: [{
3351
+ type: Output
3352
+ }] } });
3353
+
2389
3354
  /*
2390
3355
  * Public API Surface of shared-ui
2391
3356
  */
@@ -2394,5 +3359,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2394
3359
  * Generated bundle index. Do not edit.
2395
3360
  */
2396
3361
 
2397
- export { EventOption, EventTypeEnum, HRCardHeaderComponent, HRConstantsService, HREmployeeCalendarComponent, HRTranslatePipe, HRTranslateService, MainWidgetShortcut, MyCalendarWidgetComponent, MyMainDetailsWidgetComponent, MyUpcomingEventsWidgetComponent, ProfileBankInformationWidgetComponent, ProfilePersonalInfoAddressWidgetComponent, ProfilePersonalInfoContactWidgetComponent, ProfilePersonalInfoLanguagesWidgetComponent, ProfilePersonalInfoMainWidgetComponent, ProfilePersonalInfoOtherNationalitiesWidgetComponent, PublicHolidayWeekContext, RelativeDay, ScheduleVacationTypes };
3362
+ export { EventOption, EventTypeEnum, HRCardHeaderComponent, HRConstantsService, HREmployeeCalendarComponent, HRTranslatePipe, HRTranslateService, MainWidgetShortcut, MyCalendarWidgetComponent, MyMainDetailsWidgetComponent, MyUpcomingEventsWidgetComponent, MyVacationTeamWidgetComponent, ProfileBankInformationWidgetComponent, ProfileJobInformationContractWidgetComponent, ProfileJobInformationMainWidgetComponent, ProfileJobInformationSalaryWidgetComponent, ProfileJobInformationServiceChargeWidgetComponent, ProfilePersonalInfoAddressWidgetComponent, ProfilePersonalInfoContactWidgetComponent, ProfilePersonalInfoLanguagesWidgetComponent, ProfilePersonalInfoMainWidgetComponent, ProfilePersonalInfoOtherNationalitiesWidgetComponent, PublicHolidayWeekContext, RelativeDay, ScheduleVacationTypes, ServiceChargeEntitlementMode, VacationPopupType };
2398
3363
  //# sourceMappingURL=skysoftware-co-bayan-hr-widgets-ui.mjs.map