@skysoftware-co/bayan-hr-widgets-ui 1.0.20 → 1.0.21

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.
@@ -11,7 +11,7 @@ import { SkyShortcutIconComponent, SkySectionDividerComponent, SkyEmptyDesignCar
11
11
  import * as i1 from '@angular/common/http';
12
12
  import { HttpParams } from '@angular/common/http';
13
13
  import { map, shareReplay, catchError, throwError, lastValueFrom } from 'rxjs';
14
- import { faCakeCandles, faTreePalm, faCalendarStar, faMemoCircleInfo, faPhone, faBolt, faLanguage, faEarthAfrica, faHouse, faXmark } from '@fortawesome/pro-light-svg-icons';
14
+ import { faCakeCandles, faTreePalm, faCalendarStar, faMoneyCheckDollarPen, faMemoCircleInfo, faPhone, faBolt, faLanguage, faEarthAfrica, faHouse, faFileSignature, faSackDollar, faEnvelopeOpenDollar, 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';
@@ -2472,6 +2472,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2472
2472
  type: Input
2473
2473
  }] } });
2474
2474
 
2475
+ class ProfileBankInfoWidgetComponent {
2476
+ commonMethodsService;
2477
+ hrSelfWidgetsService;
2478
+ isLoading = true;
2479
+ constructor(commonMethodsService, hrSelfWidgetsService) {
2480
+ this.commonMethodsService = commonMethodsService;
2481
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
2482
+ }
2483
+ ngOnInit() {
2484
+ this.isLoadingChanged.emit(true);
2485
+ this.hrSelfWidgetsService.getBankInformation(this.baseUrl).subscribe({
2486
+ next: (response) => {
2487
+ this.isLoading = false;
2488
+ this.employeeBankInformation = response ?? [];
2489
+ this.isLoadingChanged.emit(false);
2490
+ },
2491
+ error: (error) => {
2492
+ this.isLoading = false;
2493
+ this.employeeBankInformation = [];
2494
+ this.isLoadingChanged.emit(false);
2495
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
2496
+ }
2497
+ });
2498
+ }
2499
+ employeeBankInformation = [];
2500
+ currencyCode = '';
2501
+ currencyDecimals = 2;
2502
+ headerIconClass = 'primary-icon-xl';
2503
+ headerTextClass = 'mt-2 field-secondary-label-lg';
2504
+ headerDividerClass = 'flex-grow-1 ms-2';
2505
+ cardClass = 'mt-4 card-shadow position-relative';
2506
+ mainBadgeClass = 'position-absolute text-center top-0 mt-3 start-0 bg-primary status-badge';
2507
+ mainBadgeTextClass = 'mx-1 fs-12 text-white';
2508
+ triangleClass = 'position-absolute start-0 top-0';
2509
+ rowClass = 'row px-4 pb-3';
2510
+ rowMainPtClass = 'pt-5';
2511
+ rowNormalPtClass = 'pt-3';
2512
+ columnClass = 'col-md-4 col-6';
2513
+ responsiveTopSpacingColClass = 'col-md-4 col-6 mt-md-0 mt-4';
2514
+ topSpacingColClass = 'col-md-4 col-6 mt-4';
2515
+ labelClass = 'field-secondary-label-sm';
2516
+ valueClass = 'table-cell-md text-ellipsis-one-line';
2517
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
2518
+ emptyStateTextClass = 'field-secondary-label-md';
2519
+ bankInformationIcon = faMoneyCheckDollarPen;
2520
+ sectionHeaderVisibility = true;
2521
+ sectionTitle = 'BankInformation';
2522
+ language = 'en';
2523
+ baseUrl = '';
2524
+ errorOccurred = new EventEmitter();
2525
+ isRTL = this.language === 'ar';
2526
+ isLoadingChanged = new EventEmitter();
2527
+ ngOnChanges(changes) {
2528
+ if (changes['language']) {
2529
+ this.isRTL = this.language === 'ar';
2530
+ }
2531
+ }
2532
+ formatAmount(value) {
2533
+ if (value == null) {
2534
+ return '-';
2535
+ }
2536
+ return this.commonMethodsService.currencyDecimalFormat(value, this.currencyDecimals) || '-';
2537
+ }
2538
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileBankInfoWidgetComponent, deps: [{ token: HRCommonMethodsService }, { token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
2539
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileBankInfoWidgetComponent, isStandalone: true, selector: "hr-profile-bank-info-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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoBankYet' | HRTranslate)\">\r\n</sky-empty-design-card>\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: SkyEmptyDesignCardComponent, selector: "sky-empty-design-card", inputs: ["emptyIcon", "emptyIconClass", "emptyText", "emptyTextClass", "actionTitle", "actionIcon", "actionDisabled", "textColor", "disabledTitleClass", "activeTitleClass", "disabledIconClass", "activeIconClass", "actionClass", "containerClass", "cardBodyClass", "cardBodyContainerClass", "visibleIcon", "visibleQuickAction"], outputs: ["onActionClick"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
2540
+ }
2541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileBankInfoWidgetComponent, decorators: [{
2542
+ type: Component,
2543
+ args: [{ selector: 'hr-profile-bank-info-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, SkyEmptyDesignCardComponent, HRInfoFieldComponent], 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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoBankYet' | HRTranslate)\">\r\n</sky-empty-design-card>\r\n}\r\n" }]
2544
+ }], ctorParameters: () => [{ type: HRCommonMethodsService }, { type: HRSelfWidgetsService }], propDecorators: { currencyCode: [{
2545
+ type: Input
2546
+ }], currencyDecimals: [{
2547
+ type: Input
2548
+ }], headerIconClass: [{
2549
+ type: Input
2550
+ }], headerTextClass: [{
2551
+ type: Input
2552
+ }], headerDividerClass: [{
2553
+ type: Input
2554
+ }], cardClass: [{
2555
+ type: Input
2556
+ }], mainBadgeClass: [{
2557
+ type: Input
2558
+ }], mainBadgeTextClass: [{
2559
+ type: Input
2560
+ }], triangleClass: [{
2561
+ type: Input
2562
+ }], rowClass: [{
2563
+ type: Input
2564
+ }], rowMainPtClass: [{
2565
+ type: Input
2566
+ }], rowNormalPtClass: [{
2567
+ type: Input
2568
+ }], columnClass: [{
2569
+ type: Input
2570
+ }], responsiveTopSpacingColClass: [{
2571
+ type: Input
2572
+ }], topSpacingColClass: [{
2573
+ type: Input
2574
+ }], labelClass: [{
2575
+ type: Input
2576
+ }], valueClass: [{
2577
+ type: Input
2578
+ }], emptyStateContainerClass: [{
2579
+ type: Input
2580
+ }], emptyStateTextClass: [{
2581
+ type: Input
2582
+ }], bankInformationIcon: [{
2583
+ type: Input
2584
+ }], sectionHeaderVisibility: [{
2585
+ type: Input
2586
+ }], sectionTitle: [{
2587
+ type: Input
2588
+ }], language: [{
2589
+ type: Input
2590
+ }], baseUrl: [{
2591
+ type: Input,
2592
+ args: [{ required: true }]
2593
+ }], errorOccurred: [{
2594
+ type: Output
2595
+ }], isLoadingChanged: [{
2596
+ type: Output
2597
+ }] } });
2598
+
2475
2599
  class ProfilePersonalInfoMainWidgetComponent {
2476
2600
  hrSelfWidgetsService;
2477
2601
  employeePersonalInformation = null;
@@ -2912,6 +3036,393 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2912
3036
  type: Output
2913
3037
  }] } });
2914
3038
 
3039
+ class ProfileJobInfoMainWidgetComponent {
3040
+ hrSelfWidgetsService;
3041
+ jobInformationMain = null;
3042
+ isLoading = true;
3043
+ baseUrl = '';
3044
+ headerIconClass = 'primary-icon-xl';
3045
+ headerTextClass = 'mt-2 field-secondary-label-lg';
3046
+ headerDividerClass = 'flex-grow-1 ms-2';
3047
+ rowClass = 'row mt-4';
3048
+ columnClass = 'col-md-4 col-6';
3049
+ responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
3050
+ topSpacingBottomMdSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-md-5';
3051
+ topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
3052
+ labelClass = 'field-secondary-label-sm';
3053
+ valueClass = 'fs-14 fw-medium text-ellipsis-one-line';
3054
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3055
+ emptyStateTextClass = 'field-secondary-label-md';
3056
+ mainIcon = faFileSignature;
3057
+ sectionTitle = 'JobInformation';
3058
+ isLoadingChanged = new EventEmitter();
3059
+ errorOccurred = new EventEmitter();
3060
+ constructor(hrSelfWidgetsService) {
3061
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
3062
+ }
3063
+ ngOnInit() {
3064
+ if (!this.baseUrl) {
3065
+ this.isLoading = false;
3066
+ return;
3067
+ }
3068
+ this.isLoadingChanged.emit(true);
3069
+ this.hrSelfWidgetsService.getJobInformationMain(this.baseUrl).subscribe({
3070
+ next: (response) => {
3071
+ this.isLoading = false;
3072
+ this.jobInformationMain = response;
3073
+ this.isLoadingChanged.emit(false);
3074
+ },
3075
+ error: (error) => {
3076
+ this.isLoading = false;
3077
+ this.jobInformationMain = null;
3078
+ this.isLoadingChanged.emit(false);
3079
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3080
+ }
3081
+ });
3082
+ }
3083
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoMainWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
3084
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInfoMainWidgetComponent, isStandalone: true, selector: "hr-profile-job-info-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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobMainYet' | HRTranslate)\">\r\n</sky-empty-design-card>\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: SkyEmptyDesignCardComponent, selector: "sky-empty-design-card", inputs: ["emptyIcon", "emptyIconClass", "emptyText", "emptyTextClass", "actionTitle", "actionIcon", "actionDisabled", "textColor", "disabledTitleClass", "activeTitleClass", "disabledIconClass", "activeIconClass", "actionClass", "containerClass", "cardBodyClass", "cardBodyContainerClass", "visibleIcon", "visibleQuickAction"], outputs: ["onActionClick"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
3085
+ }
3086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoMainWidgetComponent, decorators: [{
3087
+ type: Component,
3088
+ args: [{ selector: 'hr-profile-job-info-main-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, SkyEmptyDesignCardComponent, 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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobMainYet' | HRTranslate)\">\r\n</sky-empty-design-card>\r\n}\r\n" }]
3089
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
3090
+ type: Input,
3091
+ args: [{ required: true }]
3092
+ }], headerIconClass: [{
3093
+ type: Input
3094
+ }], headerTextClass: [{
3095
+ type: Input
3096
+ }], headerDividerClass: [{
3097
+ type: Input
3098
+ }], rowClass: [{
3099
+ type: Input
3100
+ }], columnClass: [{
3101
+ type: Input
3102
+ }], responsiveTopSpacingColumnClass: [{
3103
+ type: Input
3104
+ }], topSpacingBottomMdSpacingColumnClass: [{
3105
+ type: Input
3106
+ }], topSpacingBottomSpacingColumnClass: [{
3107
+ type: Input
3108
+ }], labelClass: [{
3109
+ type: Input
3110
+ }], valueClass: [{
3111
+ type: Input
3112
+ }], emptyStateContainerClass: [{
3113
+ type: Input
3114
+ }], emptyStateTextClass: [{
3115
+ type: Input
3116
+ }], mainIcon: [{
3117
+ type: Input
3118
+ }], sectionTitle: [{
3119
+ type: Input
3120
+ }], isLoadingChanged: [{
3121
+ type: Output
3122
+ }], errorOccurred: [{
3123
+ type: Output
3124
+ }] } });
3125
+
3126
+ class ProfileJobInfoContractWidgetComponent {
3127
+ hrSelfWidgetsService;
3128
+ jobInformationContract = null;
3129
+ isLoading = true;
3130
+ baseUrl = '';
3131
+ headerIconClass = 'primary-icon-xl';
3132
+ headerTextClass = 'mt-2 field-secondary-label-lg';
3133
+ headerDividerClass = 'flex-grow-1 ms-2';
3134
+ rowClass = 'row mt-4';
3135
+ columnClass = 'col-md-4 col-6';
3136
+ responsiveTopSpacingColumnClass = 'col-md-4 col-6 mt-md-0 mt-4';
3137
+ topSpacingBottomMdSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-md-5';
3138
+ topSpacingBottomSpacingColumnClass = 'col-md-4 col-6 mt-4 mb-5';
3139
+ labelClass = 'field-secondary-label-sm';
3140
+ valueClass = 'fs-14 fw-medium text-ellipsis-one-line';
3141
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3142
+ emptyStateTextClass = 'field-secondary-label-md';
3143
+ contractIcon = faFileSignature;
3144
+ sectionTitle = 'Contract';
3145
+ isLoadingChanged = new EventEmitter();
3146
+ errorOccurred = new EventEmitter();
3147
+ constructor(hrSelfWidgetsService) {
3148
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
3149
+ }
3150
+ ngOnInit() {
3151
+ if (!this.baseUrl) {
3152
+ this.isLoading = false;
3153
+ return;
3154
+ }
3155
+ this.isLoadingChanged.emit(true);
3156
+ this.hrSelfWidgetsService.getJobInformationContract(this.baseUrl).subscribe({
3157
+ next: (response) => {
3158
+ this.isLoading = false;
3159
+ this.jobInformationContract = response;
3160
+ this.isLoadingChanged.emit(false);
3161
+ },
3162
+ error: (error) => {
3163
+ this.isLoading = false;
3164
+ this.jobInformationContract = null;
3165
+ this.isLoadingChanged.emit(false);
3166
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3167
+ }
3168
+ });
3169
+ }
3170
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoContractWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
3171
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInfoContractWidgetComponent, isStandalone: true, selector: "hr-profile-job-info-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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobContractYet' | HRTranslate)\">\r\n</sky-empty-design-card>\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: SkyEmptyDesignCardComponent, selector: "sky-empty-design-card", inputs: ["emptyIcon", "emptyIconClass", "emptyText", "emptyTextClass", "actionTitle", "actionIcon", "actionDisabled", "textColor", "disabledTitleClass", "activeTitleClass", "disabledIconClass", "activeIconClass", "actionClass", "containerClass", "cardBodyClass", "cardBodyContainerClass", "visibleIcon", "visibleQuickAction"], outputs: ["onActionClick"] }, { kind: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
3172
+ }
3173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoContractWidgetComponent, decorators: [{
3174
+ type: Component,
3175
+ args: [{ selector: 'hr-profile-job-info-contract-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent, SkyEmptyDesignCardComponent, 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<sky-empty-design-card [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoJobContractYet' | HRTranslate)\">\r\n</sky-empty-design-card>\r\n}\r\n" }]
3176
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
3177
+ type: Input,
3178
+ args: [{ required: true }]
3179
+ }], headerIconClass: [{
3180
+ type: Input
3181
+ }], headerTextClass: [{
3182
+ type: Input
3183
+ }], headerDividerClass: [{
3184
+ type: Input
3185
+ }], rowClass: [{
3186
+ type: Input
3187
+ }], columnClass: [{
3188
+ type: Input
3189
+ }], responsiveTopSpacingColumnClass: [{
3190
+ type: Input
3191
+ }], topSpacingBottomMdSpacingColumnClass: [{
3192
+ type: Input
3193
+ }], topSpacingBottomSpacingColumnClass: [{
3194
+ type: Input
3195
+ }], labelClass: [{
3196
+ type: Input
3197
+ }], valueClass: [{
3198
+ type: Input
3199
+ }], emptyStateContainerClass: [{
3200
+ type: Input
3201
+ }], emptyStateTextClass: [{
3202
+ type: Input
3203
+ }], contractIcon: [{
3204
+ type: Input
3205
+ }], sectionTitle: [{
3206
+ type: Input
3207
+ }], isLoadingChanged: [{
3208
+ type: Output
3209
+ }], errorOccurred: [{
3210
+ type: Output
3211
+ }] } });
3212
+
3213
+ class ProfileJobInfoSalaryWidgetComponent {
3214
+ hrSelfWidgetsService;
3215
+ commonMethodsService;
3216
+ jobInformationSalary = null;
3217
+ isLoading = true;
3218
+ baseUrl = '';
3219
+ currencyCode = '';
3220
+ currencyDecimals = 2;
3221
+ headerIconClass = 'primary-icon-xl';
3222
+ headerTextClass = 'mt-2 field-secondary-label-lg';
3223
+ headerDividerClass = 'flex-grow-1 ms-2';
3224
+ rowClass = 'row mt-4';
3225
+ columnClass = 'col-md-4 col-6 mt-4';
3226
+ grossSalaryColumnClass = 'col-md-4 col-6 my-4';
3227
+ labelClass = 'field-secondary-label-sm';
3228
+ valueClass = 'fs-14 fw-medium text-ellipsis-one-line';
3229
+ currencyClass = 'fs-10 text-secondary fw-light';
3230
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3231
+ emptyStateTextClass = 'field-secondary-label-md';
3232
+ salaryIcon = faSackDollar;
3233
+ sectionTitle = 'Salary';
3234
+ isLoadingChanged = new EventEmitter();
3235
+ errorOccurred = new EventEmitter();
3236
+ constructor(hrSelfWidgetsService, commonMethodsService) {
3237
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
3238
+ this.commonMethodsService = commonMethodsService;
3239
+ }
3240
+ ngOnInit() {
3241
+ if (!this.baseUrl) {
3242
+ this.isLoading = false;
3243
+ return;
3244
+ }
3245
+ this.isLoadingChanged.emit(true);
3246
+ this.hrSelfWidgetsService.getJobInformationSalary(this.baseUrl).subscribe({
3247
+ next: (response) => {
3248
+ this.isLoading = false;
3249
+ this.jobInformationSalary = response;
3250
+ this.isLoadingChanged.emit(false);
3251
+ },
3252
+ error: (error) => {
3253
+ this.isLoading = false;
3254
+ this.jobInformationSalary = null;
3255
+ this.isLoadingChanged.emit(false);
3256
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3257
+ }
3258
+ });
3259
+ }
3260
+ get basicSalary() {
3261
+ return this.jobInformationSalary?.BasicSalary ?? this.jobInformationSalary?.CurrentBasicSalary ?? null;
3262
+ }
3263
+ get allowances() {
3264
+ return this.jobInformationSalary?.Allowances ?? [];
3265
+ }
3266
+ formatAmount(value) {
3267
+ if (value == null) {
3268
+ return '—';
3269
+ }
3270
+ return this.commonMethodsService.currencyDecimalFormat(value, this.currencyDecimals) || '—';
3271
+ }
3272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoSalaryWidgetComponent, deps: [{ token: HRSelfWidgetsService }, { token: HRCommonMethodsService }], target: i0.ɵɵFactoryTarget.Component });
3273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInfoSalaryWidgetComponent, isStandalone: true, selector: "hr-profile-job-info-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: "@if(jobInformationSalary){\r\n<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<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}\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"] }] });
3274
+ }
3275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoSalaryWidgetComponent, decorators: [{
3276
+ type: Component,
3277
+ args: [{ selector: 'hr-profile-job-info-salary-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent], template: "@if(jobInformationSalary){\r\n<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<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}\r\n" }]
3278
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }, { type: HRCommonMethodsService }], propDecorators: { baseUrl: [{
3279
+ type: Input,
3280
+ args: [{ required: true }]
3281
+ }], currencyCode: [{
3282
+ type: Input
3283
+ }], currencyDecimals: [{
3284
+ type: Input
3285
+ }], headerIconClass: [{
3286
+ type: Input
3287
+ }], headerTextClass: [{
3288
+ type: Input
3289
+ }], headerDividerClass: [{
3290
+ type: Input
3291
+ }], rowClass: [{
3292
+ type: Input
3293
+ }], columnClass: [{
3294
+ type: Input
3295
+ }], grossSalaryColumnClass: [{
3296
+ type: Input
3297
+ }], labelClass: [{
3298
+ type: Input
3299
+ }], valueClass: [{
3300
+ type: Input
3301
+ }], currencyClass: [{
3302
+ type: Input
3303
+ }], emptyStateContainerClass: [{
3304
+ type: Input
3305
+ }], emptyStateTextClass: [{
3306
+ type: Input
3307
+ }], salaryIcon: [{
3308
+ type: Input
3309
+ }], sectionTitle: [{
3310
+ type: Input
3311
+ }], isLoadingChanged: [{
3312
+ type: Output
3313
+ }], errorOccurred: [{
3314
+ type: Output
3315
+ }] } });
3316
+
3317
+ class ProfileJobInfoServiceChargeWidgetComponent {
3318
+ hrSelfWidgetsService;
3319
+ commonMethodsService;
3320
+ jobInformationServiceCharge = null;
3321
+ isLoading = true;
3322
+ baseUrl = '';
3323
+ currencyCode = '';
3324
+ headerIconClass = 'primary-icon-xl';
3325
+ headerTextClass = 'mt-2 field-secondary-label-lg';
3326
+ headerDividerClass = 'flex-grow-1 ms-2';
3327
+ rowClass = 'row mt-4 mb-5';
3328
+ columnClass = 'col-md-4 col-6';
3329
+ labelClass = 'field-secondary-label-sm';
3330
+ valueClass = 'fs-14 fw-medium text-ellipsis-one-line';
3331
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3332
+ emptyStateTextClass = 'field-secondary-label-md';
3333
+ serviceChargeIcon = faEnvelopeOpenDollar;
3334
+ sectionTitle = 'ServiceCharge';
3335
+ isLoadingChanged = new EventEmitter();
3336
+ errorOccurred = new EventEmitter();
3337
+ constructor(hrSelfWidgetsService, commonMethodsService) {
3338
+ this.hrSelfWidgetsService = hrSelfWidgetsService;
3339
+ this.commonMethodsService = commonMethodsService;
3340
+ }
3341
+ ngOnInit() {
3342
+ if (!this.baseUrl) {
3343
+ this.isLoading = false;
3344
+ return;
3345
+ }
3346
+ this.isLoadingChanged.emit(true);
3347
+ this.hrSelfWidgetsService.getJobInformationServiceCharge(this.baseUrl).subscribe({
3348
+ next: (response) => {
3349
+ this.isLoading = false;
3350
+ this.jobInformationServiceCharge = response;
3351
+ this.isLoadingChanged.emit(false);
3352
+ },
3353
+ error: (error) => {
3354
+ this.isLoading = false;
3355
+ this.jobInformationServiceCharge = null;
3356
+ this.isLoadingChanged.emit(false);
3357
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3358
+ }
3359
+ });
3360
+ }
3361
+ get modeLabelKey() {
3362
+ const mode = this.jobInformationServiceCharge?.ServiceChargeEntitlementMode;
3363
+ switch (ServiceChargeEntitlementMode[mode]) {
3364
+ case ServiceChargeEntitlementMode.Points:
3365
+ return 'Points';
3366
+ case ServiceChargeEntitlementMode.SalaryRatio:
3367
+ return 'SalaryRatio';
3368
+ case ServiceChargeEntitlementMode.FixedAmount:
3369
+ return 'FixedAmount';
3370
+ case ServiceChargeEntitlementMode.FixedRate:
3371
+ return 'FixedRate';
3372
+ default:
3373
+ return 'ServiceCharge';
3374
+ }
3375
+ }
3376
+ get value() {
3377
+ const data = this.jobInformationServiceCharge;
3378
+ if (!data || data.ServiceChargeValue == null) {
3379
+ return '—';
3380
+ }
3381
+ if (ServiceChargeEntitlementMode[data.ServiceChargeEntitlementMode] ===
3382
+ ServiceChargeEntitlementMode.FixedAmount) {
3383
+ return `${this.commonMethodsService.currencyDecimalFormat(data.ServiceChargeValue, 4)} (${this.currencyCode})`;
3384
+ }
3385
+ return this.commonMethodsService.currencyDecimalFormat(data.ServiceChargeValue, 2) || '—';
3386
+ }
3387
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoServiceChargeWidgetComponent, deps: [{ token: HRSelfWidgetsService }, { token: HRCommonMethodsService }], target: i0.ɵɵFactoryTarget.Component });
3388
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileJobInfoServiceChargeWidgetComponent, isStandalone: true, selector: "hr-profile-job-info-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: "@if(jobInformationServiceCharge){\r\n<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<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}\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"] }] });
3389
+ }
3390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileJobInfoServiceChargeWidgetComponent, decorators: [{
3391
+ type: Component,
3392
+ args: [{ selector: 'hr-profile-job-info-service-charge-widget', standalone: true, imports: [CommonModule, HRTranslatePipe, SkySectionDividerComponent], template: "@if(jobInformationServiceCharge){\r\n<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<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}\r\n" }]
3393
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }, { type: HRCommonMethodsService }], propDecorators: { baseUrl: [{
3394
+ type: Input,
3395
+ args: [{ required: true }]
3396
+ }], currencyCode: [{
3397
+ type: Input
3398
+ }], headerIconClass: [{
3399
+ type: Input
3400
+ }], headerTextClass: [{
3401
+ type: Input
3402
+ }], headerDividerClass: [{
3403
+ type: Input
3404
+ }], rowClass: [{
3405
+ type: Input
3406
+ }], columnClass: [{
3407
+ type: Input
3408
+ }], labelClass: [{
3409
+ type: Input
3410
+ }], valueClass: [{
3411
+ type: Input
3412
+ }], emptyStateContainerClass: [{
3413
+ type: Input
3414
+ }], emptyStateTextClass: [{
3415
+ type: Input
3416
+ }], serviceChargeIcon: [{
3417
+ type: Input
3418
+ }], sectionTitle: [{
3419
+ type: Input
3420
+ }], isLoadingChanged: [{
3421
+ type: Output
3422
+ }], errorOccurred: [{
3423
+ type: Output
3424
+ }] } });
3425
+
2915
3426
  class HRVacationSubordinatesPopupComponent {
2916
3427
  http;
2917
3428
  dataGrid;
@@ -3118,5 +3629,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
3118
3629
  * Generated bundle index. Do not edit.
3119
3630
  */
3120
3631
 
3121
- export { EventOption, EventTypeEnum, HRCardHeaderComponent, HRConstantsService, HREmployeeCalendarComponent, HRTranslatePipe, HRTranslateService, MainWidgetShortcut, MyCalendarWidgetComponent, MyMainDetailsWidgetComponent, MyUpcomingEventsWidgetComponent, MyVacationTeamWidgetComponent, ProfilePersonalInfoAddressWidgetComponent, ProfilePersonalInfoContactWidgetComponent, ProfilePersonalInfoLanguagesWidgetComponent, ProfilePersonalInfoMainWidgetComponent, ProfilePersonalInfoOtherNationalitiesWidgetComponent, PublicHolidayWeekContext, RelativeDay, ScheduleVacationTypes, ServiceChargeEntitlementMode, VacationPopupType };
3632
+ export { EventOption, EventTypeEnum, HRCardHeaderComponent, HRConstantsService, HREmployeeCalendarComponent, HRTranslatePipe, HRTranslateService, MainWidgetShortcut, MyCalendarWidgetComponent, MyMainDetailsWidgetComponent, MyUpcomingEventsWidgetComponent, MyVacationTeamWidgetComponent, ProfileBankInfoWidgetComponent, ProfileJobInfoContractWidgetComponent, ProfileJobInfoMainWidgetComponent, ProfileJobInfoSalaryWidgetComponent, ProfileJobInfoServiceChargeWidgetComponent, ProfilePersonalInfoAddressWidgetComponent, ProfilePersonalInfoContactWidgetComponent, ProfilePersonalInfoLanguagesWidgetComponent, ProfilePersonalInfoMainWidgetComponent, ProfilePersonalInfoOtherNationalitiesWidgetComponent, PublicHolidayWeekContext, RelativeDay, ScheduleVacationTypes, ServiceChargeEntitlementMode, VacationPopupType };
3122
3633
  //# sourceMappingURL=skysoftware-co-bayan-hr-widgets-ui.mjs.map