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

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
@@ -1,24 +1,24 @@
1
- # HRComponents
1
+ # shared-ui
2
2
 
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 19.2.15.
4
4
 
5
5
  ## Code scaffolding
6
6
 
7
- Run `ng generate component component-name --project HRComponents` to generate a new component.
8
- You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project HRComponents`.
9
- > Note: Don't forget to add `--project HRComponents` or else it will be added to the default project in your `angular.json` file.
7
+ Run `ng generate component component-name --project shared-ui` to generate a new component.
8
+ You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project shared-ui`.
9
+ > Note: Don't forget to add `--project shared-ui` or else it will be added to the default project in your `angular.json` file.
10
10
 
11
11
  ## Build
12
12
 
13
- Run `ng build HRComponents` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+ Run `ng build shared-ui` to build the project. The build artifacts will be stored in the `dist/` directory.
14
14
 
15
15
  ## Publishing
16
16
 
17
- After building your library with `ng build HRComponents`, go to the dist folder `cd dist/shared-ui` and run `npm publish`.
17
+ After building your library with `ng build shared-ui`, go to the dist folder `cd dist/shared-ui` and run `npm publish`.
18
18
 
19
19
  ## Running unit tests
20
20
 
21
- Run `ng test HRComponents` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+ Run `ng test shared-ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
22
22
 
23
23
  ## Further help
24
24
 
@@ -37,7 +37,7 @@ This library depends on `@skysoftware-co/bayan-components-ui` package which prov
37
37
  - Employee Badge Component
38
38
 
39
39
  ## Installation
40
- use npm to install this package by command: @skysoftware-co/bayan-hr-components
40
+ use npm to install this package by command: @skysoftware-co/bayan-hr-widgets-ui
41
41
 
42
42
  ## Setup
43
43
 
@@ -90,7 +90,7 @@ export class AppComponent { }
90
90
 
91
91
  ### Usage
92
92
  ```typescript
93
- import { HrConstantsService } from '@skysoftware-co/bayan-hr-components';
93
+ import { HRConstantsService } from '@skysoftware-co/bayan-hr-widgets-ui';
94
94
  ```
95
95
 
96
96
  This service provides default constant values used across HR components, you can override them at runtime.
@@ -159,8 +159,8 @@ This component is used in Bayan HR system to show the employee main information
159
159
  | `daysLabel` | string | `'days'` | Days label text |
160
160
  | `yearsLabel` | string | `'Years'` | Years label text |
161
161
  | `monthsLabel` | string | `'Months'` | Months label text |
162
- | `defaultVacationBalanceColor` | string | from `HrConstantsService`: `'#727070'` | Default vacation balance color indicator |
163
- | `defaultVacationColor` | string | from `HrConstantsService`: `'#DCDCDC'` | Default vacation type color when no color assigned |
162
+ | `defaultVacationBalanceColor` | string | from `HRConstantsService`: `'#727070'` | Default vacation balance color indicator |
163
+ | `defaultVacationColor` | string | from `HRConstantsService`: `'#DCDCDC'` | Default vacation type color when no color assigned |
164
164
  | `baseUrl` | string | `''` | Base URL for API calls |
165
165
  | `isMobile` | boolean | `false` | Mobile responsive mode |
166
166
  | `isTablet` | boolean | `false` | Tablet responsive mode |
@@ -304,3 +304,347 @@ This component displays a "Next Week Vacation Insights" card showing two badges:
304
304
  - **Upcoming list**: `GET {baseUrl}/hr/widgets/me/team/subordinates/vacations/upcoming`
305
305
  - **Expected to return list**: `GET {baseUrl}/hr/widgets/me/team/subordinates/vacations/expected-to-return`
306
306
 
307
+ ## Profile Widgets
308
+
309
+ The package also exports profile-focused widgets used in the employee profile page.
310
+
311
+ ## Profile Personal Info Main Widget
312
+
313
+ ### Usage
314
+ ```html
315
+ <hr-profile-personal-info-main-widget
316
+ [baseUrl]="baseUrl"
317
+ (isLoadingChanged)="onMainLoadingChanged($event)">
318
+ </hr-profile-personal-info-main-widget>
319
+ ```
320
+
321
+ ### Input Properties
322
+ | Input | Type | Default Value | Description |
323
+ |-------|------|---------------|-------------|
324
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
325
+ | `alternateLanguage` | string | `'English'` | Alternate language label next to employee alternate name |
326
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
327
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
328
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
329
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
330
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
331
+ | `hiddenSpacerColClass` | string | `'col-md-4 col-6 d-md-block d-none'` | Hidden spacer column CSS class |
332
+ | `topSpacingColumnClass` | string | `'col-md-4 col-6 mt-4'` | Top spacing column CSS class |
333
+ | `topSpacingBottomMdSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-md-5'` | Top spacing + medium bottom spacing CSS class |
334
+ | `topSpacingBottomSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-5'` | Top spacing + bottom spacing CSS class |
335
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
336
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
337
+ | `mainIcon` | IconDefinition | `faMemoCircleInfo` | Header icon |
338
+ | `sectionTitle` | string | `'main'` | Section title translation key |
339
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
340
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
341
+
342
+ ### Output Events
343
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
344
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
345
+
346
+ ## Profile Personal Info Contact Widget
347
+
348
+ ### Usage
349
+ ```html
350
+ <hr-profile-personal-info-contact-widget
351
+ [baseUrl]="baseUrl"
352
+ [showEmergencyContact]="true"
353
+ (isLoadingChanged)="onContactLoadingChanged($event)">
354
+ </hr-profile-personal-info-contact-widget>
355
+ ```
356
+
357
+ ### Input Properties
358
+ | Input | Type | Default Value | Description |
359
+ |-------|------|---------------|-------------|
360
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
361
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
362
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class |
363
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
364
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
365
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
366
+ | `responsiveTopSpacingColumnClass` | string | `'col-md-4 col-6 mt-md-0 mt-4'` | Responsive top spacing column CSS class |
367
+ | `topSpacingBottomMdSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-md-5'` | Top spacing + medium bottom spacing CSS class |
368
+ | `topSpacingBottomSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-5'` | Top spacing + bottom spacing CSS class |
369
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
370
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
371
+ | `emergencyContactLabelClass` | string | `'fs-14 fw-semi-bold'` | Emergency contact title CSS class |
372
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
373
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
374
+ | `contactIcon` | IconDefinition | `faPhone` | Header icon |
375
+ | `emergencyContactIcon` | IconDefinition | `faBolt` | Emergency contact icon |
376
+ | `sectionTitle` | string | `'contact'` | Section title translation key |
377
+ | `showEmergencyContact` | boolean | `true` | Show emergency contact block |
378
+ | `emergencyContactRowClass` | string | `'row mt-3 mb-4'` | Emergency contact row CSS class |
379
+
380
+ ### Output Events
381
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
382
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
383
+
384
+ ## Profile Personal Info Address Widget
385
+
386
+ ### Usage
387
+ ```html
388
+ <hr-profile-personal-info-address-widget
389
+ [baseUrl]="baseUrl"
390
+ (isLoadingChanged)="onAddressLoadingChanged($event)">
391
+ </hr-profile-personal-info-address-widget>
392
+ ```
393
+
394
+ ### Input Properties
395
+ | Input | Type | Default Value | Description |
396
+ |-------|------|---------------|-------------|
397
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
398
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
399
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class |
400
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
401
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
402
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
403
+ | `responsiveTopSpacingColumnClass` | string | `'col-md-4 col-6 mt-md-0 mt-4'` | Responsive top spacing column CSS class |
404
+ | `topSpacingBottomSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-5'` | Top spacing + bottom spacing CSS class |
405
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
406
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
407
+ | `addressIcon` | IconDefinition | `faHouse` | Header icon |
408
+ | `sectionTitle` | string | `'address'` | Section title translation key |
409
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
410
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
411
+
412
+ ### Output Events
413
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
414
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
415
+
416
+ ## Profile Personal Info Languages Widget
417
+
418
+ ### Usage
419
+ ```html
420
+ <hr-profile-personal-info-languages-widget
421
+ [baseUrl]="baseUrl"
422
+ (hasDataChange)="onLanguagesDataChange($event)"
423
+ (isLoadingChanged)="onLanguagesLoadingChanged($event)">
424
+ </hr-profile-personal-info-languages-widget>
425
+ ```
426
+
427
+ ### Input Properties
428
+ | Input | Type | Default Value | Description |
429
+ |-------|------|---------------|-------------|
430
+ | `baseUrl` | string | `''` | Base URL for API calls |
431
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
432
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class |
433
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
434
+ | `contentTextClass` | string | `'text-dark-gray fs-14 fw-medium mt-4'` | Content text CSS class |
435
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
436
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
437
+ | `languagesIcon` | IconDefinition | `faLanguage` | Header icon |
438
+ | `sectionTitle` | string | `'languages'` | Section title translation key |
439
+
440
+ ### Output Events
441
+ - `hasDataChange: EventEmitter<boolean>` - Emitted when language list has data or not.
442
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
443
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
444
+
445
+ ## Profile Personal Info Other Nationalities Widget
446
+
447
+ ### Usage
448
+ ```html
449
+ <hr-profile-personal-info-other-nationalities-widget
450
+ [baseUrl]="baseUrl"
451
+ (hasDataChange)="onOtherNationalitiesDataChange($event)"
452
+ (isLoadingChanged)="onOtherNationalitiesLoadingChanged($event)">
453
+ </hr-profile-personal-info-other-nationalities-widget>
454
+ ```
455
+
456
+ ### Input Properties
457
+ | Input | Type | Default Value | Description |
458
+ |-------|------|---------------|-------------|
459
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
460
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
461
+ | `headerTextClass` | string | `'fs-16 mt-2 text-secondary'` | Header text CSS class |
462
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
463
+ | `contentTextClass` | string | `'text-dark-gray fs-14 fw-medium mt-4'` | Content text CSS class |
464
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
465
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
466
+ | `otherNationalitiesIcon` | IconDefinition | `faEarthAfrica` | Header icon |
467
+ | `sectionTitle` | string | `'otherNationalities'` | Section title translation key |
468
+ | `emptyStateTextKey` | string | `'ThereIsNoOtherNationalitiesYet'` | Empty state translation key |
469
+
470
+ ### Output Events
471
+ - `hasDataChange: EventEmitter<boolean>` - Emitted when other nationalities list has data or not.
472
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
473
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
474
+
475
+ ## Profile Bank Information Widget
476
+
477
+ ### Usage
478
+ ```html
479
+ <hr-profile-bank-info-widget
480
+ [baseUrl]="baseUrl"
481
+ [currencyCode]="currencyCode"
482
+ [currencyDecimals]="currencyDecimals"
483
+ (isLoadingChanged)="onBankLoadingChanged($event)">
484
+ </hr-profile-bank-info-widget>
485
+ ```
486
+
487
+ ### Input Properties
488
+ | Input | Type | Default Value | Description |
489
+ |-------|------|---------------|-------------|
490
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
491
+ | `currencyCode` | string | `''` | Currency code shown with transfer amount |
492
+ | `currencyDecimals` | number | `2` | Decimal precision for transfer amount formatting |
493
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
494
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
495
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
496
+ | `cardClass` | string | `'mt-4 card-shadow position-relative'` | Bank card container CSS class |
497
+ | `mainBadgeClass` | string | `'position-absolute text-center top-0 mt-3 start-0 bg-primary status-badge'` | Main bank badge CSS class |
498
+ | `mainBadgeTextClass` | string | `'mx-1 fs-12 text-white'` | Main bank badge text CSS class |
499
+ | `triangleClass` | string | `'position-absolute start-0 top-0'` | Main bank badge triangle CSS class |
500
+ | `rowClass` | string | `'row px-4 pb-3'` | Bank details row CSS class |
501
+ | `rowMainPtClass` | string | `'pt-5'` | Top padding class for main bank row |
502
+ | `rowNormalPtClass` | string | `'pt-3'` | Top padding class for normal bank row |
503
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
504
+ | `responsiveTopSpacingColClass` | string | `'col-md-4 col-6 mt-md-0 mt-4'` | Responsive top spacing column CSS class |
505
+ | `topSpacingColClass` | string | `'col-md-4 col-6 mt-4'` | Top spacing column CSS class |
506
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
507
+ | `valueClass` | string | `'table-cell-md'` | Value CSS class |
508
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
509
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
510
+ | `bankInformationIcon` | IconDefinition | `faMoneyCheckDollarPen` | Header icon |
511
+ | `sectionHeaderVisibility` | boolean | `true` | Show or hide the section header |
512
+ | `sectionTitle` | string | `'BankInformation'` | Section title translation key |
513
+ | `language` | string | `'en'` | Language used for RTL behavior (`'ar'` enables RTL) |
514
+
515
+ ### Output Events
516
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
517
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
518
+
519
+ ## Profile Job Information Widgets
520
+
521
+ ## Profile Job Info Main Widget
522
+
523
+ ### Usage
524
+ ```html
525
+ <hr-profile-job-info-main-widget
526
+ [baseUrl]="baseUrl"
527
+ (isLoadingChanged)="onJobMainLoadingChanged($event)">
528
+ </hr-profile-job-info-main-widget>
529
+ ```
530
+
531
+ ### Input Properties
532
+ | Input | Type | Default Value | Description |
533
+ |-------|------|---------------|-------------|
534
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
535
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
536
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
537
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
538
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
539
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
540
+ | `responsiveTopSpacingColumnClass` | string | `'col-md-4 col-6 mt-md-0 mt-4'` | Responsive top spacing column CSS class |
541
+ | `topSpacingBottomMdSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-md-5'` | Top spacing + medium bottom spacing CSS class |
542
+ | `topSpacingBottomSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-5'` | Top spacing + bottom spacing CSS class |
543
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
544
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
545
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
546
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
547
+ | `sectionTitle` | string | `'Main'` | Section title translation key |
548
+
549
+ ### Output Events
550
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
551
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
552
+
553
+ ## Profile Job Info Contract Widget
554
+
555
+ ### Usage
556
+ ```html
557
+ <hr-profile-job-info-contract-widget
558
+ [baseUrl]="baseUrl"
559
+ (isLoadingChanged)="onJobContractLoadingChanged($event)">
560
+ </hr-profile-job-info-contract-widget>
561
+ ```
562
+
563
+ ### Input Properties
564
+ | Input | Type | Default Value | Description |
565
+ |-------|------|---------------|-------------|
566
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
567
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
568
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
569
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
570
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
571
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
572
+ | `responsiveTopSpacingColumnClass` | string | `'col-md-4 col-6 mt-md-0 mt-4'` | Responsive top spacing column CSS class |
573
+ | `topSpacingBottomMdSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-md-5'` | Top spacing + medium bottom spacing CSS class |
574
+ | `topSpacingBottomSpacingColumnClass` | string | `'col-md-4 col-6 mt-4 mb-5'` | Top spacing + bottom spacing CSS class |
575
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
576
+ | `valueClass` | string | `'fs-14 fw-medium text-ellipsis-one-line'` | Value CSS class |
577
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
578
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
579
+ | `sectionTitle` | string | `'Contract'` | Section title translation key |
580
+
581
+ ### Output Events
582
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
583
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
584
+
585
+ ## Profile Job Info Salary Widget
586
+
587
+ ### Usage
588
+ ```html
589
+ <hr-profile-job-info-salary-widget
590
+ [baseUrl]="baseUrl"
591
+ [currencyCode]="currencyCode"
592
+ [currencyDecimals]="currencyDecimals"
593
+ (isLoadingChanged)="onJobSalaryLoadingChanged($event)">
594
+ </hr-profile-job-info-salary-widget>
595
+ ```
596
+
597
+ ### Input Properties
598
+ | Input | Type | Default Value | Description |
599
+ |-------|------|---------------|-------------|
600
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
601
+ | `currencyCode` | string | `''` | Currency code shown with salary amounts |
602
+ | `currencyDecimals` | number | `2` | Decimal precision for salary amount formatting |
603
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
604
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
605
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
606
+ | `rowClass` | string | `'row mt-4'` | Row container CSS class |
607
+ | `columnClass` | string | `'col-md-4 col-6 mt-4'` | Column CSS class |
608
+ | `grossSalaryColumnClass` | string | `'col-md-4 col-6 my-4'` | Gross salary column CSS class |
609
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
610
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
611
+ | `currencyClass` | string | `'fs-10 text-secondary fw-light'` | Currency text CSS class |
612
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
613
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
614
+ | `sectionTitle` | string | `'Salary'` | Section title translation key |
615
+
616
+ ### Output Events
617
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
618
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
619
+
620
+ ## Profile Job Info Service Charge Widget
621
+
622
+ ### Usage
623
+ ```html
624
+ <hr-profile-job-info-service-charge-widget
625
+ [baseUrl]="baseUrl"
626
+ [currencyCode]="currencyCode"
627
+ (isLoadingChanged)="onJobServiceChargeLoadingChanged($event)">
628
+ </hr-profile-job-info-service-charge-widget>
629
+ ```
630
+
631
+ ### Input Properties
632
+ | Input | Type | Default Value | Description |
633
+ |-------|------|---------------|-------------|
634
+ | `baseUrl` | string | `''` | Base URL for API calls (required) |
635
+ | `currencyCode` | string | `''` | Currency code shown when entitlement mode is fixed amount |
636
+ | `headerIconClass` | string | `'primary-icon-xl'` | Header icon CSS class |
637
+ | `headerTextClass` | string | `'mt-2 field-secondary-label-lg'` | Header text CSS class |
638
+ | `headerDividerClass` | string | `'flex-grow-1 ms-2'` | Header divider CSS class |
639
+ | `rowClass` | string | `'row mt-4 mb-5'` | Row container CSS class |
640
+ | `columnClass` | string | `'col-md-4 col-6'` | Column CSS class |
641
+ | `labelClass` | string | `'field-secondary-label-sm'` | Label CSS class |
642
+ | `valueClass` | string | `'fs-14 fw-medium'` | Value CSS class |
643
+ | `emptyStateContainerClass` | string | `'d-flex flex-column justify-content-center align-items-center my-5'` | Empty/loading container CSS class |
644
+ | `emptyStateTextClass` | string | `'field-secondary-label-md'` | Empty/loading text CSS class |
645
+ | `sectionTitle` | string | `'ServiceCharge'` | Section title translation key |
646
+
647
+ ### Output Events
648
+ - `isLoadingChanged: EventEmitter<boolean>` - Emitted when loading state changes.
649
+ - `errorOccurred: EventEmitter<string>` - Emitted when API request fails.
650
+