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

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.
package/README.md CHANGED
@@ -344,6 +344,83 @@ The package also exports profile-focused widgets used in the employee profile pa
344
344
  - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
345
345
  - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
346
346
 
347
+ ## Profile Experiences Widget
348
+
349
+ ### Usage
350
+ ```html
351
+ <hr-profile-experiences-widget
352
+ [baseUrl]="baseUrl"
353
+ (isLoadingChanged)="onExperiencesLoadingChanged($event)">
354
+ </hr-profile-experiences-widget>
355
+ ```
356
+
357
+ ### Input Properties
358
+ | Input | Type | Default Value | Description |
359
+ |-------|------|---------------|-------------|
360
+ | `baseUrl` | string | `''` | Base URL for API calls. |
361
+ | `sectionTitle` | string | `'experiences'` | Section title translation key. |
362
+ | `experienceIcon` | IconDefinition | `faUsersRays` | Header icon. |
363
+ | `viewIcon` | IconDefinition | `faEye` | Attachment view icon. |
364
+ | `downloadIcon` | IconDefinition | `faFolderArrowDown` | Attachment download icon. |
365
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class. |
366
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class. |
367
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class. |
368
+ | `rowClass` | string | `'row mt-4'` | Main row CSS class. |
369
+ | `itemRowClass` | string | `'row col-10 mt-3'` | Experience row CSS class. |
370
+ | `itemColumnClass` | string | `'col-3'` | Column CSS class. |
371
+ | `labelClass` | string | `'field-secondary-label-sm'` | `hr-info-field` label CSS class. |
372
+ | `valueClass` | string | `'text-dark-gray fs-14 text-ellipsis-one-line cursor-pointer'` | `hr-info-field` value CSS class. |
373
+ | `actionsColumnClass` | string | `'col-2 mt-3'` | Attachment action column CSS class. |
374
+ | `viewIconClass` | string | `'fs-15 text-dark cursor-pointer'` | View icon CSS class. |
375
+ | `downloadIconClass` | string | `'fs-15 text-dark cursor-pointer mx-2'` | Download icon CSS class. |
376
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class. |
377
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class. |
378
+
379
+ ### Output Events
380
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
381
+ - `attachmentViewed: EventEmitter<any>` - Emitted when attachment view icon is clicked.
382
+ - `attachmentDownloaded: EventEmitter<any>` - Emitted when attachment download icon is clicked.
383
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
384
+
385
+ ## Profile Degrees Widget
386
+
387
+ ### Usage
388
+ ```html
389
+ <hr-profile-degrees-widget
390
+ [baseUrl]="baseUrl"
391
+ (isLoadingChanged)="onDegreesLoadingChanged($event)">
392
+ </hr-profile-degrees-widget>
393
+ ```
394
+
395
+ ### Input Properties
396
+ | Input | Type | Default Value | Description |
397
+ |-------|------|---------------|-------------|
398
+ | `baseUrl` | string | `''` | Base URL for API calls. |
399
+ | `sectionTitle` | string | `'degrees'` | Section title translation key. |
400
+ | `degreesIcon` | IconDefinition | `faFileCertificate` | Header icon. |
401
+ | `viewIcon` | IconDefinition | `faEye` | Attachment view icon. |
402
+ | `downloadIcon` | IconDefinition | `faFolderArrowDown` | Attachment download icon. |
403
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class. |
404
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class. |
405
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class. |
406
+ | `rowClass` | string | `'row mt-4'` | Main row CSS class. |
407
+ | `itemRowClass` | string | `'row col-10 mt-3'` | Degree row CSS class. |
408
+ | `itemColumnClass` | string | `'col-3'` | Column CSS class. |
409
+ | `labelClass` | string | `'field-secondary-label-sm'` | `hr-info-field` label CSS class. |
410
+ | `valueClass` | string | `'text-dark-gray fs-14'` | `hr-info-field` main value CSS class. |
411
+ | `valueEllipsisClass` | string | `'text-dark-gray fs-14 text-ellipsis-one-line cursor-pointer'` | `hr-info-field` ellipsis value CSS class. |
412
+ | `actionsColumnClass` | string | `'col-2 align-items-end mt-3'` | Attachment action column CSS class. |
413
+ | `viewIconClass` | string | `'fs-15 text-dark cursor-pointer'` | View icon CSS class. |
414
+ | `downloadIconClass` | string | `'fs-15 mx-3 text-dark cursor-pointer'` | Download icon CSS class. |
415
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class. |
416
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class. |
417
+
418
+ ### Output Events
419
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
420
+ - `attachmentViewed: EventEmitter<any>` - Emitted when attachment view icon is clicked.
421
+ - `attachmentDownloaded: EventEmitter<any>` - Emitted when attachment download icon is clicked.
422
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
423
+
347
424
  ## Profile Personal Info Contact Widget
348
425
 
349
426
  ### Usage
@@ -11,9 +11,9 @@ 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, faMoneyCheckDollarPen, faMemoCircleInfo, faPhone, faBolt, faLanguage, faEarthAfrica, faHouse, faFileSignature, faSackDollar, faEnvelopeOpenDollar, faXmark } from '@fortawesome/pro-light-svg-icons';
14
+ import { faCakeCandles, faTreePalm, faCalendarStar, faMoneyCheckDollarPen, faMemoCircleInfo, faPhone, faBolt, faLanguage, faEarthAfrica, faHouse, faFileSignature, faSackDollar, faEnvelopeOpenDollar, faXmark, faFolderArrowDown, faUsersRays, faFileCertificate } from '@fortawesome/pro-light-svg-icons';
15
15
  import * as i2 from 'devextreme-angular/core';
16
- import { faCircle, faCalendarDays } from '@fortawesome/pro-regular-svg-icons';
16
+ import { faCircle, faCalendarDays, faEye } from '@fortawesome/pro-regular-svg-icons';
17
17
  import moment from 'moment';
18
18
  import { faPlaneDeparture, faPlaneArrival } from '@fortawesome/pro-solid-svg-icons';
19
19
  import CustomStore from 'devextreme/data/custom_store';
@@ -177,6 +177,17 @@ var StartDate$2 = "Start date";
177
177
  var EndDate$2 = "End date";
178
178
  var ReturnDate$2 = "Return date";
179
179
  var JobInformation$2 = "Job information";
180
+ var Degrees$2 = "Degrees";
181
+ var degrees$2 = "Degrees";
182
+ var experiences$2 = "Experiences";
183
+ var Country$2 = "Country";
184
+ var Specialty$2 = "Specialty";
185
+ var Institute$2 = "Institute";
186
+ var Period$2 = "Period";
187
+ var Employer$2 = "Employer";
188
+ var TerminationReason$2 = "Termination reason";
189
+ var ThereIsNoDegreesYet$2 = "There are no degrees yet";
190
+ var ThereIsNoExperiencesYet$2 = "There are no experiences yet";
180
191
  var en = {
181
192
  ReportingTo: ReportingTo$2,
182
193
  NotAnknown: NotAnknown$2,
@@ -286,7 +297,19 @@ var en = {
286
297
  EndDate: EndDate$2,
287
298
  ReturnDate: ReturnDate$2,
288
299
  "Search...": "Search...",
289
- JobInformation: JobInformation$2
300
+ JobInformation: JobInformation$2,
301
+ Degrees: Degrees$2,
302
+ degrees: degrees$2,
303
+ experiences: experiences$2,
304
+ "Degree/Year": "Degree/Year",
305
+ Country: Country$2,
306
+ Specialty: Specialty$2,
307
+ Institute: Institute$2,
308
+ Period: Period$2,
309
+ Employer: Employer$2,
310
+ TerminationReason: TerminationReason$2,
311
+ ThereIsNoDegreesYet: ThereIsNoDegreesYet$2,
312
+ ThereIsNoExperiencesYet: ThereIsNoExperiencesYet$2
290
313
  };
291
314
 
292
315
  var ReportingTo$1 = "مفوض الى";
@@ -395,6 +418,17 @@ var StartDate$1 = "تاريخ البداية";
395
418
  var EndDate$1 = "تاريخ النهاية";
396
419
  var ReturnDate$1 = "تاريخ العودة";
397
420
  var JobInformation$1 = "معلومات الوظيفة";
421
+ var Degrees$1 = "المؤهلات العلمية";
422
+ var degrees$1 = "المؤهلات العلمية";
423
+ var experiences$1 = "الخبرات";
424
+ var Country$1 = "الدولة";
425
+ var Specialty$1 = "التخصص";
426
+ var Institute$1 = "المعهد";
427
+ var Period$1 = "الفترة";
428
+ var Employer$1 = "جهة العمل";
429
+ var TerminationReason$1 = "سبب إنهاء الخدمة";
430
+ var ThereIsNoDegreesYet$1 = "لا توجد مؤهلات علمية بعد";
431
+ var ThereIsNoExperiencesYet$1 = "لا توجد خبرات بعد";
398
432
  var ar = {
399
433
  ReportingTo: ReportingTo$1,
400
434
  NotAnknown: NotAnknown$1,
@@ -503,7 +537,19 @@ var ar = {
503
537
  EndDate: EndDate$1,
504
538
  ReturnDate: ReturnDate$1,
505
539
  "Search...": "بحث...",
506
- JobInformation: JobInformation$1
540
+ JobInformation: JobInformation$1,
541
+ Degrees: Degrees$1,
542
+ degrees: degrees$1,
543
+ experiences: experiences$1,
544
+ "Degree/Year": "الدرجة / السنة",
545
+ Country: Country$1,
546
+ Specialty: Specialty$1,
547
+ Institute: Institute$1,
548
+ Period: Period$1,
549
+ Employer: Employer$1,
550
+ TerminationReason: TerminationReason$1,
551
+ ThereIsNoDegreesYet: ThereIsNoDegreesYet$1,
552
+ ThereIsNoExperiencesYet: ThereIsNoExperiencesYet$1
507
553
  };
508
554
 
509
555
  var ReportingTo = "Rapport à";
@@ -613,6 +659,17 @@ var StartDate = "Date de début";
613
659
  var EndDate = "Date de fin";
614
660
  var ReturnDate = "Date de retour";
615
661
  var JobInformation = "Informations sur l'emploi";
662
+ var Degrees = "Diplomes";
663
+ var degrees = "Diplomes";
664
+ var experiences = "Experiences";
665
+ var Country = "Pays";
666
+ var Specialty = "Specialite";
667
+ var Institute = "Institut";
668
+ var Period = "Periode";
669
+ var Employer = "Employeur";
670
+ var TerminationReason = "Motif de fin de service";
671
+ var ThereIsNoDegreesYet = "Il n'y a pas encore de diplomes";
672
+ var ThereIsNoExperiencesYet = "Il n'y a pas encore d'experiences";
616
673
  var fr = {
617
674
  ReportingTo: ReportingTo,
618
675
  NotAnknown: NotAnknown,
@@ -722,7 +779,19 @@ var fr = {
722
779
  EndDate: EndDate,
723
780
  ReturnDate: ReturnDate,
724
781
  "Search...": "Rechercher...",
725
- JobInformation: JobInformation
782
+ JobInformation: JobInformation,
783
+ Degrees: Degrees,
784
+ degrees: degrees,
785
+ experiences: experiences,
786
+ "Degree/Year": "Diplome/Annee",
787
+ Country: Country,
788
+ Specialty: Specialty,
789
+ Institute: Institute,
790
+ Period: Period,
791
+ Employer: Employer,
792
+ TerminationReason: TerminationReason,
793
+ ThereIsNoDegreesYet: ThereIsNoDegreesYet,
794
+ ThereIsNoExperiencesYet: ThereIsNoExperiencesYet
726
795
  };
727
796
 
728
797
  const BUILT_IN_LEXICONS = { en, ar, fr };
@@ -2454,11 +2523,11 @@ class HRInfoFieldComponent {
2454
2523
  valueClass = 'fs-14 fw-medium';
2455
2524
  fallbackValue = '—';
2456
2525
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRInfoFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2457
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: HRInfoFieldComponent, isStandalone: true, selector: "hr-info-field", inputs: { labelKey: "labelKey", value: "value", labelClass: "labelClass", valueClass: "valueClass", fallbackValue: "fallbackValue" }, ngImport: i0, template: "<div [ngClass]=\"labelClass\">{{labelKey | HRTranslate}}</div>\r\n<div [ngClass]=\"valueClass\" [title]=\"value|| fallbackValue\">{{value || fallbackValue}}</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }] });
2526
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: HRInfoFieldComponent, isStandalone: true, selector: "hr-info-field", inputs: { labelKey: "labelKey", value: "value", labelClass: "labelClass", valueClass: "valueClass", fallbackValue: "fallbackValue" }, ngImport: i0, template: "<div [ngClass]=\"labelClass\">{{labelKey | HRTranslate}}</div>\r\n<div [ngClass]=\"valueClass\">{{value || fallbackValue}}</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }] });
2458
2527
  }
2459
2528
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: HRInfoFieldComponent, decorators: [{
2460
2529
  type: Component,
2461
- args: [{ selector: 'hr-info-field', standalone: true, imports: [CommonModule, HRTranslatePipe], template: "<div [ngClass]=\"labelClass\">{{labelKey | HRTranslate}}</div>\r\n<div [ngClass]=\"valueClass\" [title]=\"value|| fallbackValue\">{{value || fallbackValue}}</div>\r\n" }]
2530
+ args: [{ selector: 'hr-info-field', standalone: true, imports: [CommonModule, HRTranslatePipe], template: "<div [ngClass]=\"labelClass\">{{labelKey | HRTranslate}}</div>\r\n<div [ngClass]=\"valueClass\">{{value || fallbackValue}}</div>\r\n" }]
2462
2531
  }], propDecorators: { labelKey: [{
2463
2532
  type: Input,
2464
2533
  args: [{ required: true }]
@@ -3621,6 +3690,224 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
3621
3690
  type: Output
3622
3691
  }] } });
3623
3692
 
3693
+ class ProfileExperiencesWidgetComponent {
3694
+ service;
3695
+ experiences = [];
3696
+ isLoading = true;
3697
+ baseUrl = '';
3698
+ sectionTitle = 'experiences';
3699
+ viewIcon = faEye;
3700
+ downloadIcon = faFolderArrowDown;
3701
+ experienceIcon = faUsersRays;
3702
+ headerIconClass = 'primary-icon-xl';
3703
+ headerTextClass = 'fs-16 mt-2 text-secondary';
3704
+ headerDividerClass = 'flex-grow-1 ms-2';
3705
+ rowClass = 'row mt-4';
3706
+ itemRowClass = 'row col-10 mt-3';
3707
+ itemColumnClass = 'col-3';
3708
+ labelClass = 'field-secondary-label-sm';
3709
+ valueClass = 'text-dark-gray fs-14 text-ellipsis-one-line cursor-pointer';
3710
+ actionsColumnClass = 'col-2 mt-3';
3711
+ viewIconClass = 'fs-15 text-dark cursor-pointer';
3712
+ downloadIconClass = 'fs-15 text-dark cursor-pointer mx-2';
3713
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3714
+ emptyStateTextClass = 'field-secondary-label-md';
3715
+ isLoadingChanged = new EventEmitter();
3716
+ attachmentViewed = new EventEmitter();
3717
+ attachmentDownloaded = new EventEmitter();
3718
+ errorOccurred = new EventEmitter();
3719
+ constructor(service) {
3720
+ this.service = service;
3721
+ }
3722
+ ngOnInit() {
3723
+ if (!this.baseUrl) {
3724
+ this.isLoading = false;
3725
+ return;
3726
+ }
3727
+ this.isLoadingChanged.emit(true);
3728
+ this.service.getEmployeeExperiences(this.baseUrl).subscribe({
3729
+ next: (res) => {
3730
+ this.experiences = res ?? [];
3731
+ this.isLoading = false;
3732
+ this.isLoadingChanged.emit(false);
3733
+ },
3734
+ error: (error) => {
3735
+ this.experiences = [];
3736
+ this.isLoading = false;
3737
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3738
+ this.isLoadingChanged.emit(false);
3739
+ }
3740
+ });
3741
+ }
3742
+ onAttachmentView(file) {
3743
+ this.attachmentViewed.emit(file);
3744
+ }
3745
+ onAttachmentDownload(file) {
3746
+ this.attachmentDownloaded.emit(file);
3747
+ }
3748
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileExperiencesWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
3749
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileExperiencesWidgetComponent, isStandalone: true, selector: "hr-profile-experiences-widget", inputs: { baseUrl: "baseUrl", sectionTitle: "sectionTitle", viewIcon: "viewIcon", downloadIcon: "downloadIcon", experienceIcon: "experienceIcon", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", itemRowClass: "itemRowClass", itemColumnClass: "itemColumnClass", labelClass: "labelClass", valueClass: "valueClass", actionsColumnClass: "actionsColumnClass", viewIconClass: "viewIconClass", downloadIconClass: "downloadIconClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass" }, outputs: { isLoadingChanged: "isLoadingChanged", attachmentViewed: "attachmentViewed", attachmentDownloaded: "attachmentDownloaded", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"experienceIcon\"\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(experiences.length > 0){\r\n\r\n<div [class]=\"rowClass\">\r\n\r\n @for (experience of experiences; track experience){\r\n\r\n <div [class]=\"itemRowClass\">\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Period\"\r\n [value]=\"(experience.StartDate | date:'dd/MM/yyyy') + ' - ' + (experience.EndDate | date:'dd/MM/yyyy')\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Employer\"\r\n [value]=\"experience.Employer\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Position\"\r\n [value]=\"experience.Position\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"TerminationReason\"\r\n [value]=\"experience.TerminationReason\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n </div>\r\n\r\n @if(experience.Document){\r\n <div [class]=\"actionsColumnClass\">\r\n <fa-icon [icon]=\"viewIcon\" [class]=\"viewIconClass\" (click)=\"onAttachmentView(experience.Document)\"></fa-icon>\r\n <fa-icon [icon]=\"downloadIcon\" [class]=\"downloadIconClass\" (click)=\"onAttachmentDownload(experience.Document)\"></fa-icon>\r\n </div>\r\n }\r\n\r\n }\r\n\r\n</div>\r\n\r\n}@else{\r\n\r\n\r\n<sky-empty-design-card [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoExperiencesYet' | HRTranslate)\">\r\n</sky-empty-design-card>\r\n\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { 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: "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: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
3750
+ }
3751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileExperiencesWidgetComponent, decorators: [{
3752
+ type: Component,
3753
+ args: [{ selector: 'hr-profile-experiences-widget', standalone: true, imports: [CommonModule, SkySectionDividerComponent,
3754
+ HRTranslatePipe, SkyEmptyDesignCardComponent, FontAwesomeModule, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"experienceIcon\"\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(experiences.length > 0){\r\n\r\n<div [class]=\"rowClass\">\r\n\r\n @for (experience of experiences; track experience){\r\n\r\n <div [class]=\"itemRowClass\">\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Period\"\r\n [value]=\"(experience.StartDate | date:'dd/MM/yyyy') + ' - ' + (experience.EndDate | date:'dd/MM/yyyy')\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Employer\"\r\n [value]=\"experience.Employer\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Position\"\r\n [value]=\"experience.Position\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"TerminationReason\"\r\n [value]=\"experience.TerminationReason\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n </div>\r\n\r\n @if(experience.Document){\r\n <div [class]=\"actionsColumnClass\">\r\n <fa-icon [icon]=\"viewIcon\" [class]=\"viewIconClass\" (click)=\"onAttachmentView(experience.Document)\"></fa-icon>\r\n <fa-icon [icon]=\"downloadIcon\" [class]=\"downloadIconClass\" (click)=\"onAttachmentDownload(experience.Document)\"></fa-icon>\r\n </div>\r\n }\r\n\r\n }\r\n\r\n</div>\r\n\r\n}@else{\r\n\r\n\r\n<sky-empty-design-card [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoExperiencesYet' | HRTranslate)\">\r\n</sky-empty-design-card>\r\n\r\n}\r\n" }]
3755
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
3756
+ type: Input
3757
+ }], sectionTitle: [{
3758
+ type: Input
3759
+ }], viewIcon: [{
3760
+ type: Input
3761
+ }], downloadIcon: [{
3762
+ type: Input
3763
+ }], experienceIcon: [{
3764
+ type: Input
3765
+ }], headerIconClass: [{
3766
+ type: Input
3767
+ }], headerTextClass: [{
3768
+ type: Input
3769
+ }], headerDividerClass: [{
3770
+ type: Input
3771
+ }], rowClass: [{
3772
+ type: Input
3773
+ }], itemRowClass: [{
3774
+ type: Input
3775
+ }], itemColumnClass: [{
3776
+ type: Input
3777
+ }], labelClass: [{
3778
+ type: Input
3779
+ }], valueClass: [{
3780
+ type: Input
3781
+ }], actionsColumnClass: [{
3782
+ type: Input
3783
+ }], viewIconClass: [{
3784
+ type: Input
3785
+ }], downloadIconClass: [{
3786
+ type: Input
3787
+ }], emptyStateContainerClass: [{
3788
+ type: Input
3789
+ }], emptyStateTextClass: [{
3790
+ type: Input
3791
+ }], isLoadingChanged: [{
3792
+ type: Output
3793
+ }], attachmentViewed: [{
3794
+ type: Output
3795
+ }], attachmentDownloaded: [{
3796
+ type: Output
3797
+ }], errorOccurred: [{
3798
+ type: Output
3799
+ }] } });
3800
+
3801
+ class ProfileDegreesWidgetComponent {
3802
+ service;
3803
+ degrees = [];
3804
+ isLoading = true;
3805
+ baseUrl = '';
3806
+ sectionTitle = 'Degrees';
3807
+ degreesIcon = faFileCertificate;
3808
+ viewIcon = faEye;
3809
+ downloadIcon = faFolderArrowDown;
3810
+ headerIconClass = 'primary-icon-xl';
3811
+ headerTextClass = 'fs-16 mt-2 text-secondary';
3812
+ headerDividerClass = 'flex-grow-1 ms-2';
3813
+ rowClass = 'row mt-4';
3814
+ itemRowClass = 'row col-10 mt-3';
3815
+ itemColumnClass = 'col-3';
3816
+ labelClass = 'field-secondary-label-sm';
3817
+ valueClass = 'text-dark-gray fs-14';
3818
+ valueEllipsisClass = 'text-dark-gray fs-14 text-ellipsis-one-line cursor-pointer';
3819
+ actionsColumnClass = 'col-2 align-items-end mt-3';
3820
+ viewIconClass = 'fs-15 text-dark cursor-pointer';
3821
+ downloadIconClass = 'fs-15 mx-3 text-dark cursor-pointer';
3822
+ emptyStateContainerClass = 'd-flex flex-column justify-content-center align-items-center my-5';
3823
+ emptyStateTextClass = 'field-secondary-label-md';
3824
+ isLoadingChanged = new EventEmitter();
3825
+ attachmentViewed = new EventEmitter();
3826
+ attachmentDownloaded = new EventEmitter();
3827
+ errorOccurred = new EventEmitter();
3828
+ constructor(service) {
3829
+ this.service = service;
3830
+ }
3831
+ ngOnInit() {
3832
+ if (!this.baseUrl) {
3833
+ this.isLoading = false;
3834
+ return;
3835
+ }
3836
+ this.isLoadingChanged.emit(true);
3837
+ this.service.getEmployeeDegrees(this.baseUrl).subscribe({
3838
+ next: (res) => {
3839
+ this.degrees = res ?? [];
3840
+ this.isLoading = false;
3841
+ this.isLoadingChanged.emit(false);
3842
+ },
3843
+ error: (error) => {
3844
+ this.degrees = [];
3845
+ this.isLoading = false;
3846
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
3847
+ this.isLoadingChanged.emit(false);
3848
+ }
3849
+ });
3850
+ }
3851
+ onAttachmentView(file) {
3852
+ this.attachmentViewed.emit(file);
3853
+ }
3854
+ onAttachmentDownload(file) {
3855
+ this.attachmentDownloaded.emit(file);
3856
+ }
3857
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileDegreesWidgetComponent, deps: [{ token: HRSelfWidgetsService }], target: i0.ɵɵFactoryTarget.Component });
3858
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ProfileDegreesWidgetComponent, isStandalone: true, selector: "hr-profile-degrees-widget", inputs: { baseUrl: "baseUrl", sectionTitle: "sectionTitle", degreesIcon: "degreesIcon", viewIcon: "viewIcon", downloadIcon: "downloadIcon", headerIconClass: "headerIconClass", headerTextClass: "headerTextClass", headerDividerClass: "headerDividerClass", rowClass: "rowClass", itemRowClass: "itemRowClass", itemColumnClass: "itemColumnClass", labelClass: "labelClass", valueClass: "valueClass", valueEllipsisClass: "valueEllipsisClass", actionsColumnClass: "actionsColumnClass", viewIconClass: "viewIconClass", downloadIconClass: "downloadIconClass", emptyStateContainerClass: "emptyStateContainerClass", emptyStateTextClass: "emptyStateTextClass" }, outputs: { isLoadingChanged: "isLoadingChanged", attachmentViewed: "attachmentViewed", attachmentDownloaded: "attachmentDownloaded", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<sky-section-divider [fontAwesomeIcon]=\"degreesIcon\"\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(degrees.length > 0){\r\n\r\n<div [class]=\"rowClass\">\r\n\r\n @for (qualification of degrees; track qualification){\r\n\r\n <div [class]=\"itemRowClass\">\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Degree/Year\"\r\n [value]=\"(qualification.DegreeName + ' / ' + qualification.DegreeYear)\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Country\"\r\n [value]=\"qualification.CountryName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Specialty\"\r\n [value]=\"qualification.Specialty\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Institute\"\r\n [value]=\"qualification.Institute\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n </div>\r\n\r\n @if(qualification.Document){\r\n <div [class]=\"actionsColumnClass\">\r\n <fa-icon [icon]=\"viewIcon\" [class]=\"viewIconClass\" (click)=\"onAttachmentView(qualification.Document)\"></fa-icon>\r\n <fa-icon [icon]=\"downloadIcon\" [class]=\"downloadIconClass\" (click)=\"onAttachmentDownload(qualification.Document)\"></fa-icon>\r\n </div>\r\n }\r\n\r\n }\r\n\r\n</div>\r\n}@else{\r\n\r\n <sky-empty-design-card [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoDegreesYet' | HRTranslate)\">\r\n </sky-empty-design-card>\r\n\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$1.UpperCasePipe, name: "uppercase" }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "pipe", type: HRTranslatePipe, name: "HRTranslate" }, { 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: "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: "component", type: HRInfoFieldComponent, selector: "hr-info-field", inputs: ["labelKey", "value", "labelClass", "valueClass", "fallbackValue"] }] });
3859
+ }
3860
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ProfileDegreesWidgetComponent, decorators: [{
3861
+ type: Component,
3862
+ args: [{ selector: 'hr-profile-degrees-widget', standalone: true, imports: [CommonModule, SkySectionDividerComponent, HRTranslatePipe, SkyEmptyDesignCardComponent, FontAwesomeModule, HRInfoFieldComponent], template: "<sky-section-divider [fontAwesomeIcon]=\"degreesIcon\"\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(degrees.length > 0){\r\n\r\n<div [class]=\"rowClass\">\r\n\r\n @for (qualification of degrees; track qualification){\r\n\r\n <div [class]=\"itemRowClass\">\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Degree/Year\"\r\n [value]=\"(qualification.DegreeName + ' / ' + qualification.DegreeYear)\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Country\"\r\n [value]=\"qualification.CountryName\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Specialty\"\r\n [value]=\"qualification.Specialty\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n <div [class]=\"itemColumnClass\">\r\n <hr-info-field labelKey=\"Institute\"\r\n [value]=\"qualification.Institute\"\r\n [labelClass]=\"labelClass\"\r\n [valueClass]=\"valueEllipsisClass\">\r\n </hr-info-field>\r\n </div>\r\n\r\n </div>\r\n\r\n @if(qualification.Document){\r\n <div [class]=\"actionsColumnClass\">\r\n <fa-icon [icon]=\"viewIcon\" [class]=\"viewIconClass\" (click)=\"onAttachmentView(qualification.Document)\"></fa-icon>\r\n <fa-icon [icon]=\"downloadIcon\" [class]=\"downloadIconClass\" (click)=\"onAttachmentDownload(qualification.Document)\"></fa-icon>\r\n </div>\r\n }\r\n\r\n }\r\n\r\n</div>\r\n}@else{\r\n\r\n <sky-empty-design-card [containerClass]=\"emptyStateContainerClass\"\r\n [cardBodyClass]=\"''\"\r\n [cardBodyContainerClass]=\"''\"\r\n [visibleIcon]=\"false\"\r\n [visibleQuickAction]=\"false\"\r\n [emptyTextClass]=\"emptyStateTextClass\"\r\n [emptyText]=\"isLoading ? ((sectionTitle | HRTranslate) + ' ' + ('IsLoading' | HRTranslate)) : ('ThereIsNoDegreesYet' | HRTranslate)\">\r\n </sky-empty-design-card>\r\n\r\n}\r\n" }]
3863
+ }], ctorParameters: () => [{ type: HRSelfWidgetsService }], propDecorators: { baseUrl: [{
3864
+ type: Input
3865
+ }], sectionTitle: [{
3866
+ type: Input
3867
+ }], degreesIcon: [{
3868
+ type: Input
3869
+ }], viewIcon: [{
3870
+ type: Input
3871
+ }], downloadIcon: [{
3872
+ type: Input
3873
+ }], headerIconClass: [{
3874
+ type: Input
3875
+ }], headerTextClass: [{
3876
+ type: Input
3877
+ }], headerDividerClass: [{
3878
+ type: Input
3879
+ }], rowClass: [{
3880
+ type: Input
3881
+ }], itemRowClass: [{
3882
+ type: Input
3883
+ }], itemColumnClass: [{
3884
+ type: Input
3885
+ }], labelClass: [{
3886
+ type: Input
3887
+ }], valueClass: [{
3888
+ type: Input
3889
+ }], valueEllipsisClass: [{
3890
+ type: Input
3891
+ }], actionsColumnClass: [{
3892
+ type: Input
3893
+ }], viewIconClass: [{
3894
+ type: Input
3895
+ }], downloadIconClass: [{
3896
+ type: Input
3897
+ }], emptyStateContainerClass: [{
3898
+ type: Input
3899
+ }], emptyStateTextClass: [{
3900
+ type: Input
3901
+ }], isLoadingChanged: [{
3902
+ type: Output
3903
+ }], attachmentViewed: [{
3904
+ type: Output
3905
+ }], attachmentDownloaded: [{
3906
+ type: Output
3907
+ }], errorOccurred: [{
3908
+ type: Output
3909
+ }] } });
3910
+
3624
3911
  /*
3625
3912
  * Public API Surface of shared-ui
3626
3913
  */
@@ -3629,5 +3916,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
3629
3916
  * Generated bundle index. Do not edit.
3630
3917
  */
3631
3918
 
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 };
3919
+ export { EventOption, EventTypeEnum, HRCardHeaderComponent, HRConstantsService, HREmployeeCalendarComponent, HRTranslatePipe, HRTranslateService, MainWidgetShortcut, MyCalendarWidgetComponent, MyMainDetailsWidgetComponent, MyUpcomingEventsWidgetComponent, MyVacationTeamWidgetComponent, ProfileBankInfoWidgetComponent, ProfileDegreesWidgetComponent, ProfileExperiencesWidgetComponent, ProfileJobInfoContractWidgetComponent, ProfileJobInfoMainWidgetComponent, ProfileJobInfoSalaryWidgetComponent, ProfileJobInfoServiceChargeWidgetComponent, ProfilePersonalInfoAddressWidgetComponent, ProfilePersonalInfoContactWidgetComponent, ProfilePersonalInfoLanguagesWidgetComponent, ProfilePersonalInfoMainWidgetComponent, ProfilePersonalInfoOtherNationalitiesWidgetComponent, PublicHolidayWeekContext, RelativeDay, ScheduleVacationTypes, ServiceChargeEntitlementMode, VacationPopupType };
3633
3920
  //# sourceMappingURL=skysoftware-co-bayan-hr-widgets-ui.mjs.map