@osama_amireh/bayan-payroll-widgets-ui 2.0.6

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.
@@ -0,0 +1,1659 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Pipe, input, ChangeDetectionStrategy, Component, output, computed, signal, inject, effect, ViewChild } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule, DecimalPipe, DatePipe } from '@angular/common';
5
+ import * as i1$2 from 'devextreme-angular';
6
+ import { DxPopupModule, DxScrollViewModule, DxScrollViewComponent, DxTooltipModule } from 'devextreme-angular';
7
+ import { finalize } from 'rxjs';
8
+ import * as i1$1 from '@angular/common/http';
9
+ import { faMoneyCheckDollarPen, faSitemap, faUserTie, faMedal, faCalendarAlt, faFileSignature, faUniversity, faCreditCard, faIslandTropical, faUser } from '@fortawesome/pro-light-svg-icons';
10
+ import * as i1$3 from '@fortawesome/angular-fontawesome';
11
+ import { FontAwesomeModule, FaIconComponent } from '@fortawesome/angular-fontawesome';
12
+ import { faCircleInfo, faChevronDown, faChevronUp } from '@fortawesome/pro-solid-svg-icons';
13
+ import { SkySectionDividerComponent, SkyScreenService, SkyDoughnutChartComponent } from '@skysoftware-co/sky-components-ui';
14
+ import * as i2 from 'devextreme-angular/core';
15
+
16
+ var Loans$2 = "Loans";
17
+ var InstallmentStartEndDate$2 = "Installment start / end date";
18
+ var JobInformation$2 = "Job information";
19
+ var AdminUnit$2 = "Admin unit";
20
+ var Position$2 = "Position";
21
+ var Grade$2 = "Grade";
22
+ var JoiningDate$2 = "Joining date";
23
+ var BankInformation$2 = "Bank information";
24
+ var Bank$2 = "Bank";
25
+ var IBAN$2 = "IBAN";
26
+ var AC$2 = "Account";
27
+ var VacationBalance$2 = "Vacation balance";
28
+ var TicketBalance$2 = "Ticket balance";
29
+ var Tickets$2 = "Tickets";
30
+ var Indemnity$2 = "Indemnity";
31
+ var IndemnityDays$2 = "Indemnity days";
32
+ var IndemnityAmount$2 = "Indemnity amount";
33
+ var Adult$1 = "Adult";
34
+ var TotalAmount$2 = "Total amount";
35
+ var InstallmentAmount$2 = "Installment amount";
36
+ var TotalPaid$2 = "Total paid";
37
+ var RemainingAmount$2 = "Remaining amount";
38
+ var Salary$2 = "Salary";
39
+ var GrossSalary$2 = "Gross salary";
40
+ var Basic$2 = "Basic";
41
+ var ActualBasicSalary$2 = "Actual basic salary";
42
+ var UnpaidVacations$2 = "Unpaid vacations";
43
+ var Allowances$2 = "Allowances";
44
+ var Deductions$2 = "Deductions";
45
+ var ViewDetails$2 = "View details";
46
+ var ActualBasicDetails$2 = "Actual basic details";
47
+ var Attendance$2 = "Attendance";
48
+ var PayMonth$2 = "Pay month";
49
+ var SelectPayMonth$2 = "Select pay month";
50
+ var PreviewPayslip$2 = "Preview payslip";
51
+ var Export$2 = "Export";
52
+ var Days$2 = "Days";
53
+ var Day$2 = "Day";
54
+ var Amount$2 = "Amount";
55
+ var NetSalary$2 = "Net salary";
56
+ var WorkingDays$2 = "Working days";
57
+ var NoPayslipAvailableYet$2 = "No payslip available yet";
58
+ var YouAreNotAllowedToViewThePayslip$2 = "You are not allowed to view the payslip";
59
+ var AccountNumber$2 = "Account Number";
60
+ var SalaryTransferDetails$2 = "Salary transfer details";
61
+ var BankName$2 = "Bank name";
62
+ var ExploreSalaryTransferDetails$2 = "Explore salary transfer details";
63
+ var ViewMore$2 = "View more";
64
+ var ViewLess$2 = "View less";
65
+ var VacationTypeName$2 = "Vacation type";
66
+ var Balance$2 = "Balance";
67
+ var en = {
68
+ Loans: Loans$2,
69
+ InstallmentStartEndDate: InstallmentStartEndDate$2,
70
+ JobInformation: JobInformation$2,
71
+ AdminUnit: AdminUnit$2,
72
+ Position: Position$2,
73
+ Grade: Grade$2,
74
+ JoiningDate: JoiningDate$2,
75
+ BankInformation: BankInformation$2,
76
+ Bank: Bank$2,
77
+ IBAN: IBAN$2,
78
+ AC: AC$2,
79
+ VacationBalance: VacationBalance$2,
80
+ TicketBalance: TicketBalance$2,
81
+ Tickets: Tickets$2,
82
+ Indemnity: Indemnity$2,
83
+ IndemnityDays: IndemnityDays$2,
84
+ IndemnityAmount: IndemnityAmount$2,
85
+ Adult: Adult$1,
86
+ TotalAmount: TotalAmount$2,
87
+ InstallmentAmount: InstallmentAmount$2,
88
+ TotalPaid: TotalPaid$2,
89
+ RemainingAmount: RemainingAmount$2,
90
+ "Installments{{Value}}": "{{value}} installments",
91
+ Salary: Salary$2,
92
+ GrossSalary: GrossSalary$2,
93
+ Basic: Basic$2,
94
+ ActualBasicSalary: ActualBasicSalary$2,
95
+ UnpaidVacations: UnpaidVacations$2,
96
+ Allowances: Allowances$2,
97
+ Deductions: Deductions$2,
98
+ ViewDetails: ViewDetails$2,
99
+ ActualBasicDetails: ActualBasicDetails$2,
100
+ Attendance: Attendance$2,
101
+ PayMonth: PayMonth$2,
102
+ SelectPayMonth: SelectPayMonth$2,
103
+ PreviewPayslip: PreviewPayslip$2,
104
+ Export: Export$2,
105
+ Days: Days$2,
106
+ Day: Day$2,
107
+ Amount: Amount$2,
108
+ NetSalary: NetSalary$2,
109
+ WorkingDays: WorkingDays$2,
110
+ NoPayslipAvailableYet: NoPayslipAvailableYet$2,
111
+ YouAreNotAllowedToViewThePayslip: YouAreNotAllowedToViewThePayslip$2,
112
+ "PleaseContactYourAdminForAnyHelp.": "Please contact your admin for any help.",
113
+ AccountNumber: AccountNumber$2,
114
+ SalaryTransferDetails: SalaryTransferDetails$2,
115
+ BankName: BankName$2,
116
+ ExploreSalaryTransferDetails: ExploreSalaryTransferDetails$2,
117
+ ViewMore: ViewMore$2,
118
+ ViewLess: ViewLess$2,
119
+ VacationTypeName: VacationTypeName$2,
120
+ Balance: Balance$2
121
+ };
122
+
123
+ var AccountNumber$1 = "رقم الحساب";
124
+ var SalaryTransferDetails$1 = "تفاصيل تحويل الراتب";
125
+ var BankName$1 = "اسم البنك";
126
+ var IBAN$1 = "رقم حساب البنك الدولي";
127
+ var AC$1 = "الحساب";
128
+ var AdminUnit$1 = "الوحدة الإدارية";
129
+ var Position$1 = "الوظيفة";
130
+ var Grade$1 = "الدرجة";
131
+ var JoiningDate$1 = "تاريخ الانضمام";
132
+ var JobInformation$1 = "معلومات الوظيفة";
133
+ var BankInformation$1 = "معلومات البنك";
134
+ var Bank$1 = "البنك";
135
+ var ExploreSalaryTransferDetails$1 = "استعراض تفاصيل تحويل الراتب";
136
+ var VacationBalance$1 = "أرصدة الإجازات";
137
+ var ViewMore$1 = "عرض المزيد";
138
+ var ViewLess$1 = "عرض أقل";
139
+ var VacationTypeName$1 = "نوع الإجازة";
140
+ var TicketBalance$1 = " أرصدة التذاكر";
141
+ var Tickets$1 = "التذاكر";
142
+ var Balance$1 = "الرصيد";
143
+ var Indemnity$1 = "التعويض";
144
+ var IndemnityDays$1 = "أيام التعويض";
145
+ var IndemnityAmount$1 = "مبلغ التعويض";
146
+ var Loans$1 = "القروض";
147
+ var InstallmentStartEndDate$1 = "تاريخ بداية / ونهاية القسط";
148
+ var TotalAmount$1 = "إجمالي المبلغ";
149
+ var InstallmentAmount$1 = "مبلغ القسط";
150
+ var TotalPaid$1 = "إجمالي المدفوع";
151
+ var RemainingAmount$1 = "المبلغ المتبقي";
152
+ var Salary$1 = "الراتب";
153
+ var GrossSalary$1 = "الراتب الإجمالي";
154
+ var Basic$1 = "الأساسي";
155
+ var ActualBasicSalary$1 = "الراتب الفعلي";
156
+ var UnpaidVacations$1 = "الإجازات غير المدفوعة";
157
+ var Allowances$1 = "العلاوات";
158
+ var Deductions$1 = "الاقتطاعات";
159
+ var ViewDetails$1 = "عرض التفاصيل";
160
+ var ActualBasicDetails$1 = "تفاصيل الأساسي الفعلي";
161
+ var Attendance$1 = "الحضور";
162
+ var PayMonth$1 = "شهر الراتب";
163
+ var SelectPayMonth$1 = "اختر شهر الراتب";
164
+ var PreviewPayslip$1 = "معاينة قسيمة الراتب";
165
+ var Export$1 = "تصدير";
166
+ var Days$1 = "الأيام";
167
+ var Day$1 = "يوم";
168
+ var Amount$1 = "المبلغ";
169
+ var NetSalary$1 = "صافي الراتب";
170
+ var WorkingDays$1 = "أيام العمل";
171
+ var NoPayslipAvailableYet$1 = "لا توجد قسيمة راتب متاحة بعد";
172
+ var YouAreNotAllowedToViewThePayslip$1 = "غير مسموح لك بعرض قسيمة الراتب";
173
+ var BankBranch$1 = "فرع البنك";
174
+ var ar = {
175
+ AccountNumber: AccountNumber$1,
176
+ SalaryTransferDetails: SalaryTransferDetails$1,
177
+ BankName: BankName$1,
178
+ IBAN: IBAN$1,
179
+ AC: AC$1,
180
+ AdminUnit: AdminUnit$1,
181
+ Position: Position$1,
182
+ Grade: Grade$1,
183
+ JoiningDate: JoiningDate$1,
184
+ JobInformation: JobInformation$1,
185
+ BankInformation: BankInformation$1,
186
+ Bank: Bank$1,
187
+ ExploreSalaryTransferDetails: ExploreSalaryTransferDetails$1,
188
+ VacationBalance: VacationBalance$1,
189
+ ViewMore: ViewMore$1,
190
+ ViewLess: ViewLess$1,
191
+ VacationTypeName: VacationTypeName$1,
192
+ TicketBalance: TicketBalance$1,
193
+ Tickets: Tickets$1,
194
+ Balance: Balance$1,
195
+ Indemnity: Indemnity$1,
196
+ IndemnityDays: IndemnityDays$1,
197
+ IndemnityAmount: IndemnityAmount$1,
198
+ Loans: Loans$1,
199
+ InstallmentStartEndDate: InstallmentStartEndDate$1,
200
+ TotalAmount: TotalAmount$1,
201
+ InstallmentAmount: InstallmentAmount$1,
202
+ TotalPaid: TotalPaid$1,
203
+ RemainingAmount: RemainingAmount$1,
204
+ "Installments{{value}}": "{{value}} اقساط",
205
+ Salary: Salary$1,
206
+ GrossSalary: GrossSalary$1,
207
+ Basic: Basic$1,
208
+ ActualBasicSalary: ActualBasicSalary$1,
209
+ UnpaidVacations: UnpaidVacations$1,
210
+ Allowances: Allowances$1,
211
+ Deductions: Deductions$1,
212
+ ViewDetails: ViewDetails$1,
213
+ ActualBasicDetails: ActualBasicDetails$1,
214
+ Attendance: Attendance$1,
215
+ PayMonth: PayMonth$1,
216
+ SelectPayMonth: SelectPayMonth$1,
217
+ PreviewPayslip: PreviewPayslip$1,
218
+ Export: Export$1,
219
+ Days: Days$1,
220
+ Day: Day$1,
221
+ Amount: Amount$1,
222
+ NetSalary: NetSalary$1,
223
+ WorkingDays: WorkingDays$1,
224
+ NoPayslipAvailableYet: NoPayslipAvailableYet$1,
225
+ YouAreNotAllowedToViewThePayslip: YouAreNotAllowedToViewThePayslip$1,
226
+ "PleaseContactYourAdminForAnyHelp.": "يرجى التواصل مع مسؤول النظام لأي مساعدة.",
227
+ BankBranch: BankBranch$1
228
+ };
229
+
230
+ var Loans = "Prets";
231
+ var InstallmentStartEndDate = "Date de debut / fin de versement";
232
+ var TotalAmount = "Montant total";
233
+ var InstallmentAmount = "Montant du versement";
234
+ var TotalPaid = "Total paye";
235
+ var RemainingAmount = "Montant restant";
236
+ var JobInformation = "Informations du poste";
237
+ var AdminUnit = "Unite administrative";
238
+ var Position = "Poste";
239
+ var Grade = "Grade";
240
+ var JoiningDate = "Date d'embauche";
241
+ var BankInformation = "Informations bancaires";
242
+ var Bank = "Banque";
243
+ var IBAN = "IBAN";
244
+ var AC = "Compte";
245
+ var VacationBalance = "Solde de conges";
246
+ var TicketBalance = "Solde des billets";
247
+ var Tickets = "Billets";
248
+ var Indemnity = "Indemnite";
249
+ var IndemnityDays = "Jours d'indemnite";
250
+ var IndemnityAmount = "Montant de l'indemnite";
251
+ var Adult = "Adulte";
252
+ var Salary = "Salaire";
253
+ var GrossSalary = "Salaire brut";
254
+ var Basic = "Basique";
255
+ var ActualBasicSalary = "Salaire de base réel";
256
+ var UnpaidVacations = "Congés non payés";
257
+ var Allowances = "Allocations";
258
+ var Deductions = "Déductions";
259
+ var ViewDetails = "Voir les détails";
260
+ var ActualBasicDetails = "Détails du salaire de base réel";
261
+ var Attendance = "Présence";
262
+ var PayMonth = "Mois de paie";
263
+ var SelectPayMonth = "Selectionner le mois de paie";
264
+ var PreviewPayslip = "Aperçu de la fiche de paie";
265
+ var Export = "Exporter";
266
+ var Days = "Jours";
267
+ var Day = "Jour";
268
+ var Amount = "Montant";
269
+ var NetSalary = "Salaire net";
270
+ var WorkingDays = "Jours de travail";
271
+ var NoPayslipAvailableYet = "Aucune fiche de paie disponible pour le momentt";
272
+ var YouAreNotAllowedToViewThePayslip = "Vous n'êtes pas autorisé à consulter la fiche de paie !";
273
+ var AccountNumber = "Numéro de compte";
274
+ var SalaryTransferDetails = "Détails du transfert de salaire";
275
+ var BankName = "Nom de la banque";
276
+ var ExploreSalaryTransferDetails = "Explorer les détails du transfert de salaire";
277
+ var ViewMore = "Voir plus";
278
+ var ViewLess = "Voir moins";
279
+ var VacationTypeName = "Type de congé";
280
+ var Balance = "Solde";
281
+ var BankBranch = "Agence bancaire";
282
+ var fr = {
283
+ Loans: Loans,
284
+ InstallmentStartEndDate: InstallmentStartEndDate,
285
+ TotalAmount: TotalAmount,
286
+ InstallmentAmount: InstallmentAmount,
287
+ TotalPaid: TotalPaid,
288
+ RemainingAmount: RemainingAmount,
289
+ "Installments{{value}}": "{{value}} versements",
290
+ JobInformation: JobInformation,
291
+ AdminUnit: AdminUnit,
292
+ Position: Position,
293
+ Grade: Grade,
294
+ JoiningDate: JoiningDate,
295
+ BankInformation: BankInformation,
296
+ Bank: Bank,
297
+ IBAN: IBAN,
298
+ AC: AC,
299
+ VacationBalance: VacationBalance,
300
+ TicketBalance: TicketBalance,
301
+ Tickets: Tickets,
302
+ Indemnity: Indemnity,
303
+ IndemnityDays: IndemnityDays,
304
+ IndemnityAmount: IndemnityAmount,
305
+ Adult: Adult,
306
+ Salary: Salary,
307
+ GrossSalary: GrossSalary,
308
+ Basic: Basic,
309
+ ActualBasicSalary: ActualBasicSalary,
310
+ UnpaidVacations: UnpaidVacations,
311
+ Allowances: Allowances,
312
+ Deductions: Deductions,
313
+ ViewDetails: ViewDetails,
314
+ ActualBasicDetails: ActualBasicDetails,
315
+ Attendance: Attendance,
316
+ PayMonth: PayMonth,
317
+ SelectPayMonth: SelectPayMonth,
318
+ PreviewPayslip: PreviewPayslip,
319
+ Export: Export,
320
+ Days: Days,
321
+ Day: Day,
322
+ Amount: Amount,
323
+ NetSalary: NetSalary,
324
+ WorkingDays: WorkingDays,
325
+ NoPayslipAvailableYet: NoPayslipAvailableYet,
326
+ YouAreNotAllowedToViewThePayslip: YouAreNotAllowedToViewThePayslip,
327
+ "PleaseContactYourAdminForAnyHelp.": "Veuillez contacter votre administrateur pour toute aide.",
328
+ AccountNumber: AccountNumber,
329
+ SalaryTransferDetails: SalaryTransferDetails,
330
+ BankName: BankName,
331
+ ExploreSalaryTransferDetails: ExploreSalaryTransferDetails,
332
+ ViewMore: ViewMore,
333
+ ViewLess: ViewLess,
334
+ VacationTypeName: VacationTypeName,
335
+ Balance: Balance,
336
+ BankBranch: BankBranch
337
+ };
338
+
339
+ const BUILT_IN_LEXICONS = { en, ar, fr };
340
+ class PayrollTranslateService {
341
+ currentLanguage = 'en';
342
+ lexicon = {};
343
+ setLanguage(language) {
344
+ this.currentLanguage = language;
345
+ }
346
+ getLanguage() {
347
+ return this.currentLanguage;
348
+ }
349
+ setLexicon(lexicon) {
350
+ this.lexicon = lexicon;
351
+ }
352
+ getLexicon() {
353
+ return this.lexicon;
354
+ }
355
+ translateBuiltIn(key) {
356
+ if (!key)
357
+ return '';
358
+ const builtIn = BUILT_IN_LEXICONS[this.currentLanguage] || {};
359
+ const foundKey = Object.keys(builtIn).find(k => k.toLowerCase() === key.toLowerCase());
360
+ return foundKey ? builtIn[foundKey] : key;
361
+ }
362
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
363
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslateService, providedIn: 'root' });
364
+ }
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslateService, decorators: [{
366
+ type: Injectable,
367
+ args: [{ providedIn: 'root' }]
368
+ }] });
369
+
370
+ class PayrollTranslatePipe {
371
+ payrollTranslateService;
372
+ constructor(payrollTranslateService) {
373
+ this.payrollTranslateService = payrollTranslateService;
374
+ }
375
+ transform(key) {
376
+ if (!key)
377
+ return '';
378
+ key = this.payrollTranslateService.translateBuiltIn(key);
379
+ const lexicon = this.payrollTranslateService.getLexicon();
380
+ let foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === key.toLowerCase());
381
+ if (foundKey)
382
+ return lexicon[foundKey];
383
+ const arrKey = key.split(' ');
384
+ let keyValue = '';
385
+ for (let i = 0; i < arrKey.length; i++) {
386
+ if (i !== 0)
387
+ keyValue += ' ';
388
+ foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === arrKey[i].toLowerCase());
389
+ if (foundKey) {
390
+ keyValue += lexicon[foundKey];
391
+ }
392
+ else {
393
+ keyValue += arrKey[i];
394
+ }
395
+ }
396
+ return keyValue;
397
+ }
398
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslatePipe, deps: [{ token: PayrollTranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
399
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslatePipe, isStandalone: true, name: "PayrollTranslate" });
400
+ }
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollTranslatePipe, decorators: [{
402
+ type: Pipe,
403
+ args: [{
404
+ name: 'PayrollTranslate',
405
+ standalone: true,
406
+ }]
407
+ }], ctorParameters: () => [{ type: PayrollTranslateService }] });
408
+
409
+ class LoanCardComponent {
410
+ loan = input.required(...(ngDevMode ? [{ debugName: "loan" }] : /* istanbul ignore next */ []));
411
+ currencyCode = input('', ...(ngDevMode ? [{ debugName: "currencyCode" }] : /* istanbul ignore next */ []));
412
+ cardContainerClass = input('p-3 card-shadow h-100 border border-1 rounded-2', ...(ngDevMode ? [{ debugName: "cardContainerClass" }] : /* istanbul ignore next */ []));
413
+ installRangeLabelClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "installRangeLabelClass" }] : /* istanbul ignore next */ []));
414
+ lineClass = input('fs-12 mb-2', ...(ngDevMode ? [{ debugName: "lineClass" }] : /* istanbul ignore next */ []));
415
+ amountLabelClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "amountLabelClass" }] : /* istanbul ignore next */ []));
416
+ currencyCodeClass = input('text-secondary fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
417
+ amountValueClass = input('text-dark-gray mx-1 fs-14', ...(ngDevMode ? [{ debugName: "amountValueClass" }] : /* istanbul ignore next */ []));
418
+ totalPaidClass = input('text-success fs-12', ...(ngDevMode ? [{ debugName: "totalPaidClass" }] : /* istanbul ignore next */ []));
419
+ remainingInstallmentClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "remainingInstallmentClass" }] : /* istanbul ignore next */ []));
420
+ loanTitleClass = input('text-dark fs-20 mb-2', ...(ngDevMode ? [{ debugName: "loanTitleClass" }] : /* istanbul ignore next */ []));
421
+ formatAmount = input((value) => value.toString(), ...(ngDevMode ? [{ debugName: "formatAmount" }] : /* istanbul ignore next */ []));
422
+ remainingInstallmentsText = input((count) => count.toString(), ...(ngDevMode ? [{ debugName: "remainingInstallmentsText" }] : /* istanbul ignore next */ []));
423
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LoanCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
424
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: LoanCardComponent, isStandalone: true, selector: "payroll-loan-card", inputs: { loan: { classPropertyName: "loan", publicName: "loan", isSignal: true, isRequired: true, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null }, cardContainerClass: { classPropertyName: "cardContainerClass", publicName: "cardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, installRangeLabelClass: { classPropertyName: "installRangeLabelClass", publicName: "installRangeLabelClass", isSignal: true, isRequired: false, transformFunction: null }, lineClass: { classPropertyName: "lineClass", publicName: "lineClass", isSignal: true, isRequired: false, transformFunction: null }, amountLabelClass: { classPropertyName: "amountLabelClass", publicName: "amountLabelClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, amountValueClass: { classPropertyName: "amountValueClass", publicName: "amountValueClass", isSignal: true, isRequired: false, transformFunction: null }, totalPaidClass: { classPropertyName: "totalPaidClass", publicName: "totalPaidClass", isSignal: true, isRequired: false, transformFunction: null }, remainingInstallmentClass: { classPropertyName: "remainingInstallmentClass", publicName: "remainingInstallmentClass", isSignal: true, isRequired: false, transformFunction: null }, loanTitleClass: { classPropertyName: "loanTitleClass", publicName: "loanTitleClass", isSignal: true, isRequired: false, transformFunction: null }, formatAmount: { classPropertyName: "formatAmount", publicName: "formatAmount", isSignal: true, isRequired: false, transformFunction: null }, remainingInstallmentsText: { classPropertyName: "remainingInstallmentsText", publicName: "remainingInstallmentsText", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"cardContainerClass()\">\n <p [class]=\"loanTitleClass()\">{{ loan().LoanTypeName }}</p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"installRangeLabelClass()\">{{ 'InstallmentStartEndDate' | PayrollTranslate }}:</span>\n <span class=\"text-dark-gray mx-1 fs-14\">{{ loan().FirstInstallmentMonth }} - {{ loan().LastInstallmentMonth }}</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'TotalAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().LoanAmount) }}</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'InstallmentAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().InstallmentAmount) }}</span>\n <span [class]=\"totalPaidClass()\">({{ 'TotalPaid' | PayrollTranslate }}: {{ formatAmount()(loan().PaidAmount) }})</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'RemainingAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().RemainingAmount) }}</span>\n <span [class]=\"remainingInstallmentClass()\">({{ remainingInstallmentsText()(loan().RemainingInstallmentsCount) }})</span>\n </p>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
425
+ }
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LoanCardComponent, decorators: [{
427
+ type: Component,
428
+ args: [{ selector: 'payroll-loan-card', standalone: true, imports: [CommonModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"cardContainerClass()\">\n <p [class]=\"loanTitleClass()\">{{ loan().LoanTypeName }}</p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"installRangeLabelClass()\">{{ 'InstallmentStartEndDate' | PayrollTranslate }}:</span>\n <span class=\"text-dark-gray mx-1 fs-14\">{{ loan().FirstInstallmentMonth }} - {{ loan().LastInstallmentMonth }}</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'TotalAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().LoanAmount) }}</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'InstallmentAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().InstallmentAmount) }}</span>\n <span [class]=\"totalPaidClass()\">({{ 'TotalPaid' | PayrollTranslate }}: {{ formatAmount()(loan().PaidAmount) }})</span>\n </p>\n\n <p [class]=\"lineClass()\">\n <span [class]=\"amountLabelClass()\">{{ 'RemainingAmount' | PayrollTranslate }}</span>\n <span [class]=\"currencyCodeClass()\">({{ currencyCode() }}):</span>\n <span [class]=\"amountValueClass()\">{{ formatAmount()(loan().RemainingAmount) }}</span>\n <span [class]=\"remainingInstallmentClass()\">({{ remainingInstallmentsText()(loan().RemainingInstallmentsCount) }})</span>\n </p>\n</div>\n" }]
429
+ }], propDecorators: { loan: [{ type: i0.Input, args: [{ isSignal: true, alias: "loan", required: true }] }], currencyCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCode", required: false }] }], cardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardContainerClass", required: false }] }], installRangeLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "installRangeLabelClass", required: false }] }], lineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineClass", required: false }] }], amountLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountLabelClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], amountValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountValueClass", required: false }] }], totalPaidClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPaidClass", required: false }] }], remainingInstallmentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "remainingInstallmentClass", required: false }] }], loanTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "loanTitleClass", required: false }] }], formatAmount: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatAmount", required: false }] }], remainingInstallmentsText: [{ type: i0.Input, args: [{ isSignal: true, alias: "remainingInstallmentsText", required: false }] }] } });
430
+
431
+ class LoanPaginationComponent {
432
+ totalPages = input(0, ...(ngDevMode ? [{ debugName: "totalPages" }] : /* istanbul ignore next */ []));
433
+ currentPage = input(0, ...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
434
+ navContainerClass = input('d-flex justify-content-center mt-3', ...(ngDevMode ? [{ debugName: "navContainerClass" }] : /* istanbul ignore next */ []));
435
+ navListClass = input('pagination mb-1', ...(ngDevMode ? [{ debugName: "navListClass" }] : /* istanbul ignore next */ []));
436
+ pageItemClass = input('page-item page-number mx-3', ...(ngDevMode ? [{ debugName: "pageItemClass" }] : /* istanbul ignore next */ []));
437
+ arrowItemClass = input('page-item arrow', ...(ngDevMode ? [{ debugName: "arrowItemClass" }] : /* istanbul ignore next */ []));
438
+ pageLinkClass = input('page-link rounded-circle', ...(ngDevMode ? [{ debugName: "pageLinkClass" }] : /* istanbul ignore next */ []));
439
+ arrowActiveClass = input('text-primary', ...(ngDevMode ? [{ debugName: "arrowActiveClass" }] : /* istanbul ignore next */ []));
440
+ previousClicked = output();
441
+ nextClicked = output();
442
+ pageClicked = output();
443
+ blurButton(event) {
444
+ event.target.closest('button')?.blur();
445
+ }
446
+ onPreviousClick(event) {
447
+ this.blurButton(event);
448
+ this.previousClicked.emit();
449
+ }
450
+ onNextClick(event) {
451
+ this.blurButton(event);
452
+ this.nextClicked.emit();
453
+ }
454
+ onPageClick(page, event) {
455
+ this.blurButton(event);
456
+ this.pageClicked.emit(page);
457
+ }
458
+ pages = computed(() => {
459
+ const half = Math.floor(5 / 2);
460
+ let start = Math.max(0, this.currentPage() - half);
461
+ let end = start + 4;
462
+ if (end >= this.totalPages()) {
463
+ end = this.totalPages() - 1;
464
+ start = Math.max(0, end - 4);
465
+ }
466
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
467
+ }, ...(ngDevMode ? [{ debugName: "pages" }] : /* istanbul ignore next */ []));
468
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LoanPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
469
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: LoanPaginationComponent, isStandalone: true, selector: "payroll-loan-pagination", inputs: { totalPages: { classPropertyName: "totalPages", publicName: "totalPages", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, navContainerClass: { classPropertyName: "navContainerClass", publicName: "navContainerClass", isSignal: true, isRequired: false, transformFunction: null }, navListClass: { classPropertyName: "navListClass", publicName: "navListClass", isSignal: true, isRequired: false, transformFunction: null }, pageItemClass: { classPropertyName: "pageItemClass", publicName: "pageItemClass", isSignal: true, isRequired: false, transformFunction: null }, arrowItemClass: { classPropertyName: "arrowItemClass", publicName: "arrowItemClass", isSignal: true, isRequired: false, transformFunction: null }, pageLinkClass: { classPropertyName: "pageLinkClass", publicName: "pageLinkClass", isSignal: true, isRequired: false, transformFunction: null }, arrowActiveClass: { classPropertyName: "arrowActiveClass", publicName: "arrowActiveClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { previousClicked: "previousClicked", nextClicked: "nextClicked", pageClicked: "pageClicked" }, ngImport: i0, template: "@if (totalPages() > 1) {\n <div [class]=\"navContainerClass()\">\n <nav aria-label=\"Loan pagination\">\n <ul [class]=\"navListClass()\">\n <li [class]=\"arrowItemClass()\">\n <button\n type=\"button\"\n [ngClass]=\"[pageLinkClass(), currentPage() === 0 ? 'disabled' : arrowActiveClass()]\"\n [disabled]=\"currentPage() === 0\"\n (click)=\"onPreviousClick($event)\"\n >\n <span aria-hidden=\"true\" class=\"text-center\">&lt;</span>\n </button>\n </li>\n\n @for (page of pages(); track page) {\n <li [class]=\"pageItemClass()\" [class.active]=\"currentPage() === page\">\n <button type=\"button\" [class]=\"pageLinkClass()\" (click)=\"onPageClick(page, $event)\">{{ page + 1 }}</button>\n </li>\n }\n\n <li [class]=\"arrowItemClass()\">\n <button\n type=\"button\"\n [ngClass]=\"[pageLinkClass(), currentPage() === totalPages() - 1 ? 'disabled' : arrowActiveClass()]\"\n [disabled]=\"currentPage() === totalPages() - 1\"\n (click)=\"onNextClick($event)\"\n >\n <span aria-hidden=\"true\" class=\"text-center\">&gt;</span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
470
+ }
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LoanPaginationComponent, decorators: [{
472
+ type: Component,
473
+ args: [{ selector: 'payroll-loan-pagination', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (totalPages() > 1) {\n <div [class]=\"navContainerClass()\">\n <nav aria-label=\"Loan pagination\">\n <ul [class]=\"navListClass()\">\n <li [class]=\"arrowItemClass()\">\n <button\n type=\"button\"\n [ngClass]=\"[pageLinkClass(), currentPage() === 0 ? 'disabled' : arrowActiveClass()]\"\n [disabled]=\"currentPage() === 0\"\n (click)=\"onPreviousClick($event)\"\n >\n <span aria-hidden=\"true\" class=\"text-center\">&lt;</span>\n </button>\n </li>\n\n @for (page of pages(); track page) {\n <li [class]=\"pageItemClass()\" [class.active]=\"currentPage() === page\">\n <button type=\"button\" [class]=\"pageLinkClass()\" (click)=\"onPageClick(page, $event)\">{{ page + 1 }}</button>\n </li>\n }\n\n <li [class]=\"arrowItemClass()\">\n <button\n type=\"button\"\n [ngClass]=\"[pageLinkClass(), currentPage() === totalPages() - 1 ? 'disabled' : arrowActiveClass()]\"\n [disabled]=\"currentPage() === totalPages() - 1\"\n (click)=\"onNextClick($event)\"\n >\n <span aria-hidden=\"true\" class=\"text-center\">&gt;</span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n}\n" }]
474
+ }], propDecorators: { totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: false }] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }], navContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "navContainerClass", required: false }] }], navListClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "navListClass", required: false }] }], pageItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageItemClass", required: false }] }], arrowItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowItemClass", required: false }] }], pageLinkClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageLinkClass", required: false }] }], arrowActiveClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowActiveClass", required: false }] }], previousClicked: [{ type: i0.Output, args: ["previousClicked"] }], nextClicked: [{ type: i0.Output, args: ["nextClicked"] }], pageClicked: [{ type: i0.Output, args: ["pageClicked"] }] } });
475
+
476
+ class CommonMethods {
477
+ translateService;
478
+ constructor(translateService) {
479
+ this.translateService = translateService;
480
+ }
481
+ currencyDecimalFormat(value, currencyDecimalsNumber) {
482
+ const currencyDecimalsString = `1.${currencyDecimalsNumber}-${currencyDecimalsNumber}`;
483
+ const languageCode = this.translateService.getLanguage();
484
+ const decimalPipe = new DecimalPipe(languageCode === 'fr' ? 'fr-FR' : 'en-US');
485
+ if (languageCode === 'fr') {
486
+ return decimalPipe.transform(value, currencyDecimalsString, 'fr-FR');
487
+ }
488
+ return decimalPipe.transform(value, currencyDecimalsString);
489
+ }
490
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CommonMethods, deps: [{ token: PayrollTranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
491
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CommonMethods, providedIn: 'root' });
492
+ }
493
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CommonMethods, decorators: [{
494
+ type: Injectable,
495
+ args: [{
496
+ providedIn: 'root',
497
+ }]
498
+ }], ctorParameters: () => [{ type: PayrollTranslateService }] });
499
+
500
+ class PayrollSelfWidgetsService {
501
+ http;
502
+ constructor(http) {
503
+ this.http = http;
504
+ }
505
+ headers = { 'api-version': '1' };
506
+ getLoans(baseUrl) {
507
+ return this.http.get(`${baseUrl}/payroll/widgets/me/loans`, {
508
+ headers: this.headers,
509
+ });
510
+ }
511
+ getPayslipJobInfo(baseUrl, payMonth) {
512
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}/job-information`, {
513
+ headers: this.headers,
514
+ });
515
+ }
516
+ getPayslipBankInformation(baseUrl, payMonth) {
517
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}/bank-transfers`, {
518
+ headers: this.headers,
519
+ });
520
+ }
521
+ getPayslipVacationBalances(baseUrl, payMonth) {
522
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}/vacation-balances`, {
523
+ headers: this.headers,
524
+ });
525
+ }
526
+ getPayslipTicketBalances(baseUrl, payMonth) {
527
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}/ticket-balances`, {
528
+ headers: this.headers,
529
+ });
530
+ }
531
+ getPayslipIndemnity(baseUrl, payMonth) {
532
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}/indemnity`, {
533
+ headers: this.headers,
534
+ });
535
+ }
536
+ getPayslipDetails(baseUrl, payMonth) {
537
+ return this.http.get(`${baseUrl}/payroll/widgets/me/payslip/${payMonth}`, {
538
+ headers: this.headers,
539
+ });
540
+ }
541
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollSelfWidgetsService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
542
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollSelfWidgetsService, providedIn: 'root' });
543
+ }
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayrollSelfWidgetsService, decorators: [{
545
+ type: Injectable,
546
+ args: [{
547
+ providedIn: 'root',
548
+ }]
549
+ }], ctorParameters: () => [{ type: i1$1.HttpClient }] });
550
+
551
+ class MyLoansPopupWidgetComponent {
552
+ popupVisible = input(false, ...(ngDevMode ? [{ debugName: "popupVisible" }] : /* istanbul ignore next */ []));
553
+ internalPopupVisible = signal(false, ...(ngDevMode ? [{ debugName: "internalPopupVisible" }] : /* istanbul ignore next */ []));
554
+ loanDetails = signal([], ...(ngDevMode ? [{ debugName: "loanDetails" }] : /* istanbul ignore next */ []));
555
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
556
+ currencyCode = input('', ...(ngDevMode ? [{ debugName: "currencyCode" }] : /* istanbul ignore next */ []));
557
+ currencyDecimals = input(2, ...(ngDevMode ? [{ debugName: "currencyDecimals" }] : /* istanbul ignore next */ []));
558
+ popupWidth = input(580, ...(ngDevMode ? [{ debugName: "popupWidth" }] : /* istanbul ignore next */ []));
559
+ popupHeight = input('auto', ...(ngDevMode ? [{ debugName: "popupHeight" }] : /* istanbul ignore next */ []));
560
+ popupTitleKey = input('Loans', ...(ngDevMode ? [{ debugName: "popupTitleKey" }] : /* istanbul ignore next */ []));
561
+ popupDragEnabled = input(false, ...(ngDevMode ? [{ debugName: "popupDragEnabled" }] : /* istanbul ignore next */ []));
562
+ popupShadingColor = input('rgba(0,0,0,0.4)', ...(ngDevMode ? [{ debugName: "popupShadingColor" }] : /* istanbul ignore next */ []));
563
+ contentContainerClass = input('mx-4 mt-2', ...(ngDevMode ? [{ debugName: "contentContainerClass" }] : /* istanbul ignore next */ []));
564
+ noPaginationContainerClass = input('mb-2', ...(ngDevMode ? [{ debugName: "noPaginationContainerClass" }] : /* istanbul ignore next */ []));
565
+ // Loan Card Classes
566
+ cardContainerClass = input('p-3 card-shadow h-100 border border-1 rounded-2', ...(ngDevMode ? [{ debugName: "cardContainerClass" }] : /* istanbul ignore next */ []));
567
+ loanTitleClass = input('text-dark fs-20 mb-2', ...(ngDevMode ? [{ debugName: "loanTitleClass" }] : /* istanbul ignore next */ []));
568
+ installRangeLabelClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "installRangeLabelClass" }] : /* istanbul ignore next */ []));
569
+ lineClass = input('fs-12 mb-2', ...(ngDevMode ? [{ debugName: "lineClass" }] : /* istanbul ignore next */ []));
570
+ amountLabelClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "amountLabelClass" }] : /* istanbul ignore next */ []));
571
+ currencyCodeClass = input('text-secondary fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
572
+ amountValueClass = input('text-dark-gray mx-1 fs-14', ...(ngDevMode ? [{ debugName: "amountValueClass" }] : /* istanbul ignore next */ []));
573
+ totalPaidClass = input('text-success fs-12', ...(ngDevMode ? [{ debugName: "totalPaidClass" }] : /* istanbul ignore next */ []));
574
+ remainingInstallmentClass = input('field-secondary-label-sm', ...(ngDevMode ? [{ debugName: "remainingInstallmentClass" }] : /* istanbul ignore next */ []));
575
+ // Loan Pagination Classes
576
+ navContainerClass = input('d-flex justify-content-center mt-3', ...(ngDevMode ? [{ debugName: "navContainerClass" }] : /* istanbul ignore next */ []));
577
+ navListClass = input('pagination mb-1', ...(ngDevMode ? [{ debugName: "navListClass" }] : /* istanbul ignore next */ []));
578
+ pageItemClass = input('page-item page-number mx-3', ...(ngDevMode ? [{ debugName: "pageItemClass" }] : /* istanbul ignore next */ []));
579
+ arrowItemClass = input('page-item arrow', ...(ngDevMode ? [{ debugName: "arrowItemClass" }] : /* istanbul ignore next */ []));
580
+ pageLinkClass = input('page-link rounded-circle', ...(ngDevMode ? [{ debugName: "pageLinkClass" }] : /* istanbul ignore next */ []));
581
+ popupVisibleChange = output();
582
+ closePopupClickHandler = output();
583
+ isLoadingChanged = output();
584
+ currentPage = signal(0, ...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
585
+ pageSize = 1;
586
+ hasLoadedLoans = false;
587
+ isLoading = false;
588
+ pendingOpen = false;
589
+ employeeLoans = computed(() => {
590
+ const startIndex = this.currentPage() * this.pageSize;
591
+ return this.loanDetails().slice(startIndex, startIndex + this.pageSize);
592
+ }, ...(ngDevMode ? [{ debugName: "employeeLoans" }] : /* istanbul ignore next */ []));
593
+ translateService = inject(PayrollTranslatePipe);
594
+ commonMethods = inject(CommonMethods);
595
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
596
+ constructor() {
597
+ effect(() => {
598
+ const visible = this.popupVisible();
599
+ if (!visible) {
600
+ this.pendingOpen = false;
601
+ this.internalPopupVisible.set(false);
602
+ return;
603
+ }
604
+ this.requestOpenPopup();
605
+ });
606
+ }
607
+ onPopupClose() {
608
+ this.pendingOpen = false;
609
+ this.internalPopupVisible.set(false);
610
+ this.popupVisibleChange.emit(false);
611
+ this.closePopupClickHandler.emit();
612
+ this.currentPage.set(0);
613
+ }
614
+ requestOpenPopup() {
615
+ this.pendingOpen = true;
616
+ if (this.loanDetails().length > 0 || this.hasLoadedLoans) {
617
+ this.internalPopupVisible.set(true);
618
+ return;
619
+ }
620
+ if (this.isLoading || !this.baseUrl()) {
621
+ return;
622
+ }
623
+ this.isLoading = true;
624
+ this.isLoadingChanged.emit(true);
625
+ this.payrollWidgetsService
626
+ .getLoans(this.baseUrl())
627
+ .pipe(finalize(() => {
628
+ this.isLoading = false;
629
+ this.isLoadingChanged.emit(false);
630
+ if (this.pendingOpen && this.hasLoadedLoans) {
631
+ this.internalPopupVisible.set(true);
632
+ }
633
+ }))
634
+ .subscribe({
635
+ next: (response) => {
636
+ this.loanDetails.set(response.ResponseData ?? []);
637
+ this.hasLoadedLoans = true;
638
+ },
639
+ error: () => {
640
+ this.pendingOpen = false;
641
+ this.loanDetails.set([]);
642
+ },
643
+ });
644
+ }
645
+ goToPage(pageIndex) {
646
+ if (pageIndex >= 0 && pageIndex < this.loanDetails().length) {
647
+ this.currentPage.set(pageIndex);
648
+ }
649
+ }
650
+ goToPreviousPage() {
651
+ if (this.currentPage() > 0) {
652
+ this.currentPage.update(value => value - 1);
653
+ }
654
+ }
655
+ goToNextPage() {
656
+ if (this.currentPage() < this.loanDetails().length - 1) {
657
+ this.currentPage.update(value => value + 1);
658
+ }
659
+ }
660
+ currencyFormat(value) {
661
+ return this.commonMethods.currencyDecimalFormat(value, this.currencyDecimals()) ?? '0';
662
+ }
663
+ getRemainingInstallment(installmentValue) {
664
+ const translated = this.translateService.transform('Installments{{value}}');
665
+ return translated.replace('{{value}}', `${String(installmentValue)}`);
666
+ }
667
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyLoansPopupWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
668
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyLoansPopupWidgetComponent, isStandalone: true, selector: "payroll-my-loans-popup", inputs: { popupVisible: { classPropertyName: "popupVisible", publicName: "popupVisible", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null }, currencyDecimals: { classPropertyName: "currencyDecimals", publicName: "currencyDecimals", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, popupHeight: { classPropertyName: "popupHeight", publicName: "popupHeight", isSignal: true, isRequired: false, transformFunction: null }, popupTitleKey: { classPropertyName: "popupTitleKey", publicName: "popupTitleKey", isSignal: true, isRequired: false, transformFunction: null }, popupDragEnabled: { classPropertyName: "popupDragEnabled", publicName: "popupDragEnabled", isSignal: true, isRequired: false, transformFunction: null }, popupShadingColor: { classPropertyName: "popupShadingColor", publicName: "popupShadingColor", isSignal: true, isRequired: false, transformFunction: null }, contentContainerClass: { classPropertyName: "contentContainerClass", publicName: "contentContainerClass", isSignal: true, isRequired: false, transformFunction: null }, noPaginationContainerClass: { classPropertyName: "noPaginationContainerClass", publicName: "noPaginationContainerClass", isSignal: true, isRequired: false, transformFunction: null }, cardContainerClass: { classPropertyName: "cardContainerClass", publicName: "cardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, loanTitleClass: { classPropertyName: "loanTitleClass", publicName: "loanTitleClass", isSignal: true, isRequired: false, transformFunction: null }, installRangeLabelClass: { classPropertyName: "installRangeLabelClass", publicName: "installRangeLabelClass", isSignal: true, isRequired: false, transformFunction: null }, lineClass: { classPropertyName: "lineClass", publicName: "lineClass", isSignal: true, isRequired: false, transformFunction: null }, amountLabelClass: { classPropertyName: "amountLabelClass", publicName: "amountLabelClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, amountValueClass: { classPropertyName: "amountValueClass", publicName: "amountValueClass", isSignal: true, isRequired: false, transformFunction: null }, totalPaidClass: { classPropertyName: "totalPaidClass", publicName: "totalPaidClass", isSignal: true, isRequired: false, transformFunction: null }, remainingInstallmentClass: { classPropertyName: "remainingInstallmentClass", publicName: "remainingInstallmentClass", isSignal: true, isRequired: false, transformFunction: null }, navContainerClass: { classPropertyName: "navContainerClass", publicName: "navContainerClass", isSignal: true, isRequired: false, transformFunction: null }, navListClass: { classPropertyName: "navListClass", publicName: "navListClass", isSignal: true, isRequired: false, transformFunction: null }, pageItemClass: { classPropertyName: "pageItemClass", publicName: "pageItemClass", isSignal: true, isRequired: false, transformFunction: null }, arrowItemClass: { classPropertyName: "arrowItemClass", publicName: "arrowItemClass", isSignal: true, isRequired: false, transformFunction: null }, pageLinkClass: { classPropertyName: "pageLinkClass", publicName: "pageLinkClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { popupVisibleChange: "popupVisibleChange", closePopupClickHandler: "closePopupClickHandler", isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<dx-popup\n id=\"employeeLoanPopup\"\n [visible]=\"internalPopupVisible()\"\n (visibleChange)=\"internalPopupVisible.set($event)\"\n [width]=\"popupWidth()\"\n [height]=\"popupHeight()\"\n [showCloseButton]=\"true\"\n [showTitle]=\"true\"\n [shadingColor]=\"popupShadingColor()\"\n [dragEnabled]=\"popupDragEnabled()\"\n [title]=\"popupTitleKey() | PayrollTranslate\"\n (onHiding)=\"onPopupClose()\"\n>\n <div [ngClass]=\"[contentContainerClass(), loanDetails().length <= 1 ? noPaginationContainerClass() : '']\">\n @for (loan of employeeLoans(); track $index) {\n <payroll-loan-card\n [loan]=\"loan\"\n [currencyCode]=\"currencyCode()\"\n [cardContainerClass]=\"cardContainerClass()\"\n [loanTitleClass]=\"loanTitleClass()\"\n [installRangeLabelClass]=\"installRangeLabelClass()\"\n [lineClass]=\"lineClass()\"\n [amountLabelClass]=\"amountLabelClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [amountValueClass]=\"amountValueClass()\"\n [totalPaidClass]=\"totalPaidClass()\"\n [remainingInstallmentClass]=\"remainingInstallmentClass()\"\n [formatAmount]=\"currencyFormat.bind(this)\"\n [remainingInstallmentsText]=\"getRemainingInstallment.bind(this)\"\n ></payroll-loan-card>\n }\n </div>\n\n <payroll-loan-pagination\n [totalPages]=\"loanDetails().length\"\n [currentPage]=\"currentPage()\"\n [navContainerClass]=\"navContainerClass()\"\n [navListClass]=\"navListClass()\"\n [pageItemClass]=\"pageItemClass()\"\n [arrowItemClass]=\"arrowItemClass()\"\n [pageLinkClass]=\"pageLinkClass()\"\n (previousClicked)=\"goToPreviousPage()\"\n (nextClicked)=\"goToNextPage()\"\n (pageClicked)=\"goToPage($event)\"\n ></payroll-loan-pagination>\n</dx-popup>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$2.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: LoanCardComponent, selector: "payroll-loan-card", inputs: ["loan", "currencyCode", "cardContainerClass", "installRangeLabelClass", "lineClass", "amountLabelClass", "currencyCodeClass", "amountValueClass", "totalPaidClass", "remainingInstallmentClass", "loanTitleClass", "formatAmount", "remainingInstallmentsText"] }, { kind: "component", type: LoanPaginationComponent, selector: "payroll-loan-pagination", inputs: ["totalPages", "currentPage", "navContainerClass", "navListClass", "pageItemClass", "arrowItemClass", "pageLinkClass", "arrowActiveClass"], outputs: ["previousClicked", "nextClicked", "pageClicked"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
669
+ }
670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyLoansPopupWidgetComponent, decorators: [{
671
+ type: Component,
672
+ args: [{ selector: 'payroll-my-loans-popup', standalone: true, imports: [CommonModule, DxPopupModule, PayrollTranslatePipe, LoanCardComponent, LoanPaginationComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dx-popup\n id=\"employeeLoanPopup\"\n [visible]=\"internalPopupVisible()\"\n (visibleChange)=\"internalPopupVisible.set($event)\"\n [width]=\"popupWidth()\"\n [height]=\"popupHeight()\"\n [showCloseButton]=\"true\"\n [showTitle]=\"true\"\n [shadingColor]=\"popupShadingColor()\"\n [dragEnabled]=\"popupDragEnabled()\"\n [title]=\"popupTitleKey() | PayrollTranslate\"\n (onHiding)=\"onPopupClose()\"\n>\n <div [ngClass]=\"[contentContainerClass(), loanDetails().length <= 1 ? noPaginationContainerClass() : '']\">\n @for (loan of employeeLoans(); track $index) {\n <payroll-loan-card\n [loan]=\"loan\"\n [currencyCode]=\"currencyCode()\"\n [cardContainerClass]=\"cardContainerClass()\"\n [loanTitleClass]=\"loanTitleClass()\"\n [installRangeLabelClass]=\"installRangeLabelClass()\"\n [lineClass]=\"lineClass()\"\n [amountLabelClass]=\"amountLabelClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [amountValueClass]=\"amountValueClass()\"\n [totalPaidClass]=\"totalPaidClass()\"\n [remainingInstallmentClass]=\"remainingInstallmentClass()\"\n [formatAmount]=\"currencyFormat.bind(this)\"\n [remainingInstallmentsText]=\"getRemainingInstallment.bind(this)\"\n ></payroll-loan-card>\n }\n </div>\n\n <payroll-loan-pagination\n [totalPages]=\"loanDetails().length\"\n [currentPage]=\"currentPage()\"\n [navContainerClass]=\"navContainerClass()\"\n [navListClass]=\"navListClass()\"\n [pageItemClass]=\"pageItemClass()\"\n [arrowItemClass]=\"arrowItemClass()\"\n [pageLinkClass]=\"pageLinkClass()\"\n (previousClicked)=\"goToPreviousPage()\"\n (nextClicked)=\"goToNextPage()\"\n (pageClicked)=\"goToPage($event)\"\n ></payroll-loan-pagination>\n</dx-popup>\n" }]
673
+ }], ctorParameters: () => [], propDecorators: { popupVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupVisible", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], currencyCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCode", required: false }] }], currencyDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDecimals", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupTitleKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupTitleKey", required: false }] }], popupDragEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupDragEnabled", required: false }] }], popupShadingColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupShadingColor", required: false }] }], contentContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentContainerClass", required: false }] }], noPaginationContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "noPaginationContainerClass", required: false }] }], cardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardContainerClass", required: false }] }], loanTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "loanTitleClass", required: false }] }], installRangeLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "installRangeLabelClass", required: false }] }], lineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineClass", required: false }] }], amountLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountLabelClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], amountValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountValueClass", required: false }] }], totalPaidClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPaidClass", required: false }] }], remainingInstallmentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "remainingInstallmentClass", required: false }] }], navContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "navContainerClass", required: false }] }], navListClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "navListClass", required: false }] }], pageItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageItemClass", required: false }] }], arrowItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowItemClass", required: false }] }], pageLinkClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageLinkClass", required: false }] }], popupVisibleChange: [{ type: i0.Output, args: ["popupVisibleChange"] }], closePopupClickHandler: [{ type: i0.Output, args: ["closePopupClickHandler"] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }] } });
674
+
675
+ class ActualBasicDetailsPopupComponent {
676
+ popupVisible = input(false, ...(ngDevMode ? [{ debugName: "popupVisible" }] : /* istanbul ignore next */ []));
677
+ currencyCode = input('', ...(ngDevMode ? [{ debugName: "currencyCode" }] : /* istanbul ignore next */ []));
678
+ currencyDecimals = input(0, ...(ngDevMode ? [{ debugName: "currencyDecimals" }] : /* istanbul ignore next */ []));
679
+ actualBasicSalaryDetails = input([], ...(ngDevMode ? [{ debugName: "actualBasicSalaryDetails" }] : /* istanbul ignore next */ []));
680
+ popupWidth = input(600, ...(ngDevMode ? [{ debugName: "popupWidth" }] : /* istanbul ignore next */ []));
681
+ popupMaxHeight = input(400, ...(ngDevMode ? [{ debugName: "popupMaxHeight" }] : /* istanbul ignore next */ []));
682
+ popupShadingColor = input('rgba(0,0,0,0.4)', ...(ngDevMode ? [{ debugName: "popupShadingColor" }] : /* istanbul ignore next */ []));
683
+ popupTitleKey = input('ActualBasicDetails', ...(ngDevMode ? [{ debugName: "popupTitleKey" }] : /* istanbul ignore next */ []));
684
+ popupHeaderRowClass = input('row mb-3 table-cell-sm', ...(ngDevMode ? [{ debugName: "popupHeaderRowClass" }] : /* istanbul ignore next */ []));
685
+ popupRowClass = input('row mb-3 table-cell-md', ...(ngDevMode ? [{ debugName: "popupRowClass" }] : /* istanbul ignore next */ []));
686
+ closePopupClickHandler = output();
687
+ popupVisibleState = signal(false, ...(ngDevMode ? [{ debugName: "popupVisibleState" }] : /* istanbul ignore next */ []));
688
+ scrollView;
689
+ commonMethods = inject(CommonMethods);
690
+ constructor() {
691
+ effect(() => {
692
+ this.popupVisibleState.set(this.popupVisible());
693
+ });
694
+ }
695
+ onPopupClose() {
696
+ this.scrollView?.instance.scrollTo(0);
697
+ this.closePopupClickHandler.emit();
698
+ }
699
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ActualBasicDetailsPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
700
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ActualBasicDetailsPopupComponent, isStandalone: true, selector: "payroll-actual-basic-details-popup", inputs: { popupVisible: { classPropertyName: "popupVisible", publicName: "popupVisible", isSignal: true, isRequired: false, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null }, currencyDecimals: { classPropertyName: "currencyDecimals", publicName: "currencyDecimals", isSignal: true, isRequired: false, transformFunction: null }, actualBasicSalaryDetails: { classPropertyName: "actualBasicSalaryDetails", publicName: "actualBasicSalaryDetails", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, popupMaxHeight: { classPropertyName: "popupMaxHeight", publicName: "popupMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, popupShadingColor: { classPropertyName: "popupShadingColor", publicName: "popupShadingColor", isSignal: true, isRequired: false, transformFunction: null }, popupTitleKey: { classPropertyName: "popupTitleKey", publicName: "popupTitleKey", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderRowClass: { classPropertyName: "popupHeaderRowClass", publicName: "popupHeaderRowClass", isSignal: true, isRequired: false, transformFunction: null }, popupRowClass: { classPropertyName: "popupRowClass", publicName: "popupRowClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closePopupClickHandler: "closePopupClickHandler" }, viewQueries: [{ propertyName: "scrollView", first: true, predicate: DxScrollViewComponent, descendants: true }], ngImport: i0, template: "<dx-popup\n [visible]=\"popupVisibleState()\"\n (visibleChange)=\"popupVisibleState.set($event)\"\n [height]=\"'auto'\"\n [maxHeight]=\"popupMaxHeight()\"\n [width]=\"popupWidth()\"\n [shadingColor]=\"popupShadingColor()\"\n contentTemplate=\"popup-content\"\n [showCloseButton]=\"true\"\n [title]=\"popupTitleKey() | PayrollTranslate\"\n (onHiding)=\"onPopupClose()\"\n>\n <div *dxTemplate=\"let data of 'popup-content'\">\n <dx-scroll-view\n #actualBasicDetailsScrollView\n id=\"actualBasicDetailsScrollView\"\n [scrollByContent]=\"true\"\n [scrollByThumb]=\"true\"\n [showScrollbar]=\"'onScroll'\"\n [bounceEnabled]=\"false\"\n >\n <div [class]=\"popupHeaderRowClass()\">\n <div class=\"col-5\">{{ 'Attendance' | PayrollTranslate }}</div>\n <div class=\"col-3\">{{ 'Days' | PayrollTranslate }}</div>\n <div class=\"col-4\">\n {{ 'Amount' | PayrollTranslate }}\n <span class=\"fs-10\">({{ currencyCode() }})</span>\n </div>\n </div>\n\n @for (basicSalaryDetails of actualBasicSalaryDetails(); track $index) {\n <div [class]=\"popupRowClass()\">\n <div class=\"col-5\">{{ basicSalaryDetails.Attendance }}</div>\n <div class=\"col-3\">{{ basicSalaryDetails.AllowanceDays }}</div>\n <div class=\"col-4\">\n {{ commonMethods.currencyDecimalFormat(basicSalaryDetails.Amount, currencyDecimals()) }}\n </div>\n </div>\n }\n </dx-scroll-view>\n </div>\n</dx-popup>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$2.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "ngmodule", type: DxScrollViewModule }, { kind: "component", type: i1$2.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
701
+ }
702
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ActualBasicDetailsPopupComponent, decorators: [{
703
+ type: Component,
704
+ args: [{ selector: 'payroll-actual-basic-details-popup', standalone: true, imports: [CommonModule, DxPopupModule, DxScrollViewModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dx-popup\n [visible]=\"popupVisibleState()\"\n (visibleChange)=\"popupVisibleState.set($event)\"\n [height]=\"'auto'\"\n [maxHeight]=\"popupMaxHeight()\"\n [width]=\"popupWidth()\"\n [shadingColor]=\"popupShadingColor()\"\n contentTemplate=\"popup-content\"\n [showCloseButton]=\"true\"\n [title]=\"popupTitleKey() | PayrollTranslate\"\n (onHiding)=\"onPopupClose()\"\n>\n <div *dxTemplate=\"let data of 'popup-content'\">\n <dx-scroll-view\n #actualBasicDetailsScrollView\n id=\"actualBasicDetailsScrollView\"\n [scrollByContent]=\"true\"\n [scrollByThumb]=\"true\"\n [showScrollbar]=\"'onScroll'\"\n [bounceEnabled]=\"false\"\n >\n <div [class]=\"popupHeaderRowClass()\">\n <div class=\"col-5\">{{ 'Attendance' | PayrollTranslate }}</div>\n <div class=\"col-3\">{{ 'Days' | PayrollTranslate }}</div>\n <div class=\"col-4\">\n {{ 'Amount' | PayrollTranslate }}\n <span class=\"fs-10\">({{ currencyCode() }})</span>\n </div>\n </div>\n\n @for (basicSalaryDetails of actualBasicSalaryDetails(); track $index) {\n <div [class]=\"popupRowClass()\">\n <div class=\"col-5\">{{ basicSalaryDetails.Attendance }}</div>\n <div class=\"col-3\">{{ basicSalaryDetails.AllowanceDays }}</div>\n <div class=\"col-4\">\n {{ commonMethods.currencyDecimalFormat(basicSalaryDetails.Amount, currencyDecimals()) }}\n </div>\n </div>\n }\n </dx-scroll-view>\n </div>\n</dx-popup>\n" }]
705
+ }], ctorParameters: () => [], propDecorators: { popupVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupVisible", required: false }] }], currencyCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCode", required: false }] }], currencyDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDecimals", required: false }] }], actualBasicSalaryDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "actualBasicSalaryDetails", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], popupMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMaxHeight", required: false }] }], popupShadingColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupShadingColor", required: false }] }], popupTitleKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupTitleKey", required: false }] }], popupHeaderRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderRowClass", required: false }] }], popupRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupRowClass", required: false }] }], closePopupClickHandler: [{ type: i0.Output, args: ["closePopupClickHandler"] }], scrollView: [{
706
+ type: ViewChild,
707
+ args: [DxScrollViewComponent, { static: false }]
708
+ }] } });
709
+
710
+ class PayslipSalaryTableComponent {
711
+ employeeDetails = input.required(...(ngDevMode ? [{ debugName: "employeeDetails" }] : /* istanbul ignore next */ []));
712
+ sectionClass = input('mb-4', ...(ngDevMode ? [{ debugName: "sectionClass" }] : /* istanbul ignore next */ []));
713
+ salaryTableRowClass = input('row', ...(ngDevMode ? [{ debugName: "salaryTableRowClass" }] : /* istanbul ignore next */ []));
714
+ labelColumnClass = input('col-5 text-start', ...(ngDevMode ? [{ debugName: "labelColumnClass" }] : /* istanbul ignore next */ []));
715
+ daysColumnClass = input('col-2 text-end fw-light mb-2', ...(ngDevMode ? [{ debugName: "daysColumnClass" }] : /* istanbul ignore next */ []));
716
+ daysHeaderClass = input('text-ellipsis-one-line mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "daysHeaderClass" }] : /* istanbul ignore next */ []));
717
+ amountColumnClass = input('offset-1 col-4 text-start', ...(ngDevMode ? [{ debugName: "amountColumnClass" }] : /* istanbul ignore next */ []));
718
+ tablePrimaryLabelClass = input('fw-normal mb-2 table-cell-md text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tablePrimaryLabelClass" }] : /* istanbul ignore next */ []));
719
+ tableLabelClass = input('fw-normal mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableLabelClass" }] : /* istanbul ignore next */ []));
720
+ tableValueClass = input('fw-medium mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableValueClass" }] : /* istanbul ignore next */ []));
721
+ tableSecondaryValueClass = input('text-ellipsis-one-line mb-2 table-cell-sm', ...(ngDevMode ? [{ debugName: "tableSecondaryValueClass" }] : /* istanbul ignore next */ []));
722
+ currencyCodeClass = input('fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
723
+ viewDetailsLinkClass = input('text-primary fw-normal ms-1', ...(ngDevMode ? [{ debugName: "viewDetailsLinkClass" }] : /* istanbul ignore next */ []));
724
+ viewActualBasicSalaryDetailsClick = output();
725
+ commonMethod = inject(CommonMethods);
726
+ onViewActualBasicSalaryDetialsClick() {
727
+ this.viewActualBasicSalaryDetailsClick.emit();
728
+ }
729
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipSalaryTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
730
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: PayslipSalaryTableComponent, isStandalone: true, selector: "payroll-payslip-salary-table", inputs: { employeeDetails: { classPropertyName: "employeeDetails", publicName: "employeeDetails", isSignal: true, isRequired: true, transformFunction: null }, sectionClass: { classPropertyName: "sectionClass", publicName: "sectionClass", isSignal: true, isRequired: false, transformFunction: null }, salaryTableRowClass: { classPropertyName: "salaryTableRowClass", publicName: "salaryTableRowClass", isSignal: true, isRequired: false, transformFunction: null }, labelColumnClass: { classPropertyName: "labelColumnClass", publicName: "labelColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysColumnClass: { classPropertyName: "daysColumnClass", publicName: "daysColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysHeaderClass: { classPropertyName: "daysHeaderClass", publicName: "daysHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, amountColumnClass: { classPropertyName: "amountColumnClass", publicName: "amountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, tablePrimaryLabelClass: { classPropertyName: "tablePrimaryLabelClass", publicName: "tablePrimaryLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tableLabelClass: { classPropertyName: "tableLabelClass", publicName: "tableLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tableValueClass: { classPropertyName: "tableValueClass", publicName: "tableValueClass", isSignal: true, isRequired: false, transformFunction: null }, tableSecondaryValueClass: { classPropertyName: "tableSecondaryValueClass", publicName: "tableSecondaryValueClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, viewDetailsLinkClass: { classPropertyName: "viewDetailsLinkClass", publicName: "viewDetailsLinkClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { viewActualBasicSalaryDetailsClick: "viewActualBasicSalaryDetailsClick" }, ngImport: i0, template: "<div [class]=\"sectionClass()\">\n <div [class]=\"salaryTableRowClass()\">\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tablePrimaryLabelClass()\">{{ 'Salary' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'Basic' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'ActualBasicSalary' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'UnpaidVacations' | PayrollTranslate }}</div>\n </div>\n\n <div [class]=\"daysColumnClass()\">\n <div [class]=\"daysHeaderClass()\">{{ 'Days' | PayrollTranslate }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().TotalDays }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().PaidDays }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().UnpaidVacationDays }}</div>\n </div>\n\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"tablePrimaryLabelClass()\">\n {{ 'Amount' | PayrollTranslate }}\n <span [class]=\"currencyCodeClass()\">({{ employeeDetails().CurrencyCode }})</span>\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().BasicSalary, employeeDetails().CurrencyDecimals) }}\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().ActualBasicSalary, employeeDetails().CurrencyDecimals) }}\n <a [class]=\"viewDetailsLinkClass()\" (click)=\"onViewActualBasicSalaryDetialsClick()\">\n {{ 'ViewDetails' | PayrollTranslate }}\n </a>\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().UnpaidVacationDaysCost, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
731
+ }
732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipSalaryTableComponent, decorators: [{
733
+ type: Component,
734
+ args: [{ selector: 'payroll-payslip-salary-table', standalone: true, imports: [CommonModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"sectionClass()\">\n <div [class]=\"salaryTableRowClass()\">\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tablePrimaryLabelClass()\">{{ 'Salary' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'Basic' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'ActualBasicSalary' | PayrollTranslate }}</div>\n <div [class]=\"tableLabelClass()\">{{ 'UnpaidVacations' | PayrollTranslate }}</div>\n </div>\n\n <div [class]=\"daysColumnClass()\">\n <div [class]=\"daysHeaderClass()\">{{ 'Days' | PayrollTranslate }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().TotalDays }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().PaidDays }}</div>\n <div [class]=\"tableSecondaryValueClass()\">{{ employeeDetails().UnpaidVacationDays }}</div>\n </div>\n\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"tablePrimaryLabelClass()\">\n {{ 'Amount' | PayrollTranslate }}\n <span [class]=\"currencyCodeClass()\">({{ employeeDetails().CurrencyCode }})</span>\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().BasicSalary, employeeDetails().CurrencyDecimals) }}\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().ActualBasicSalary, employeeDetails().CurrencyDecimals) }}\n <a [class]=\"viewDetailsLinkClass()\" (click)=\"onViewActualBasicSalaryDetialsClick()\">\n {{ 'ViewDetails' | PayrollTranslate }}\n </a>\n </div>\n <div [class]=\"tableValueClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().UnpaidVacationDaysCost, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n </div>\n</div>\n" }]
735
+ }], propDecorators: { employeeDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "employeeDetails", required: true }] }], sectionClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionClass", required: false }] }], salaryTableRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryTableRowClass", required: false }] }], labelColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelColumnClass", required: false }] }], daysColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysColumnClass", required: false }] }], daysHeaderClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysHeaderClass", required: false }] }], amountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountColumnClass", required: false }] }], tablePrimaryLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tablePrimaryLabelClass", required: false }] }], tableLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableLabelClass", required: false }] }], tableValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableValueClass", required: false }] }], tableSecondaryValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableSecondaryValueClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], viewDetailsLinkClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewDetailsLinkClass", required: false }] }], viewActualBasicSalaryDetailsClick: [{ type: i0.Output, args: ["viewActualBasicSalaryDetailsClick"] }] } });
736
+
737
+ class PayslipAllowancesTableComponent {
738
+ employeeDetails = input.required(...(ngDevMode ? [{ debugName: "employeeDetails" }] : /* istanbul ignore next */ []));
739
+ sectionClass = input('mb-4', ...(ngDevMode ? [{ debugName: "sectionClass" }] : /* istanbul ignore next */ []));
740
+ allowancesRowClass = input('row align-items-start', ...(ngDevMode ? [{ debugName: "allowancesRowClass" }] : /* istanbul ignore next */ []));
741
+ labelColumnClass = input('col-5 text-start', ...(ngDevMode ? [{ debugName: "labelColumnClass" }] : /* istanbul ignore next */ []));
742
+ totalsColumnClass = input('offset-3 col-4 text-start', ...(ngDevMode ? [{ debugName: "totalsColumnClass" }] : /* istanbul ignore next */ []));
743
+ sectionTitleClass = input('fs-14 fw-bold mb-2 text-primary', ...(ngDevMode ? [{ debugName: "sectionTitleClass" }] : /* istanbul ignore next */ []));
744
+ tableLabelClass = input('fw-normal mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableLabelClass" }] : /* istanbul ignore next */ []));
745
+ allowanceDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "allowanceDaysClass" }] : /* istanbul ignore next */ []));
746
+ amountColumnClass = input('offset-1 col-3 text-start', ...(ngDevMode ? [{ debugName: "amountColumnClass" }] : /* istanbul ignore next */ []));
747
+ allowanceAmountWrapperClass = input('d-flex align-items-center justify-content-between fs-12 fw-medium mb-2 text-dark-gray', ...(ngDevMode ? [{ debugName: "allowanceAmountWrapperClass" }] : /* istanbul ignore next */ []));
748
+ allowanceAmountTextClass = input('w-30 text-nowrap', ...(ngDevMode ? [{ debugName: "allowanceAmountTextClass" }] : /* istanbul ignore next */ []));
749
+ infoIconClass = input('light-info ms-1 cursor-pointer', ...(ngDevMode ? [{ debugName: "infoIconClass" }] : /* istanbul ignore next */ []));
750
+ tooltipContainerClass = input('text-white rounded overflow-hidden', ...(ngDevMode ? [{ debugName: "tooltipContainerClass" }] : /* istanbul ignore next */ []));
751
+ tooltipTextClass = input('text-ellipsis-one-line fs-12', ...(ngDevMode ? [{ debugName: "tooltipTextClass" }] : /* istanbul ignore next */ []));
752
+ tooltipCurrencyClass = input('fs-10', ...(ngDevMode ? [{ debugName: "tooltipCurrencyClass" }] : /* istanbul ignore next */ []));
753
+ tooltipAmountClass = input('fs-14 ms-1', ...(ngDevMode ? [{ debugName: "tooltipAmountClass" }] : /* istanbul ignore next */ []));
754
+ infoIcon = faCircleInfo;
755
+ commonMethod = inject(CommonMethods);
756
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipAllowancesTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
757
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PayslipAllowancesTableComponent, isStandalone: true, selector: "payroll-payslip-allowances-table", inputs: { employeeDetails: { classPropertyName: "employeeDetails", publicName: "employeeDetails", isSignal: true, isRequired: true, transformFunction: null }, sectionClass: { classPropertyName: "sectionClass", publicName: "sectionClass", isSignal: true, isRequired: false, transformFunction: null }, allowancesRowClass: { classPropertyName: "allowancesRowClass", publicName: "allowancesRowClass", isSignal: true, isRequired: false, transformFunction: null }, labelColumnClass: { classPropertyName: "labelColumnClass", publicName: "labelColumnClass", isSignal: true, isRequired: false, transformFunction: null }, totalsColumnClass: { classPropertyName: "totalsColumnClass", publicName: "totalsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, sectionTitleClass: { classPropertyName: "sectionTitleClass", publicName: "sectionTitleClass", isSignal: true, isRequired: false, transformFunction: null }, tableLabelClass: { classPropertyName: "tableLabelClass", publicName: "tableLabelClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceDaysClass: { classPropertyName: "allowanceDaysClass", publicName: "allowanceDaysClass", isSignal: true, isRequired: false, transformFunction: null }, amountColumnClass: { classPropertyName: "amountColumnClass", publicName: "amountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountWrapperClass: { classPropertyName: "allowanceAmountWrapperClass", publicName: "allowanceAmountWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountTextClass: { classPropertyName: "allowanceAmountTextClass", publicName: "allowanceAmountTextClass", isSignal: true, isRequired: false, transformFunction: null }, infoIconClass: { classPropertyName: "infoIconClass", publicName: "infoIconClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipContainerClass: { classPropertyName: "tooltipContainerClass", publicName: "tooltipContainerClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipTextClass: { classPropertyName: "tooltipTextClass", publicName: "tooltipTextClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipCurrencyClass: { classPropertyName: "tooltipCurrencyClass", publicName: "tooltipCurrencyClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipAmountClass: { classPropertyName: "tooltipAmountClass", publicName: "tooltipAmountClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"sectionClass()\">\n <div [class]=\"allowancesRowClass()\">\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Allowances' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalCashAllowances, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n\n @for (allowance of employeeDetails().CashAllowances ?? []; track $index; let index = $index) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tableLabelClass()\">{{ allowance.AllowanceName }}</div>\n </div>\n <div [class]=\"allowanceDaysClass()\">{{ allowance.AllowanceDays ?? '-' }}</div>\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"allowanceAmountWrapperClass()\">\n <div [class]=\"allowanceAmountTextClass()\">\n {{ commonMethod.currencyDecimalFormat(allowance.TotalAmount, employeeDetails().CurrencyDecimals) }}\n </div>\n @if (allowance.TotalAmount !== allowance.OriginalAmount && allowance.OriginalAmount != null) {\n <fa-icon [icon]=\"infoIcon\" [class]=\"infoIconClass()\" [id]=\"'allowance-original-' + index\"></fa-icon>\n }\n </div>\n @if (allowance.TotalAmount !== allowance.OriginalAmount && allowance.OriginalAmount != null) {\n <dx-tooltip [target]=\"'#' + 'allowance-original-' + index\" [showEvent]=\"'mouseenter'\" [hideEvent]=\"'mouseleave'\" [width]=\"'auto'\">\n <div [class]=\"tooltipContainerClass()\">\n <div [class]=\"tooltipTextClass()\">\n {{ 'TotalAmount' | PayrollTranslate }}\n <span [class]=\"tooltipCurrencyClass()\">({{ employeeDetails().CurrencyCode }}):</span>\n <span [class]=\"tooltipAmountClass()\">\n {{ commonMethod.currencyDecimalFormat(allowance.OriginalAmount, employeeDetails().CurrencyDecimals) }}\n </span>\n </div>\n </div>\n </dx-tooltip>\n }\n </div>\n }\n\n @if (employeeDetails().TotalCashAllowances === 0 && employeeDetails().TotalDeductions === 0) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Deductions' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalDeductions, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "ngmodule", type: DxTooltipModule }, { kind: "component", type: i1$2.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "container", "contentTemplate", "deferRendering", "disabled", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
758
+ }
759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipAllowancesTableComponent, decorators: [{
760
+ type: Component,
761
+ args: [{ selector: 'payroll-payslip-allowances-table', standalone: true, imports: [CommonModule, FontAwesomeModule, DxTooltipModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"sectionClass()\">\n <div [class]=\"allowancesRowClass()\">\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Allowances' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalCashAllowances, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n\n @for (allowance of employeeDetails().CashAllowances ?? []; track $index; let index = $index) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tableLabelClass()\">{{ allowance.AllowanceName }}</div>\n </div>\n <div [class]=\"allowanceDaysClass()\">{{ allowance.AllowanceDays ?? '-' }}</div>\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"allowanceAmountWrapperClass()\">\n <div [class]=\"allowanceAmountTextClass()\">\n {{ commonMethod.currencyDecimalFormat(allowance.TotalAmount, employeeDetails().CurrencyDecimals) }}\n </div>\n @if (allowance.TotalAmount !== allowance.OriginalAmount && allowance.OriginalAmount != null) {\n <fa-icon [icon]=\"infoIcon\" [class]=\"infoIconClass()\" [id]=\"'allowance-original-' + index\"></fa-icon>\n }\n </div>\n @if (allowance.TotalAmount !== allowance.OriginalAmount && allowance.OriginalAmount != null) {\n <dx-tooltip [target]=\"'#' + 'allowance-original-' + index\" [showEvent]=\"'mouseenter'\" [hideEvent]=\"'mouseleave'\" [width]=\"'auto'\">\n <div [class]=\"tooltipContainerClass()\">\n <div [class]=\"tooltipTextClass()\">\n {{ 'TotalAmount' | PayrollTranslate }}\n <span [class]=\"tooltipCurrencyClass()\">({{ employeeDetails().CurrencyCode }}):</span>\n <span [class]=\"tooltipAmountClass()\">\n {{ commonMethod.currencyDecimalFormat(allowance.OriginalAmount, employeeDetails().CurrencyDecimals) }}\n </span>\n </div>\n </div>\n </dx-tooltip>\n }\n </div>\n }\n\n @if (employeeDetails().TotalCashAllowances === 0 && employeeDetails().TotalDeductions === 0) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Deductions' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalDeductions, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n }\n </div>\n</div>\n" }]
762
+ }], propDecorators: { employeeDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "employeeDetails", required: true }] }], sectionClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionClass", required: false }] }], allowancesRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowancesRowClass", required: false }] }], labelColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelColumnClass", required: false }] }], totalsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalsColumnClass", required: false }] }], sectionTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionTitleClass", required: false }] }], tableLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableLabelClass", required: false }] }], allowanceDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceDaysClass", required: false }] }], amountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountColumnClass", required: false }] }], allowanceAmountWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountWrapperClass", required: false }] }], allowanceAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountTextClass", required: false }] }], infoIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoIconClass", required: false }] }], tooltipContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipContainerClass", required: false }] }], tooltipTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipTextClass", required: false }] }], tooltipCurrencyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipCurrencyClass", required: false }] }], tooltipAmountClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipAmountClass", required: false }] }] } });
763
+
764
+ class PayslipDeductionsTableComponent {
765
+ employeeDetails = input.required(...(ngDevMode ? [{ debugName: "employeeDetails" }] : /* istanbul ignore next */ []));
766
+ dividerRowClass = input('row', ...(ngDevMode ? [{ debugName: "dividerRowClass" }] : /* istanbul ignore next */ []));
767
+ dividerColumnClass = input('col-12', ...(ngDevMode ? [{ debugName: "dividerColumnClass" }] : /* istanbul ignore next */ []));
768
+ deductionsSectionRowClass = input('row mt-4', ...(ngDevMode ? [{ debugName: "deductionsSectionRowClass" }] : /* istanbul ignore next */ []));
769
+ deductionsSectionColumnClass = input('col-xl-6 col-md-12', ...(ngDevMode ? [{ debugName: "deductionsSectionColumnClass" }] : /* istanbul ignore next */ []));
770
+ deductionsInnerRowClass = input('row', ...(ngDevMode ? [{ debugName: "deductionsInnerRowClass" }] : /* istanbul ignore next */ []));
771
+ labelColumnClass = input('col-5 text-start', ...(ngDevMode ? [{ debugName: "labelColumnClass" }] : /* istanbul ignore next */ []));
772
+ sectionTitleClass = input('fs-14 fw-bold mb-2 text-primary', ...(ngDevMode ? [{ debugName: "sectionTitleClass" }] : /* istanbul ignore next */ []));
773
+ totalsColumnClass = input('offset-3 col-4 text-start', ...(ngDevMode ? [{ debugName: "totalsColumnClass" }] : /* istanbul ignore next */ []));
774
+ tableLabelClass = input('fw-normal mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableLabelClass" }] : /* istanbul ignore next */ []));
775
+ deductionDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "deductionDaysClass" }] : /* istanbul ignore next */ []));
776
+ amountColumnClass = input('offset-1 col-4 text-start', ...(ngDevMode ? [{ debugName: "amountColumnClass" }] : /* istanbul ignore next */ []));
777
+ deductionAmountTextClass = input('fw-normal mb-2 table-cell-sm text-nowrap', ...(ngDevMode ? [{ debugName: "deductionAmountTextClass" }] : /* istanbul ignore next */ []));
778
+ commonMethod = inject(CommonMethods);
779
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipDeductionsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
780
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PayslipDeductionsTableComponent, isStandalone: true, selector: "payroll-payslip-deductions-table", inputs: { employeeDetails: { classPropertyName: "employeeDetails", publicName: "employeeDetails", isSignal: true, isRequired: true, transformFunction: null }, dividerRowClass: { classPropertyName: "dividerRowClass", publicName: "dividerRowClass", isSignal: true, isRequired: false, transformFunction: null }, dividerColumnClass: { classPropertyName: "dividerColumnClass", publicName: "dividerColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionRowClass: { classPropertyName: "deductionsSectionRowClass", publicName: "deductionsSectionRowClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionColumnClass: { classPropertyName: "deductionsSectionColumnClass", publicName: "deductionsSectionColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsInnerRowClass: { classPropertyName: "deductionsInnerRowClass", publicName: "deductionsInnerRowClass", isSignal: true, isRequired: false, transformFunction: null }, labelColumnClass: { classPropertyName: "labelColumnClass", publicName: "labelColumnClass", isSignal: true, isRequired: false, transformFunction: null }, sectionTitleClass: { classPropertyName: "sectionTitleClass", publicName: "sectionTitleClass", isSignal: true, isRequired: false, transformFunction: null }, totalsColumnClass: { classPropertyName: "totalsColumnClass", publicName: "totalsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, tableLabelClass: { classPropertyName: "tableLabelClass", publicName: "tableLabelClass", isSignal: true, isRequired: false, transformFunction: null }, deductionDaysClass: { classPropertyName: "deductionDaysClass", publicName: "deductionDaysClass", isSignal: true, isRequired: false, transformFunction: null }, amountColumnClass: { classPropertyName: "amountColumnClass", publicName: "amountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionAmountTextClass: { classPropertyName: "deductionAmountTextClass", publicName: "deductionAmountTextClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (employeeDetails().TotalCashAllowances > 0 || employeeDetails().TotalDeductions > 0) {\n <div [class]=\"dividerRowClass()\">\n <div [class]=\"dividerColumnClass()\">\n <sky-section-divider></sky-section-divider>\n </div>\n </div>\n\n <div [class]=\"deductionsSectionRowClass()\">\n <div [class]=\"deductionsSectionColumnClass()\">\n <div [class]=\"deductionsInnerRowClass()\">\n @if ((employeeDetails().Deductions ?? []).length > 0) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Deductions' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalDeductions, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n\n @for (deduction of employeeDetails().Deductions ?? []; track $index) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tableLabelClass()\">{{ deduction.DeductionName }}</div>\n </div>\n <div [class]=\"deductionDaysClass()\">{{ deduction.DeductionDays ?? '-' }}</div>\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"deductionAmountTextClass()\">\n {{ commonMethod.currencyDecimalFormat(deduction.TotalAmount, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SkySectionDividerComponent, selector: "sky-section-divider", inputs: ["text", "fontAwesomeIcon", "textClass", "dividerClass", "iconClass"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
781
+ }
782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipDeductionsTableComponent, decorators: [{
783
+ type: Component,
784
+ args: [{ selector: 'payroll-payslip-deductions-table', standalone: true, imports: [CommonModule, PayrollTranslatePipe, SkySectionDividerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (employeeDetails().TotalCashAllowances > 0 || employeeDetails().TotalDeductions > 0) {\n <div [class]=\"dividerRowClass()\">\n <div [class]=\"dividerColumnClass()\">\n <sky-section-divider></sky-section-divider>\n </div>\n </div>\n\n <div [class]=\"deductionsSectionRowClass()\">\n <div [class]=\"deductionsSectionColumnClass()\">\n <div [class]=\"deductionsInnerRowClass()\">\n @if ((employeeDetails().Deductions ?? []).length > 0) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"sectionTitleClass()\">{{ 'Deductions' | PayrollTranslate }}</div>\n </div>\n <div [class]=\"totalsColumnClass()\">\n <div [class]=\"sectionTitleClass()\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().TotalDeductions, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n\n @for (deduction of employeeDetails().Deductions ?? []; track $index) {\n <div [class]=\"labelColumnClass()\">\n <div [class]=\"tableLabelClass()\">{{ deduction.DeductionName }}</div>\n </div>\n <div [class]=\"deductionDaysClass()\">{{ deduction.DeductionDays ?? '-' }}</div>\n <div [class]=\"amountColumnClass()\">\n <div [class]=\"deductionAmountTextClass()\">\n {{ commonMethod.currencyDecimalFormat(deduction.TotalAmount, employeeDetails().CurrencyDecimals) }}\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n}\n" }]
785
+ }], propDecorators: { employeeDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "employeeDetails", required: true }] }], dividerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerRowClass", required: false }] }], dividerColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerColumnClass", required: false }] }], deductionsSectionRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionRowClass", required: false }] }], deductionsSectionColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionColumnClass", required: false }] }], deductionsInnerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsInnerRowClass", required: false }] }], labelColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelColumnClass", required: false }] }], sectionTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionTitleClass", required: false }] }], totalsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalsColumnClass", required: false }] }], tableLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableLabelClass", required: false }] }], deductionDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionDaysClass", required: false }] }], amountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountColumnClass", required: false }] }], deductionAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionAmountTextClass", required: false }] }] } });
786
+
787
+ class PayslipDetailsCardComponent {
788
+ employeeDetails = input.required(...(ngDevMode ? [{ debugName: "employeeDetails" }] : /* istanbul ignore next */ []));
789
+ payMonthDate = input(null, ...(ngDevMode ? [{ debugName: "payMonthDate" }] : /* istanbul ignore next */ []));
790
+ pieDataSource = input([], ...(ngDevMode ? [{ debugName: "pieDataSource" }] : /* istanbul ignore next */ []));
791
+ actualBasicSalaryDetails = input([], ...(ngDevMode ? [{ debugName: "actualBasicSalaryDetails" }] : /* istanbul ignore next */ []));
792
+ cardContainerClass = input('card shadow-sm border-0 rounded-3 p-4', ...(ngDevMode ? [{ debugName: "cardContainerClass" }] : /* istanbul ignore next */ []));
793
+ contentRowClass = input('row g-4', ...(ngDevMode ? [{ debugName: "contentRowClass" }] : /* istanbul ignore next */ []));
794
+ detailsColumnClass = input('col-xl-6 col-md-12 order-2 order-xl-1', ...(ngDevMode ? [{ debugName: "detailsColumnClass" }] : /* istanbul ignore next */ []));
795
+ chartColumnClass = input('col-xl-6 col-md-12 d-flex align-items-start justify-content-center justify-content-xl-end order-1 order-xl-2 m-0', ...(ngDevMode ? [{ debugName: "chartColumnClass" }] : /* istanbul ignore next */ []));
796
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
797
+ titleRowClass = input('d-flex align-items-center mb-4', ...(ngDevMode ? [{ debugName: "titleRowClass" }] : /* istanbul ignore next */ []));
798
+ salaryIconClass = input('text-primary fs-28 me-2', ...(ngDevMode ? [{ debugName: "salaryIconClass" }] : /* istanbul ignore next */ []));
799
+ titleClass = input('fw-medium fs-16 text-uppercase text-dark-gray', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
800
+ titleMonthClass = input('fw-normal text-capitalize', ...(ngDevMode ? [{ debugName: "titleMonthClass" }] : /* istanbul ignore next */ []));
801
+ sectionClass = input('mb-4', ...(ngDevMode ? [{ debugName: "sectionClass" }] : /* istanbul ignore next */ []));
802
+ sectionTitleClass = input('fs-14 fw-bold mb-2 text-primary', ...(ngDevMode ? [{ debugName: "sectionTitleClass" }] : /* istanbul ignore next */ []));
803
+ tableLabelClass = input('fw-normal mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableLabelClass" }] : /* istanbul ignore next */ []));
804
+ tablePrimaryLabelClass = input('fw-normal mb-2 table-cell-md text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tablePrimaryLabelClass" }] : /* istanbul ignore next */ []));
805
+ tableValueClass = input('fw-medium mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableValueClass" }] : /* istanbul ignore next */ []));
806
+ tableSecondaryValueClass = input('text-ellipsis-one-line mb-2 table-cell-sm', ...(ngDevMode ? [{ debugName: "tableSecondaryValueClass" }] : /* istanbul ignore next */ []));
807
+ currencyCodeClass = input('fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
808
+ infoIconClass = input('light-info ms-1 cursor-pointer', ...(ngDevMode ? [{ debugName: "infoIconClass" }] : /* istanbul ignore next */ []));
809
+ popupWidth = input(600, ...(ngDevMode ? [{ debugName: "popupWidth" }] : /* istanbul ignore next */ []));
810
+ popupMaxHeight = input(400, ...(ngDevMode ? [{ debugName: "popupMaxHeight" }] : /* istanbul ignore next */ []));
811
+ popupShadingColor = input('rgba(0,0,0,0.4)', ...(ngDevMode ? [{ debugName: "popupShadingColor" }] : /* istanbul ignore next */ []));
812
+ popupHeaderRowClass = input('row mb-3 table-cell-sm', ...(ngDevMode ? [{ debugName: "popupHeaderRowClass" }] : /* istanbul ignore next */ []));
813
+ popupRowClass = input('row mb-3 table-cell-md', ...(ngDevMode ? [{ debugName: "popupRowClass" }] : /* istanbul ignore next */ []));
814
+ mobileChartWrapperClass = input('d-flex align-items-start justify-content-start', ...(ngDevMode ? [{ debugName: "mobileChartWrapperClass" }] : /* istanbul ignore next */ []));
815
+ negativePaletteColors = input(['#F78204', '#dee2e6'], ...(ngDevMode ? [{ debugName: "negativePaletteColors" }] : /* istanbul ignore next */ []));
816
+ positivePaletteColors = input(['#F78204', '#F7820480'], ...(ngDevMode ? [{ debugName: "positivePaletteColors" }] : /* istanbul ignore next */ []));
817
+ salaryTableRowClass = input('row', ...(ngDevMode ? [{ debugName: "salaryTableRowClass" }] : /* istanbul ignore next */ []));
818
+ labelColumnClass = input('col-5 text-start', ...(ngDevMode ? [{ debugName: "labelColumnClass" }] : /* istanbul ignore next */ []));
819
+ daysColumnClass = input('col-2 text-end fw-light mb-2', ...(ngDevMode ? [{ debugName: "daysColumnClass" }] : /* istanbul ignore next */ []));
820
+ daysHeaderClass = input('text-ellipsis-one-line mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "daysHeaderClass" }] : /* istanbul ignore next */ []));
821
+ amountColumnClass = input('offset-1 col-4 text-start', ...(ngDevMode ? [{ debugName: "amountColumnClass" }] : /* istanbul ignore next */ []));
822
+ salaryAmountColumnClass = input('offset-1 col-4 text-start', ...(ngDevMode ? [{ debugName: "salaryAmountColumnClass" }] : /* istanbul ignore next */ []));
823
+ allowanceAmountColumnClass = input('offset-1 col-3 text-start', ...(ngDevMode ? [{ debugName: "allowanceAmountColumnClass" }] : /* istanbul ignore next */ []));
824
+ totalsColumnClass = input('offset-3 col-4 text-start', ...(ngDevMode ? [{ debugName: "totalsColumnClass" }] : /* istanbul ignore next */ []));
825
+ viewDetailsLinkClass = input('text-primary fw-normal ms-1', ...(ngDevMode ? [{ debugName: "viewDetailsLinkClass" }] : /* istanbul ignore next */ []));
826
+ allowancesRowClass = input('row align-items-start', ...(ngDevMode ? [{ debugName: "allowancesRowClass" }] : /* istanbul ignore next */ []));
827
+ allowanceDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "allowanceDaysClass" }] : /* istanbul ignore next */ []));
828
+ allowanceAmountWrapperClass = input('d-flex align-items-center fs-12 fw-medium mb-2 text-dark-gray', ...(ngDevMode ? [{ debugName: "allowanceAmountWrapperClass" }] : /* istanbul ignore next */ []));
829
+ allowanceAmountTextClass = input('w-30 text-nowrap', ...(ngDevMode ? [{ debugName: "allowanceAmountTextClass" }] : /* istanbul ignore next */ []));
830
+ tooltipContainerClass = input('text-white rounded overflow-hidden', ...(ngDevMode ? [{ debugName: "tooltipContainerClass" }] : /* istanbul ignore next */ []));
831
+ tooltipTextClass = input('text-ellipsis-one-line fs-12', ...(ngDevMode ? [{ debugName: "tooltipTextClass" }] : /* istanbul ignore next */ []));
832
+ tooltipCurrencyClass = input('fs-10', ...(ngDevMode ? [{ debugName: "tooltipCurrencyClass" }] : /* istanbul ignore next */ []));
833
+ tooltipAmountClass = input('fs-14 ms-1', ...(ngDevMode ? [{ debugName: "tooltipAmountClass" }] : /* istanbul ignore next */ []));
834
+ dividerRowClass = input('row', ...(ngDevMode ? [{ debugName: "dividerRowClass" }] : /* istanbul ignore next */ []));
835
+ dividerColumnClass = input('col-12', ...(ngDevMode ? [{ debugName: "dividerColumnClass" }] : /* istanbul ignore next */ []));
836
+ deductionsSectionRowClass = input('row mt-4', ...(ngDevMode ? [{ debugName: "deductionsSectionRowClass" }] : /* istanbul ignore next */ []));
837
+ deductionsSectionColumnClass = input('col-xl-6 col-md-12', ...(ngDevMode ? [{ debugName: "deductionsSectionColumnClass" }] : /* istanbul ignore next */ []));
838
+ deductionsInnerRowClass = input('row', ...(ngDevMode ? [{ debugName: "deductionsInnerRowClass" }] : /* istanbul ignore next */ []));
839
+ deductionDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "deductionDaysClass" }] : /* istanbul ignore next */ []));
840
+ deductionAmountTextClass = input('fw-normal mb-2 table-cell-sm text-nowrap', ...(ngDevMode ? [{ debugName: "deductionAmountTextClass" }] : /* istanbul ignore next */ []));
841
+ salaryIcon = faMoneyCheckDollarPen;
842
+ infoIcon = faCircleInfo;
843
+ popupVisible = signal(false, ...(ngDevMode ? [{ debugName: "popupVisible" }] : /* istanbul ignore next */ []));
844
+ chartPaletteColors = computed(() => this.employeeDetails().NetSalary < 0 ? this.negativePaletteColors() : this.positivePaletteColors(), ...(ngDevMode ? [{ debugName: "chartPaletteColors" }] : /* istanbul ignore next */ []));
845
+ commonMethod = inject(CommonMethods);
846
+ screen = inject(SkyScreenService);
847
+ doughnutChartInfo = computed(() => ({
848
+ data: this.pieDataSource().map((item) => ({
849
+ name: item.Text,
850
+ value: item.Value,
851
+ extra: { formattedValue: item.FormattedValue, valueColor: item.ValueColor },
852
+ })),
853
+ colors: this.chartPaletteColors(),
854
+ innerRadius: 0.8,
855
+ height: 200,
856
+ }), ...(ngDevMode ? [{ debugName: "doughnutChartInfo" }] : /* istanbul ignore next */ []));
857
+ useMobileChart = computed(() => this.isMobile() || this.screen.isXSmallScreen() || this.screen.isSmallScreen() || this.screen.isMediumScreen(), ...(ngDevMode ? [{ debugName: "useMobileChart" }] : /* istanbul ignore next */ []));
858
+ onCloseActualBasicSalaryDetailsPopupHandler() {
859
+ this.popupVisible.set(false);
860
+ }
861
+ onViewActualBasicSalaryDetailsClick() {
862
+ this.popupVisible.set(true);
863
+ }
864
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipDetailsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
865
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PayslipDetailsCardComponent, isStandalone: true, selector: "payroll-payslip-details-card", inputs: { employeeDetails: { classPropertyName: "employeeDetails", publicName: "employeeDetails", isSignal: true, isRequired: true, transformFunction: null }, payMonthDate: { classPropertyName: "payMonthDate", publicName: "payMonthDate", isSignal: true, isRequired: false, transformFunction: null }, pieDataSource: { classPropertyName: "pieDataSource", publicName: "pieDataSource", isSignal: true, isRequired: false, transformFunction: null }, actualBasicSalaryDetails: { classPropertyName: "actualBasicSalaryDetails", publicName: "actualBasicSalaryDetails", isSignal: true, isRequired: false, transformFunction: null }, cardContainerClass: { classPropertyName: "cardContainerClass", publicName: "cardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, contentRowClass: { classPropertyName: "contentRowClass", publicName: "contentRowClass", isSignal: true, isRequired: false, transformFunction: null }, detailsColumnClass: { classPropertyName: "detailsColumnClass", publicName: "detailsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, chartColumnClass: { classPropertyName: "chartColumnClass", publicName: "chartColumnClass", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, titleRowClass: { classPropertyName: "titleRowClass", publicName: "titleRowClass", isSignal: true, isRequired: false, transformFunction: null }, salaryIconClass: { classPropertyName: "salaryIconClass", publicName: "salaryIconClass", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, titleMonthClass: { classPropertyName: "titleMonthClass", publicName: "titleMonthClass", isSignal: true, isRequired: false, transformFunction: null }, sectionClass: { classPropertyName: "sectionClass", publicName: "sectionClass", isSignal: true, isRequired: false, transformFunction: null }, sectionTitleClass: { classPropertyName: "sectionTitleClass", publicName: "sectionTitleClass", isSignal: true, isRequired: false, transformFunction: null }, tableLabelClass: { classPropertyName: "tableLabelClass", publicName: "tableLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tablePrimaryLabelClass: { classPropertyName: "tablePrimaryLabelClass", publicName: "tablePrimaryLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tableValueClass: { classPropertyName: "tableValueClass", publicName: "tableValueClass", isSignal: true, isRequired: false, transformFunction: null }, tableSecondaryValueClass: { classPropertyName: "tableSecondaryValueClass", publicName: "tableSecondaryValueClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, infoIconClass: { classPropertyName: "infoIconClass", publicName: "infoIconClass", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, popupMaxHeight: { classPropertyName: "popupMaxHeight", publicName: "popupMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, popupShadingColor: { classPropertyName: "popupShadingColor", publicName: "popupShadingColor", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderRowClass: { classPropertyName: "popupHeaderRowClass", publicName: "popupHeaderRowClass", isSignal: true, isRequired: false, transformFunction: null }, popupRowClass: { classPropertyName: "popupRowClass", publicName: "popupRowClass", isSignal: true, isRequired: false, transformFunction: null }, mobileChartWrapperClass: { classPropertyName: "mobileChartWrapperClass", publicName: "mobileChartWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, negativePaletteColors: { classPropertyName: "negativePaletteColors", publicName: "negativePaletteColors", isSignal: true, isRequired: false, transformFunction: null }, positivePaletteColors: { classPropertyName: "positivePaletteColors", publicName: "positivePaletteColors", isSignal: true, isRequired: false, transformFunction: null }, salaryTableRowClass: { classPropertyName: "salaryTableRowClass", publicName: "salaryTableRowClass", isSignal: true, isRequired: false, transformFunction: null }, labelColumnClass: { classPropertyName: "labelColumnClass", publicName: "labelColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysColumnClass: { classPropertyName: "daysColumnClass", publicName: "daysColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysHeaderClass: { classPropertyName: "daysHeaderClass", publicName: "daysHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, amountColumnClass: { classPropertyName: "amountColumnClass", publicName: "amountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, salaryAmountColumnClass: { classPropertyName: "salaryAmountColumnClass", publicName: "salaryAmountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountColumnClass: { classPropertyName: "allowanceAmountColumnClass", publicName: "allowanceAmountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, totalsColumnClass: { classPropertyName: "totalsColumnClass", publicName: "totalsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, viewDetailsLinkClass: { classPropertyName: "viewDetailsLinkClass", publicName: "viewDetailsLinkClass", isSignal: true, isRequired: false, transformFunction: null }, allowancesRowClass: { classPropertyName: "allowancesRowClass", publicName: "allowancesRowClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceDaysClass: { classPropertyName: "allowanceDaysClass", publicName: "allowanceDaysClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountWrapperClass: { classPropertyName: "allowanceAmountWrapperClass", publicName: "allowanceAmountWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountTextClass: { classPropertyName: "allowanceAmountTextClass", publicName: "allowanceAmountTextClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipContainerClass: { classPropertyName: "tooltipContainerClass", publicName: "tooltipContainerClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipTextClass: { classPropertyName: "tooltipTextClass", publicName: "tooltipTextClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipCurrencyClass: { classPropertyName: "tooltipCurrencyClass", publicName: "tooltipCurrencyClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipAmountClass: { classPropertyName: "tooltipAmountClass", publicName: "tooltipAmountClass", isSignal: true, isRequired: false, transformFunction: null }, dividerRowClass: { classPropertyName: "dividerRowClass", publicName: "dividerRowClass", isSignal: true, isRequired: false, transformFunction: null }, dividerColumnClass: { classPropertyName: "dividerColumnClass", publicName: "dividerColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionRowClass: { classPropertyName: "deductionsSectionRowClass", publicName: "deductionsSectionRowClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionColumnClass: { classPropertyName: "deductionsSectionColumnClass", publicName: "deductionsSectionColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsInnerRowClass: { classPropertyName: "deductionsInnerRowClass", publicName: "deductionsInnerRowClass", isSignal: true, isRequired: false, transformFunction: null }, deductionDaysClass: { classPropertyName: "deductionDaysClass", publicName: "deductionDaysClass", isSignal: true, isRequired: false, transformFunction: null }, deductionAmountTextClass: { classPropertyName: "deductionAmountTextClass", publicName: "deductionAmountTextClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"cardContainerClass()\">\n <div [class]=\"contentRowClass()\">\n <div [class]=\"detailsColumnClass()\">\n <div [class]=\"titleRowClass()\">\n <fa-icon [icon]=\"salaryIcon\" [class]=\"salaryIconClass()\"></fa-icon>\n <h5 [class]=\"titleClass()\">\n {{ 'Salary' | PayrollTranslate }}\n <span [class]=\"titleMonthClass()\">({{ payMonthDate() | date: 'MMM yyyy' }})</span>\n </h5>\n </div>\n\n @if (useMobileChart()) {\n <div [class]=\"mobileChartWrapperClass()\">\n <sky-doughnut-chart [info]=\"doughnutChartInfo()\" [hasBorder]=\"false\">\n <ng-template #centerContent>\n <div class=\"d-flex flex-column align-items-center text-center lh-sm\">\n <span class=\"fs-12 fw-normal\">{{ 'GrossSalary' | PayrollTranslate }}</span>\n <span class=\"fs-16 fw-bold\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().GrossSalary, employeeDetails().CurrencyDecimals) }}\n </span>\n <span class=\"fs-10 fw-normal\">{{ employeeDetails().CurrencyCode }}</span>\n </div>\n </ng-template>\n <ng-template #legendItem let-item>\n <div class=\"d-flex flex-column fs-12 text-dark-gray\">\n <span class=\"fw-normal\">{{ item.name }}</span>\n <b [style.color]=\"item.extra?.valueColor\">{{ item.extra?.formattedValue }}</b>\n </div>\n </ng-template>\n </sky-doughnut-chart>\n </div>\n }\n <payroll-payslip-salary-table\n [employeeDetails]=\"employeeDetails()\"\n [sectionClass]=\"sectionClass()\"\n [salaryTableRowClass]=\"salaryTableRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [daysColumnClass]=\"daysColumnClass()\"\n [daysHeaderClass]=\"daysHeaderClass()\"\n [amountColumnClass]=\"salaryAmountColumnClass()\"\n [tablePrimaryLabelClass]=\"tablePrimaryLabelClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [tableValueClass]=\"tableValueClass()\"\n [tableSecondaryValueClass]=\"tableSecondaryValueClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [viewDetailsLinkClass]=\"viewDetailsLinkClass()\"\n (viewActualBasicSalaryDetailsClick)=\"onViewActualBasicSalaryDetailsClick()\"\n ></payroll-payslip-salary-table>\n\n <payroll-payslip-allowances-table\n [employeeDetails]=\"employeeDetails()\"\n [sectionClass]=\"sectionClass()\"\n [allowancesRowClass]=\"allowancesRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [allowanceDaysClass]=\"allowanceDaysClass()\"\n [amountColumnClass]=\"allowanceAmountColumnClass()\"\n [allowanceAmountWrapperClass]=\"allowanceAmountWrapperClass()\"\n [allowanceAmountTextClass]=\"allowanceAmountTextClass()\"\n [infoIconClass]=\"infoIconClass()\"\n [tooltipContainerClass]=\"tooltipContainerClass()\"\n [tooltipTextClass]=\"tooltipTextClass()\"\n [tooltipCurrencyClass]=\"tooltipCurrencyClass()\"\n [tooltipAmountClass]=\"tooltipAmountClass()\"\n ></payroll-payslip-allowances-table>\n </div>\n\n @if (!useMobileChart()) {\n <div [class]=\"chartColumnClass()\">\n <sky-doughnut-chart [info]=\"doughnutChartInfo()\" [hasBorder]=\"false\">\n <ng-template #centerContent>\n <div class=\"d-flex flex-column align-items-center text-center lh-sm\">\n <span class=\"fs-12 fw-normal\">{{ 'GrossSalary' | PayrollTranslate }}</span>\n <span class=\"fs-16 fw-bold\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().GrossSalary, employeeDetails().CurrencyDecimals) }}\n </span>\n <span class=\"fs-10 fw-normal\">{{ employeeDetails().CurrencyCode }}</span>\n </div>\n </ng-template>\n <ng-template #legendItem let-item>\n <div class=\"d-flex flex-column fs-12 text-dark-gray\">\n <span class=\"fw-normal\">{{ item.name }}</span>\n <b [style.color]=\"item.extra?.valueColor\">{{ item.extra?.formattedValue }}</b>\n </div>\n </ng-template>\n </sky-doughnut-chart>\n </div>\n }\n </div>\n\n <payroll-payslip-deductions-table\n [employeeDetails]=\"employeeDetails()\"\n [dividerRowClass]=\"dividerRowClass()\"\n [dividerColumnClass]=\"dividerColumnClass()\"\n [deductionsSectionRowClass]=\"deductionsSectionRowClass()\"\n [deductionsSectionColumnClass]=\"deductionsSectionColumnClass()\"\n [deductionsInnerRowClass]=\"deductionsInnerRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [deductionDaysClass]=\"deductionDaysClass()\"\n [amountColumnClass]=\"amountColumnClass()\"\n [deductionAmountTextClass]=\"deductionAmountTextClass()\"\n ></payroll-payslip-deductions-table>\n</div>\n\n<payroll-actual-basic-details-popup\n [currencyCode]=\"employeeDetails().CurrencyCode\"\n [currencyDecimals]=\"employeeDetails().CurrencyDecimals\"\n [actualBasicSalaryDetails]=\"actualBasicSalaryDetails()\"\n [popupVisible]=\"popupVisible()\"\n [popupWidth]=\"popupWidth()\"\n [popupMaxHeight]=\"popupMaxHeight()\"\n [popupShadingColor]=\"popupShadingColor()\"\n [popupHeaderRowClass]=\"popupHeaderRowClass()\"\n [popupRowClass]=\"popupRowClass()\"\n (closePopupClickHandler)=\"onCloseActualBasicSalaryDetailsPopupHandler()\"\n></payroll-actual-basic-details-popup>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "component", type: SkyDoughnutChartComponent, selector: "sky-doughnut-chart", inputs: ["info", "rootWrapperClass", "chartColumnWrapperClass", "hasBorder", "chartItemPaddingClass", "chartFrameWrapperClass", "tooltipBadgeClass", "chartOverlayWrapperClass", "legendColumnWrapperClass", "legendListWrapperClass", "legendItemWrapperClass", "legendItemDotClass", "chartId", "chartType", "tooltipColor", "tooltipBorder", "tooltipShadow", "tooltipFormatType", "tooltipFormatPrecision", "seriesArgumentField", "seriesValueField", "seriesLabelVisible", "legendVisible", "seriesBorderVisible"] }, { kind: "component", type: ActualBasicDetailsPopupComponent, selector: "payroll-actual-basic-details-popup", inputs: ["popupVisible", "currencyCode", "currencyDecimals", "actualBasicSalaryDetails", "popupWidth", "popupMaxHeight", "popupShadingColor", "popupTitleKey", "popupHeaderRowClass", "popupRowClass"], outputs: ["closePopupClickHandler"] }, { kind: "component", type: PayslipSalaryTableComponent, selector: "payroll-payslip-salary-table", inputs: ["employeeDetails", "sectionClass", "salaryTableRowClass", "labelColumnClass", "daysColumnClass", "daysHeaderClass", "amountColumnClass", "tablePrimaryLabelClass", "tableLabelClass", "tableValueClass", "tableSecondaryValueClass", "currencyCodeClass", "viewDetailsLinkClass"], outputs: ["viewActualBasicSalaryDetailsClick"] }, { kind: "component", type: PayslipAllowancesTableComponent, selector: "payroll-payslip-allowances-table", inputs: ["employeeDetails", "sectionClass", "allowancesRowClass", "labelColumnClass", "totalsColumnClass", "sectionTitleClass", "tableLabelClass", "allowanceDaysClass", "amountColumnClass", "allowanceAmountWrapperClass", "allowanceAmountTextClass", "infoIconClass", "tooltipContainerClass", "tooltipTextClass", "tooltipCurrencyClass", "tooltipAmountClass"] }, { kind: "component", type: PayslipDeductionsTableComponent, selector: "payroll-payslip-deductions-table", inputs: ["employeeDetails", "dividerRowClass", "dividerColumnClass", "deductionsSectionRowClass", "deductionsSectionColumnClass", "deductionsInnerRowClass", "labelColumnClass", "sectionTitleClass", "totalsColumnClass", "tableLabelClass", "deductionDaysClass", "amountColumnClass", "deductionAmountTextClass"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
866
+ }
867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PayslipDetailsCardComponent, decorators: [{
868
+ type: Component,
869
+ args: [{ selector: 'payroll-payslip-details-card', standalone: true, imports: [
870
+ CommonModule,
871
+ FontAwesomeModule,
872
+ SkyDoughnutChartComponent,
873
+ PayrollTranslatePipe,
874
+ ActualBasicDetailsPopupComponent,
875
+ PayslipSalaryTableComponent,
876
+ PayslipAllowancesTableComponent,
877
+ PayslipDeductionsTableComponent,
878
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"cardContainerClass()\">\n <div [class]=\"contentRowClass()\">\n <div [class]=\"detailsColumnClass()\">\n <div [class]=\"titleRowClass()\">\n <fa-icon [icon]=\"salaryIcon\" [class]=\"salaryIconClass()\"></fa-icon>\n <h5 [class]=\"titleClass()\">\n {{ 'Salary' | PayrollTranslate }}\n <span [class]=\"titleMonthClass()\">({{ payMonthDate() | date: 'MMM yyyy' }})</span>\n </h5>\n </div>\n\n @if (useMobileChart()) {\n <div [class]=\"mobileChartWrapperClass()\">\n <sky-doughnut-chart [info]=\"doughnutChartInfo()\" [hasBorder]=\"false\">\n <ng-template #centerContent>\n <div class=\"d-flex flex-column align-items-center text-center lh-sm\">\n <span class=\"fs-12 fw-normal\">{{ 'GrossSalary' | PayrollTranslate }}</span>\n <span class=\"fs-16 fw-bold\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().GrossSalary, employeeDetails().CurrencyDecimals) }}\n </span>\n <span class=\"fs-10 fw-normal\">{{ employeeDetails().CurrencyCode }}</span>\n </div>\n </ng-template>\n <ng-template #legendItem let-item>\n <div class=\"d-flex flex-column fs-12 text-dark-gray\">\n <span class=\"fw-normal\">{{ item.name }}</span>\n <b [style.color]=\"item.extra?.valueColor\">{{ item.extra?.formattedValue }}</b>\n </div>\n </ng-template>\n </sky-doughnut-chart>\n </div>\n }\n <payroll-payslip-salary-table\n [employeeDetails]=\"employeeDetails()\"\n [sectionClass]=\"sectionClass()\"\n [salaryTableRowClass]=\"salaryTableRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [daysColumnClass]=\"daysColumnClass()\"\n [daysHeaderClass]=\"daysHeaderClass()\"\n [amountColumnClass]=\"salaryAmountColumnClass()\"\n [tablePrimaryLabelClass]=\"tablePrimaryLabelClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [tableValueClass]=\"tableValueClass()\"\n [tableSecondaryValueClass]=\"tableSecondaryValueClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [viewDetailsLinkClass]=\"viewDetailsLinkClass()\"\n (viewActualBasicSalaryDetailsClick)=\"onViewActualBasicSalaryDetailsClick()\"\n ></payroll-payslip-salary-table>\n\n <payroll-payslip-allowances-table\n [employeeDetails]=\"employeeDetails()\"\n [sectionClass]=\"sectionClass()\"\n [allowancesRowClass]=\"allowancesRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [allowanceDaysClass]=\"allowanceDaysClass()\"\n [amountColumnClass]=\"allowanceAmountColumnClass()\"\n [allowanceAmountWrapperClass]=\"allowanceAmountWrapperClass()\"\n [allowanceAmountTextClass]=\"allowanceAmountTextClass()\"\n [infoIconClass]=\"infoIconClass()\"\n [tooltipContainerClass]=\"tooltipContainerClass()\"\n [tooltipTextClass]=\"tooltipTextClass()\"\n [tooltipCurrencyClass]=\"tooltipCurrencyClass()\"\n [tooltipAmountClass]=\"tooltipAmountClass()\"\n ></payroll-payslip-allowances-table>\n </div>\n\n @if (!useMobileChart()) {\n <div [class]=\"chartColumnClass()\">\n <sky-doughnut-chart [info]=\"doughnutChartInfo()\" [hasBorder]=\"false\">\n <ng-template #centerContent>\n <div class=\"d-flex flex-column align-items-center text-center lh-sm\">\n <span class=\"fs-12 fw-normal\">{{ 'GrossSalary' | PayrollTranslate }}</span>\n <span class=\"fs-16 fw-bold\">\n {{ commonMethod.currencyDecimalFormat(employeeDetails().GrossSalary, employeeDetails().CurrencyDecimals) }}\n </span>\n <span class=\"fs-10 fw-normal\">{{ employeeDetails().CurrencyCode }}</span>\n </div>\n </ng-template>\n <ng-template #legendItem let-item>\n <div class=\"d-flex flex-column fs-12 text-dark-gray\">\n <span class=\"fw-normal\">{{ item.name }}</span>\n <b [style.color]=\"item.extra?.valueColor\">{{ item.extra?.formattedValue }}</b>\n </div>\n </ng-template>\n </sky-doughnut-chart>\n </div>\n }\n </div>\n\n <payroll-payslip-deductions-table\n [employeeDetails]=\"employeeDetails()\"\n [dividerRowClass]=\"dividerRowClass()\"\n [dividerColumnClass]=\"dividerColumnClass()\"\n [deductionsSectionRowClass]=\"deductionsSectionRowClass()\"\n [deductionsSectionColumnClass]=\"deductionsSectionColumnClass()\"\n [deductionsInnerRowClass]=\"deductionsInnerRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [deductionDaysClass]=\"deductionDaysClass()\"\n [amountColumnClass]=\"amountColumnClass()\"\n [deductionAmountTextClass]=\"deductionAmountTextClass()\"\n ></payroll-payslip-deductions-table>\n</div>\n\n<payroll-actual-basic-details-popup\n [currencyCode]=\"employeeDetails().CurrencyCode\"\n [currencyDecimals]=\"employeeDetails().CurrencyDecimals\"\n [actualBasicSalaryDetails]=\"actualBasicSalaryDetails()\"\n [popupVisible]=\"popupVisible()\"\n [popupWidth]=\"popupWidth()\"\n [popupMaxHeight]=\"popupMaxHeight()\"\n [popupShadingColor]=\"popupShadingColor()\"\n [popupHeaderRowClass]=\"popupHeaderRowClass()\"\n [popupRowClass]=\"popupRowClass()\"\n (closePopupClickHandler)=\"onCloseActualBasicSalaryDetailsPopupHandler()\"\n></payroll-actual-basic-details-popup>\n" }]
879
+ }], propDecorators: { employeeDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "employeeDetails", required: true }] }], payMonthDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonthDate", required: false }] }], pieDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "pieDataSource", required: false }] }], actualBasicSalaryDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "actualBasicSalaryDetails", required: false }] }], cardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardContainerClass", required: false }] }], contentRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentRowClass", required: false }] }], detailsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "detailsColumnClass", required: false }] }], chartColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "chartColumnClass", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], titleRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleRowClass", required: false }] }], salaryIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryIconClass", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], titleMonthClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleMonthClass", required: false }] }], sectionClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionClass", required: false }] }], sectionTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionTitleClass", required: false }] }], tableLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableLabelClass", required: false }] }], tablePrimaryLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tablePrimaryLabelClass", required: false }] }], tableValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableValueClass", required: false }] }], tableSecondaryValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableSecondaryValueClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], infoIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoIconClass", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], popupMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMaxHeight", required: false }] }], popupShadingColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupShadingColor", required: false }] }], popupHeaderRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderRowClass", required: false }] }], popupRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupRowClass", required: false }] }], mobileChartWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileChartWrapperClass", required: false }] }], negativePaletteColors: [{ type: i0.Input, args: [{ isSignal: true, alias: "negativePaletteColors", required: false }] }], positivePaletteColors: [{ type: i0.Input, args: [{ isSignal: true, alias: "positivePaletteColors", required: false }] }], salaryTableRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryTableRowClass", required: false }] }], labelColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelColumnClass", required: false }] }], daysColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysColumnClass", required: false }] }], daysHeaderClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysHeaderClass", required: false }] }], amountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountColumnClass", required: false }] }], salaryAmountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryAmountColumnClass", required: false }] }], allowanceAmountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountColumnClass", required: false }] }], totalsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalsColumnClass", required: false }] }], viewDetailsLinkClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewDetailsLinkClass", required: false }] }], allowancesRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowancesRowClass", required: false }] }], allowanceDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceDaysClass", required: false }] }], allowanceAmountWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountWrapperClass", required: false }] }], allowanceAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountTextClass", required: false }] }], tooltipContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipContainerClass", required: false }] }], tooltipTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipTextClass", required: false }] }], tooltipCurrencyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipCurrencyClass", required: false }] }], tooltipAmountClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipAmountClass", required: false }] }], dividerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerRowClass", required: false }] }], dividerColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerColumnClass", required: false }] }], deductionsSectionRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionRowClass", required: false }] }], deductionsSectionColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionColumnClass", required: false }] }], deductionsInnerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsInnerRowClass", required: false }] }], deductionDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionDaysClass", required: false }] }], deductionAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionAmountTextClass", required: false }] }] } });
880
+
881
+ class EmptyPayslipCardComponent {
882
+ hidePayslip = input(false, ...(ngDevMode ? [{ debugName: "hidePayslip" }] : /* istanbul ignore next */ []));
883
+ cardContainerClass = input('card border shadow-sm rounded-3', ...(ngDevMode ? [{ debugName: "cardContainerClass" }] : /* istanbul ignore next */ []));
884
+ cardBodyClass = input('card-body text-center py-5', ...(ngDevMode ? [{ debugName: "cardBodyClass" }] : /* istanbul ignore next */ []));
885
+ iconClass = input('fs-28 me-2 light-info mb-3', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
886
+ messageClass = input('fs-20 fw-400 mb-2 text-dark', ...(ngDevMode ? [{ debugName: "messageClass" }] : /* istanbul ignore next */ []));
887
+ helpTextClass = input('fs-16 fw-400 mb-0 text-dark', ...(ngDevMode ? [{ debugName: "helpTextClass" }] : /* istanbul ignore next */ []));
888
+ accessDeniedMessage = input('YouAreNotAllowedToViewThePayslip', ...(ngDevMode ? [{ debugName: "accessDeniedMessage" }] : /* istanbul ignore next */ []));
889
+ noPayslipMessage = input('NoPayslipAvailableYet', ...(ngDevMode ? [{ debugName: "noPayslipMessage" }] : /* istanbul ignore next */ []));
890
+ helpText = input('PleaseContactYourAdminForAnyHelp.', ...(ngDevMode ? [{ debugName: "helpText" }] : /* istanbul ignore next */ []));
891
+ accessDeniedIcon = input(faMoneyCheckDollarPen, ...(ngDevMode ? [{ debugName: "accessDeniedIcon" }] : /* istanbul ignore next */ []));
892
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EmptyPayslipCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
893
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: EmptyPayslipCardComponent, isStandalone: true, selector: "payroll-empty-payslip-card", inputs: { hidePayslip: { classPropertyName: "hidePayslip", publicName: "hidePayslip", isSignal: true, isRequired: false, transformFunction: null }, cardContainerClass: { classPropertyName: "cardContainerClass", publicName: "cardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, cardBodyClass: { classPropertyName: "cardBodyClass", publicName: "cardBodyClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, messageClass: { classPropertyName: "messageClass", publicName: "messageClass", isSignal: true, isRequired: false, transformFunction: null }, helpTextClass: { classPropertyName: "helpTextClass", publicName: "helpTextClass", isSignal: true, isRequired: false, transformFunction: null }, accessDeniedMessage: { classPropertyName: "accessDeniedMessage", publicName: "accessDeniedMessage", isSignal: true, isRequired: false, transformFunction: null }, noPayslipMessage: { classPropertyName: "noPayslipMessage", publicName: "noPayslipMessage", isSignal: true, isRequired: false, transformFunction: null }, helpText: { classPropertyName: "helpText", publicName: "helpText", isSignal: true, isRequired: false, transformFunction: null }, accessDeniedIcon: { classPropertyName: "accessDeniedIcon", publicName: "accessDeniedIcon", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"cardContainerClass()\">\n <div [class]=\"cardBodyClass()\">\n <fa-icon [icon]=\"accessDeniedIcon()\" [class]=\"iconClass()\"></fa-icon>\n <p [class]=\"messageClass()\">{{ (hidePayslip() ? accessDeniedMessage() : noPayslipMessage()) | PayrollTranslate }}!</p>\n\n @if (hidePayslip()) {\n <p [class]=\"helpTextClass()\">{{ helpText() | PayrollTranslate }}</p>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
894
+ }
895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EmptyPayslipCardComponent, decorators: [{
896
+ type: Component,
897
+ args: [{ selector: 'payroll-empty-payslip-card', standalone: true, imports: [CommonModule, FontAwesomeModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"cardContainerClass()\">\n <div [class]=\"cardBodyClass()\">\n <fa-icon [icon]=\"accessDeniedIcon()\" [class]=\"iconClass()\"></fa-icon>\n <p [class]=\"messageClass()\">{{ (hidePayslip() ? accessDeniedMessage() : noPayslipMessage()) | PayrollTranslate }}!</p>\n\n @if (hidePayslip()) {\n <p [class]=\"helpTextClass()\">{{ helpText() | PayrollTranslate }}</p>\n }\n </div>\n</div>\n" }]
898
+ }], propDecorators: { hidePayslip: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePayslip", required: false }] }], cardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardContainerClass", required: false }] }], cardBodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardBodyClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], messageClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "messageClass", required: false }] }], helpTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpTextClass", required: false }] }], accessDeniedMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessDeniedMessage", required: false }] }], noPayslipMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noPayslipMessage", required: false }] }], helpText: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpText", required: false }] }], accessDeniedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessDeniedIcon", required: false }] }] } });
899
+
900
+ class MyPayslipWidgetComponent {
901
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
902
+ payMonth = input(null, ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
903
+ cardContainerClass = input('card shadow-sm border-0 rounded-3 p-4', ...(ngDevMode ? [{ debugName: "cardContainerClass" }] : /* istanbul ignore next */ []));
904
+ contentRowClass = input('row g-4', ...(ngDevMode ? [{ debugName: "contentRowClass" }] : /* istanbul ignore next */ []));
905
+ detailsColumnClass = input('col-xl-6 col-md-12 order-2 order-xl-1', ...(ngDevMode ? [{ debugName: "detailsColumnClass" }] : /* istanbul ignore next */ []));
906
+ chartColumnClass = input('col-xl-6 col-md-12 d-flex align-items-start justify-content-center justify-content-xl-end order-1 order-xl-2 m-0', ...(ngDevMode ? [{ debugName: "chartColumnClass" }] : /* istanbul ignore next */ []));
907
+ titleRowClass = input('d-flex align-items-center mb-4', ...(ngDevMode ? [{ debugName: "titleRowClass" }] : /* istanbul ignore next */ []));
908
+ salaryIconClass = input('text-primary fs-28 me-2', ...(ngDevMode ? [{ debugName: "salaryIconClass" }] : /* istanbul ignore next */ []));
909
+ titleClass = input('fw-medium fs-16 text-uppercase text-dark-gray', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
910
+ titleMonthClass = input('fw-normal text-capitalize', ...(ngDevMode ? [{ debugName: "titleMonthClass" }] : /* istanbul ignore next */ []));
911
+ sectionClass = input('mb-4', ...(ngDevMode ? [{ debugName: "sectionClass" }] : /* istanbul ignore next */ []));
912
+ sectionTitleClass = input('fs-14 fw-bold mb-2 text-primary', ...(ngDevMode ? [{ debugName: "sectionTitleClass" }] : /* istanbul ignore next */ []));
913
+ tableLabelClass = input('fw-normal mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableLabelClass" }] : /* istanbul ignore next */ []));
914
+ tablePrimaryLabelClass = input('fw-normal mb-2 table-cell-md text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tablePrimaryLabelClass" }] : /* istanbul ignore next */ []));
915
+ tableValueClass = input('fw-medium mb-2 table-cell-sm text-ellipsis-one-line', ...(ngDevMode ? [{ debugName: "tableValueClass" }] : /* istanbul ignore next */ []));
916
+ tableSecondaryValueClass = input('text-ellipsis-one-line mb-2 table-cell-sm', ...(ngDevMode ? [{ debugName: "tableSecondaryValueClass" }] : /* istanbul ignore next */ []));
917
+ currencyCodeClass = input('fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
918
+ infoIconClass = input('light-info ms-1 cursor-pointer', ...(ngDevMode ? [{ debugName: "infoIconClass" }] : /* istanbul ignore next */ []));
919
+ popupWidth = input(600, ...(ngDevMode ? [{ debugName: "popupWidth" }] : /* istanbul ignore next */ []));
920
+ popupMaxHeight = input(400, ...(ngDevMode ? [{ debugName: "popupMaxHeight" }] : /* istanbul ignore next */ []));
921
+ popupShadingColor = input('rgba(0,0,0,0.4)', ...(ngDevMode ? [{ debugName: "popupShadingColor" }] : /* istanbul ignore next */ []));
922
+ popupHeaderRowClass = input('row mb-3 table-cell-sm', ...(ngDevMode ? [{ debugName: "popupHeaderRowClass" }] : /* istanbul ignore next */ []));
923
+ popupRowClass = input('row mb-3 table-cell-md', ...(ngDevMode ? [{ debugName: "popupRowClass" }] : /* istanbul ignore next */ []));
924
+ mobileChartWrapperClass = input('d-flex align-items-start justify-content-start', ...(ngDevMode ? [{ debugName: "mobileChartWrapperClass" }] : /* istanbul ignore next */ []));
925
+ salaryTableRowClass = input('row', ...(ngDevMode ? [{ debugName: "salaryTableRowClass" }] : /* istanbul ignore next */ []));
926
+ labelColumnClass = input('col-5 text-start', ...(ngDevMode ? [{ debugName: "labelColumnClass" }] : /* istanbul ignore next */ []));
927
+ daysColumnClass = input('col-2 text-end fw-light mb-2', ...(ngDevMode ? [{ debugName: "daysColumnClass" }] : /* istanbul ignore next */ []));
928
+ daysHeaderClass = input('text-ellipsis-one-line mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "daysHeaderClass" }] : /* istanbul ignore next */ []));
929
+ amountColumnClass = input('offset-1 col-3 text-start', ...(ngDevMode ? [{ debugName: "amountColumnClass" }] : /* istanbul ignore next */ []));
930
+ totalsColumnClass = input('offset-3 col-4 text-start', ...(ngDevMode ? [{ debugName: "totalsColumnClass" }] : /* istanbul ignore next */ []));
931
+ viewDetailsLinkClass = input('text-primary fw-normal ms-1', ...(ngDevMode ? [{ debugName: "viewDetailsLinkClass" }] : /* istanbul ignore next */ []));
932
+ allowancesRowClass = input('row align-items-start', ...(ngDevMode ? [{ debugName: "allowancesRowClass" }] : /* istanbul ignore next */ []));
933
+ allowanceDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "allowanceDaysClass" }] : /* istanbul ignore next */ []));
934
+ allowanceAmountWrapperClass = input('d-flex align-items-center justify-content-between fs-12 fw-medium mb-2 text-dark-gray', ...(ngDevMode ? [{ debugName: "allowanceAmountWrapperClass" }] : /* istanbul ignore next */ []));
935
+ allowanceAmountTextClass = input('w-30 text-nowrap', ...(ngDevMode ? [{ debugName: "allowanceAmountTextClass" }] : /* istanbul ignore next */ []));
936
+ tooltipContainerClass = input('text-white rounded overflow-hidden', ...(ngDevMode ? [{ debugName: "tooltipContainerClass" }] : /* istanbul ignore next */ []));
937
+ tooltipTextClass = input('text-ellipsis-one-line fs-12', ...(ngDevMode ? [{ debugName: "tooltipTextClass" }] : /* istanbul ignore next */ []));
938
+ tooltipCurrencyClass = input('fs-10', ...(ngDevMode ? [{ debugName: "tooltipCurrencyClass" }] : /* istanbul ignore next */ []));
939
+ tooltipAmountClass = input('fs-14 ms-1', ...(ngDevMode ? [{ debugName: "tooltipAmountClass" }] : /* istanbul ignore next */ []));
940
+ dividerRowClass = input('row', ...(ngDevMode ? [{ debugName: "dividerRowClass" }] : /* istanbul ignore next */ []));
941
+ dividerColumnClass = input('col-12', ...(ngDevMode ? [{ debugName: "dividerColumnClass" }] : /* istanbul ignore next */ []));
942
+ deductionsSectionRowClass = input('row mt-4', ...(ngDevMode ? [{ debugName: "deductionsSectionRowClass" }] : /* istanbul ignore next */ []));
943
+ deductionsSectionColumnClass = input('col-xl-6 col-md-12', ...(ngDevMode ? [{ debugName: "deductionsSectionColumnClass" }] : /* istanbul ignore next */ []));
944
+ deductionsInnerRowClass = input('row', ...(ngDevMode ? [{ debugName: "deductionsInnerRowClass" }] : /* istanbul ignore next */ []));
945
+ deductionDaysClass = input('col-2 text-end table-cell-sm fw-light', ...(ngDevMode ? [{ debugName: "deductionDaysClass" }] : /* istanbul ignore next */ []));
946
+ deductionAmountTextClass = input('fw-normal mb-2 table-cell-sm text-nowrap', ...(ngDevMode ? [{ debugName: "deductionAmountTextClass" }] : /* istanbul ignore next */ []));
947
+ emptyCardContainerClass = input('card border shadow-sm rounded-3', ...(ngDevMode ? [{ debugName: "emptyCardContainerClass" }] : /* istanbul ignore next */ []));
948
+ emptyCardBodyClass = input('card-body text-center py-5', ...(ngDevMode ? [{ debugName: "emptyCardBodyClass" }] : /* istanbul ignore next */ []));
949
+ emptyIconClass = input('fs-28 me-2 light-info mb-3', ...(ngDevMode ? [{ debugName: "emptyIconClass" }] : /* istanbul ignore next */ []));
950
+ emptyMessageClass = input('fs-20 fw-400 mb-2 text-dark', ...(ngDevMode ? [{ debugName: "emptyMessageClass" }] : /* istanbul ignore next */ []));
951
+ emptyHelpTextClass = input('fs-16 fw-400 mb-0 text-dark', ...(ngDevMode ? [{ debugName: "emptyHelpTextClass" }] : /* istanbul ignore next */ []));
952
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
953
+ hidePayslip = input(false, ...(ngDevMode ? [{ debugName: "hidePayslip" }] : /* istanbul ignore next */ []));
954
+ isFirstMonth = input(false, ...(ngDevMode ? [{ debugName: "isFirstMonth" }] : /* istanbul ignore next */ []));
955
+ accessDeniedMessage = input('YouAreNotAllowedToViewThePayslip', ...(ngDevMode ? [{ debugName: "accessDeniedMessage" }] : /* istanbul ignore next */ []));
956
+ noPayslipMessage = input('NoPayslipAvailableYet', ...(ngDevMode ? [{ debugName: "noPayslipMessage" }] : /* istanbul ignore next */ []));
957
+ helpText = input('PleaseContactYourAdminForAnyHelp.', ...(ngDevMode ? [{ debugName: "helpText" }] : /* istanbul ignore next */ []));
958
+ accessDeniedIcon = input(faMoneyCheckDollarPen, ...(ngDevMode ? [{ debugName: "accessDeniedIcon" }] : /* istanbul ignore next */ []));
959
+ isLoadingChanged = output();
960
+ errorOccurred = output();
961
+ salaryIcon = faMoneyCheckDollarPen;
962
+ employeeDetails = signal(null, ...(ngDevMode ? [{ debugName: "employeeDetails" }] : /* istanbul ignore next */ []));
963
+ actualBasicSalaryDetails = signal([], ...(ngDevMode ? [{ debugName: "actualBasicSalaryDetails" }] : /* istanbul ignore next */ []));
964
+ pieDataSource = signal([], ...(ngDevMode ? [{ debugName: "pieDataSource" }] : /* istanbul ignore next */ []));
965
+ selectedPayMonth = signal(null, ...(ngDevMode ? [{ debugName: "selectedPayMonth" }] : /* istanbul ignore next */ []));
966
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
967
+ commonMethod = inject(CommonMethods);
968
+ translatePipe = inject(PayrollTranslatePipe);
969
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
970
+ constructor() {
971
+ effect(() => {
972
+ const baseUrl = this.baseUrl();
973
+ const payMonth = this.payMonth();
974
+ if (!baseUrl) {
975
+ this.resetState();
976
+ return;
977
+ }
978
+ if (!this.hidePayslip() && payMonth) {
979
+ this.selectedPayMonth.set(payMonth);
980
+ this.loadEmployeePayslip(payMonth);
981
+ return;
982
+ }
983
+ this.resetDataOnly();
984
+ });
985
+ }
986
+ payMonthDate = computed(() => {
987
+ const selectedPayMonth = this.selectedPayMonth();
988
+ if (!selectedPayMonth) {
989
+ return null;
990
+ }
991
+ const dashParts = selectedPayMonth.split('-');
992
+ if (dashParts.length === 2) {
993
+ const year = Number(dashParts[0]);
994
+ const month = Number(dashParts[1]) - 1;
995
+ if (!Number.isNaN(month) && !Number.isNaN(year)) {
996
+ return new Date(year, month, 1);
997
+ }
998
+ }
999
+ const slashParts = selectedPayMonth.split('/');
1000
+ if (slashParts.length !== 2) {
1001
+ return null;
1002
+ }
1003
+ const month = Number(slashParts[0]) - 1;
1004
+ const year = Number(slashParts[1]);
1005
+ if (Number.isNaN(month) || Number.isNaN(year)) {
1006
+ return null;
1007
+ }
1008
+ return new Date(year, month, 1);
1009
+ }, ...(ngDevMode ? [{ debugName: "payMonthDate" }] : /* istanbul ignore next */ []));
1010
+ loadEmployeePayslip(payMonth, emitLoading = true) {
1011
+ if (emitLoading) {
1012
+ this.setLoading(true);
1013
+ }
1014
+ this.payrollWidgetsService
1015
+ .getPayslipDetails(this.baseUrl(), payMonth)
1016
+ .pipe(finalize(() => {
1017
+ this.setLoading(false);
1018
+ }))
1019
+ .subscribe({
1020
+ next: (response) => {
1021
+ const payload = response?.ResponseData ?? null;
1022
+ this.employeeDetails.set(payload);
1023
+ if (this.hidePayslip() || !payload) {
1024
+ this.actualBasicSalaryDetails.set([]);
1025
+ this.pieDataSource.set([]);
1026
+ return;
1027
+ }
1028
+ this.actualBasicSalaryDetails.set(this.buildActualBasicSalaryDetails(payload));
1029
+ this.pieDataSource.set(this.buildPieDataSource(payload));
1030
+ },
1031
+ error: (error) => {
1032
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1033
+ this.resetDataOnly();
1034
+ },
1035
+ });
1036
+ }
1037
+ buildActualBasicSalaryDetails(employeeDetails) {
1038
+ const details = [
1039
+ {
1040
+ Attendance: this.translatePipe.transform('WorkingDays'),
1041
+ AllowanceDays: employeeDetails.WorkingDays,
1042
+ Amount: employeeDetails.WorkingDaysCost,
1043
+ },
1044
+ ];
1045
+ for (const paidVacation of employeeDetails.PaidVacations ?? []) {
1046
+ details.push({
1047
+ Attendance: paidVacation.VacationTypeName,
1048
+ AllowanceDays: paidVacation.VacationDays,
1049
+ Amount: paidVacation.VacationDaysCost,
1050
+ });
1051
+ }
1052
+ return details;
1053
+ }
1054
+ buildPieDataSource(employeeDetails) {
1055
+ const decimals = employeeDetails.CurrencyDecimals ?? 0;
1056
+ const netSalary = employeeDetails.NetSalary ?? 0;
1057
+ const netSalaryColor = netSalary < 0 ? 'var(--bs-danger)' : 'var(--bs-bg-dark-gray)';
1058
+ return [
1059
+ {
1060
+ Text: this.translatePipe.transform('NetSalary'),
1061
+ Value: netSalary < 0 ? 0 : netSalary,
1062
+ FormattedValue: this.commonMethod.currencyDecimalFormat(netSalary, decimals) ?? '',
1063
+ ValueColor: netSalaryColor,
1064
+ },
1065
+ {
1066
+ Text: this.translatePipe.transform('Deductions'),
1067
+ Value: employeeDetails.TotalDeductions ?? 0,
1068
+ FormattedValue: this.commonMethod.currencyDecimalFormat(employeeDetails.TotalDeductions ?? 0, decimals) ?? '',
1069
+ ValueColor: 'var(--bs-danger)',
1070
+ },
1071
+ ];
1072
+ }
1073
+ resetState() {
1074
+ this.resetDataOnly();
1075
+ this.setLoading(false);
1076
+ }
1077
+ resetDataOnly() {
1078
+ this.employeeDetails.set(null);
1079
+ this.actualBasicSalaryDetails.set([]);
1080
+ this.pieDataSource.set([]);
1081
+ this.selectedPayMonth.set(null);
1082
+ }
1083
+ setLoading(isLoading) {
1084
+ this.isLoading.set(isLoading);
1085
+ this.isLoadingChanged.emit(isLoading);
1086
+ }
1087
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1088
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-widget", inputs: { baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, cardContainerClass: { classPropertyName: "cardContainerClass", publicName: "cardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, contentRowClass: { classPropertyName: "contentRowClass", publicName: "contentRowClass", isSignal: true, isRequired: false, transformFunction: null }, detailsColumnClass: { classPropertyName: "detailsColumnClass", publicName: "detailsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, chartColumnClass: { classPropertyName: "chartColumnClass", publicName: "chartColumnClass", isSignal: true, isRequired: false, transformFunction: null }, titleRowClass: { classPropertyName: "titleRowClass", publicName: "titleRowClass", isSignal: true, isRequired: false, transformFunction: null }, salaryIconClass: { classPropertyName: "salaryIconClass", publicName: "salaryIconClass", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, titleMonthClass: { classPropertyName: "titleMonthClass", publicName: "titleMonthClass", isSignal: true, isRequired: false, transformFunction: null }, sectionClass: { classPropertyName: "sectionClass", publicName: "sectionClass", isSignal: true, isRequired: false, transformFunction: null }, sectionTitleClass: { classPropertyName: "sectionTitleClass", publicName: "sectionTitleClass", isSignal: true, isRequired: false, transformFunction: null }, tableLabelClass: { classPropertyName: "tableLabelClass", publicName: "tableLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tablePrimaryLabelClass: { classPropertyName: "tablePrimaryLabelClass", publicName: "tablePrimaryLabelClass", isSignal: true, isRequired: false, transformFunction: null }, tableValueClass: { classPropertyName: "tableValueClass", publicName: "tableValueClass", isSignal: true, isRequired: false, transformFunction: null }, tableSecondaryValueClass: { classPropertyName: "tableSecondaryValueClass", publicName: "tableSecondaryValueClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, infoIconClass: { classPropertyName: "infoIconClass", publicName: "infoIconClass", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, popupMaxHeight: { classPropertyName: "popupMaxHeight", publicName: "popupMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, popupShadingColor: { classPropertyName: "popupShadingColor", publicName: "popupShadingColor", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderRowClass: { classPropertyName: "popupHeaderRowClass", publicName: "popupHeaderRowClass", isSignal: true, isRequired: false, transformFunction: null }, popupRowClass: { classPropertyName: "popupRowClass", publicName: "popupRowClass", isSignal: true, isRequired: false, transformFunction: null }, mobileChartWrapperClass: { classPropertyName: "mobileChartWrapperClass", publicName: "mobileChartWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, salaryTableRowClass: { classPropertyName: "salaryTableRowClass", publicName: "salaryTableRowClass", isSignal: true, isRequired: false, transformFunction: null }, labelColumnClass: { classPropertyName: "labelColumnClass", publicName: "labelColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysColumnClass: { classPropertyName: "daysColumnClass", publicName: "daysColumnClass", isSignal: true, isRequired: false, transformFunction: null }, daysHeaderClass: { classPropertyName: "daysHeaderClass", publicName: "daysHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, amountColumnClass: { classPropertyName: "amountColumnClass", publicName: "amountColumnClass", isSignal: true, isRequired: false, transformFunction: null }, totalsColumnClass: { classPropertyName: "totalsColumnClass", publicName: "totalsColumnClass", isSignal: true, isRequired: false, transformFunction: null }, viewDetailsLinkClass: { classPropertyName: "viewDetailsLinkClass", publicName: "viewDetailsLinkClass", isSignal: true, isRequired: false, transformFunction: null }, allowancesRowClass: { classPropertyName: "allowancesRowClass", publicName: "allowancesRowClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceDaysClass: { classPropertyName: "allowanceDaysClass", publicName: "allowanceDaysClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountWrapperClass: { classPropertyName: "allowanceAmountWrapperClass", publicName: "allowanceAmountWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, allowanceAmountTextClass: { classPropertyName: "allowanceAmountTextClass", publicName: "allowanceAmountTextClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipContainerClass: { classPropertyName: "tooltipContainerClass", publicName: "tooltipContainerClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipTextClass: { classPropertyName: "tooltipTextClass", publicName: "tooltipTextClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipCurrencyClass: { classPropertyName: "tooltipCurrencyClass", publicName: "tooltipCurrencyClass", isSignal: true, isRequired: false, transformFunction: null }, tooltipAmountClass: { classPropertyName: "tooltipAmountClass", publicName: "tooltipAmountClass", isSignal: true, isRequired: false, transformFunction: null }, dividerRowClass: { classPropertyName: "dividerRowClass", publicName: "dividerRowClass", isSignal: true, isRequired: false, transformFunction: null }, dividerColumnClass: { classPropertyName: "dividerColumnClass", publicName: "dividerColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionRowClass: { classPropertyName: "deductionsSectionRowClass", publicName: "deductionsSectionRowClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsSectionColumnClass: { classPropertyName: "deductionsSectionColumnClass", publicName: "deductionsSectionColumnClass", isSignal: true, isRequired: false, transformFunction: null }, deductionsInnerRowClass: { classPropertyName: "deductionsInnerRowClass", publicName: "deductionsInnerRowClass", isSignal: true, isRequired: false, transformFunction: null }, deductionDaysClass: { classPropertyName: "deductionDaysClass", publicName: "deductionDaysClass", isSignal: true, isRequired: false, transformFunction: null }, deductionAmountTextClass: { classPropertyName: "deductionAmountTextClass", publicName: "deductionAmountTextClass", isSignal: true, isRequired: false, transformFunction: null }, emptyCardContainerClass: { classPropertyName: "emptyCardContainerClass", publicName: "emptyCardContainerClass", isSignal: true, isRequired: false, transformFunction: null }, emptyCardBodyClass: { classPropertyName: "emptyCardBodyClass", publicName: "emptyCardBodyClass", isSignal: true, isRequired: false, transformFunction: null }, emptyIconClass: { classPropertyName: "emptyIconClass", publicName: "emptyIconClass", isSignal: true, isRequired: false, transformFunction: null }, emptyMessageClass: { classPropertyName: "emptyMessageClass", publicName: "emptyMessageClass", isSignal: true, isRequired: false, transformFunction: null }, emptyHelpTextClass: { classPropertyName: "emptyHelpTextClass", publicName: "emptyHelpTextClass", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, hidePayslip: { classPropertyName: "hidePayslip", publicName: "hidePayslip", isSignal: true, isRequired: false, transformFunction: null }, isFirstMonth: { classPropertyName: "isFirstMonth", publicName: "isFirstMonth", isSignal: true, isRequired: false, transformFunction: null }, accessDeniedMessage: { classPropertyName: "accessDeniedMessage", publicName: "accessDeniedMessage", isSignal: true, isRequired: false, transformFunction: null }, noPayslipMessage: { classPropertyName: "noPayslipMessage", publicName: "noPayslipMessage", isSignal: true, isRequired: false, transformFunction: null }, helpText: { classPropertyName: "helpText", publicName: "helpText", isSignal: true, isRequired: false, transformFunction: null }, accessDeniedIcon: { classPropertyName: "accessDeniedIcon", publicName: "accessDeniedIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "@if (employeeDetails(); as employeeDetailsData) {\n @if (!hidePayslip() && !isFirstMonth()) {\n <payroll-payslip-details-card\n [employeeDetails]=\"employeeDetailsData\"\n [payMonthDate]=\"payMonthDate()\"\n [pieDataSource]=\"pieDataSource()\"\n [actualBasicSalaryDetails]=\"actualBasicSalaryDetails()\"\n [cardContainerClass]=\"cardContainerClass()\"\n [contentRowClass]=\"contentRowClass()\"\n [detailsColumnClass]=\"detailsColumnClass()\"\n [chartColumnClass]=\"chartColumnClass()\"\n [titleRowClass]=\"titleRowClass()\"\n [salaryIconClass]=\"salaryIconClass()\"\n [titleClass]=\"titleClass()\"\n [titleMonthClass]=\"titleMonthClass()\"\n [sectionClass]=\"sectionClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [tablePrimaryLabelClass]=\"tablePrimaryLabelClass()\"\n [tableValueClass]=\"tableValueClass()\"\n [tableSecondaryValueClass]=\"tableSecondaryValueClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [infoIconClass]=\"infoIconClass()\"\n [popupWidth]=\"popupWidth()\"\n [popupMaxHeight]=\"popupMaxHeight()\"\n [popupShadingColor]=\"popupShadingColor()\"\n [popupHeaderRowClass]=\"popupHeaderRowClass()\"\n [popupRowClass]=\"popupRowClass()\"\n [mobileChartWrapperClass]=\"mobileChartWrapperClass()\"\n [salaryTableRowClass]=\"salaryTableRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [daysColumnClass]=\"daysColumnClass()\"\n [daysHeaderClass]=\"daysHeaderClass()\"\n [amountColumnClass]=\"amountColumnClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [viewDetailsLinkClass]=\"viewDetailsLinkClass()\"\n [allowancesRowClass]=\"allowancesRowClass()\"\n [allowanceDaysClass]=\"allowanceDaysClass()\"\n [allowanceAmountWrapperClass]=\"allowanceAmountWrapperClass()\"\n [allowanceAmountTextClass]=\"allowanceAmountTextClass()\"\n [tooltipContainerClass]=\"tooltipContainerClass()\"\n [tooltipTextClass]=\"tooltipTextClass()\"\n [tooltipCurrencyClass]=\"tooltipCurrencyClass()\"\n [tooltipAmountClass]=\"tooltipAmountClass()\"\n [dividerRowClass]=\"dividerRowClass()\"\n [dividerColumnClass]=\"dividerColumnClass()\"\n [deductionsSectionRowClass]=\"deductionsSectionRowClass()\"\n [deductionsSectionColumnClass]=\"deductionsSectionColumnClass()\"\n [deductionsInnerRowClass]=\"deductionsInnerRowClass()\"\n [deductionDaysClass]=\"deductionDaysClass()\"\n [deductionAmountTextClass]=\"deductionAmountTextClass()\"\n [isMobile]=\"isMobile()\"\n ></payroll-payslip-details-card>\n } @else {\n <payroll-empty-payslip-card\n [hidePayslip]=\"hidePayslip()\"\n [cardContainerClass]=\"emptyCardContainerClass()\"\n [cardBodyClass]=\"emptyCardBodyClass()\"\n [iconClass]=\"emptyIconClass()\"\n [messageClass]=\"emptyMessageClass()\"\n [helpTextClass]=\"emptyHelpTextClass()\"\n [accessDeniedIcon]=\"accessDeniedIcon()\"\n [accessDeniedMessage]=\"accessDeniedMessage()\"\n [noPayslipMessage]=\"noPayslipMessage()\"\n [helpText]=\"helpText()\"\n ></payroll-empty-payslip-card>\n }\n} @else {\n <payroll-empty-payslip-card\n [hidePayslip]=\"hidePayslip()\"\n [cardContainerClass]=\"emptyCardContainerClass()\"\n [cardBodyClass]=\"emptyCardBodyClass()\"\n [iconClass]=\"emptyIconClass()\"\n [messageClass]=\"emptyMessageClass()\"\n [helpTextClass]=\"emptyHelpTextClass()\"\n [accessDeniedIcon]=\"accessDeniedIcon()\"\n [accessDeniedMessage]=\"accessDeniedMessage()\"\n [noPayslipMessage]=\"noPayslipMessage()\"\n [helpText]=\"helpText()\"\n ></payroll-empty-payslip-card>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: EmptyPayslipCardComponent, selector: "payroll-empty-payslip-card", inputs: ["hidePayslip", "cardContainerClass", "cardBodyClass", "iconClass", "messageClass", "helpTextClass", "accessDeniedMessage", "noPayslipMessage", "helpText", "accessDeniedIcon"] }, { kind: "component", type: PayslipDetailsCardComponent, selector: "payroll-payslip-details-card", inputs: ["employeeDetails", "payMonthDate", "pieDataSource", "actualBasicSalaryDetails", "cardContainerClass", "contentRowClass", "detailsColumnClass", "chartColumnClass", "isMobile", "titleRowClass", "salaryIconClass", "titleClass", "titleMonthClass", "sectionClass", "sectionTitleClass", "tableLabelClass", "tablePrimaryLabelClass", "tableValueClass", "tableSecondaryValueClass", "currencyCodeClass", "infoIconClass", "popupWidth", "popupMaxHeight", "popupShadingColor", "popupHeaderRowClass", "popupRowClass", "mobileChartWrapperClass", "negativePaletteColors", "positivePaletteColors", "salaryTableRowClass", "labelColumnClass", "daysColumnClass", "daysHeaderClass", "amountColumnClass", "salaryAmountColumnClass", "allowanceAmountColumnClass", "totalsColumnClass", "viewDetailsLinkClass", "allowancesRowClass", "allowanceDaysClass", "allowanceAmountWrapperClass", "allowanceAmountTextClass", "tooltipContainerClass", "tooltipTextClass", "tooltipCurrencyClass", "tooltipAmountClass", "dividerRowClass", "dividerColumnClass", "deductionsSectionRowClass", "deductionsSectionColumnClass", "deductionsInnerRowClass", "deductionDaysClass", "deductionAmountTextClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1089
+ }
1090
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipWidgetComponent, decorators: [{
1091
+ type: Component,
1092
+ args: [{ selector: 'payroll-my-payslip-widget', standalone: true, imports: [CommonModule, EmptyPayslipCardComponent, PayslipDetailsCardComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (employeeDetails(); as employeeDetailsData) {\n @if (!hidePayslip() && !isFirstMonth()) {\n <payroll-payslip-details-card\n [employeeDetails]=\"employeeDetailsData\"\n [payMonthDate]=\"payMonthDate()\"\n [pieDataSource]=\"pieDataSource()\"\n [actualBasicSalaryDetails]=\"actualBasicSalaryDetails()\"\n [cardContainerClass]=\"cardContainerClass()\"\n [contentRowClass]=\"contentRowClass()\"\n [detailsColumnClass]=\"detailsColumnClass()\"\n [chartColumnClass]=\"chartColumnClass()\"\n [titleRowClass]=\"titleRowClass()\"\n [salaryIconClass]=\"salaryIconClass()\"\n [titleClass]=\"titleClass()\"\n [titleMonthClass]=\"titleMonthClass()\"\n [sectionClass]=\"sectionClass()\"\n [sectionTitleClass]=\"sectionTitleClass()\"\n [tableLabelClass]=\"tableLabelClass()\"\n [tablePrimaryLabelClass]=\"tablePrimaryLabelClass()\"\n [tableValueClass]=\"tableValueClass()\"\n [tableSecondaryValueClass]=\"tableSecondaryValueClass()\"\n [currencyCodeClass]=\"currencyCodeClass()\"\n [infoIconClass]=\"infoIconClass()\"\n [popupWidth]=\"popupWidth()\"\n [popupMaxHeight]=\"popupMaxHeight()\"\n [popupShadingColor]=\"popupShadingColor()\"\n [popupHeaderRowClass]=\"popupHeaderRowClass()\"\n [popupRowClass]=\"popupRowClass()\"\n [mobileChartWrapperClass]=\"mobileChartWrapperClass()\"\n [salaryTableRowClass]=\"salaryTableRowClass()\"\n [labelColumnClass]=\"labelColumnClass()\"\n [daysColumnClass]=\"daysColumnClass()\"\n [daysHeaderClass]=\"daysHeaderClass()\"\n [amountColumnClass]=\"amountColumnClass()\"\n [totalsColumnClass]=\"totalsColumnClass()\"\n [viewDetailsLinkClass]=\"viewDetailsLinkClass()\"\n [allowancesRowClass]=\"allowancesRowClass()\"\n [allowanceDaysClass]=\"allowanceDaysClass()\"\n [allowanceAmountWrapperClass]=\"allowanceAmountWrapperClass()\"\n [allowanceAmountTextClass]=\"allowanceAmountTextClass()\"\n [tooltipContainerClass]=\"tooltipContainerClass()\"\n [tooltipTextClass]=\"tooltipTextClass()\"\n [tooltipCurrencyClass]=\"tooltipCurrencyClass()\"\n [tooltipAmountClass]=\"tooltipAmountClass()\"\n [dividerRowClass]=\"dividerRowClass()\"\n [dividerColumnClass]=\"dividerColumnClass()\"\n [deductionsSectionRowClass]=\"deductionsSectionRowClass()\"\n [deductionsSectionColumnClass]=\"deductionsSectionColumnClass()\"\n [deductionsInnerRowClass]=\"deductionsInnerRowClass()\"\n [deductionDaysClass]=\"deductionDaysClass()\"\n [deductionAmountTextClass]=\"deductionAmountTextClass()\"\n [isMobile]=\"isMobile()\"\n ></payroll-payslip-details-card>\n } @else {\n <payroll-empty-payslip-card\n [hidePayslip]=\"hidePayslip()\"\n [cardContainerClass]=\"emptyCardContainerClass()\"\n [cardBodyClass]=\"emptyCardBodyClass()\"\n [iconClass]=\"emptyIconClass()\"\n [messageClass]=\"emptyMessageClass()\"\n [helpTextClass]=\"emptyHelpTextClass()\"\n [accessDeniedIcon]=\"accessDeniedIcon()\"\n [accessDeniedMessage]=\"accessDeniedMessage()\"\n [noPayslipMessage]=\"noPayslipMessage()\"\n [helpText]=\"helpText()\"\n ></payroll-empty-payslip-card>\n }\n} @else {\n <payroll-empty-payslip-card\n [hidePayslip]=\"hidePayslip()\"\n [cardContainerClass]=\"emptyCardContainerClass()\"\n [cardBodyClass]=\"emptyCardBodyClass()\"\n [iconClass]=\"emptyIconClass()\"\n [messageClass]=\"emptyMessageClass()\"\n [helpTextClass]=\"emptyHelpTextClass()\"\n [accessDeniedIcon]=\"accessDeniedIcon()\"\n [accessDeniedMessage]=\"accessDeniedMessage()\"\n [noPayslipMessage]=\"noPayslipMessage()\"\n [helpText]=\"helpText()\"\n ></payroll-empty-payslip-card>\n}\n" }]
1093
+ }], ctorParameters: () => [], propDecorators: { baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], cardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardContainerClass", required: false }] }], contentRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentRowClass", required: false }] }], detailsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "detailsColumnClass", required: false }] }], chartColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "chartColumnClass", required: false }] }], titleRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleRowClass", required: false }] }], salaryIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryIconClass", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], titleMonthClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleMonthClass", required: false }] }], sectionClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionClass", required: false }] }], sectionTitleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionTitleClass", required: false }] }], tableLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableLabelClass", required: false }] }], tablePrimaryLabelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tablePrimaryLabelClass", required: false }] }], tableValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableValueClass", required: false }] }], tableSecondaryValueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableSecondaryValueClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], infoIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoIconClass", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], popupMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMaxHeight", required: false }] }], popupShadingColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupShadingColor", required: false }] }], popupHeaderRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderRowClass", required: false }] }], popupRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupRowClass", required: false }] }], mobileChartWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileChartWrapperClass", required: false }] }], salaryTableRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "salaryTableRowClass", required: false }] }], labelColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelColumnClass", required: false }] }], daysColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysColumnClass", required: false }] }], daysHeaderClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysHeaderClass", required: false }] }], amountColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountColumnClass", required: false }] }], totalsColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalsColumnClass", required: false }] }], viewDetailsLinkClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewDetailsLinkClass", required: false }] }], allowancesRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowancesRowClass", required: false }] }], allowanceDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceDaysClass", required: false }] }], allowanceAmountWrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountWrapperClass", required: false }] }], allowanceAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowanceAmountTextClass", required: false }] }], tooltipContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipContainerClass", required: false }] }], tooltipTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipTextClass", required: false }] }], tooltipCurrencyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipCurrencyClass", required: false }] }], tooltipAmountClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipAmountClass", required: false }] }], dividerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerRowClass", required: false }] }], dividerColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerColumnClass", required: false }] }], deductionsSectionRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionRowClass", required: false }] }], deductionsSectionColumnClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsSectionColumnClass", required: false }] }], deductionsInnerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionsInnerRowClass", required: false }] }], deductionDaysClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionDaysClass", required: false }] }], deductionAmountTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "deductionAmountTextClass", required: false }] }], emptyCardContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyCardContainerClass", required: false }] }], emptyCardBodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyCardBodyClass", required: false }] }], emptyIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyIconClass", required: false }] }], emptyMessageClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessageClass", required: false }] }], emptyHelpTextClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyHelpTextClass", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], hidePayslip: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePayslip", required: false }] }], isFirstMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFirstMonth", required: false }] }], accessDeniedMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessDeniedMessage", required: false }] }], noPayslipMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noPayslipMessage", required: false }] }], helpText: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpText", required: false }] }], accessDeniedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessDeniedIcon", required: false }] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }] } });
1094
+
1095
+ class MyPayslipJobInfoWidgetComponent {
1096
+ adminUnitIcon = input(faSitemap, ...(ngDevMode ? [{ debugName: "adminUnitIcon" }] : /* istanbul ignore next */ []));
1097
+ positionIcon = input(faUserTie, ...(ngDevMode ? [{ debugName: "positionIcon" }] : /* istanbul ignore next */ []));
1098
+ gradeIcon = input(faMedal, ...(ngDevMode ? [{ debugName: "gradeIcon" }] : /* istanbul ignore next */ []));
1099
+ joiningDateIcon = input(faCalendarAlt, ...(ngDevMode ? [{ debugName: "joiningDateIcon" }] : /* istanbul ignore next */ []));
1100
+ titleClass = input('fw-medium mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
1101
+ desktopContainerClass = input('d-flex flex-column justify-content-start align-items-start mx-4 my-2', ...(ngDevMode ? [{ debugName: "desktopContainerClass" }] : /* istanbul ignore next */ []));
1102
+ mobileContainerClass = input('d-flex align-items-center justify-content-center w-100', ...(ngDevMode ? [{ debugName: "mobileContainerClass" }] : /* istanbul ignore next */ []));
1103
+ mobileCardClass = input('p-3 h-50 card-shadow rounded-1 mb-3 mt-3 w-90 mh-150 mx-3', ...(ngDevMode ? [{ debugName: "mobileCardClass" }] : /* istanbul ignore next */ []));
1104
+ iconClass = input('fs-16 me-2 text-gray', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
1105
+ rowClass = input('d-flex align-items-center my-1 w-100', ...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
1106
+ labelClass = input('fw-light fs-12 text-light-dark', ...(ngDevMode ? [{ debugName: "labelClass" }] : /* istanbul ignore next */ []));
1107
+ valueClass = input('fw-400 ms-1 text-light-dark fs-12', ...(ngDevMode ? [{ debugName: "valueClass" }] : /* istanbul ignore next */ []));
1108
+ title = input('JobInformation', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1109
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
1110
+ payMonth = input(null, ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
1111
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
1112
+ isPayslipAvailable = input(true, ...(ngDevMode ? [{ debugName: "isPayslipAvailable" }] : /* istanbul ignore next */ []));
1113
+ isLoadingChanged = output();
1114
+ errorOccurred = output();
1115
+ jobInfo = signal(null, ...(ngDevMode ? [{ debugName: "jobInfo" }] : /* istanbul ignore next */ []));
1116
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
1117
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
1118
+ datePipe = inject(DatePipe);
1119
+ constructor() {
1120
+ effect(() => {
1121
+ if (this.baseUrl() && this.payMonth()) {
1122
+ this.loadJobInfo();
1123
+ }
1124
+ });
1125
+ }
1126
+ loadJobInfo() {
1127
+ const payMonth = this.payMonth();
1128
+ if (!this.isPayslipAvailable() || !payMonth) {
1129
+ this.jobInfo.set(null);
1130
+ return;
1131
+ }
1132
+ this.isLoading.set(true);
1133
+ this.isLoadingChanged.emit(true);
1134
+ this.payrollWidgetsService.getPayslipJobInfo(this.baseUrl(), payMonth).subscribe({
1135
+ next: res => {
1136
+ this.jobInfo.set(res?.ResponseData ?? null);
1137
+ this.isLoadingChanged.emit(false);
1138
+ this.isLoading.set(false);
1139
+ },
1140
+ error: (error) => {
1141
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1142
+ this.isLoadingChanged.emit(false);
1143
+ this.isLoading.set(false);
1144
+ },
1145
+ });
1146
+ }
1147
+ display(value) {
1148
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1149
+ return '-';
1150
+ }
1151
+ return `${value}`;
1152
+ }
1153
+ formatDate(date) {
1154
+ if (this.isLoading() || !this.isPayslipAvailable() || !date) {
1155
+ return '-';
1156
+ }
1157
+ return this.datePipe.transform(date, 'dd/MM/yyyy') || '-';
1158
+ }
1159
+ items = computed(() => {
1160
+ return [
1161
+ {
1162
+ label: 'AdminUnit',
1163
+ icon: this.adminUnitIcon(),
1164
+ value: this.display(this.jobInfo()?.AdminUnitName),
1165
+ },
1166
+ {
1167
+ label: 'Position',
1168
+ icon: this.positionIcon(),
1169
+ value: this.display(this.jobInfo()?.PositionName),
1170
+ },
1171
+ {
1172
+ label: 'Grade',
1173
+ icon: this.gradeIcon(),
1174
+ value: this.display(this.jobInfo()?.GradeName),
1175
+ },
1176
+ {
1177
+ label: 'JoiningDate',
1178
+ icon: this.joiningDateIcon(),
1179
+ value: this.formatDate(this.jobInfo()?.JoiningDate),
1180
+ },
1181
+ ];
1182
+ }, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
1183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipJobInfoWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipJobInfoWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-job-info-widget", inputs: { adminUnitIcon: { classPropertyName: "adminUnitIcon", publicName: "adminUnitIcon", isSignal: true, isRequired: false, transformFunction: null }, positionIcon: { classPropertyName: "positionIcon", publicName: "positionIcon", isSignal: true, isRequired: false, transformFunction: null }, gradeIcon: { classPropertyName: "gradeIcon", publicName: "gradeIcon", isSignal: true, isRequired: false, transformFunction: null }, joiningDateIcon: { classPropertyName: "joiningDateIcon", publicName: "joiningDateIcon", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, desktopContainerClass: { classPropertyName: "desktopContainerClass", publicName: "desktopContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileContainerClass: { classPropertyName: "mobileContainerClass", publicName: "mobileContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileCardClass: { classPropertyName: "mobileCardClass", publicName: "mobileCardClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, valueClass: { classPropertyName: "valueClass", publicName: "valueClass", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, isPayslipAvailable: { classPropertyName: "isPayslipAvailable", publicName: "isPayslipAvailable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<ng-template #titleTemplate>\n <div [class]=\"titleClass()\">\n {{ title() | PayrollTranslate }}\n </div>\n</ng-template>\n\n<ng-template #rowsTemplate>\n @for (item of items(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"item.icon\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ item.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\" />\n <ng-container *ngTemplateOutlet=\"rowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\" />\n <ng-container *ngTemplateOutlet=\"rowsTemplate\" />\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1185
+ }
1186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipJobInfoWidgetComponent, decorators: [{
1187
+ type: Component,
1188
+ args: [{ selector: 'payroll-my-payslip-job-info-widget', standalone: true, imports: [CommonModule, PayrollTranslatePipe, FaIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #titleTemplate>\n <div [class]=\"titleClass()\">\n {{ title() | PayrollTranslate }}\n </div>\n</ng-template>\n\n<ng-template #rowsTemplate>\n @for (item of items(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"item.icon\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ item.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\" />\n <ng-container *ngTemplateOutlet=\"rowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\" />\n <ng-container *ngTemplateOutlet=\"rowsTemplate\" />\n </div>\n </div>\n}\n" }]
1189
+ }], ctorParameters: () => [], propDecorators: { adminUnitIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "adminUnitIcon", required: false }] }], positionIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionIcon", required: false }] }], gradeIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "gradeIcon", required: false }] }], joiningDateIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "joiningDateIcon", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], desktopContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "desktopContainerClass", required: false }] }], mobileContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileContainerClass", required: false }] }], mobileCardClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileCardClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], valueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueClass", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], isPayslipAvailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPayslipAvailable", required: false }] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }] } });
1190
+
1191
+ class MyPayslipIndemnityWidgetComponent {
1192
+ amountIcon = input(faFileSignature, ...(ngDevMode ? [{ debugName: "amountIcon" }] : /* istanbul ignore next */ []));
1193
+ titleClass = input('fw-medium table-cell-md mb-2', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
1194
+ desktopContainerClass = input('d-flex flex-column justify-content-start align-items-start mx-4 my-2', ...(ngDevMode ? [{ debugName: "desktopContainerClass" }] : /* istanbul ignore next */ []));
1195
+ mobileContainerClass = input('d-flex align-items-center justify-content-center w-100', ...(ngDevMode ? [{ debugName: "mobileContainerClass" }] : /* istanbul ignore next */ []));
1196
+ mobileCardClass = input('p-3 h-50 card-shadow rounded-1 mb-3 mt-3 w-90 mh-150 mx-3', ...(ngDevMode ? [{ debugName: "mobileCardClass" }] : /* istanbul ignore next */ []));
1197
+ iconClass = input('fs-16 me-2 text-gray', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
1198
+ rowClass = input('d-flex align-items-center my-1 w-100', ...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
1199
+ labelClass = input('fw-light fs-12 text-light-dark', ...(ngDevMode ? [{ debugName: "labelClass" }] : /* istanbul ignore next */ []));
1200
+ valueClass = input('fw-400 ms-1 text-light-dark fs-12', ...(ngDevMode ? [{ debugName: "valueClass" }] : /* istanbul ignore next */ []));
1201
+ currencyCodeClass = input('text-secondary fs-10', ...(ngDevMode ? [{ debugName: "currencyCodeClass" }] : /* istanbul ignore next */ []));
1202
+ title = input('Indemnity', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1203
+ indemnityDaysLabel = input('IndemnityDays', ...(ngDevMode ? [{ debugName: "indemnityDaysLabel" }] : /* istanbul ignore next */ []));
1204
+ indemnityAmountLabel = input('IndemnityAmount', ...(ngDevMode ? [{ debugName: "indemnityAmountLabel" }] : /* istanbul ignore next */ []));
1205
+ days = input('Days', ...(ngDevMode ? [{ debugName: "days" }] : /* istanbul ignore next */ []));
1206
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
1207
+ payMonth = input(null, ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
1208
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
1209
+ isPayslipAvailable = input(true, ...(ngDevMode ? [{ debugName: "isPayslipAvailable" }] : /* istanbul ignore next */ []));
1210
+ indemnity = signal(null, ...(ngDevMode ? [{ debugName: "indemnity" }] : /* istanbul ignore next */ []));
1211
+ errorOccurred = output();
1212
+ isLoadingChanged = output();
1213
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
1214
+ balanceKey = 'Balance';
1215
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
1216
+ commonMethods = inject(CommonMethods);
1217
+ constructor() {
1218
+ effect(() => {
1219
+ if (this.baseUrl() && this.payMonth()) {
1220
+ this.loadIndemnity();
1221
+ }
1222
+ });
1223
+ }
1224
+ loadIndemnity() {
1225
+ const payMonth = this.payMonth();
1226
+ if (!this.isPayslipAvailable() || !payMonth) {
1227
+ this.indemnity.set(null);
1228
+ return;
1229
+ }
1230
+ this.isLoading.set(true);
1231
+ this.isLoadingChanged.emit(true);
1232
+ this.payrollWidgetsService
1233
+ .getPayslipIndemnity(this.baseUrl(), payMonth)
1234
+ .pipe(finalize(() => {
1235
+ this.isLoading.set(false);
1236
+ this.isLoadingChanged.emit(false);
1237
+ }))
1238
+ .subscribe({
1239
+ next: res => {
1240
+ this.indemnity.set(res?.ResponseData ?? null);
1241
+ },
1242
+ error: () => {
1243
+ this.indemnity.set(null);
1244
+ },
1245
+ });
1246
+ }
1247
+ indemnityItems = computed(() => {
1248
+ return [
1249
+ {
1250
+ label: this.indemnityDaysLabel(),
1251
+ value: this.indemnity()?.IndemnityDays,
1252
+ suffixKey: this.days(),
1253
+ showSuffix: this.shouldShowValue(this.indemnity()?.IndemnityDays),
1254
+ },
1255
+ {
1256
+ label: this.indemnityAmountLabel(),
1257
+ icon: this.amountIcon(),
1258
+ value: this.displayAmount(this.indemnity()?.IndemnityAmount),
1259
+ },
1260
+ ];
1261
+ }, ...(ngDevMode ? [{ debugName: "indemnityItems" }] : /* istanbul ignore next */ []));
1262
+ displayAmount(value) {
1263
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1264
+ return '-';
1265
+ }
1266
+ return this.commonMethods.currencyDecimalFormat(value, this.currencyDecimals()) ?? `${value}`;
1267
+ }
1268
+ shouldShowValue(value) {
1269
+ return !this.isLoading() && this.isPayslipAvailable() && value != null;
1270
+ }
1271
+ currencyDecimals = computed(() => this.indemnity()?.CurrencyDecimals ?? 2, ...(ngDevMode ? [{ debugName: "currencyDecimals" }] : /* istanbul ignore next */ []));
1272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipIndemnityWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipIndemnityWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-indemnity-widget", inputs: { amountIcon: { classPropertyName: "amountIcon", publicName: "amountIcon", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, desktopContainerClass: { classPropertyName: "desktopContainerClass", publicName: "desktopContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileContainerClass: { classPropertyName: "mobileContainerClass", publicName: "mobileContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileCardClass: { classPropertyName: "mobileCardClass", publicName: "mobileCardClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, valueClass: { classPropertyName: "valueClass", publicName: "valueClass", isSignal: true, isRequired: false, transformFunction: null }, currencyCodeClass: { classPropertyName: "currencyCodeClass", publicName: "currencyCodeClass", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, indemnityDaysLabel: { classPropertyName: "indemnityDaysLabel", publicName: "indemnityDaysLabel", isSignal: true, isRequired: false, transformFunction: null }, indemnityAmountLabel: { classPropertyName: "indemnityAmountLabel", publicName: "indemnityAmountLabel", isSignal: true, isRequired: false, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, isPayslipAvailable: { classPropertyName: "isPayslipAvailable", publicName: "isPayslipAvailable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { errorOccurred: "errorOccurred", isLoadingChanged: "isLoadingChanged" }, ngImport: i0, template: "<ng-template #indemnityTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #indemnityRowsTemplate>\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"amountIcon()\" [class]=\"iconClass()\"></fa-icon>\n\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ 'Balance' | PayrollTranslate }}:</span>\n\n <span [class]=\"valueClass()\">\n {{ displayAmount(indemnity()?.IndemnityAmount) }}\n @if (!isLoading() && isPayslipAvailable() && indemnity()?.IndemnityDays != null && indemnity()?.IndemnityDays != undefined) {\n (\n {{ indemnity()?.IndemnityDays }}\n @if ((indemnity()?.IndemnityDays ?? 0) > 1) {\n {{ 'Days' | PayrollTranslate }}\n } @else {\n {{ 'Day' | PayrollTranslate }}\n }\n )\n }\n </span>\n </div>\n </div>\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"indemnityTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"indemnityRowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"indemnityTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"indemnityRowsTemplate\" />\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1274
+ }
1275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipIndemnityWidgetComponent, decorators: [{
1276
+ type: Component,
1277
+ args: [{ selector: 'payroll-my-payslip-indemnity-widget', standalone: true, imports: [CommonModule, FaIconComponent, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #indemnityTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #indemnityRowsTemplate>\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"amountIcon()\" [class]=\"iconClass()\"></fa-icon>\n\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ 'Balance' | PayrollTranslate }}:</span>\n\n <span [class]=\"valueClass()\">\n {{ displayAmount(indemnity()?.IndemnityAmount) }}\n @if (!isLoading() && isPayslipAvailable() && indemnity()?.IndemnityDays != null && indemnity()?.IndemnityDays != undefined) {\n (\n {{ indemnity()?.IndemnityDays }}\n @if ((indemnity()?.IndemnityDays ?? 0) > 1) {\n {{ 'Days' | PayrollTranslate }}\n } @else {\n {{ 'Day' | PayrollTranslate }}\n }\n )\n }\n </span>\n </div>\n </div>\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"indemnityTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"indemnityRowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"indemnityTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"indemnityRowsTemplate\" />\n </div>\n </div>\n}\n" }]
1278
+ }], ctorParameters: () => [], propDecorators: { amountIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "amountIcon", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], desktopContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "desktopContainerClass", required: false }] }], mobileContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileContainerClass", required: false }] }], mobileCardClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileCardClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], valueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueClass", required: false }] }], currencyCodeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCodeClass", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], indemnityDaysLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "indemnityDaysLabel", required: false }] }], indemnityAmountLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "indemnityAmountLabel", required: false }] }], days: [{ type: i0.Input, args: [{ isSignal: true, alias: "days", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], isPayslipAvailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPayslipAvailable", required: false }] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }] } });
1279
+
1280
+ class SalaryTransferPopupComponent {
1281
+ bankInformationDataSource = input([], ...(ngDevMode ? [{ debugName: "bankInformationDataSource" }] : /* istanbul ignore next */ []));
1282
+ visibleSalaryTransferPopup = input(false, ...(ngDevMode ? [{ debugName: "visibleSalaryTransferPopup" }] : /* istanbul ignore next */ []));
1283
+ currencyCode = input('', ...(ngDevMode ? [{ debugName: "currencyCode" }] : /* istanbul ignore next */ []));
1284
+ currencyDecimals = input(2, ...(ngDevMode ? [{ debugName: "currencyDecimals" }] : /* istanbul ignore next */ []));
1285
+ popupHeight = input('auto', ...(ngDevMode ? [{ debugName: "popupHeight" }] : /* istanbul ignore next */ []));
1286
+ popupMaxWidth = input('800px', ...(ngDevMode ? [{ debugName: "popupMaxWidth" }] : /* istanbul ignore next */ []));
1287
+ popupMinWidth = input('auto', ...(ngDevMode ? [{ debugName: "popupMinWidth" }] : /* istanbul ignore next */ []));
1288
+ containerClass = input('', ...(ngDevMode ? [{ debugName: "containerClass" }] : /* istanbul ignore next */ []));
1289
+ headerRowClass = input('fw-bold text-secondary pb-2 d-flex', ...(ngDevMode ? [{ debugName: "headerRowClass" }] : /* istanbul ignore next */ []));
1290
+ headerCell1Class = input('w-35 text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "headerCell1Class" }] : /* istanbul ignore next */ []));
1291
+ headerCell2Class = input('w-20 text-start text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "headerCell2Class" }] : /* istanbul ignore next */ []));
1292
+ headerCell3Class = input('w-45 text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "headerCell3Class" }] : /* istanbul ignore next */ []));
1293
+ dataRowClass = input('py-2 d-flex', ...(ngDevMode ? [{ debugName: "dataRowClass" }] : /* istanbul ignore next */ []));
1294
+ dataCell1Class = input('w-35 text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "dataCell1Class" }] : /* istanbul ignore next */ []));
1295
+ dataCell2Class = input('w-20 text-start text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "dataCell2Class" }] : /* istanbul ignore next */ []));
1296
+ dataCell3Class = input('w-45 text-start text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "dataCell3Class" }] : /* istanbul ignore next */ []));
1297
+ openSalaryTransferPopupChange = output();
1298
+ visibleSalaryTransferPopupState = signal(false, ...(ngDevMode ? [{ debugName: "visibleSalaryTransferPopupState" }] : /* istanbul ignore next */ []));
1299
+ commonMethods = inject(CommonMethods);
1300
+ constructor() {
1301
+ effect(() => {
1302
+ this.visibleSalaryTransferPopupState.set(this.visibleSalaryTransferPopup());
1303
+ });
1304
+ }
1305
+ onVisibilityChange(visible) {
1306
+ this.visibleSalaryTransferPopupState.set(visible);
1307
+ this.openSalaryTransferPopupChange.emit(visible);
1308
+ }
1309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SalaryTransferPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1310
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SalaryTransferPopupComponent, isStandalone: true, selector: "payroll-salary-transfer-popup", inputs: { bankInformationDataSource: { classPropertyName: "bankInformationDataSource", publicName: "bankInformationDataSource", isSignal: true, isRequired: false, transformFunction: null }, visibleSalaryTransferPopup: { classPropertyName: "visibleSalaryTransferPopup", publicName: "visibleSalaryTransferPopup", isSignal: true, isRequired: false, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null }, currencyDecimals: { classPropertyName: "currencyDecimals", publicName: "currencyDecimals", isSignal: true, isRequired: false, transformFunction: null }, popupHeight: { classPropertyName: "popupHeight", publicName: "popupHeight", isSignal: true, isRequired: false, transformFunction: null }, popupMaxWidth: { classPropertyName: "popupMaxWidth", publicName: "popupMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, popupMinWidth: { classPropertyName: "popupMinWidth", publicName: "popupMinWidth", isSignal: true, isRequired: false, transformFunction: null }, containerClass: { classPropertyName: "containerClass", publicName: "containerClass", isSignal: true, isRequired: false, transformFunction: null }, headerRowClass: { classPropertyName: "headerRowClass", publicName: "headerRowClass", isSignal: true, isRequired: false, transformFunction: null }, headerCell1Class: { classPropertyName: "headerCell1Class", publicName: "headerCell1Class", isSignal: true, isRequired: false, transformFunction: null }, headerCell2Class: { classPropertyName: "headerCell2Class", publicName: "headerCell2Class", isSignal: true, isRequired: false, transformFunction: null }, headerCell3Class: { classPropertyName: "headerCell3Class", publicName: "headerCell3Class", isSignal: true, isRequired: false, transformFunction: null }, dataRowClass: { classPropertyName: "dataRowClass", publicName: "dataRowClass", isSignal: true, isRequired: false, transformFunction: null }, dataCell1Class: { classPropertyName: "dataCell1Class", publicName: "dataCell1Class", isSignal: true, isRequired: false, transformFunction: null }, dataCell2Class: { classPropertyName: "dataCell2Class", publicName: "dataCell2Class", isSignal: true, isRequired: false, transformFunction: null }, dataCell3Class: { classPropertyName: "dataCell3Class", publicName: "dataCell3Class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openSalaryTransferPopupChange: "openSalaryTransferPopupChange" }, ngImport: i0, template: "<dx-popup\n [title]=\"'SalaryTransferDetails' | PayrollTranslate\"\n [showTitle]=\"true\"\n [visible]=\"visibleSalaryTransferPopupState()\"\n [showCloseButton]=\"true\"\n [height]=\"popupHeight()\"\n [maxWidth]=\"popupMaxWidth()\"\n [minWidth]=\"popupMinWidth()\"\n shadingColor=\"rgba(0,0,0,0.4)\"\n (visibleChange)=\"onVisibilityChange($event)\"\n>\n <div [class]=\"containerClass()\">\n <div [class]=\"headerRowClass()\">\n <div [class]=\"headerCell1Class()\">{{ 'BankName' | PayrollTranslate }}</div>\n <div [class]=\"headerCell2Class()\">{{ 'Amount' | PayrollTranslate }} ({{ currencyCode() }})</div>\n <div [class]=\"headerCell3Class()\">{{ 'IBAN' | PayrollTranslate }} / {{ 'AccountNumber' | PayrollTranslate }}</div>\n </div>\n\n @for (transfer of bankInformationDataSource(); track $index) {\n <div [class]=\"dataRowClass()\">\n <div [class]=\"dataCell1Class()\">{{ transfer.BankBranchName || transfer.BankName }}</div>\n <div [class]=\"dataCell2Class()\">\n {{ commonMethods.currencyDecimalFormat(transfer.TransferAmount, currencyDecimals()) }}\n </div>\n <div [class]=\"dataCell3Class()\">\n {{\n transfer.IBAN\n ? ('IBAN' | PayrollTranslate) + ': ' + transfer.IBAN\n : ('AC' | PayrollTranslate) + ': ' + transfer.BankAccountNumber\n }}\n </div>\n </div>\n }\n </div>\n</dx-popup>\n", dependencies: [{ kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$2.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1311
+ }
1312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SalaryTransferPopupComponent, decorators: [{
1313
+ type: Component,
1314
+ args: [{ selector: 'payroll-salary-transfer-popup', standalone: true, imports: [DxPopupModule, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dx-popup\n [title]=\"'SalaryTransferDetails' | PayrollTranslate\"\n [showTitle]=\"true\"\n [visible]=\"visibleSalaryTransferPopupState()\"\n [showCloseButton]=\"true\"\n [height]=\"popupHeight()\"\n [maxWidth]=\"popupMaxWidth()\"\n [minWidth]=\"popupMinWidth()\"\n shadingColor=\"rgba(0,0,0,0.4)\"\n (visibleChange)=\"onVisibilityChange($event)\"\n>\n <div [class]=\"containerClass()\">\n <div [class]=\"headerRowClass()\">\n <div [class]=\"headerCell1Class()\">{{ 'BankName' | PayrollTranslate }}</div>\n <div [class]=\"headerCell2Class()\">{{ 'Amount' | PayrollTranslate }} ({{ currencyCode() }})</div>\n <div [class]=\"headerCell3Class()\">{{ 'IBAN' | PayrollTranslate }} / {{ 'AccountNumber' | PayrollTranslate }}</div>\n </div>\n\n @for (transfer of bankInformationDataSource(); track $index) {\n <div [class]=\"dataRowClass()\">\n <div [class]=\"dataCell1Class()\">{{ transfer.BankBranchName || transfer.BankName }}</div>\n <div [class]=\"dataCell2Class()\">\n {{ commonMethods.currencyDecimalFormat(transfer.TransferAmount, currencyDecimals()) }}\n </div>\n <div [class]=\"dataCell3Class()\">\n {{\n transfer.IBAN\n ? ('IBAN' | PayrollTranslate) + ': ' + transfer.IBAN\n : ('AC' | PayrollTranslate) + ': ' + transfer.BankAccountNumber\n }}\n </div>\n </div>\n }\n </div>\n</dx-popup>\n" }]
1315
+ }], ctorParameters: () => [], propDecorators: { bankInformationDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "bankInformationDataSource", required: false }] }], visibleSalaryTransferPopup: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleSalaryTransferPopup", required: false }] }], currencyCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyCode", required: false }] }], currencyDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDecimals", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupMaxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMaxWidth", required: false }] }], popupMinWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMinWidth", required: false }] }], containerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "containerClass", required: false }] }], headerRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerRowClass", required: false }] }], headerCell1Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerCell1Class", required: false }] }], headerCell2Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerCell2Class", required: false }] }], headerCell3Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerCell3Class", required: false }] }], dataRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataRowClass", required: false }] }], dataCell1Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataCell1Class", required: false }] }], dataCell2Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataCell2Class", required: false }] }], dataCell3Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataCell3Class", required: false }] }], openSalaryTransferPopupChange: [{ type: i0.Output, args: ["openSalaryTransferPopupChange"] }] } });
1316
+
1317
+ class MyPayslipBankInfoWidgetComponent {
1318
+ bankIcon = input(faUniversity, ...(ngDevMode ? [{ debugName: "bankIcon" }] : /* istanbul ignore next */ []));
1319
+ accountIcon = input(faCreditCard, ...(ngDevMode ? [{ debugName: "accountIcon" }] : /* istanbul ignore next */ []));
1320
+ titleClass = input('fw-medium mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
1321
+ desktopContainerClass = input('d-flex flex-column justify-content-start align-items-start mx-4 my-2', ...(ngDevMode ? [{ debugName: "desktopContainerClass" }] : /* istanbul ignore next */ []));
1322
+ mobileContainerClass = input('d-flex align-items-center justify-content-between w-100', ...(ngDevMode ? [{ debugName: "mobileContainerClass" }] : /* istanbul ignore next */ []));
1323
+ mobileCardClass = input('p-3 h-50 card-shadow rounded-1 mb-3 mt-3 w-90 mh-150 mx-3', ...(ngDevMode ? [{ debugName: "mobileCardClass" }] : /* istanbul ignore next */ []));
1324
+ iconClass = input('fs-16 me-2 text-gray', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
1325
+ rowClass = input('d-flex align-items-center my-1 w-100', ...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
1326
+ labelClass = input('fw-light fs-12 text-light-dark', ...(ngDevMode ? [{ debugName: "labelClass" }] : /* istanbul ignore next */ []));
1327
+ valueClass = input('fw-400 ms-1 text-light-dark fs-12', ...(ngDevMode ? [{ debugName: "valueClass" }] : /* istanbul ignore next */ []));
1328
+ actionClass = input('mt-2 fs-12 text-primary fw-400 cursor-pointer text-decoration-underline', ...(ngDevMode ? [{ debugName: "actionClass" }] : /* istanbul ignore next */ []));
1329
+ exploreDetailsKey = input('ExploreSalaryTransferDetails', ...(ngDevMode ? [{ debugName: "exploreDetailsKey" }] : /* istanbul ignore next */ []));
1330
+ popupHeight = input('auto', ...(ngDevMode ? [{ debugName: "popupHeight" }] : /* istanbul ignore next */ []));
1331
+ popupMaxWidth = input('800px', ...(ngDevMode ? [{ debugName: "popupMaxWidth" }] : /* istanbul ignore next */ []));
1332
+ popupMinWidth = input('auto', ...(ngDevMode ? [{ debugName: "popupMinWidth" }] : /* istanbul ignore next */ []));
1333
+ popupContainerClass = input('', ...(ngDevMode ? [{ debugName: "popupContainerClass" }] : /* istanbul ignore next */ []));
1334
+ popupHeaderRowClass = input('fw-bold text-secondary pb-2 d-flex', ...(ngDevMode ? [{ debugName: "popupHeaderRowClass" }] : /* istanbul ignore next */ []));
1335
+ popupHeaderCell1Class = input('w-35 text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "popupHeaderCell1Class" }] : /* istanbul ignore next */ []));
1336
+ popupHeaderCell2Class = input('w-20 text-start text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "popupHeaderCell2Class" }] : /* istanbul ignore next */ []));
1337
+ popupHeaderCell3Class = input('w-45 text-dark-gray fs-12 fw-400', ...(ngDevMode ? [{ debugName: "popupHeaderCell3Class" }] : /* istanbul ignore next */ []));
1338
+ popupDataRowClass = input('py-2 d-flex', ...(ngDevMode ? [{ debugName: "popupDataRowClass" }] : /* istanbul ignore next */ []));
1339
+ popupDataCell1Class = input('w-35 text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "popupDataCell1Class" }] : /* istanbul ignore next */ []));
1340
+ popupDataCell2Class = input('w-20 text-start text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "popupDataCell2Class" }] : /* istanbul ignore next */ []));
1341
+ popupDataCell3Class = input('w-45 text-start text-dark-gray fs-14 fw-400', ...(ngDevMode ? [{ debugName: "popupDataCell3Class" }] : /* istanbul ignore next */ []));
1342
+ title = input('BankInformation', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1343
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
1344
+ payMonth = input('', ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
1345
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
1346
+ errorOccurred = output();
1347
+ isLoadingChanged = output();
1348
+ isPayslipAvailable = input(true, ...(ngDevMode ? [{ debugName: "isPayslipAvailable" }] : /* istanbul ignore next */ []));
1349
+ bankInformation = signal(null, ...(ngDevMode ? [{ debugName: "bankInformation" }] : /* istanbul ignore next */ []));
1350
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
1351
+ visibleSalaryTransferPopup = signal(false, ...(ngDevMode ? [{ debugName: "visibleSalaryTransferPopup" }] : /* istanbul ignore next */ []));
1352
+ exploreDetailsClick = output();
1353
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
1354
+ constructor() {
1355
+ effect(() => {
1356
+ if (this.baseUrl() && this.payMonth()) {
1357
+ this.loadBankInformation();
1358
+ }
1359
+ });
1360
+ }
1361
+ loadBankInformation() {
1362
+ if (!this.isPayslipAvailable()) {
1363
+ this.bankInformation.set([]);
1364
+ return;
1365
+ }
1366
+ this.isLoading.set(true);
1367
+ this.isLoadingChanged.emit(true);
1368
+ this.payrollWidgetsService
1369
+ .getPayslipBankInformation(this.baseUrl(), this.payMonth())
1370
+ .pipe(finalize(() => {
1371
+ this.isLoading.set(false);
1372
+ this.isLoadingChanged.emit(false);
1373
+ }))
1374
+ .subscribe({
1375
+ next: res => {
1376
+ this.bankInformation.set(res?.ResponseData ?? []);
1377
+ },
1378
+ error: (error) => {
1379
+ this.isLoadingChanged.emit(false);
1380
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1381
+ this.bankInformation.set([]);
1382
+ },
1383
+ });
1384
+ }
1385
+ mainBank = computed(() => this.bankInformation()?.find(bank => bank.IsMainBank) ?? this.bankInformation()?.[0] ?? null, ...(ngDevMode ? [{ debugName: "mainBank" }] : /* istanbul ignore next */ []));
1386
+ display(value) {
1387
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1388
+ return '-';
1389
+ }
1390
+ return `${value}`;
1391
+ }
1392
+ accountLabel(bank) {
1393
+ return bank?.BankAccountNumber != null ? (bank?.IBAN != null ? 'IBAN' : 'AC') : 'IBAN';
1394
+ }
1395
+ bankItems = computed(() => {
1396
+ const bank = this.mainBank();
1397
+ return [
1398
+ {
1399
+ key: 'Bank',
1400
+ label: 'Bank',
1401
+ icon: this.bankIcon(),
1402
+ value: this.display(bank?.BankName),
1403
+ },
1404
+ {
1405
+ key: this.accountLabel(bank),
1406
+ label: this.accountLabel(bank),
1407
+ icon: this.accountIcon(),
1408
+ value: this.display(bank?.IBAN || bank?.BankAccountNumber),
1409
+ },
1410
+ ];
1411
+ }, ...(ngDevMode ? [{ debugName: "bankItems" }] : /* istanbul ignore next */ []));
1412
+ showExploreLink = computed(() => !!this.bankInformation()?.length && this.isPayslipAvailable(), ...(ngDevMode ? [{ debugName: "showExploreLink" }] : /* istanbul ignore next */ []));
1413
+ onExploreDetailsClick() {
1414
+ const hasObservedSubscribers = this.exploreDetailsClick.observed === true;
1415
+ if (hasObservedSubscribers) {
1416
+ this.exploreDetailsClick.emit();
1417
+ return;
1418
+ }
1419
+ this.visibleSalaryTransferPopup.set(true);
1420
+ }
1421
+ onSalaryTransferVisibilityChanged(visible) {
1422
+ this.visibleSalaryTransferPopup.set(visible);
1423
+ }
1424
+ currencyCode = computed(() => this.mainBank()?.CurrencyCode ?? '', ...(ngDevMode ? [{ debugName: "currencyCode" }] : /* istanbul ignore next */ []));
1425
+ currencyDecimals = computed(() => this.mainBank()?.CurrencyDecimals ?? 2, ...(ngDevMode ? [{ debugName: "currencyDecimals" }] : /* istanbul ignore next */ []));
1426
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipBankInfoWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1427
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipBankInfoWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-bank-info-widget", inputs: { bankIcon: { classPropertyName: "bankIcon", publicName: "bankIcon", isSignal: true, isRequired: false, transformFunction: null }, accountIcon: { classPropertyName: "accountIcon", publicName: "accountIcon", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, desktopContainerClass: { classPropertyName: "desktopContainerClass", publicName: "desktopContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileContainerClass: { classPropertyName: "mobileContainerClass", publicName: "mobileContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileCardClass: { classPropertyName: "mobileCardClass", publicName: "mobileCardClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, valueClass: { classPropertyName: "valueClass", publicName: "valueClass", isSignal: true, isRequired: false, transformFunction: null }, actionClass: { classPropertyName: "actionClass", publicName: "actionClass", isSignal: true, isRequired: false, transformFunction: null }, exploreDetailsKey: { classPropertyName: "exploreDetailsKey", publicName: "exploreDetailsKey", isSignal: true, isRequired: false, transformFunction: null }, popupHeight: { classPropertyName: "popupHeight", publicName: "popupHeight", isSignal: true, isRequired: false, transformFunction: null }, popupMaxWidth: { classPropertyName: "popupMaxWidth", publicName: "popupMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, popupMinWidth: { classPropertyName: "popupMinWidth", publicName: "popupMinWidth", isSignal: true, isRequired: false, transformFunction: null }, popupContainerClass: { classPropertyName: "popupContainerClass", publicName: "popupContainerClass", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderRowClass: { classPropertyName: "popupHeaderRowClass", publicName: "popupHeaderRowClass", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderCell1Class: { classPropertyName: "popupHeaderCell1Class", publicName: "popupHeaderCell1Class", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderCell2Class: { classPropertyName: "popupHeaderCell2Class", publicName: "popupHeaderCell2Class", isSignal: true, isRequired: false, transformFunction: null }, popupHeaderCell3Class: { classPropertyName: "popupHeaderCell3Class", publicName: "popupHeaderCell3Class", isSignal: true, isRequired: false, transformFunction: null }, popupDataRowClass: { classPropertyName: "popupDataRowClass", publicName: "popupDataRowClass", isSignal: true, isRequired: false, transformFunction: null }, popupDataCell1Class: { classPropertyName: "popupDataCell1Class", publicName: "popupDataCell1Class", isSignal: true, isRequired: false, transformFunction: null }, popupDataCell2Class: { classPropertyName: "popupDataCell2Class", publicName: "popupDataCell2Class", isSignal: true, isRequired: false, transformFunction: null }, popupDataCell3Class: { classPropertyName: "popupDataCell3Class", publicName: "popupDataCell3Class", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, isPayslipAvailable: { classPropertyName: "isPayslipAvailable", publicName: "isPayslipAvailable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { errorOccurred: "errorOccurred", isLoadingChanged: "isLoadingChanged", exploreDetailsClick: "exploreDetailsClick" }, ngImport: i0, template: "<ng-template #bankTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #bankRowsTemplate>\n @for (item of bankItems(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"item.icon\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">{{ item.value }}</span>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #bankExploreLinkTemplate>\n @if (showExploreLink()) {\n <a href=\"javascript:void(0)\" [class]=\"actionClass()\" (click)=\"onExploreDetailsClick()\">\n {{ exploreDetailsKey() | PayrollTranslate }}\n </a>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"bankTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankExploreLinkTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"bankTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankExploreLinkTemplate\" />\n </div>\n </div>\n}\n\n<payroll-salary-transfer-popup\n [visibleSalaryTransferPopup]=\"visibleSalaryTransferPopup()\"\n [bankInformationDataSource]=\"bankInformation() ?? []\"\n [currencyCode]=\"currencyCode()\"\n [currencyDecimals]=\"currencyDecimals()\"\n [popupHeight]=\"popupHeight()\"\n [popupMaxWidth]=\"popupMaxWidth()\"\n [popupMinWidth]=\"popupMinWidth()\"\n [containerClass]=\"popupContainerClass()\"\n [headerRowClass]=\"popupHeaderRowClass()\"\n [headerCell1Class]=\"popupHeaderCell1Class()\"\n [headerCell2Class]=\"popupHeaderCell2Class()\"\n [headerCell3Class]=\"popupHeaderCell3Class()\"\n [dataRowClass]=\"popupDataRowClass()\"\n [dataCell1Class]=\"popupDataCell1Class()\"\n [dataCell2Class]=\"popupDataCell2Class()\"\n [dataCell3Class]=\"popupDataCell3Class()\"\n (openSalaryTransferPopupChange)=\"onSalaryTransferVisibilityChanged($event)\"\n></payroll-salary-transfer-popup>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "component", type: SalaryTransferPopupComponent, selector: "payroll-salary-transfer-popup", inputs: ["bankInformationDataSource", "visibleSalaryTransferPopup", "currencyCode", "currencyDecimals", "popupHeight", "popupMaxWidth", "popupMinWidth", "containerClass", "headerRowClass", "headerCell1Class", "headerCell2Class", "headerCell3Class", "dataRowClass", "dataCell1Class", "dataCell2Class", "dataCell3Class"], outputs: ["openSalaryTransferPopupChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1428
+ }
1429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipBankInfoWidgetComponent, decorators: [{
1430
+ type: Component,
1431
+ args: [{ selector: 'payroll-my-payslip-bank-info-widget', standalone: true, imports: [CommonModule, FaIconComponent, PayrollTranslatePipe, SalaryTransferPopupComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #bankTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #bankRowsTemplate>\n @for (item of bankItems(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"item.icon\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">{{ item.value }}</span>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #bankExploreLinkTemplate>\n @if (showExploreLink()) {\n <a href=\"javascript:void(0)\" [class]=\"actionClass()\" (click)=\"onExploreDetailsClick()\">\n {{ exploreDetailsKey() | PayrollTranslate }}\n </a>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"bankTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankExploreLinkTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"bankTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"bankExploreLinkTemplate\" />\n </div>\n </div>\n}\n\n<payroll-salary-transfer-popup\n [visibleSalaryTransferPopup]=\"visibleSalaryTransferPopup()\"\n [bankInformationDataSource]=\"bankInformation() ?? []\"\n [currencyCode]=\"currencyCode()\"\n [currencyDecimals]=\"currencyDecimals()\"\n [popupHeight]=\"popupHeight()\"\n [popupMaxWidth]=\"popupMaxWidth()\"\n [popupMinWidth]=\"popupMinWidth()\"\n [containerClass]=\"popupContainerClass()\"\n [headerRowClass]=\"popupHeaderRowClass()\"\n [headerCell1Class]=\"popupHeaderCell1Class()\"\n [headerCell2Class]=\"popupHeaderCell2Class()\"\n [headerCell3Class]=\"popupHeaderCell3Class()\"\n [dataRowClass]=\"popupDataRowClass()\"\n [dataCell1Class]=\"popupDataCell1Class()\"\n [dataCell2Class]=\"popupDataCell2Class()\"\n [dataCell3Class]=\"popupDataCell3Class()\"\n (openSalaryTransferPopupChange)=\"onSalaryTransferVisibilityChanged($event)\"\n></payroll-salary-transfer-popup>\n" }]
1432
+ }], ctorParameters: () => [], propDecorators: { bankIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "bankIcon", required: false }] }], accountIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "accountIcon", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], desktopContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "desktopContainerClass", required: false }] }], mobileContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileContainerClass", required: false }] }], mobileCardClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileCardClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], valueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueClass", required: false }] }], actionClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionClass", required: false }] }], exploreDetailsKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "exploreDetailsKey", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupMaxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMaxWidth", required: false }] }], popupMinWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupMinWidth", required: false }] }], popupContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupContainerClass", required: false }] }], popupHeaderRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderRowClass", required: false }] }], popupHeaderCell1Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderCell1Class", required: false }] }], popupHeaderCell2Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderCell2Class", required: false }] }], popupHeaderCell3Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeaderCell3Class", required: false }] }], popupDataRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupDataRowClass", required: false }] }], popupDataCell1Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupDataCell1Class", required: false }] }], popupDataCell2Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupDataCell2Class", required: false }] }], popupDataCell3Class: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupDataCell3Class", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }], isPayslipAvailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPayslipAvailable", required: false }] }], exploreDetailsClick: [{ type: i0.Output, args: ["exploreDetailsClick"] }] } });
1433
+
1434
+ class MyPayslipVacationBalanceWidgetComponent {
1435
+ vacationIcon = input(faIslandTropical, ...(ngDevMode ? [{ debugName: "vacationIcon" }] : /* istanbul ignore next */ []));
1436
+ titleClass = input('fw-medium mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
1437
+ desktopContainerClass = input('d-flex flex-column justify-content-start align-items-start mx-4 my-2', ...(ngDevMode ? [{ debugName: "desktopContainerClass" }] : /* istanbul ignore next */ []));
1438
+ mobileContainerClass = input('d-flex align-items-center justify-content-center w-100', ...(ngDevMode ? [{ debugName: "mobileContainerClass" }] : /* istanbul ignore next */ []));
1439
+ mobileCardClass = input('p-3 h-50 card-shadow rounded-1 mb-3 mt-3 w-90 mh-150 mx-3', ...(ngDevMode ? [{ debugName: "mobileCardClass" }] : /* istanbul ignore next */ []));
1440
+ iconClass = input('fs-16 me-2 text-gray', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
1441
+ rowClass = input('d-flex align-items-center my-1 w-100', ...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
1442
+ labelClass = input('fw-light fs-12 text-light-dark', ...(ngDevMode ? [{ debugName: "labelClass" }] : /* istanbul ignore next */ []));
1443
+ valueClass = input('fw-400 ms-1 text-light-dark fs-12', ...(ngDevMode ? [{ debugName: "valueClass" }] : /* istanbul ignore next */ []));
1444
+ viewMoreLabel = input('ViewMore', ...(ngDevMode ? [{ debugName: "viewMoreLabel" }] : /* istanbul ignore next */ []));
1445
+ viewLessLabel = input('ViewLess', ...(ngDevMode ? [{ debugName: "viewLessLabel" }] : /* istanbul ignore next */ []));
1446
+ expandIcon = input(faChevronDown, ...(ngDevMode ? [{ debugName: "expandIcon" }] : /* istanbul ignore next */ []));
1447
+ collapseIcon = input(faChevronUp, ...(ngDevMode ? [{ debugName: "collapseIcon" }] : /* istanbul ignore next */ []));
1448
+ actionIconClass = input('fs-10 ms-1', ...(ngDevMode ? [{ debugName: "actionIconClass" }] : /* istanbul ignore next */ []));
1449
+ actionButtonClass = input('mt-2 fs-12 text-primary fw-400 cursor-pointer text-decoration-underline bg-transparent border-0 p-0', ...(ngDevMode ? [{ debugName: "actionButtonClass" }] : /* istanbul ignore next */ []));
1450
+ title = input('VacationBalance', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1451
+ daysLabel = input('Days', ...(ngDevMode ? [{ debugName: "daysLabel" }] : /* istanbul ignore next */ []));
1452
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
1453
+ payMonth = input(null, ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
1454
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
1455
+ isPayslipAvailable = input(true, ...(ngDevMode ? [{ debugName: "isPayslipAvailable" }] : /* istanbul ignore next */ []));
1456
+ isExpanded = signal(false, ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
1457
+ collapsedItemsCount = input(2, ...(ngDevMode ? [{ debugName: "collapsedItemsCount" }] : /* istanbul ignore next */ []));
1458
+ isLoadingChanged = output();
1459
+ errorOccurred = output();
1460
+ vacationBalances = signal(null, ...(ngDevMode ? [{ debugName: "vacationBalances" }] : /* istanbul ignore next */ []));
1461
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
1462
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
1463
+ constructor() {
1464
+ effect(() => {
1465
+ if (this.baseUrl() && this.payMonth()) {
1466
+ this.loadVacationBalances();
1467
+ }
1468
+ });
1469
+ }
1470
+ loadVacationBalances() {
1471
+ const payMonth = this.payMonth();
1472
+ if (!this.isPayslipAvailable() || !payMonth) {
1473
+ this.vacationBalances.set([]);
1474
+ return;
1475
+ }
1476
+ this.isLoading.set(true);
1477
+ this.isLoadingChanged.emit(true);
1478
+ this.payrollWidgetsService
1479
+ .getPayslipVacationBalances(this.baseUrl(), payMonth)
1480
+ .pipe(finalize(() => {
1481
+ this.isLoading.set(false);
1482
+ this.isLoadingChanged.emit(false);
1483
+ }))
1484
+ .subscribe({
1485
+ next: res => {
1486
+ this.vacationBalances.set(res?.ResponseData ?? []);
1487
+ },
1488
+ error: (error) => {
1489
+ this.vacationBalances.set([]);
1490
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1491
+ },
1492
+ });
1493
+ }
1494
+ vacationItems = computed(() => {
1495
+ if ((!this.isPayslipAvailable() || this.isLoading()) && !this.vacationBalances()?.length) {
1496
+ return [
1497
+ {
1498
+ label: this.title(),
1499
+ value: '-',
1500
+ showDays: false,
1501
+ },
1502
+ ];
1503
+ }
1504
+ if (!this.isPayslipAvailable() && !this.vacationBalances()?.length) {
1505
+ return [
1506
+ {
1507
+ label: this.title(),
1508
+ value: '-',
1509
+ showDays: false,
1510
+ },
1511
+ ];
1512
+ }
1513
+ return (this.vacationBalances() ?? []).map(vacationBalance => ({
1514
+ label: this.getVacationTypeName(vacationBalance),
1515
+ value: this.getVacationBalance(vacationBalance.VacationBalance),
1516
+ showDays: this.showDaysLabel(vacationBalance.VacationBalance),
1517
+ }));
1518
+ }, ...(ngDevMode ? [{ debugName: "vacationItems" }] : /* istanbul ignore next */ []));
1519
+ visibleVacationBalances = computed(() => {
1520
+ const balances = this.vacationItems() ?? [];
1521
+ if (this.isExpanded()) {
1522
+ return balances;
1523
+ }
1524
+ return balances.slice(0, this.collapsedItemsCount());
1525
+ }, ...(ngDevMode ? [{ debugName: "visibleVacationBalances" }] : /* istanbul ignore next */ []));
1526
+ showViewMoreButton = computed(() => !!this.vacationBalances() && this.vacationBalances().length > this.collapsedItemsCount(), ...(ngDevMode ? [{ debugName: "showViewMoreButton" }] : /* istanbul ignore next */ []));
1527
+ expandButtonlabel = computed(() => (this.isExpanded() ? this.viewLessLabel() : this.viewMoreLabel()), ...(ngDevMode ? [{ debugName: "expandButtonlabel" }] : /* istanbul ignore next */ []));
1528
+ toggleExpanded() {
1529
+ this.isExpanded.update(value => !value);
1530
+ }
1531
+ getVacationTypeName(vacationBalance) {
1532
+ if (this.isLoading() || !this.isPayslipAvailable())
1533
+ return '-';
1534
+ return vacationBalance.VacationTypeName || '-';
1535
+ }
1536
+ getVacationBalance(value) {
1537
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null)
1538
+ return '-';
1539
+ return value.toFixed(2);
1540
+ }
1541
+ showDaysLabel(value) {
1542
+ const balance = this.getVacationBalance(value);
1543
+ return balance !== '-';
1544
+ }
1545
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipVacationBalanceWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1546
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipVacationBalanceWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-vacation-balance-widget", inputs: { vacationIcon: { classPropertyName: "vacationIcon", publicName: "vacationIcon", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, desktopContainerClass: { classPropertyName: "desktopContainerClass", publicName: "desktopContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileContainerClass: { classPropertyName: "mobileContainerClass", publicName: "mobileContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileCardClass: { classPropertyName: "mobileCardClass", publicName: "mobileCardClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, valueClass: { classPropertyName: "valueClass", publicName: "valueClass", isSignal: true, isRequired: false, transformFunction: null }, viewMoreLabel: { classPropertyName: "viewMoreLabel", publicName: "viewMoreLabel", isSignal: true, isRequired: false, transformFunction: null }, viewLessLabel: { classPropertyName: "viewLessLabel", publicName: "viewLessLabel", isSignal: true, isRequired: false, transformFunction: null }, expandIcon: { classPropertyName: "expandIcon", publicName: "expandIcon", isSignal: true, isRequired: false, transformFunction: null }, collapseIcon: { classPropertyName: "collapseIcon", publicName: "collapseIcon", isSignal: true, isRequired: false, transformFunction: null }, actionIconClass: { classPropertyName: "actionIconClass", publicName: "actionIconClass", isSignal: true, isRequired: false, transformFunction: null }, actionButtonClass: { classPropertyName: "actionButtonClass", publicName: "actionButtonClass", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, daysLabel: { classPropertyName: "daysLabel", publicName: "daysLabel", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, isPayslipAvailable: { classPropertyName: "isPayslipAvailable", publicName: "isPayslipAvailable", isSignal: true, isRequired: false, transformFunction: null }, collapsedItemsCount: { classPropertyName: "collapsedItemsCount", publicName: "collapsedItemsCount", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<ng-template #vacationTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #vacationRowsTemplate>\n @for (vacationBalance of visibleVacationBalances(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"vacationIcon()\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ vacationBalance.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ vacationBalance.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #viewMoreTemplate>\n @if (showViewMoreButton()) {\n <button type=\"button\" [class]=\"actionButtonClass()\" (click)=\"toggleExpanded()\">\n {{ expandButtonlabel() | PayrollTranslate }}\n </button>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"vacationTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"vacationRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"viewMoreTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"vacationTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"vacationRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"viewMoreTemplate\" />\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1547
+ }
1548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipVacationBalanceWidgetComponent, decorators: [{
1549
+ type: Component,
1550
+ args: [{ selector: 'payroll-my-payslip-vacation-balance-widget', standalone: true, imports: [CommonModule, FaIconComponent, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #vacationTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #vacationRowsTemplate>\n @for (vacationBalance of visibleVacationBalances(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"vacationIcon()\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ vacationBalance.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ vacationBalance.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #viewMoreTemplate>\n @if (showViewMoreButton()) {\n <button type=\"button\" [class]=\"actionButtonClass()\" (click)=\"toggleExpanded()\">\n {{ expandButtonlabel() | PayrollTranslate }}\n </button>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"vacationTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"vacationRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"viewMoreTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"vacationTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"vacationRowsTemplate\" />\n <ng-container *ngTemplateOutlet=\"viewMoreTemplate\" />\n </div>\n </div>\n}\n" }]
1551
+ }], ctorParameters: () => [], propDecorators: { vacationIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "vacationIcon", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], desktopContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "desktopContainerClass", required: false }] }], mobileContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileContainerClass", required: false }] }], mobileCardClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileCardClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], valueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueClass", required: false }] }], viewMoreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMoreLabel", required: false }] }], viewLessLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewLessLabel", required: false }] }], expandIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandIcon", required: false }] }], collapseIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseIcon", required: false }] }], actionIconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionIconClass", required: false }] }], actionButtonClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionButtonClass", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], daysLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "daysLabel", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], isPayslipAvailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPayslipAvailable", required: false }] }], collapsedItemsCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedItemsCount", required: false }] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }] } });
1552
+
1553
+ class MyPayslipTicketBalanceWidgetComponent {
1554
+ ticketIcon = input(faUser, ...(ngDevMode ? [{ debugName: "ticketIcon" }] : /* istanbul ignore next */ []));
1555
+ titleClass = input('fw-medium mb-2 table-cell-md', ...(ngDevMode ? [{ debugName: "titleClass" }] : /* istanbul ignore next */ []));
1556
+ desktopContainerClass = input('d-flex flex-column justify-content-start align-items-start mx-4 my-2', ...(ngDevMode ? [{ debugName: "desktopContainerClass" }] : /* istanbul ignore next */ []));
1557
+ mobileCardClass = input('p-3 h-50 card-shadow rounded-1 mb-3 mt-3 w-90 mh-150 mx-3', ...(ngDevMode ? [{ debugName: "mobileCardClass" }] : /* istanbul ignore next */ []));
1558
+ mobileContainerClass = input('d-flex align-items-center justify-content-center w-100', ...(ngDevMode ? [{ debugName: "mobileContainerClass" }] : /* istanbul ignore next */ []));
1559
+ iconClass = input('fs-16 me-2 text-gray', ...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
1560
+ rowClass = input('d-flex align-items-center my-1 w-100', ...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
1561
+ labelClass = input('fw-light fs-12 text-light-dark', ...(ngDevMode ? [{ debugName: "labelClass" }] : /* istanbul ignore next */ []));
1562
+ valueClass = input('fw-400 ms-1 text-light-dark fs-12', ...(ngDevMode ? [{ debugName: "valueClass" }] : /* istanbul ignore next */ []));
1563
+ title = input('TicketBalance', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
1564
+ tickets = input('Tickets', ...(ngDevMode ? [{ debugName: "tickets" }] : /* istanbul ignore next */ []));
1565
+ baseUrl = input('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
1566
+ payMonth = input(null, ...(ngDevMode ? [{ debugName: "payMonth" }] : /* istanbul ignore next */ []));
1567
+ isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
1568
+ isPayslipAvailable = input(true, ...(ngDevMode ? [{ debugName: "isPayslipAvailable" }] : /* istanbul ignore next */ []));
1569
+ isLoadingChanged = output();
1570
+ errorOccurred = output();
1571
+ ticketBalances = signal(null, ...(ngDevMode ? [{ debugName: "ticketBalances" }] : /* istanbul ignore next */ []));
1572
+ isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
1573
+ payrollWidgetsService = inject(PayrollSelfWidgetsService);
1574
+ constructor() {
1575
+ effect(() => {
1576
+ if (this.baseUrl() && this.payMonth()) {
1577
+ this.loadTicketBalances();
1578
+ }
1579
+ });
1580
+ }
1581
+ loadTicketBalances() {
1582
+ const payMonth = this.payMonth();
1583
+ if (!this.isPayslipAvailable() || !payMonth) {
1584
+ this.ticketBalances.set([]);
1585
+ return;
1586
+ }
1587
+ this.isLoading.set(true);
1588
+ this.isLoadingChanged.emit(true);
1589
+ this.payrollWidgetsService
1590
+ .getPayslipTicketBalances(this.baseUrl(), payMonth)
1591
+ .pipe(finalize(() => {
1592
+ this.isLoading.set(false);
1593
+ this.isLoadingChanged.emit(false);
1594
+ }))
1595
+ .subscribe({
1596
+ next: res => {
1597
+ this.ticketBalances.set(res?.ResponseData ?? []);
1598
+ },
1599
+ error: (error) => {
1600
+ this.errorOccurred.emit(error.error.ResponseData.Errors[0].Message);
1601
+ this.ticketBalances.set([]);
1602
+ },
1603
+ });
1604
+ }
1605
+ ticketItems = computed(() => {
1606
+ if ((!this.isPayslipAvailable() || this.isLoading()) && !this.ticketBalances()?.length) {
1607
+ return [
1608
+ {
1609
+ label: this.tickets(),
1610
+ value: '-',
1611
+ showTickets: false,
1612
+ },
1613
+ ];
1614
+ }
1615
+ return (this.ticketBalances() ?? []).map(ticketBalance => ({
1616
+ label: this.displayLabel(ticketBalance.AgeGroupName || ticketBalance.AgeGroup),
1617
+ value: this.displayNumber(ticketBalance.TicketBalance),
1618
+ showTickets: this.showTicketsLabel(ticketBalance.TicketBalance),
1619
+ }));
1620
+ }, ...(ngDevMode ? [{ debugName: "ticketItems" }] : /* istanbul ignore next */ []));
1621
+ display(value) {
1622
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1623
+ return '-';
1624
+ }
1625
+ return `${value}`;
1626
+ }
1627
+ displayLabel(value) {
1628
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1629
+ return '-';
1630
+ }
1631
+ return `${value}`;
1632
+ }
1633
+ displayNumber(value) {
1634
+ if (this.isLoading() || !this.isPayslipAvailable() || value == null) {
1635
+ return '-';
1636
+ }
1637
+ return Number(value).toFixed(2);
1638
+ }
1639
+ showTicketsLabel(value) {
1640
+ return !this.isLoading() && this.isPayslipAvailable() && value != null;
1641
+ }
1642
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipTicketBalanceWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1643
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: MyPayslipTicketBalanceWidgetComponent, isStandalone: true, selector: "payroll-my-payslip-ticket-balance-widget", inputs: { ticketIcon: { classPropertyName: "ticketIcon", publicName: "ticketIcon", isSignal: true, isRequired: false, transformFunction: null }, titleClass: { classPropertyName: "titleClass", publicName: "titleClass", isSignal: true, isRequired: false, transformFunction: null }, desktopContainerClass: { classPropertyName: "desktopContainerClass", publicName: "desktopContainerClass", isSignal: true, isRequired: false, transformFunction: null }, mobileCardClass: { classPropertyName: "mobileCardClass", publicName: "mobileCardClass", isSignal: true, isRequired: false, transformFunction: null }, mobileContainerClass: { classPropertyName: "mobileContainerClass", publicName: "mobileContainerClass", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, valueClass: { classPropertyName: "valueClass", publicName: "valueClass", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, tickets: { classPropertyName: "tickets", publicName: "tickets", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, payMonth: { classPropertyName: "payMonth", publicName: "payMonth", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, isPayslipAvailable: { classPropertyName: "isPayslipAvailable", publicName: "isPayslipAvailable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isLoadingChanged: "isLoadingChanged", errorOccurred: "errorOccurred" }, ngImport: i0, template: "<ng-template #ticketTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #ticketRowsTemplate>\n @for (item of ticketItems(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"ticketIcon()\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ item.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"ticketTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"ticketRowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"ticketTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"ticketRowsTemplate\" />\n </div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "pipe", type: PayrollTranslatePipe, name: "PayrollTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1644
+ }
1645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MyPayslipTicketBalanceWidgetComponent, decorators: [{
1646
+ type: Component,
1647
+ args: [{ selector: 'payroll-my-payslip-ticket-balance-widget', standalone: true, imports: [CommonModule, FaIconComponent, PayrollTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #ticketTitleTemplate>\n <div [class]=\"titleClass()\">{{ title() | PayrollTranslate }}</div>\n</ng-template>\n\n<ng-template #ticketRowsTemplate>\n @for (item of ticketItems(); track $index) {\n <div [class]=\"rowClass()\">\n <fa-icon [icon]=\"ticketIcon()\" [class]=\"iconClass()\"></fa-icon>\n <div class=\"flex-grow-1\">\n <span [class]=\"labelClass()\">{{ item.label | PayrollTranslate }}:</span>\n <span [class]=\"valueClass()\">\n {{ item.value }}\n </span>\n </div>\n </div>\n }\n</ng-template>\n\n@if (!isMobile()) {\n <div [class]=\"desktopContainerClass()\">\n <ng-container *ngTemplateOutlet=\"ticketTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"ticketRowsTemplate\" />\n </div>\n} @else {\n <div [class]=\"mobileContainerClass()\">\n <div [class]=\"mobileCardClass()\">\n <ng-container *ngTemplateOutlet=\"ticketTitleTemplate\" />\n <ng-container *ngTemplateOutlet=\"ticketRowsTemplate\" />\n </div>\n </div>\n}\n" }]
1648
+ }], ctorParameters: () => [], propDecorators: { ticketIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "ticketIcon", required: false }] }], titleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleClass", required: false }] }], desktopContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "desktopContainerClass", required: false }] }], mobileCardClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileCardClass", required: false }] }], mobileContainerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileContainerClass", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], valueClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueClass", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], tickets: [{ type: i0.Input, args: [{ isSignal: true, alias: "tickets", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], payMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "payMonth", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], isPayslipAvailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPayslipAvailable", required: false }] }], isLoadingChanged: [{ type: i0.Output, args: ["isLoadingChanged"] }], errorOccurred: [{ type: i0.Output, args: ["errorOccurred"] }] } });
1649
+
1650
+ /*
1651
+ * Public API Surface of payroll-ui
1652
+ */
1653
+
1654
+ /**
1655
+ * Generated bundle index. Do not edit.
1656
+ */
1657
+
1658
+ export { MyLoansPopupWidgetComponent, MyPayslipBankInfoWidgetComponent, MyPayslipIndemnityWidgetComponent, MyPayslipJobInfoWidgetComponent, MyPayslipTicketBalanceWidgetComponent, MyPayslipVacationBalanceWidgetComponent, MyPayslipWidgetComponent, PayrollTranslatePipe, PayrollTranslateService };
1659
+ //# sourceMappingURL=osama_amireh-bayan-payroll-widgets-ui.mjs.map