bpm-core 0.0.104 → 0.0.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/esm2022/bpm-core.mjs +5 -0
  2. package/esm2022/lib/app/app.component.mjs +79 -0
  3. package/esm2022/lib/classes/form-validation.mjs +80 -0
  4. package/esm2022/lib/classes/index.mjs +2 -0
  5. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +44 -0
  6. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +23 -0
  7. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +113 -0
  8. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +25 -0
  9. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +27 -0
  10. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +2 -0
  11. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +237 -0
  12. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +255 -0
  13. package/esm2022/lib/components/app-component-sections/index.mjs +9 -0
  14. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +79 -0
  15. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +89 -0
  16. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +158 -0
  17. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +34 -0
  18. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +345 -0
  19. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +45 -0
  20. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +271 -0
  21. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +38 -0
  22. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +164 -0
  23. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +138 -0
  24. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +30 -0
  25. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +29 -0
  26. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +67 -0
  27. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +138 -0
  28. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +234 -0
  29. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +198 -0
  30. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +91 -0
  31. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +185 -0
  32. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +131 -0
  33. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +31 -0
  34. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +175 -0
  35. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +186 -0
  36. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +525 -0
  37. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +33 -0
  38. package/esm2022/lib/components/shared-components/form-field/index.mjs +26 -0
  39. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +76 -0
  40. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +71 -0
  41. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +3 -0
  42. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +2 -0
  43. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +73 -0
  44. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +69 -0
  45. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +61 -0
  46. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +74 -0
  47. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +85 -0
  48. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +52 -0
  49. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +32 -0
  50. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +192 -0
  51. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +191 -0
  52. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +36 -0
  53. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +116 -0
  54. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +39 -0
  55. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +57 -0
  56. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +90 -0
  57. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +43 -0
  58. package/esm2022/lib/components/shared-components/index.mjs +9 -0
  59. package/esm2022/lib/components/shared-components/table/table.component.mjs +243 -0
  60. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +31 -0
  61. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +31 -0
  62. package/esm2022/lib/constants/constants.mjs +149 -0
  63. package/esm2022/lib/constants/index.mjs +2 -0
  64. package/esm2022/lib/directives/ar.directive.mjs +54 -0
  65. package/esm2022/lib/directives/currency.directive.mjs +92 -0
  66. package/esm2022/lib/directives/en.directive.mjs +51 -0
  67. package/esm2022/lib/directives/number.directive.mjs +68 -0
  68. package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
  69. package/esm2022/lib/enums/actions.enum.mjs +22 -0
  70. package/esm2022/lib/enums/colors.enum.mjs +6 -0
  71. package/esm2022/lib/enums/events.enum.mjs +6 -0
  72. package/esm2022/lib/functions/data-to-blob.mjs +12 -0
  73. package/esm2022/lib/functions/encode-password.mjs +14 -0
  74. package/esm2022/lib/functions/handel-error-response.mjs +12 -0
  75. package/esm2022/lib/functions/index.mjs +5 -0
  76. package/esm2022/lib/functions/is-valid-data.mjs +42 -0
  77. package/esm2022/lib/helpers/shared.helper.mjs +26 -0
  78. package/esm2022/lib/hooks/index.mjs +3 -0
  79. package/esm2022/lib/hooks/load-form.mjs +13 -0
  80. package/esm2022/lib/hooks/save-form.mjs +18 -0
  81. package/esm2022/lib/i18n/ar.mjs +200 -0
  82. package/esm2022/lib/i18n/en.mjs +204 -0
  83. package/esm2022/lib/i18n/index.mjs +3 -0
  84. package/esm2022/lib/interfaces/action.interface.mjs +2 -0
  85. package/esm2022/lib/interfaces/api-response.interface.mjs +2 -0
  86. package/esm2022/lib/interfaces/document-file.interface.mjs +2 -0
  87. package/esm2022/lib/interfaces/form-items.interface.mjs +2 -0
  88. package/esm2022/lib/interfaces/form.interface.mjs +150 -0
  89. package/esm2022/lib/interfaces/igate-user.interface.mjs +2 -0
  90. package/esm2022/lib/interfaces/index.mjs +8 -0
  91. package/esm2022/lib/interfaces/lov-list.interface.mjs +2 -0
  92. package/esm2022/lib/interfaces/lov.interface.mjs +2 -0
  93. package/esm2022/lib/interfaces/shared.interface.mjs +2 -0
  94. package/esm2022/lib/pipes/currency.pipe.mjs +66 -0
  95. package/esm2022/lib/pipes/format-as-password.pipe.mjs +19 -0
  96. package/esm2022/lib/pipes/index.mjs +3 -0
  97. package/esm2022/lib/pipes/status-style.pipe.mjs +57 -0
  98. package/esm2022/lib/pipes/translate.pipe.mjs +36 -0
  99. package/esm2022/lib/regex/index.mjs +2 -0
  100. package/esm2022/lib/regex/regex-patterns.mjs +4 -0
  101. package/esm2022/lib/services/action.service.ts.mjs +25 -0
  102. package/esm2022/lib/services/core.service.ts.mjs +527 -0
  103. package/esm2022/lib/services/feedBack.service.mjs +81 -0
  104. package/esm2022/lib/services/i18n.service.mjs +36 -0
  105. package/esm2022/lib/services/index.mjs +6 -0
  106. package/esm2022/lib/services/sidenav.service.mjs +36 -0
  107. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +8 -0
  108. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +90 -0
  109. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +482 -0
  110. package/esm2022/lib/testComponent/services/i18n.service.mjs +39 -0
  111. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +54 -0
  112. package/esm2022/lib/validators/id.validator.mjs +66 -0
  113. package/esm2022/lib/validators/index.mjs +8 -0
  114. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +16 -0
  115. package/esm2022/lib/validators/text.directive.mjs +50 -0
  116. package/esm2022/lib/validators/timer.pipe.mjs +19 -0
  117. package/esm2022/public-api.mjs +19 -0
  118. package/fesm2022/bpm-core.mjs +244 -226
  119. package/fesm2022/bpm-core.mjs.map +1 -1
  120. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +1 -2
  121. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
  122. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  123. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  124. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  125. package/lib/directives/currency.directive.d.ts +1 -0
  126. package/lib/pipes/currency.pipe.d.ts +1 -1
  127. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  128. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  129. package/lib/validators/text.directive.d.ts +1 -1
  130. package/lib/validators/timer.pipe.d.ts +1 -1
  131. package/package.json +4 -2
@@ -0,0 +1,198 @@
1
+ import { MAT_DATE_FORMATS } from '@angular/material/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
+ import { Component, Input, Output, EventEmitter, forwardRef, Inject, } from '@angular/core';
5
+ import { ControlContainer, NgForm, NG_VALUE_ACCESSOR, } from '@angular/forms';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../../services";
8
+ import * as i2 from "@angular/common/http";
9
+ import * as i3 from "@angular/forms";
10
+ import * as i4 from "@angular/material/core";
11
+ import * as i5 from "@angular/material/dialog";
12
+ import * as i6 from "../../../../pipes";
13
+ import * as i7 from "@angular/platform-browser";
14
+ import * as i8 from "../date-picker/date-format";
15
+ const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
16
+ provide: NG_VALUE_ACCESSOR,
17
+ useExisting: forwardRef(() => BaseComponent),
18
+ multi: true,
19
+ };
20
+ export class BaseComponent {
21
+ i18n;
22
+ http;
23
+ fb;
24
+ dateAdapter;
25
+ cdRef;
26
+ dialog;
27
+ dialogRef;
28
+ dialogData;
29
+ mycurrencyPipe;
30
+ dateFormat;
31
+ sanitizer;
32
+ hideOption = false;
33
+ // hideOption: InputSignal<boolean> = input(false);
34
+ type = 'text';
35
+ // hideOption: InputSignal<string> = input('text');
36
+ loading;
37
+ // loading: InputSignal<boolean>;
38
+ field;
39
+ // loafieldding: InputSignal<any>;
40
+ labelTextReadMode;
41
+ // labelTextReadMode: InputSignal<string>
42
+ labelTextWriteMode;
43
+ // labelTextWriteMode: InputSignal<string>
44
+ isReadOnly;
45
+ // isReadOnly: InputSignal<boolean>;
46
+ name;
47
+ // name: InputSignal<string>
48
+ required = true;
49
+ // required: InputSignal<boolean> = input(true);
50
+ mask;
51
+ // mask: InputSignal<string>
52
+ allowedExtensions = '';
53
+ // allowedExtensions: InputSignal<string> = input('');
54
+ link;
55
+ // link: InputSignal<boolean>;
56
+ multiple;
57
+ // multiple: InputSignal<boolean>;
58
+ insideTable;
59
+ // insideTable: InputSignal<boolean>;
60
+ showIfEmpty = false;
61
+ // showIfEmpty: InputSignal<boolean> = input(false);
62
+ showErrorMessage;
63
+ // showErrorMessage: InputSignal<boolean>;
64
+ showHint = false;
65
+ // showHint: InputSignal<boolean> = input(false);
66
+ hint = '';
67
+ // hint: InputSignal<string> = input('');
68
+ errorMessage;
69
+ // errorMessage: InputSignal<string>
70
+ placeholder;
71
+ // placeholder: InputSignal<string>
72
+ maxLength;
73
+ // maxLength: InputSignal<number>
74
+ minLength;
75
+ // minLength: InputSignal<number>
76
+ maxValue;
77
+ // maxValue: InputSignal<string>
78
+ minValue;
79
+ // minValue: InputSignal<string>
80
+ disabled = false;
81
+ // disabled: InputSignal<boolean> = input(false);
82
+ lov;
83
+ // lov: InputSignal<any>
84
+ hasLabel = true;
85
+ // hasLabel: InputSignal<boolean> = input(true);
86
+ section;
87
+ // section: InputSignal<Section>
88
+ controller = new FormControl();
89
+ value;
90
+ emitedValue = new EventEmitter();
91
+ filesize;
92
+ // public options: any;
93
+ randomID = Math.floor(Math.random() * (999999 - 100000)) + 100000;
94
+ constructor(i18n, http, fb, dateAdapter, cdRef, dialog, dialogRef, dialogData, mycurrencyPipe, dateFormat, sanitizer) {
95
+ this.i18n = i18n;
96
+ this.http = http;
97
+ this.fb = fb;
98
+ this.dateAdapter = dateAdapter;
99
+ this.cdRef = cdRef;
100
+ this.dialog = dialog;
101
+ this.dialogRef = dialogRef;
102
+ this.dialogData = dialogData;
103
+ this.mycurrencyPipe = mycurrencyPipe;
104
+ this.dateFormat = dateFormat;
105
+ this.sanitizer = sanitizer;
106
+ this.dateAdapter.setLocale(this.i18n.language);
107
+ this.value = this.field;
108
+ this.emitedValue = new EventEmitter();
109
+ if (this.shouldSetDateFormateInAr) {
110
+ dateFormat.display = { dateInput: 'YYYY/MM/DD' };
111
+ dateFormat.parse = { dateInput: 'YYYY/MM/DD' };
112
+ }
113
+ }
114
+ get shouldSetDateFormateInAr() {
115
+ return this.i18n.language == 'ar';
116
+ }
117
+ resetData() {
118
+ if (!this.isReadOnly) {
119
+ this.field = '';
120
+ this.controller.setValue(this.field);
121
+ this.controller.markAsUntouched();
122
+ this.emitedValue.emit(this.field);
123
+ }
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseComponent, deps: [{ token: i1.CoreI18nService }, { token: i2.HttpClient }, { token: i3.FormBuilder }, { token: i4.DateAdapter }, { token: i0.ChangeDetectorRef }, { token: i5.MatDialog }, { token: i5.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i6.MycurrencyPipe }, { token: MAT_DATE_FORMATS }, { token: i7.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: BaseComponent, isStandalone: true, selector: "app-base-component", inputs: { hideOption: "hideOption", type: "type", loading: "loading", field: "field", labelTextReadMode: "labelTextReadMode", labelTextWriteMode: "labelTextWriteMode", isReadOnly: "isReadOnly", name: "name", required: "required", mask: "mask", allowedExtensions: "allowedExtensions", link: "link", multiple: "multiple", insideTable: "insideTable", showIfEmpty: "showIfEmpty", showErrorMessage: "showErrorMessage", showHint: "showHint", hint: "hint", errorMessage: "errorMessage", placeholder: "placeholder", maxLength: "maxLength", minLength: "minLength", maxValue: "maxValue", minValue: "minValue", disabled: "disabled", lov: "lov", hasLabel: "hasLabel", section: "section", controller: "controller" }, outputs: { emitedValue: "emitedValue" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: '', isInline: true, styles: [""], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseComponent, decorators: [{
129
+ type: Component,
130
+ args: [{ selector: 'app-base-component', template: '', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], standalone: true }]
131
+ }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i2.HttpClient }, { type: i3.FormBuilder }, { type: i4.DateAdapter }, { type: i0.ChangeDetectorRef }, { type: i5.MatDialog }, { type: i5.MatDialogRef }, { type: undefined, decorators: [{
132
+ type: Inject,
133
+ args: [MAT_DIALOG_DATA]
134
+ }] }, { type: i6.MycurrencyPipe }, { type: i8.CustomDateFormat, decorators: [{
135
+ type: Inject,
136
+ args: [MAT_DATE_FORMATS]
137
+ }] }, { type: i7.DomSanitizer }], propDecorators: { hideOption: [{
138
+ type: Input
139
+ }], type: [{
140
+ type: Input
141
+ }], loading: [{
142
+ type: Input
143
+ }], field: [{
144
+ type: Input
145
+ }], labelTextReadMode: [{
146
+ type: Input
147
+ }], labelTextWriteMode: [{
148
+ type: Input
149
+ }], isReadOnly: [{
150
+ type: Input
151
+ }], name: [{
152
+ type: Input
153
+ }], required: [{
154
+ type: Input
155
+ }], mask: [{
156
+ type: Input
157
+ }], allowedExtensions: [{
158
+ type: Input
159
+ }], link: [{
160
+ type: Input
161
+ }], multiple: [{
162
+ type: Input
163
+ }], insideTable: [{
164
+ type: Input
165
+ }], showIfEmpty: [{
166
+ type: Input
167
+ }], showErrorMessage: [{
168
+ type: Input
169
+ }], showHint: [{
170
+ type: Input
171
+ }], hint: [{
172
+ type: Input
173
+ }], errorMessage: [{
174
+ type: Input
175
+ }], placeholder: [{
176
+ type: Input
177
+ }], maxLength: [{
178
+ type: Input
179
+ }], minLength: [{
180
+ type: Input
181
+ }], maxValue: [{
182
+ type: Input
183
+ }], minValue: [{
184
+ type: Input
185
+ }], disabled: [{
186
+ type: Input
187
+ }], lov: [{
188
+ type: Input
189
+ }], hasLabel: [{
190
+ type: Input
191
+ }], section: [{
192
+ type: Input
193
+ }], controller: [{
194
+ type: Input
195
+ }], emitedValue: [{
196
+ type: Output
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvYmFzZS1jb21wb25lbnQvYmFzZS1jb21wb25lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUVWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixpQkFBaUIsR0FFbEIsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVV4QixNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDNUMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLGFBQWE7SUFrRWY7SUFDQTtJQUNBO0lBQ0M7SUFDRDtJQUNBO0lBQ0E7SUFDeUI7SUFDekI7SUFDMEI7SUFDMUI7SUEzRUEsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixtREFBbUQ7SUFDMUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUN2QixtREFBbUQ7SUFDMUMsT0FBTyxDQUFXO0lBQzNCLGlDQUFpQztJQUN4QixLQUFLLENBQU07SUFDbkIsa0NBQWtDO0lBQzFCLGlCQUFpQixDQUFTO0lB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QUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBJbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbENvbnRhaW5lcixcclxuICBOZ0Zvcm0sXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29yZUkxOG5TZXJ2aWNlXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBNeWN1cnJlbmN5UGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVGb3JtYXQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLWZvcm1hdCc7XHJcblxyXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYXNlQ29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZSxcclxufTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmFzZS1jb21wb25lbnQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZVVybHM6IFsnLi9iYXNlLWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm19XSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBoaWRlT3B0aW9uID0gZmFsc2U7XHJcbiAgLy8gaGlkZU9wdGlvbjogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XHJcbiAgQElucHV0KCkgdHlwZSA9ICd0ZXh0JztcclxuICAvLyBoaWRlT3B0aW9uOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJ3RleHQnKTtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICAvLyBsb2FkaW5nOiBJbnB1dFNpZ25hbDxib29sZWFuPjtcclxuICBASW5wdXQoKSBmaWVsZDogYW55O1xyXG4gICAvLyBsb2FmaWVsZGRpbmc6IElucHV0U2lnbmFsPGFueT47XHJcbiAgQElucHV0KCkgbGFiZWxUZXh0UmVhZE1vZGU6IHN0cmluZztcclxuICAvLyBsYWJlbFRleHRSZWFkTW9kZTogSW5wdXRTaWduYWw8c3RyaW5nPlxyXG4gIEBJbnB1dCgpIGxhYmVsVGV4dFdyaXRlTW9kZTogc3RyaW5nO1xyXG4gIC8vIGxhYmVsVGV4dFdyaXRlTW9kZTogSW5wdXRTaWduYWw8c3RyaW5nPlxyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgLy8gaXNSZWFkT25seTogSW5wdXRTaWduYWw8Ym9vbGVhbj47XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIC8vIG5hbWU6IElucHV0U2lnbmFsPHN0cmluZz5cclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcbiAgLy8gcmVxdWlyZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQodHJ1ZSk7XHJcbiAgQElucHV0KCkgbWFzazogc3RyaW5nO1xyXG4gIC8vIG1hc2s6IElucHV0U2lnbmFsPHN0cmluZz5cclxuICBASW5wdXQoKSBhbGxvd2VkRXh0ZW5zaW9ucyA9ICcnO1xyXG4gIC8vIGFsbG93ZWRFeHRlbnNpb25zOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xyXG4gIEBJbnB1dCgpIGxpbms6IGJvb2xlYW47XHJcbiAgLy8gbGluazogSW5wdXRTaWduYWw8Ym9vbGVhbj47XHJcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW47XHJcbiAgLy8gbXVsdGlwbGU6IElucHV0U2lnbmFsPGJvb2xlYW4+O1xyXG4gIEBJbnB1dCgpIGluc2lkZVRhYmxlOiBib29sZWFuO1xyXG4gIC8vIGluc2lkZVRhYmxlOiBJbnB1dFNpZ25hbDxib29sZWFuPjtcclxuICBASW5wdXQoKSBzaG93SWZFbXB0eSA9IGZhbHNlO1xyXG4gIC8vIHNob3dJZkVtcHR5OiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcclxuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBib29sZWFuO1xyXG4gIC8vIHNob3dFcnJvck1lc3NhZ2U6IElucHV0U2lnbmFsPGJvb2xlYW4+O1xyXG4gIEBJbnB1dCgpIHNob3dIaW50ID0gZmFsc2U7XHJcbiAgLy8gc2hvd0hpbnQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xyXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcclxuICAvLyBoaW50OiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIC8vIGVycm9yTWVzc2FnZTogSW5wdXRTaWduYWw8c3RyaW5nPlxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmdcclxuICAvLyBwbGFjZWhvbGRlcjogSW5wdXRTaWduYWw8c3RyaW5nPlxyXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xyXG4gIC8vIG1heExlbmd0aDogSW5wdXRTaWduYWw8bnVtYmVyPlxyXG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xyXG4gIC8vIG1pbkxlbmd0aDogSW5wdXRTaWduYWw8bnVtYmVyPlxyXG4gIEBJbnB1dCgpIG1heFZhbHVlOiBzdHJpbmc7XHJcbiAgLy8gbWF4VmFsdWU6IElucHV0U2lnbmFsPHN0cmluZz5cclxuICBASW5wdXQoKSBtaW5WYWx1ZTogc3RyaW5nO1xyXG4gIC8vIG1pblZhbHVlOiBJbnB1dFNpZ25hbDxzdHJpbmc+XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAvLyBkaXNhYmxlZDogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XHJcbiAgQElucHV0KCkgbG92OiBhbnk7XHJcbiAgLy8gbG92OiBJbnB1dFNpZ25hbDxhbnk+XHJcbiAgQElucHV0KCkgaGFzTGFiZWwgPSB0cnVlO1xyXG4gIC8vIGhhc0xhYmVsOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KHRydWUpO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgLy8gc2VjdGlvbjogSW5wdXRTaWduYWw8U2VjdGlvbj5cclxuICBASW5wdXQoKSBjb250cm9sbGVyOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGVtaXRlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmaWxlc2l6ZTogc3RyaW5nO1xyXG4gIC8vIHB1YmxpYyBvcHRpb25zOiBhbnk7XHJcbiAgcHVibGljIHJhbmRvbUlEOiBudW1iZXIgPVxyXG4gIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICg5OTk5OTkgLSAxMDAwMDApKSArIDEwMDAwMDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPixcclxuICAgIHB1YmxpYyBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGlhbG9nRGF0YTogYW55LFxyXG4gICAgcHVibGljIG15Y3VycmVuY3lQaXBlOiBNeWN1cnJlbmN5UGlwZSxcclxuICAgIEBJbmplY3QoTUFUX0RBVEVfRk9STUFUUykgcHVibGljIGRhdGVGb3JtYXQ6IEN1c3RvbURhdGVGb3JtYXQsXHJcbiAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHtcclxuICAgIHRoaXMuZGF0ZUFkYXB0ZXIuc2V0TG9jYWxlKHRoaXMuaTE4bi5sYW5ndWFnZSk7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5maWVsZDtcclxuICAgIHRoaXMuZW1pdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRTZXREYXRlRm9ybWF0ZUluQXIpIHtcclxuICAgICAgZGF0ZUZvcm1hdC5kaXNwbGF5ID0ge2RhdGVJbnB1dDogJ1lZWVkvTU0vREQnfTtcclxuICAgICAgZGF0ZUZvcm1hdC5wYXJzZSA9IHtkYXRlSW5wdXQ6ICdZWVlZL01NL0REJ307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdWxkU2V0RGF0ZUZvcm1hdGVJbkFyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnYXInO1xyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5maWVsZCA9ICcnO1xyXG4gICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUodGhpcy5maWVsZClcclxuICAgICAgdGhpcy5jb250cm9sbGVyLm1hcmtBc1VudG91Y2hlZCgpXHJcbiAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,91 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';
2
+ import { MatCheckbox } from "@angular/material/checkbox";
3
+ import { FormsModule, NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
5
+ import { TermsConditionsComponent } from '../../terms-conditions/terms-conditions.component';
6
+ import { MatDialog } from '@angular/material/dialog';
7
+ import { Shareds } from '../shared-imports';
8
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/forms";
11
+ import * as i2 from "../form-label/form-label.component";
12
+ import * as i3 from "../validation-errors/validation-errors.component";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "../../../../pipes/translate.pipe";
15
+ export class CheckBoxComponent extends ControlValueAccessorDirective {
16
+ containTerms;
17
+ termsLabel;
18
+ linkText;
19
+ hrefLink;
20
+ link;
21
+ termsBody;
22
+ downloadCheckBox = new EventEmitter();
23
+ destroyRef = inject(DestroyRef);
24
+ dialog = inject(MatDialog);
25
+ ngOnInit() {
26
+ super.ngOnInit();
27
+ if (this.control.value == 'true') {
28
+ this.control.setValue(true);
29
+ }
30
+ this.actionStateService.resetAction$
31
+ .pipe(takeUntilDestroyed(this.destroyRef))
32
+ .subscribe(res => {
33
+ if (!this.isReadOnly && this.control.enabled) {
34
+ this.control.reset();
35
+ }
36
+ });
37
+ }
38
+ openUrl() {
39
+ window.open(this.hrefLink);
40
+ }
41
+ valueChange(event) {
42
+ const checked = event.checked;
43
+ this.control.setValue(checked);
44
+ }
45
+ openTermsPopup() {
46
+ const dialogRef = this.dialog.open(TermsConditionsComponent, {
47
+ data: this.termsBody,
48
+ width: '700px',
49
+ panelClass: ['main-popup'],
50
+ });
51
+ dialogRef.afterClosed().subscribe(() => {
52
+ });
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: CheckBoxComponent, isStandalone: true, selector: "app-checkbox", inputs: { containTerms: "containTerms", termsLabel: "termsLabel", linkText: "linkText", hrefLink: "hrefLink", link: "link", termsBody: "termsBody" }, outputs: { downloadCheckBox: "downloadCheckBox" }, providers: [
56
+ {
57
+ provide: NG_VALUE_ACCESSOR,
58
+ useExisting: forwardRef(() => CheckBoxComponent),
59
+ multi: true,
60
+ },
61
+ ], usesInheritance: true, ngImport: i0, template: "<mat-checkbox\r\n [ngClass]=\"{'mx-3': isReadOnly}\"\r\n class=\"my-3\"\r\n [style.pointerEvents]=\"isReadOnly ? 'none' : 'auto'\"\r\n id=\"{{ name }}{{ randomID }}\"\r\n [name]=\"name\"\r\n (change)=\"valueChange($event)\"\r\n [checked]=\"control.value ? control.value : false\"\r\n [formControl]=\"control\">\r\n\r\n <div class=\"d-flex pt-1\">\r\n @if(label){\r\n <app-form-label class=\"mb-0\" [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n @if(containTerms) {\r\n <span\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1\"\r\n (click)=\"openTermsPopup(); false\">\r\n {{ termsLabel ? termsLabel : 'termsAndConditions' | translate }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if(link) {\r\n <ng-container>\r\n <span> | </span>\r\n <a\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1 d-inline-flex align-items-center gap-1\"\r\n href=\"{{ hrefLink }}\"\r\n target=\"_blank\">\r\n <ds-icon icon=\"external-link\"></ds-icon>\r\n <span class=\"underline\">{{ linkText }}</span>\r\n </a>\r\n </ng-container>\r\n }\r\n</mat-checkbox>\r\n<app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n", styles: [".checkbox{margin-top:10px!important;position:relative;margin-bottom:0!important}.checkbox label{padding-left:30px;font-size:14px;color:#414142}.checkbox input[type=checkbox]{opacity:0}.checkbox input[type=checkbox]+label.checkboxInput{position:absolute;width:25px;height:25px;top:0;left:0;padding-left:0}@media (max-width: 768px){.checkbox input[type=checkbox]+label.checkboxInput{top:8px!important}}.checkbox input[type=checkbox]+label.checkboxInput:before{content:\"\\f096\";font-family:FontAwesome;font-size:25px;display:block;margin-top:-7px;color:#ddd}.checkbox input[type=checkbox]:checked+label.checkboxInput:before{content:\"\\f14a\";color:#da3f7b;background-color:#fff}.mat-mdc-checkbox.mat-accent .mdc-form-field>label{margin:0}.rtlCheckbox.checkbox input[type=checkbox]+label.checkboxInput{left:inherit;right:0;padding-left:0;padding-right:0}.rtlCheckbox.checkbox label{padding-left:0;padding-right:30px}.mat-mdc-checkbox label{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i3.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "ngmodule", type: i1.ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckBoxComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'app-checkbox', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
66
+ MatCheckbox,
67
+ FormsModule,
68
+ ...Shareds
69
+ ], standalone: true, providers: [
70
+ {
71
+ provide: NG_VALUE_ACCESSOR,
72
+ useExisting: forwardRef(() => CheckBoxComponent),
73
+ multi: true,
74
+ },
75
+ ], template: "<mat-checkbox\r\n [ngClass]=\"{'mx-3': isReadOnly}\"\r\n class=\"my-3\"\r\n [style.pointerEvents]=\"isReadOnly ? 'none' : 'auto'\"\r\n id=\"{{ name }}{{ randomID }}\"\r\n [name]=\"name\"\r\n (change)=\"valueChange($event)\"\r\n [checked]=\"control.value ? control.value : false\"\r\n [formControl]=\"control\">\r\n\r\n <div class=\"d-flex pt-1\">\r\n @if(label){\r\n <app-form-label class=\"mb-0\" [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n @if(containTerms) {\r\n <span\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1\"\r\n (click)=\"openTermsPopup(); false\">\r\n {{ termsLabel ? termsLabel : 'termsAndConditions' | translate }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if(link) {\r\n <ng-container>\r\n <span> | </span>\r\n <a\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1 d-inline-flex align-items-center gap-1\"\r\n href=\"{{ hrefLink }}\"\r\n target=\"_blank\">\r\n <ds-icon icon=\"external-link\"></ds-icon>\r\n <span class=\"underline\">{{ linkText }}</span>\r\n </a>\r\n </ng-container>\r\n }\r\n</mat-checkbox>\r\n<app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n", styles: [".checkbox{margin-top:10px!important;position:relative;margin-bottom:0!important}.checkbox label{padding-left:30px;font-size:14px;color:#414142}.checkbox input[type=checkbox]{opacity:0}.checkbox input[type=checkbox]+label.checkboxInput{position:absolute;width:25px;height:25px;top:0;left:0;padding-left:0}@media (max-width: 768px){.checkbox input[type=checkbox]+label.checkboxInput{top:8px!important}}.checkbox input[type=checkbox]+label.checkboxInput:before{content:\"\\f096\";font-family:FontAwesome;font-size:25px;display:block;margin-top:-7px;color:#ddd}.checkbox input[type=checkbox]:checked+label.checkboxInput:before{content:\"\\f14a\";color:#da3f7b;background-color:#fff}.mat-mdc-checkbox.mat-accent .mdc-form-field>label{margin:0}.rtlCheckbox.checkbox input[type=checkbox]+label.checkboxInput{left:inherit;right:0;padding-left:0;padding-right:0}.rtlCheckbox.checkbox label{padding-left:0;padding-right:30px}.mat-mdc-checkbox label{cursor:pointer}\n"] }]
76
+ }], propDecorators: { containTerms: [{
77
+ type: Input
78
+ }], termsLabel: [{
79
+ type: Input
80
+ }], linkText: [{
81
+ type: Input
82
+ }], hrefLink: [{
83
+ type: Input
84
+ }], link: [{
85
+ type: Input
86
+ }], termsBody: [{
87
+ type: Input
88
+ }], downloadCheckBox: [{
89
+ type: Output
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFzQmhFLE1BQU0sT0FBTyxpQkFBd0IsU0FBUSw2QkFBbUM7SUFDckUsWUFBWSxDQUFVO0lBQ3RCLFVBQVUsQ0FBUztJQUNuQixRQUFRLENBQVM7SUFDakIsUUFBUSxDQUFTO0lBQ2pCLElBQUksQ0FBUztJQUNiLFNBQVMsQ0FBTTtJQUNkLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDaEQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xCLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxNQUFNLEVBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QixDQUFDO1FBR0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVk7YUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDcEIsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTdDVSxpQkFBaUI7MkZBQWpCLGlCQUFpQixvUUFUakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNoRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDMUJILCt4Q0FxQ0Escy9CRHRCSSxXQUFXLHVWQUNYLFdBQVc7OzJGQWFGLGlCQUFpQjtrQkFwQjdCLFNBQVM7K0JBQ0UsY0FBYyxXQUdmLENBQUMsc0JBQXNCLENBQUMsV0FDeEI7d0JBQ1AsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLEdBQUcsT0FBTztxQkFDWCxjQUNXLElBQUksYUFDTDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSVEsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRDaGVja2JveH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRlcm1zQ29uZGl0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Rlcm1zLWNvbmRpdGlvbnMvdGVybXMtY29uZGl0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaGFyZWRzIH0gZnJvbSAnLi4vc2hhcmVkLWltcG9ydHMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRDaGVja2JveCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgLi4uU2hhcmVkc1xyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrQm94Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBjb250YWluVGVybXM6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGVybXNMYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxpbmtUZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaHJlZkxpbms6IHN0cmluZztcclxuICBASW5wdXQoKSBsaW5rOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGVybXNCb2R5OiBhbnk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkQ2hlY2tCb3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUgPT0gJ3RydWUnKXtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRydWUpXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aW9uU3RhdGVTZXJ2aWNlLnJlc2V0QWN0aW9uJFxyXG4gICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMuY29udHJvbC5lbmFibGVkKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBvcGVuVXJsKCl7XHJcbiAgICB3aW5kb3cub3Blbih0aGlzLmhyZWZMaW5rKVxyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoY2hlY2tlZClcclxuICB9XHJcblxyXG4gIG9wZW5UZXJtc1BvcHVwKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUZXJtc0NvbmRpdGlvbnNDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogdGhpcy50ZXJtc0JvZHksXHJcbiAgICAgIHdpZHRoOiAnNzAwcHgnLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ21haW4tcG9wdXAnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1jaGVja2JveFxyXG4gIFtuZ0NsYXNzXT1cInsnbXgtMyc6IGlzUmVhZE9ubHl9XCJcclxuICBjbGFzcz1cIm15LTNcIlxyXG4gIFtzdHlsZS5wb2ludGVyRXZlbnRzXT1cImlzUmVhZE9ubHkgPyAnbm9uZScgOiAnYXV0bydcIlxyXG4gIGlkPVwie3sgbmFtZSB9fXt7IHJhbmRvbUlEIH19XCJcclxuICBbbmFtZV09XCJuYW1lXCJcclxuICAoY2hhbmdlKT1cInZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gIFtjaGVja2VkXT1cImNvbnRyb2wudmFsdWUgPyBjb250cm9sLnZhbHVlIDogZmFsc2VcIlxyXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcHQtMVwiPlxyXG4gICAgQGlmKGxhYmVsKXtcclxuICAgICAgPGFwcC1mb3JtLWxhYmVsIGNsYXNzPVwibWItMFwiIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCJyZXF1aXJlZCB8fCBtYW5kYXRvcnkgPyBmYWxzZSA6IHRydWVcIiBbdG9vbHRpcF09XCJ0b29sdGlwXCI+PC9hcHAtZm9ybS1sYWJlbD5cclxuICAgIH1cclxuICAgIEBpZihjb250YWluVGVybXMpIHtcclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImZzLTEyIGZ3LWJvbGQgZmMtY29yYWwgY3Vyc29yLXBvaW50ZXIgbXgtMVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5UZXJtc1BvcHVwKCk7IGZhbHNlXCI+XHJcbiAgICAgICAge3sgdGVybXNMYWJlbCA/IHRlcm1zTGFiZWwgOiAndGVybXNBbmRDb25kaXRpb25zJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIEBpZihsaW5rKSB7XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8c3Bhbj4gfCA8L3NwYW4+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgY2xhc3M9XCJmcy0xMiBmdy1ib2xkIGZjLWNvcmFsIGN1cnNvci1wb2ludGVyIG14LTEgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgIGhyZWY9XCJ7eyBocmVmTGluayB9fVwiXHJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cImV4dGVybmFsLWxpbmtcIj48L2RzLWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bmRlcmxpbmVcIj57eyBsaW5rVGV4dCB9fTwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG48L21hdC1jaGVja2JveD5cclxuPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbiJdfQ==
@@ -0,0 +1,185 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { FormControl, FormControlName, FormGroupDirective, NgControl, Validators, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services";
5
+ import * as i2 from "ngx-toastr";
6
+ import * as i3 from "@angular/platform-browser";
7
+ import * as i4 from "@angular/forms";
8
+ export class ControlValueAccessorDirective {
9
+ injector;
10
+ i18n;
11
+ toasterService;
12
+ coreService;
13
+ sanitizer;
14
+ fb;
15
+ actionStateService;
16
+ tooltip;
17
+ isReadOnly;
18
+ hint = '';
19
+ loading;
20
+ placeholder;
21
+ type;
22
+ showErrorMessage;
23
+ showHint;
24
+ showIfEmpty;
25
+ insideTable;
26
+ mask;
27
+ label;
28
+ matSuffix;
29
+ hasTooltip = false;
30
+ name;
31
+ randomID;
32
+ multiple = false;
33
+ searchControl = new FormControl();
34
+ toggleButtonControl = new FormControl();
35
+ employeeSearchControl = new FormControl();
36
+ telephoneControl = new FormControl();
37
+ attachments = [];
38
+ startDateControl = new FormControl();
39
+ endDateControl = new FormControl();
40
+ Validators = Validators;
41
+ minDateValue;
42
+ maxDateValue;
43
+ maxDate;
44
+ // @ViewChild('default')
45
+ datepickerObj;
46
+ minDate;
47
+ customMaxDate;
48
+ customMinDate;
49
+ value;
50
+ control;
51
+ required; //hide optional label and add required validator from angular side
52
+ mandatory; //only hide optional label
53
+ maxLength;
54
+ isDisabled = false;
55
+ constructor(injector, i18n, toasterService, coreService, sanitizer, fb, actionStateService) {
56
+ this.injector = injector;
57
+ this.i18n = i18n;
58
+ this.toasterService = toasterService;
59
+ this.coreService = coreService;
60
+ this.sanitizer = sanitizer;
61
+ this.fb = fb;
62
+ this.actionStateService = actionStateService;
63
+ }
64
+ ngOnInit() {
65
+ this.setFormControl();
66
+ }
67
+ setFormControl() {
68
+ try {
69
+ const formControl = this.injector.get(NgControl);
70
+ switch (formControl.constructor) {
71
+ case FormControlName:
72
+ this.control = this.injector
73
+ .get(FormGroupDirective)
74
+ .getControl(formControl);
75
+ break;
76
+ default:
77
+ this.control = formControl
78
+ .form;
79
+ break;
80
+ }
81
+ }
82
+ catch (err) {
83
+ this.control = new FormControl();
84
+ }
85
+ this.setFormValidators();
86
+ }
87
+ setFormValidators() {
88
+ // this.required = this.control?.hasValidator(Validators.required) ?? false;
89
+ if (this.required) {
90
+ this.searchControl.setValidators(Validators.required);
91
+ this.employeeSearchControl.setValidators(Validators.required);
92
+ }
93
+ else {
94
+ this.searchControl.clearValidators();
95
+ this.employeeSearchControl.clearValidators();
96
+ }
97
+ this.searchControl.updateValueAndValidity();
98
+ this.employeeSearchControl.updateValueAndValidity();
99
+ }
100
+ writeValue(value) {
101
+ this.value = value;
102
+ if (!this.value) {
103
+ this.startDateControl.reset();
104
+ this.endDateControl.reset();
105
+ this.telephoneControl.reset();
106
+ this.toggleButtonControl.reset();
107
+ this.attachments = [];
108
+ this.searchControl.reset();
109
+ this.employeeSearchControl.reset();
110
+ }
111
+ else {
112
+ this.startDateControl.setValue(this.value?.startDate);
113
+ this.endDateControl.setValue(this.value?.endDate);
114
+ this.toggleButtonControl.setValue(value);
115
+ this.searchControl.setValue(value['value']);
116
+ this.telephoneControl.setValue(value);
117
+ if (this.value['value'] === '') {
118
+ this.control.reset();
119
+ }
120
+ this.employeeSearchControl.setValue(value['personName']);
121
+ }
122
+ }
123
+ registerOnChange(fn) {
124
+ }
125
+ registerOnTouched(fn) {
126
+ }
127
+ setDisabledState(isDisabled) {
128
+ this.isDisabled = isDisabled;
129
+ }
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }, { token: i2.ToastrService }, { token: i1.CoreService }, { token: i3.DomSanitizer }, { token: i4.FormBuilder }, { token: i1.ActionStateService }], target: i0.ɵɵFactoryTarget.Directive });
131
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ControlValueAccessorDirective, selector: "[appControlValueAccessor]", inputs: { tooltip: "tooltip", isReadOnly: "isReadOnly", hint: "hint", loading: "loading", placeholder: "placeholder", type: "type", showErrorMessage: "showErrorMessage", showHint: "showHint", showIfEmpty: "showIfEmpty", insideTable: "insideTable", mask: "mask", label: "label", matSuffix: "matSuffix", hasTooltip: "hasTooltip", name: "name", randomID: "randomID", multiple: "multiple", maxDate: "maxDate", minDate: "minDate", customMaxDate: "customMaxDate", customMinDate: "customMinDate", required: "required", mandatory: "mandatory" }, ngImport: i0 });
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ControlValueAccessorDirective, decorators: [{
134
+ type: Directive,
135
+ args: [{
136
+ selector: '[appControlValueAccessor]',
137
+ }]
138
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }, { type: i2.ToastrService }, { type: i1.CoreService }, { type: i3.DomSanitizer }, { type: i4.FormBuilder }, { type: i1.ActionStateService }], propDecorators: { tooltip: [{
139
+ type: Input
140
+ }], isReadOnly: [{
141
+ type: Input
142
+ }], hint: [{
143
+ type: Input
144
+ }], loading: [{
145
+ type: Input
146
+ }], placeholder: [{
147
+ type: Input
148
+ }], type: [{
149
+ type: Input
150
+ }], showErrorMessage: [{
151
+ type: Input
152
+ }], showHint: [{
153
+ type: Input
154
+ }], showIfEmpty: [{
155
+ type: Input
156
+ }], insideTable: [{
157
+ type: Input
158
+ }], mask: [{
159
+ type: Input
160
+ }], label: [{
161
+ type: Input
162
+ }], matSuffix: [{
163
+ type: Input
164
+ }], hasTooltip: [{
165
+ type: Input
166
+ }], name: [{
167
+ type: Input
168
+ }], randomID: [{
169
+ type: Input
170
+ }], multiple: [{
171
+ type: Input
172
+ }], maxDate: [{
173
+ type: Input
174
+ }], minDate: [{
175
+ type: Input
176
+ }], customMaxDate: [{
177
+ type: Input
178
+ }], customMinDate: [{
179
+ type: Input
180
+ }], required: [{
181
+ type: Input
182
+ }], mandatory: [{
183
+ type: Input
184
+ }] } });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW9DLFdBQVcsRUFBd0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxVQUFVLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBU2pLLE1BQU0sT0FBTyw2QkFBNkI7SUFtRHJCO0lBQTJCO0lBQzNCO0lBQ0E7SUFBaUM7SUFDakM7SUFDQTtJQXBEVixPQUFPLENBQUM7SUFDUixVQUFVLENBQVU7SUFDcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsSUFBSSxDQUFTO0lBQ2IsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixXQUFXLENBQU07SUFDakIsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFVO0lBQ2YsU0FBUyxDQUFVO0lBQ25CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxDQUFVO0lBQ2QsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbkMsYUFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxxQkFBcUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsV0FBVyxH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UUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7dVBBSVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFpQkcsT0FBTztzQkFBZixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtBY3Rpb25TdGF0ZVNlcnZpY2UsIENvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7VG9hc3RyU2VydmljZX0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcENvbnRyb2xWYWx1ZUFjY2Vzc29yXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPlxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KCkgdG9vbHRpcDtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0hpbnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SWZFbXB0eTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluc2lkZVRhYmxlOiBhbnk7XHJcbiAgQElucHV0KCkgbWFzazogYW55O1xyXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1hdFN1ZmZpeDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoYXNUb29sdGlwID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSByYW5kb21JRCE6IHN0cmluZztcclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICB0b2dnbGVCdXR0b25Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW1wbG95ZWVTZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgdGVsZXBob25lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGF0dGFjaG1lbnRzID0gW107XHJcblxyXG5cclxuICBzdGFydERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kRGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBWYWxpZGF0b3JzID0gVmFsaWRhdG9ycztcclxuXHJcblxyXG5cclxuXHJcbiAgbWluRGF0ZVZhbHVlOiBhbnlcclxuICBtYXhEYXRlVmFsdWU6IGFueVxyXG4gIEBJbnB1dCgpIG1heERhdGU6IHN0cmluZztcclxuICAvLyBAVmlld0NoaWxkKCdkZWZhdWx0JylcclxuICBwdWJsaWMgZGF0ZXBpY2tlck9iaiE6IGFueTtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VzdG9tTWF4RGF0ZTogYW55XHJcbiAgQElucHV0KCkgY3VzdG9tTWluRGF0ZTogYW55XHJcblxyXG4gIHZhbHVlOiBhbnk7XHJcbiAgY29udHJvbDogRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47IC8vaGlkZSBvcHRpb25hbCBsYWJlbCBhbmQgYWRkIHJlcXVpcmVkIHZhbGlkYXRvciBmcm9tIGFuZ3VsYXIgc2lkZVxyXG4gIEBJbnB1dCgpIG1hbmRhdG9yeTogYm9vbGVhbjsgLy9vbmx5IGhpZGUgb3B0aW9uYWwgbGFiZWxcclxuICBtYXhMZW5ndGg6IGFueTtcclxuXHJcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBhY3Rpb25TdGF0ZVNlcnZpY2U6IEFjdGlvblN0YXRlU2VydmljZVxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcbiAgICAgIHN3aXRjaCAoZm9ybUNvbnRyb2wuY29uc3RydWN0b3IpIHtcclxuICAgICAgICBjYXNlIEZvcm1Db250cm9sTmFtZTpcclxuICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3JcclxuICAgICAgICAgICAgLmdldChGb3JtR3JvdXBEaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIC5nZXRDb250cm9sKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5jb250cm9sID0gKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sRGlyZWN0aXZlKVxyXG4gICAgICAgICAgICAuZm9ybSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZvcm1WYWxpZGF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtVmFsaWRhdG9ycygpe1xyXG5cclxuICAgIC8vIHRoaXMucmVxdWlyZWQgPSB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKXtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfVxyXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYoIXRoaXMudmFsdWUpe1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy5lbmREYXRlQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICB0aGlzLnRlbGVwaG9uZUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy50b2dnbGVCdXR0b25Db250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnJlc2V0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZT8uc3RhcnREYXRlKTtcclxuICAgICAgdGhpcy5lbmREYXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlPy5lbmREYXRlKTtcclxuICAgICAgdGhpcy50b2dnbGVCdXR0b25Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlWyd2YWx1ZSddKTtcclxuICAgICAgdGhpcy50ZWxlcGhvbmVDb250cm9sLnNldFZhbHVlKHZhbHVlKVxyXG4gICAgICBpZih0aGlzLnZhbHVlWyd2YWx1ZSddID09PSAnJyl7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnJlc2V0KClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtcGxveWVlU2VhcmNoQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVsncGVyc29uTmFtZSddKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbDogVHlwZSB8IG51bGwpID0+IFR5cGUpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gVHlwZSk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIl19