bpm-core 0.0.103 → 0.0.104

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 (130) hide show
  1. package/fesm2022/bpm-core.mjs +226 -229
  2. package/fesm2022/bpm-core.mjs.map +1 -1
  3. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +2 -1
  4. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
  5. package/lib/components/shared-components/form-field/shared-imports.d.ts +1 -1
  6. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  7. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  8. package/lib/pipes/currency.pipe.d.ts +1 -1
  9. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  10. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  11. package/lib/validators/text.directive.d.ts +1 -1
  12. package/lib/validators/timer.pipe.d.ts +1 -1
  13. package/package.json +2 -4
  14. package/esm2022/bpm-core.mjs +0 -5
  15. package/esm2022/lib/app/app.component.mjs +0 -79
  16. package/esm2022/lib/classes/form-validation.mjs +0 -80
  17. package/esm2022/lib/classes/index.mjs +0 -2
  18. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +0 -44
  19. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +0 -23
  20. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +0 -113
  21. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +0 -25
  22. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +0 -27
  23. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +0 -2
  24. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +0 -237
  25. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +0 -255
  26. package/esm2022/lib/components/app-component-sections/index.mjs +0 -9
  27. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +0 -79
  28. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +0 -89
  29. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +0 -158
  30. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +0 -34
  31. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +0 -345
  32. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +0 -45
  33. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +0 -271
  34. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +0 -38
  35. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +0 -164
  36. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +0 -138
  37. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -30
  38. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +0 -29
  39. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +0 -67
  40. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +0 -138
  41. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +0 -234
  42. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +0 -198
  43. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +0 -91
  44. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +0 -185
  45. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +0 -131
  46. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +0 -31
  47. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +0 -175
  48. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +0 -186
  49. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +0 -525
  50. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +0 -33
  51. package/esm2022/lib/components/shared-components/form-field/index.mjs +0 -26
  52. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +0 -76
  53. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +0 -71
  54. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +0 -3
  55. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +0 -2
  56. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +0 -73
  57. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +0 -69
  58. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +0 -61
  59. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +0 -74
  60. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +0 -85
  61. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +0 -52
  62. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +0 -32
  63. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +0 -192
  64. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +0 -191
  65. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +0 -36
  66. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +0 -116
  67. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +0 -39
  68. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +0 -57
  69. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +0 -90
  70. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +0 -43
  71. package/esm2022/lib/components/shared-components/index.mjs +0 -9
  72. package/esm2022/lib/components/shared-components/table/table.component.mjs +0 -243
  73. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +0 -31
  74. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +0 -31
  75. package/esm2022/lib/constants/constants.mjs +0 -149
  76. package/esm2022/lib/constants/index.mjs +0 -2
  77. package/esm2022/lib/directives/ar.directive.mjs +0 -54
  78. package/esm2022/lib/directives/currency.directive.mjs +0 -77
  79. package/esm2022/lib/directives/en.directive.mjs +0 -51
  80. package/esm2022/lib/directives/number.directive.mjs +0 -68
  81. package/esm2022/lib/directives/skip-location.directive.mjs +0 -28
  82. package/esm2022/lib/enums/actions.enum.mjs +0 -22
  83. package/esm2022/lib/enums/colors.enum.mjs +0 -6
  84. package/esm2022/lib/enums/events.enum.mjs +0 -6
  85. package/esm2022/lib/functions/data-to-blob.mjs +0 -12
  86. package/esm2022/lib/functions/encode-password.mjs +0 -14
  87. package/esm2022/lib/functions/handel-error-response.mjs +0 -12
  88. package/esm2022/lib/functions/index.mjs +0 -5
  89. package/esm2022/lib/functions/is-valid-data.mjs +0 -42
  90. package/esm2022/lib/helpers/shared.helper.mjs +0 -26
  91. package/esm2022/lib/hooks/index.mjs +0 -3
  92. package/esm2022/lib/hooks/load-form.mjs +0 -13
  93. package/esm2022/lib/hooks/save-form.mjs +0 -18
  94. package/esm2022/lib/i18n/ar.mjs +0 -200
  95. package/esm2022/lib/i18n/en.mjs +0 -204
  96. package/esm2022/lib/i18n/index.mjs +0 -3
  97. package/esm2022/lib/interfaces/action.interface.mjs +0 -2
  98. package/esm2022/lib/interfaces/api-response.interface.mjs +0 -2
  99. package/esm2022/lib/interfaces/document-file.interface.mjs +0 -2
  100. package/esm2022/lib/interfaces/form-items.interface.mjs +0 -2
  101. package/esm2022/lib/interfaces/form.interface.mjs +0 -150
  102. package/esm2022/lib/interfaces/igate-user.interface.mjs +0 -2
  103. package/esm2022/lib/interfaces/index.mjs +0 -8
  104. package/esm2022/lib/interfaces/lov-list.interface.mjs +0 -2
  105. package/esm2022/lib/interfaces/lov.interface.mjs +0 -2
  106. package/esm2022/lib/interfaces/shared.interface.mjs +0 -2
  107. package/esm2022/lib/pipes/currency.pipe.mjs +0 -66
  108. package/esm2022/lib/pipes/format-as-password.pipe.mjs +0 -19
  109. package/esm2022/lib/pipes/index.mjs +0 -3
  110. package/esm2022/lib/pipes/status-style.pipe.mjs +0 -57
  111. package/esm2022/lib/pipes/translate.pipe.mjs +0 -36
  112. package/esm2022/lib/regex/index.mjs +0 -2
  113. package/esm2022/lib/regex/regex-patterns.mjs +0 -4
  114. package/esm2022/lib/services/action.service.ts.mjs +0 -25
  115. package/esm2022/lib/services/core.service.ts.mjs +0 -527
  116. package/esm2022/lib/services/feedBack.service.mjs +0 -81
  117. package/esm2022/lib/services/i18n.service.mjs +0 -36
  118. package/esm2022/lib/services/index.mjs +0 -6
  119. package/esm2022/lib/services/sidenav.service.mjs +0 -36
  120. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +0 -8
  121. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +0 -90
  122. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +0 -482
  123. package/esm2022/lib/testComponent/services/i18n.service.mjs +0 -39
  124. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +0 -54
  125. package/esm2022/lib/validators/id.validator.mjs +0 -66
  126. package/esm2022/lib/validators/index.mjs +0 -8
  127. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +0 -16
  128. package/esm2022/lib/validators/text.directive.mjs +0 -50
  129. package/esm2022/lib/validators/timer.pipe.mjs +0 -19
  130. package/esm2022/public-api.mjs +0 -19
@@ -1,345 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { MatMenuModule } from "@angular/material/menu";
4
- import { MatDialogModule } from "@angular/material/dialog";
5
- import { FormControl, ReactiveFormsModule, Validators } from "@angular/forms";
6
- import { MatButtonToggleModule } from "@angular/material/button-toggle";
7
- import { RouterModule } from "@angular/router";
8
- import { TranslateModule } from "@ngx-translate/core";
9
- import { StatusStylePipe } from "../../../pipes/status-style.pipe";
10
- import { CdkConnectedOverlay, CdkOverlayOrigin } from "@angular/cdk/overlay";
11
- import { CustomSearchableComponent } from "../../shared-components";
12
- import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
13
- import { Subject } from "rxjs";
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/material/dialog";
16
- import * as i2 from "../../../services";
17
- import * as i3 from "ngx-toastr";
18
- import * as i4 from "@angular/forms";
19
- import * as i5 from "@angular/common";
20
- import * as i6 from "@angular/material/button-toggle";
21
- export class PreviousRequestsComponent {
22
- dialog;
23
- sidenavService;
24
- coreService;
25
- toasterService;
26
- i18n;
27
- fb;
28
- cd;
29
- previousRequests = [];
30
- destroyRef = inject(DestroyRef);
31
- loading;
32
- filterFormGroup;
33
- errorMessage;
34
- isOpen = false;
35
- monthsOptions = [
36
- { key: '1', value: '1' },
37
- { key: '2', value: '2' },
38
- { key: '3', value: '3' },
39
- { key: '4', value: '4' },
40
- { key: '5', value: '5' },
41
- { key: '6', value: '6' },
42
- { key: '7', value: '7' },
43
- { key: '8', value: '8' },
44
- { key: '9', value: '9' },
45
- { key: '10', value: '10' },
46
- { key: '11', value: '11' },
47
- { key: '12', value: '12' }
48
- ];
49
- yearsOptions = [
50
- { key: new Date().getFullYear(), value: new Date().getFullYear() },
51
- { key: new Date().getFullYear() - 1, value: new Date().getFullYear() - 1 },
52
- { key: new Date().getFullYear() - 2, value: new Date().getFullYear() - 2 },
53
- { key: new Date().getFullYear() - 3, value: new Date().getFullYear() - 3 }
54
- ];
55
- statuses = [];
56
- searchData = {
57
- year: null,
58
- month: null
59
- };
60
- constructor(dialog, sidenavService, coreService, toasterService, i18n, fb, cd) {
61
- this.dialog = dialog;
62
- this.sidenavService = sidenavService;
63
- this.coreService = coreService;
64
- this.toasterService = toasterService;
65
- this.i18n = i18n;
66
- this.fb = fb;
67
- this.cd = cd;
68
- }
69
- /**
70
- * Initializes the component on initialization.
71
- * It creates a form and sets the available statuses based on the current language.
72
- *
73
- * @return {void}
74
- */
75
- ngOnInit() {
76
- this.createForm();
77
- this.statuses = [
78
- { key: "APPROVED", value: this.i18n.language == 'en' ? "Approve" : "موافقة" },
79
- { key: "REJECTED", value: this.i18n.language == 'en' ? "Reject" : "مرفوض" },
80
- { key: "PENDING", value: this.i18n.language == 'en' ? "Pending" : "معلق" }
81
- ];
82
- }
83
- // variables to manage subscription
84
- ngUnsubscribe = new Subject();
85
- // new helper methods for form controls
86
- /**
87
- * Generates form controls for the current month and year.
88
- *
89
- * @return {object} An object containing form controls for the current month and year.
90
- * - month: FormControl for the current month with Validators required
91
- * - year: FormControl for the current year with Validators required
92
- */
93
- currentDateControl() {
94
- const date = new Date();
95
- const month = date.getUTCMonth() + 1;
96
- const year = date.getFullYear();
97
- return {
98
- month: new FormControl({ key: month, value: month }, Validators.required),
99
- year: new FormControl({ key: year, value: year }, Validators.required),
100
- };
101
- }
102
- /**
103
- * Initializes a form group for filtering data.
104
- * It creates form controls for the current date and status.
105
- * Also sets up a subscription to listen for changes in the status control.
106
- *
107
- * @return {void}
108
- */
109
- createForm() {
110
- this.filterFormGroup = this.fb.group({
111
- ...this.currentDateControl(),
112
- status: new FormControl('', Validators.required)
113
- });
114
- this.filterFormGroup.get('status').valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {
115
- this.filterStatus();
116
- });
117
- }
118
- /**
119
- * Perform initialization after Angular has fully initialized a component's view.
120
- *
121
- * @return {void}
122
- */
123
- ngAfterViewInit() {
124
- if (this.coreService.historyDataLoaded) {
125
- this.previousRequests = this.coreService.historyData;
126
- }
127
- else {
128
- this.getRequests();
129
- }
130
- this.cd.detectChanges();
131
- }
132
- /**
133
- * Clear all filters and reset the form group to its initial state.
134
- * Sets the month and year filters to the current date's month and year respectively.
135
- * Sets the status filter to an empty string.
136
- * Toggles the isOpen property and triggers the filterStatus method.
137
- *
138
- * @return {void}
139
- */
140
- clearFilters() {
141
- this.filterFormGroup.reset();
142
- this.filterFormGroup.get('month').setValue({ key: new Date().getUTCMonth() + 1, value: new Date().getUTCMonth() + 1 });
143
- this.filterFormGroup.get('year').setValue({ key: new Date().getFullYear(), value: new Date().getFullYear() + 1 });
144
- this.filterFormGroup.get('status').setValue('');
145
- this.isOpen = !this.isOpen;
146
- this.filterStatus();
147
- }
148
- /**
149
- * Toggles the isOpen property and triggers the getRequests() method.
150
- *
151
- * @return {void}
152
- */
153
- applyFilters() {
154
- this.isOpen = !this.isOpen;
155
- this.getRequests();
156
- }
157
- /**
158
- * Retrieves request data based on form values.
159
- *
160
- * @return {void}
161
- */
162
- getRequests() {
163
- const formValues = this.getFormValues();
164
- if (this.areFormValuesEqual(this.searchData, formValues)) {
165
- this.filterStatus();
166
- }
167
- else {
168
- this.updateSearchData(formValues);
169
- this.requestCoreData();
170
- }
171
- }
172
- /**
173
- * Retrieves the form values including the year and month.
174
- *
175
- * @return {Object} Returns an object containing the year and month values.
176
- */
177
- getFormValues() {
178
- return {
179
- year: this.getYearValue(),
180
- month: this.getMonthValue(),
181
- };
182
- }
183
- /**
184
- * Retrieves the selected year value from the filter form group.
185
- *
186
- * @return The selected year value as a number.
187
- */
188
- getYearValue() {
189
- return this.filterFormGroup.get('year').value?.key;
190
- }
191
- /**
192
- * Retrieves the month value from the filter form group.
193
- *
194
- * @return {number} The month value retrieved from the form group.
195
- */
196
- getMonthValue() {
197
- return this.filterFormGroup.get('month').value?.key;
198
- }
199
- /**
200
- * Checks if the year and month values of two form objects are equal.
201
- *
202
- * @param {Object} first - The first form object to compare.
203
- * @param {Object} second - The second form object to compare.
204
- * @returns {boolean} - true if the year and month values are equal, otherwise false.
205
- */
206
- areFormValuesEqual(first, second) {
207
- return first.year == second.year && first.month == second.month;
208
- }
209
- /**
210
- * Update the search data with the provided data.
211
- *
212
- * @param {Object} data - The new search data to update.
213
- *
214
- * @return {void}
215
- */
216
- updateSearchData(data) {
217
- this.searchData = data;
218
- }
219
- /**
220
- * Sends a request to retrieve core data using the Core Service API.
221
- * Initializes loading and requests before making the call.
222
- *
223
- * @return {void}
224
- */
225
- requestCoreData() {
226
- this.initializeLoadingAndRequests();
227
- this.loading = true;
228
- this.coreService.historyData = [];
229
- this.previousRequests = [];
230
- this.coreService.myRequests(this.searchData).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
231
- next: (response) => {
232
- this.coreService.historyData = response.history;
233
- this.previousRequests = this.coreService.historyData;
234
- this.coreService.historyDataLoaded = true;
235
- this.filterStatus();
236
- },
237
- error: (err) => {
238
- this.loading = false;
239
- this.errorMessage = err?.error?.meta?.messages?.['0']?.message;
240
- this.toasterService.error(this.errorMessage);
241
- },
242
- complete: () => {
243
- this.loading = false;
244
- }
245
- });
246
- }
247
- /**
248
- * Initializes loading and requests.
249
- *
250
- * @return {void}
251
- */
252
- initializeLoadingAndRequests() {
253
- this.loading = true;
254
- this.coreService.historyData = [];
255
- this.previousRequests = [];
256
- }
257
- /**
258
- * Handles successful response from a request.
259
- *
260
- * @param {Object} response - The response object containing history data.
261
- * @return {void}
262
- */
263
- handleRequestSuccess(response) {
264
- this.coreService.historyData = response.history;
265
- this.previousRequests = this.coreService.historyData;
266
- this.coreService.historyDataLoaded = true;
267
- this.filterStatus();
268
- }
269
- /**
270
- * Handles the error received from a request
271
- *
272
- * @param {Object} err - The error object containing information about the error
273
- * @return {void}
274
- */
275
- handleRequestError(err) {
276
- this.loading = false;
277
- this.errorMessage = err?.error?.meta?.messages?.['0']?.message;
278
- this.toasterService.error(this.errorMessage);
279
- }
280
- /**
281
- * Filters the previous requests based on the status selected in the filter form.
282
- *
283
- * @return {void}
284
- */
285
- filterStatus() {
286
- const statusKey = this.filterFormGroup.get('status').value?.key;
287
- this.previousRequests = this.coreService.historyData;
288
- let filterData;
289
- if (statusKey) {
290
- filterData = this.previousRequests.filter((request) => request.form?.['formStatus']?.key === statusKey);
291
- }
292
- else {
293
- filterData = this.previousRequests;
294
- }
295
- this.previousRequests = filterData;
296
- }
297
- /**
298
- * Opens a form in a new window based on the provided form ID.
299
- *
300
- * @param {string} formId - The ID of the form to be opened.
301
- * @return {void}
302
- */
303
- viewForm(formId) {
304
- if (formId) {
305
- window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);
306
- }
307
- }
308
- /**
309
- * Closes the side navigation panel.
310
- *
311
- * @return {void}
312
- */
313
- closeSidenav() {
314
- this.sidenavService.publish('close', null);
315
- }
316
- /**
317
- * Emit the value to complete all active subscriptions
318
- *
319
- * @return {void}
320
- */
321
- ngOnDestroy() {
322
- // emit the value to complete all active subscriptions
323
- this.ngUnsubscribe.next();
324
- this.ngUnsubscribe.complete();
325
- }
326
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, deps: [{ token: i1.MatDialog }, { token: i2.SidenavService }, { token: i2.CoreService }, { token: i3.ToastrService }, { token: i2.CoreI18nService }, { token: i4.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
327
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: PreviousRequestsComponent, isStandalone: true, selector: "app-history", ngImport: i0, template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: StatusStylePipe, name: "statusClass" }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CustomSearchableComponent, selector: "app-custom-searchable", inputs: ["options", "disabled", "displayedLabel", "key", "floatLabel", "className"], outputs: ["selectedValue", "isLengthGreaterThan4"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }] });
328
- }
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PreviousRequestsComponent, decorators: [{
330
- type: Component,
331
- args: [{ selector: 'app-history', standalone: true, imports: [
332
- CommonModule,
333
- MatMenuModule,
334
- RouterModule,
335
- TranslateModule,
336
- MatDialogModule,
337
- ReactiveFormsModule,
338
- MatButtonToggleModule,
339
- StatusStylePipe,
340
- CdkOverlayOrigin,
341
- CustomSearchableComponent,
342
- CdkConnectedOverlay
343
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n", styles: [".history-cards-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem 0}.filter-section ::ng-deep .mat-form-field.mat-primary{margin-bottom:0}.filter-section ::ng-deep .select-form-field{--placeholder-fc: var(--dark-gray)}.filter-section ::ng-deep .select-datepicker{--input-width: 200px}table thead{display:none}:host .mat-button-toggle-group{--toggle-bg: var(--white);box-shadow:var(--box-shadow)}:host table{--th-bg: var(--gray);--td-bg: var(--white);--tr-even-bc: var(--white);--tr-odd-bc: var(--white)}ds-button[square]::part(base){--btn-padding: 0}@media (min-width: 768px){.history-sidenav{--sidenav-width: 800px}}:host ::ng-deep .select-filter{--input-height: 35px;--input-width: 120px;--input-border: 1px solid var(--white) !important;--input-border-focuse: 1px solid var(--white);--input-border-active: 1px solid var(--white);box-shadow:var(--box-shadow);--input-bg: var(--white) !important}:host ::ng-deep .decisions-container{max-height:340px;overflow:auto;scroll-behavior:smooth;transition:scroll-behavior .5s ease-in-out;height:340px}@media (max-width: 768px){:host ::ng-deep .decisions-container{max-height:320px;height:320px}}[dir=rtl] :host ::ng-deep .decisions-container--btn.reRequest{transform:scaleX(-1)}@media (min-width: 1200px){:host ::ng-deep .decisions-container--name,:host ::ng-deep .decisions-container--date{max-width:120px}}@media (min-width: 1200px){[dir=rtl] :host ::ng-deep .decisions-container--name{max-width:initial}}:host ::ng-deep .decisions-container--item{display:flex;align-items:center;gap:1rem;min-height:105px;overflow:hidden;position:relative;cursor:pointer}@media (min-width: 991px){:host ::ng-deep .decisions-container--item h4{max-width:calc(100% - 200px);display:inline-block}}:host ::ng-deep .decisions-container--item:not(:last-child){margin-bottom:.75rem}:host ::ng-deep .decisions-container--item ds-status::part(base){--status-width: 60px}:host ::ng-deep .decisions-container--info span{position:relative;display:flex;align-items:center;gap:.5rem}:host ::ng-deep .decisions-container--info span:not(:first-of-type):before{content:\"\";min-width:3px;width:3px;height:3px;border-radius:50%;background-color:var(--black)}@media (min-width: 991px){:host ::ng-deep .decisions-container--status{position:absolute;top:1rem;right:0}}:host ::ng-deep .decisions-title{display:block;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}::ng-deep .main-portal mat-form-field.no-padding .mat-form-field-wrapper{padding-bottom:0!important}::ng-deep ds-button[hidden]{display:none!important}ds-button[circle]::part(base){--btn-color: inherit;--btn-border-color: inherit;--btn-bg-color: inherit;--btn-height: 25px;--btn-min-width: 25px}ds-button[circle][color=red]{--btn-bg-color: var(--red)}ds-button[circle][color=red]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=green]{--btn-bg-color: var(--green)}ds-button[circle][color=green]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=yellow]{--btn-bg-color: var(--yellow)}ds-button[circle][color=yellow]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]{--btn-bg-color: var(--coral)}ds-button[circle][color=coral]:hover{--btn-bg-color: var(--white)}ds-button[circle][color=coral]:hover svg path,ds-button[circle][color=coral]:hover svg line{fill:var(--coral)}ds-button[circle][color=orange]{--btn-bg-color: var(--orange)}ds-button[circle][color=orange]:hover{--btn-bg-color: var(--white)}@media (min-width: 991px){.decisions-container--item .decisions-container--status{width:0;transition:var(--default-transition)}}@media (min-width: 991px){.decisions-container--item:hover .decisions-container--status{transition:var(--default-transition);width:auto;height:auto;right:1.5rem}}::ng-deep .mat-tooltip{max-width:187px;background:#1d252d}::ng-deep ds-button.dots::part(base){text-decoration:none;padding:0;min-width:auto}@media (max-width: 300px){::ng-deep ds-button[shape=text]::part(base){padding:0 5px}::ng-deep ds-button.mat-menu-trigger::part(base){padding:0 5px}}.search-form-input{color:var(--black);font-weight:var(--font-medium);padding:0 .75rem;border:none;height:100%}.search-form-input::placeholder{color:var(--dark-gray);font-weight:var(--font-regular)}::ng-deep .select-user-dropdown{min-width:300px}::ng-deep .filter-container{background-color:var(--white);padding:1.5rem;border-radius:4px}\n"] }]
344
- }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.SidenavService }, { type: i2.CoreService }, { type: i3.ToastrService }, { type: i2.CoreI18nService }, { type: i4.FormBuilder }, { type: i0.ChangeDetectorRef }] });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJldmlvdXMtcmVxdWVzdHMvcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBWSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQWMsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFN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LElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3VHQXJVVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qix1RUN0Q3RDLHd6T0EyS0EsNDRJRHRKSSxZQUFZLHlkQUNaLGFBQWEsOEJBQ2IsWUFBWSw4QkFDWixlQUFlLDhCQUNmLGVBQWUsOEJBQ2YsbUJBQW1CLDRyQkFDbkIscUJBQXFCLGtvQkFDckIsZUFBZSxvREFDZixnQkFBZ0IsdUlBQ2hCLHlCQUF5QiwyTUFDekIsbUJBQW1COzsyRkFPVix5QkFBeUI7a0JBdEJyQyxTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBRVA7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6QixtQkFBbUI7cUJBRXBCLFdBR1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRGVzdHJveVJlZiwgaW5qZWN0LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHtNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlXCI7XHJcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtTdGF0dXNTdHlsZVBpcGV9IGZyb20gXCIuLi8uLi8uLi9waXBlcy9zdGF0dXMtc3R5bGUucGlwZVwiO1xyXG5pbXBvcnQge1RvYXN0clNlcnZpY2V9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7Q2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7Q3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaGlzdG9yeScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBTdGF0dXNTdHlsZVBpcGUsXHJcbiAgICBDZGtPdmVybGF5T3JpZ2luLFxyXG4gICAgQ3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudCxcclxuICAgIENka0Nvbm5lY3RlZE92ZXJsYXlcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlvdXMtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ByZXZpb3VzLXJlcXVlc3RzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJldmlvdXNSZXF1ZXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJldmlvdXNSZXF1ZXN0czogYW55W10gPSBbXVxyXG4gIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIGxvYWRpbmc6IGJvb2xlYW5cclxuICBmaWx0ZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZ1xyXG4gIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vbnRoc09wdGlvbnMgPSBbXHJcbiAgICB7a2V5OiAnMScsIHZhbHVlOiAnMSd9LFxyXG4gICAge2tleTogJzInLCB2YWx1ZTogJzInfSxcclxuICAgIHtrZXk6ICczJywgdmFsdWU6ICczJ30sXHJcbiAgICB7a2V5OiAnNCcsIHZhbHVlOiAnNCd9LFxyXG4gICAge2tleTogJzUnLCB2YWx1ZTogJzUnfSxcclxuICAgIHtrZXk6ICc2JywgdmFsdWU6ICc2J30sXHJcbiAgICB7a2V5OiAnNycsIHZhbHVlOiAnNyd9LFxyXG4gICAge2tleTogJzgnLCB2YWx1ZTogJzgnfSxcclxuICAgIHtrZXk6ICc5JywgdmFsdWU6ICc5J30sXHJcbiAgICB7a2V5OiAnMTAnLCB2YWx1ZTogJzEwJ30sXHJcbiAgICB7a2V5OiAnMTEnLCB2YWx1ZTogJzExJ30sXHJcbiAgICB7a2V5OiAnMTInLCB2YWx1ZTogJzEyJ31cclxuICBdO1xyXG4gIHllYXJzT3B0aW9ucyA9IFtcclxuICAgIHtrZXk6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKX0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMX0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAyLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMn0sXHJcbiAgICB7a2V5OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAzLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gM31dO1xyXG5cclxuICBzdGF0dXNlcyA9IFtdXHJcbiAgc2VhcmNoRGF0YSA9IHtcclxuICAgIHllYXI6IG51bGwsXHJcbiAgICBtb250aDogbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IG9uIGluaXRpYWxpemF0aW9uLlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBmb3JtIGFuZCBzZXRzIHRoZSBhdmFpbGFibGUgc3RhdHVzZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgICB0aGlzLnN0YXR1c2VzID0gW1xyXG4gICAgICB7a2V5OiBcIkFQUFJPVkVEXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiQXBwcm92ZVwiIDogXCLZhdmI2KfZgdmC2KlcIn0sXHJcbiAgICAgIHtrZXk6IFwiUkVKRUNURURcIiwgdmFsdWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnZW4nID8gXCJSZWplY3RcIiA6IFwi2YXYsdmB2YjYtlwifSxcclxuICAgICAge2tleTogXCJQRU5ESU5HXCIsIHZhbHVlOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2VuJyA/IFwiUGVuZGluZ1wiIDogXCLZhdi52YTZglwifVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgLy8gdmFyaWFibGVzIHRvIG1hbmFnZSBzdWJzY3JpcHRpb25cclxuICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuLy8gbmV3IGhlbHBlciBtZXRob2RzIGZvciBmb3JtIGNvbnRyb2xzXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyBmb3JtIGNvbnRyb2xzIGZvciB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhci5cclxuICAgKiAgICAgICAgICAgICAgICAgIC0gbW9udGg6IEZvcm1Db250cm9sIGZvciB0aGUgY3VycmVudCBtb250aCB3aXRoIFZhbGlkYXRvcnMgcmVxdWlyZWRcclxuICAgKiAgICAgICAgICAgICAgICAgIC0geWVhcjogRm9ybUNvbnRyb2wgZm9yIHRoZSBjdXJyZW50IHllYXIgd2l0aCBWYWxpZGF0b3JzIHJlcXVpcmVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZUNvbnRyb2woKTogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9IHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCkgKyAxO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtb250aDogbmV3IEZvcm1Db250cm9sKHtrZXk6IG1vbnRoLCB2YWx1ZTogbW9udGh9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKHtrZXk6IHllYXIsIHZhbHVlOiB5ZWFyfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgYSBmb3JtIGdyb3VwIGZvciBmaWx0ZXJpbmcgZGF0YS5cclxuICAgKiBJdCBjcmVhdGVzIGZvcm0gY29udHJvbHMgZm9yIHRoZSBjdXJyZW50IGRhdGUgYW5kIHN0YXR1cy5cclxuICAgKiBBbHNvIHNldHMgdXAgYSBzdWJzY3JpcHRpb24gdG8gbGlzdGVuIGZvciBjaGFuZ2VzIGluIHRoZSBzdGF0dXMgY29udHJvbC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIC4uLnRoaXMuY3VycmVudERhdGVDb250cm9sKCksXHJcbiAgICAgIHN0YXR1czogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gaW5pdGlhbGl6YXRpb24gYWZ0ZXIgQW5ndWxhciBoYXMgZnVsbHkgaW5pdGlhbGl6ZWQgYSBjb21wb25lbnQncyB2aWV3LlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFJlcXVlc3RzKClcclxuICAgIH1cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIGZpbHRlcnMgYW5kIHJlc2V0IHRoZSBmb3JtIGdyb3VwIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxyXG4gICAqIFNldHMgdGhlIG1vbnRoIGFuZCB5ZWFyIGZpbHRlcnMgdG8gdGhlIGN1cnJlbnQgZGF0ZSdzIG1vbnRoIGFuZCB5ZWFyIHJlc3BlY3RpdmVseS5cclxuICAgKiBTZXRzIHRoZSBzdGF0dXMgZmlsdGVyIHRvIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKiBUb2dnbGVzIHRoZSBpc09wZW4gcHJvcGVydHkgYW5kIHRyaWdnZXJzIHRoZSBmaWx0ZXJTdGF0dXMgbWV0aG9kLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5yZXNldCgpXHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ21vbnRoJykuc2V0VmFsdWUoe2tleTogbmV3IERhdGUoKS5nZXRVVENNb250aCgpICsgMSwgdmFsdWU6IG5ldyBEYXRlKCkuZ2V0VVRDTW9udGgoKSArIDF9KVxyXG4gICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCd5ZWFyJykuc2V0VmFsdWUoe2tleTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCB2YWx1ZTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMX0pXHJcbiAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnNldFZhbHVlKCcnKVxyXG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW5cclxuICAgIHRoaXMuZmlsdGVyU3RhdHVzKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZXMgdGhlIGlzT3BlbiBwcm9wZXJ0eSBhbmQgdHJpZ2dlcnMgdGhlIGdldFJlcXVlc3RzKCkgbWV0aG9kLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlblxyXG4gICAgdGhpcy5nZXRSZXF1ZXN0cygpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgcmVxdWVzdCBkYXRhIGJhc2VkIG9uIGZvcm0gdmFsdWVzLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBnZXRSZXF1ZXN0cygpIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKVxyXG4gICAgaWYgKHRoaXMuYXJlRm9ybVZhbHVlc0VxdWFsKHRoaXMuc2VhcmNoRGF0YSwgZm9ybVZhbHVlcykpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0dXMoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWFyY2hEYXRhKGZvcm1WYWx1ZXMpXHJcbiAgICAgIHRoaXMucmVxdWVzdENvcmVEYXRhKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZm9ybSB2YWx1ZXMgaW5jbHVkaW5nIHRoZSB5ZWFyIGFuZCBtb250aC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgeWVhciBhbmQgbW9udGggdmFsdWVzLlxyXG4gICAqL1xyXG4gIGdldEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB5ZWFyOiB0aGlzLmdldFllYXJWYWx1ZSgpLFxyXG4gICAgICBtb250aDogdGhpcy5nZXRNb250aFZhbHVlKCksXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHNlbGVjdGVkIHllYXIgdmFsdWUgZnJvbSB0aGUgZmlsdGVyIGZvcm0gZ3JvdXAuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIFRoZSBzZWxlY3RlZCB5ZWFyIHZhbHVlIGFzIGEgbnVtYmVyLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0WWVhclZhbHVlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCd5ZWFyJykudmFsdWU/LmtleTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbW9udGggdmFsdWUgZnJvbSB0aGUgZmlsdGVyIGZvcm0gZ3JvdXAuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBtb250aCB2YWx1ZSByZXRyaWV2ZWQgZnJvbSB0aGUgZm9ybSBncm91cC5cclxuICAgKi9cclxuICBwcml2YXRlIGdldE1vbnRoVmFsdWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ21vbnRoJykudmFsdWU/LmtleTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgeWVhciBhbmQgbW9udGggdmFsdWVzIG9mIHR3byBmb3JtIG9iamVjdHMgYXJlIGVxdWFsLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpcnN0IC0gVGhlIGZpcnN0IGZvcm0gb2JqZWN0IHRvIGNvbXBhcmUuXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHNlY29uZCAtIFRoZSBzZWNvbmQgZm9ybSBvYmplY3QgdG8gY29tcGFyZS5cclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRoZSB5ZWFyIGFuZCBtb250aCB2YWx1ZXMgYXJlIGVxdWFsLCBvdGhlcndpc2UgZmFsc2UuXHJcbiAgICovXHJcbiAgYXJlRm9ybVZhbHVlc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcclxuICAgIHJldHVybiBmaXJzdC55ZWFyID09IHNlY29uZC55ZWFyICYmIGZpcnN0Lm1vbnRoID09IHNlY29uZC5tb250aFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBzZWFyY2ggZGF0YSB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUaGUgbmV3IHNlYXJjaCBkYXRhIHRvIHVwZGF0ZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgdXBkYXRlU2VhcmNoRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnNlYXJjaERhdGEgPSBkYXRhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIHJlcXVlc3QgdG8gcmV0cmlldmUgY29yZSBkYXRhIHVzaW5nIHRoZSBDb3JlIFNlcnZpY2UgQVBJLlxyXG4gICAqIEluaXRpYWxpemVzIGxvYWRpbmcgYW5kIHJlcXVlc3RzIGJlZm9yZSBtYWtpbmcgdGhlIGNhbGwuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHJlcXVlc3RDb3JlRGF0YSgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUxvYWRpbmdBbmRSZXF1ZXN0cygpXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhID0gW11cclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IFtdXHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLm15UmVxdWVzdHModGhpcy5zZWFyY2hEYXRhKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGEgPSByZXNwb25zZS5oaXN0b3J5O1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGFcclxuICAgICAgICB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZmlsdGVyU3RhdHVzKClcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycj8uZXJyb3I/Lm1ldGE/Lm1lc3NhZ2VzPy5bJzAnXT8ubWVzc2FnZTtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlKVxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBsb2FkaW5nIGFuZCByZXF1ZXN0cy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUxvYWRpbmdBbmRSZXF1ZXN0cygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWVcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGEgPSBbXVxyXG4gICAgdGhpcy5wcmV2aW91c1JlcXVlc3RzID0gW11cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgc3VjY2Vzc2Z1bCByZXNwb25zZSBmcm9tIGEgcmVxdWVzdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3QgY29udGFpbmluZyBoaXN0b3J5IGRhdGEuXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBoYW5kbGVSZXF1ZXN0U3VjY2VzcyhyZXNwb25zZSkge1xyXG4gICAgdGhpcy5jb3JlU2VydmljZS5oaXN0b3J5RGF0YSA9IHJlc3BvbnNlLmhpc3RvcnlcclxuICAgIHRoaXMucHJldmlvdXNSZXF1ZXN0cyA9IHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGFcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuaGlzdG9yeURhdGFMb2FkZWQgPSB0cnVlXHJcbiAgICB0aGlzLmZpbHRlclN0YXR1cygpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBlcnJvciByZWNlaXZlZCBmcm9tIGEgcmVxdWVzdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGVyciAtIFRoZSBlcnJvciBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3JcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIGhhbmRsZVJlcXVlc3RFcnJvcihlcnIpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycj8uZXJyb3I/Lm1ldGE/Lm1lc3NhZ2VzPy5bJzAnXT8ubWVzc2FnZVxyXG4gICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlcnMgdGhlIHByZXZpb3VzIHJlcXVlc3RzIGJhc2VkIG9uIHRoZSBzdGF0dXMgc2VsZWN0ZWQgaW4gdGhlIGZpbHRlciBmb3JtLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBmaWx0ZXJTdGF0dXMoKSB7XHJcbiAgICBjb25zdCBzdGF0dXNLZXkgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ3N0YXR1cycpLnZhbHVlPy5rZXk7XHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSB0aGlzLmNvcmVTZXJ2aWNlLmhpc3RvcnlEYXRhXHJcbiAgICBsZXQgZmlsdGVyRGF0YTogYW55W107XHJcblxyXG4gICAgaWYgKHN0YXR1c0tleSkge1xyXG4gICAgICBmaWx0ZXJEYXRhID0gdGhpcy5wcmV2aW91c1JlcXVlc3RzLmZpbHRlcigocmVxdWVzdCkgPT4gcmVxdWVzdC5mb3JtPy5bJ2Zvcm1TdGF0dXMnXT8ua2V5ID09PSBzdGF0dXNLZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsdGVyRGF0YSA9IHRoaXMucHJldmlvdXNSZXF1ZXN0cztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzUmVxdWVzdHMgPSBmaWx0ZXJEYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgYSBmb3JtIGluIGEgbmV3IHdpbmRvdyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZm9ybSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtSWQgLSBUaGUgSUQgb2YgdGhlIGZvcm0gdG8gYmUgb3BlbmVkLlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgdmlld0Zvcm0oZm9ybUlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChmb3JtSWQpIHtcclxuICAgICAgd2luZG93Lm9wZW4oJy9ncm91cC9pLWdhdGUvd20tYnBtL2Zvcm1zP2Zvcm1JZD0nICsgZm9ybUlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyB0aGUgc2lkZSBuYXZpZ2F0aW9uIHBhbmVsLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBjbG9zZVNpZGVuYXYoKSB7XHJcbiAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnB1Ymxpc2goJ2Nsb3NlJywgbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0IHRoZSB2YWx1ZSB0byBjb21wbGV0ZSBhbGwgYWN0aXZlIHN1YnNjcmlwdGlvbnNcclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBlbWl0IHRoZSB2YWx1ZSB0byBjb21wbGV0ZSBhbGwgYWN0aXZlIHN1YnNjcmlwdGlvbnNcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFpbi1zaWRlbmF2IGhpc3Rvcnktc2lkZW5hdlwiPlxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXRpdGxlXCI+XHJcbiAgICA8aDM+e3sgaTE4bi50cmFuc2xhdGUoJ1ByZXZpb3VzUmVxdWVzdHMnKSB9fTwvaDM+XHJcbiAgICA8ZHMtYnV0dG9uIGNsYXNzPVwiY2xvc2Utc2lkZW5hdlwiIChjbGljayk9XCJjbG9zZVNpZGVuYXYoKVwiIGljb24+XHJcbiAgICAgIDxkcy1pY29uIGljb249XCJjbG9zZVwiIGNsYXNzPVwiZnMtMjAgZmMtYmxhY2tcIj48L2RzLWljb24+XHJcbiAgICA8L2RzLWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNpZGVuYXYtYm9keSBiYy1saWdodC1ncmF5XCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICA8aGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgPGgyIGNsYXNzPVwiZnMtMjAgZnctbWVkaXVtIGZjLWJsYWNrIG1iLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMSBnYXAtM1wiPlxyXG4gICAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ0FsbFJlcXVlc3RzJykgfX1cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtY291bnQgZnMtMTQgZnctbm9ybWFsXCI+e3sgcHJldmlvdXNSZXF1ZXN0cz8ubGVuZ3RoID8gcHJldmlvdXNSZXF1ZXN0cz8ubGVuZ3RoIDogJzAnIH19PC9zcGFuPlxyXG4gICAgICAgIDwvaDI+XHJcbiAgICAgICAgPGRzLWJ1dHRvbiBpY29uIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJpc09wZW4gPSAhaXNPcGVuXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJmaWx0ZXJcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTIwXCIgc2xvdD1cInByZWZpeFwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcclxuICAgICAgICAgIGNsYXNzPVwiaWNvbi10b2dnbGUgZmxleC1ub3dyYXBcIlxyXG4gICAgICAgICAgI3BhZ2VWaWV3PVwibWF0QnV0dG9uVG9nZ2xlR3JvdXBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICB2YWx1ZT1cImxpc3RcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImNhcmRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNhcmQgZnMtMjBcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwibGlzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktbGlzdC1kb3RzIGZzLTIwXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICA8L2hlYWRlcj5cclxuXHJcbiAgICAgIEBpZiAocGFnZVZpZXcudmFsdWUgPT09ICdjYXJkJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaXN0b3J5LWNhcmRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgQGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBsaW5lLWhlaWdodC0xIGJjLXdoaXRlIHJhZGl1cy02IGJveC1zaGFkb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIFswLDEsMiwzXVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJsb2FkaW5nLWJnIGZzLTE2IGZ3LW1lZGl1bSBmbGV4LWdyb3ctMSBtYi0wIGN1cnNvci1wb2ludGVyIHVuZGVybGluZSBmdy1ib2xkXCI+PC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5IG1iLTIgbG9hZGluZy1iZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZ3LW1lZGl1bSBmYy1ibGFjayBsb2FkaW5nLWJnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2wtNiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IGxpbmUtaGVpZ2h0LTEgYmMtd2hpdGUgcmFkaXVzLTYgYm94LXNoYWRvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgcHJldmlvdXNSZXF1ZXN0c1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxoM1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBmbGV4LWdyb3ctMSBtYi0wIGN1cnNvci1wb2ludGVyIHVuZGVybGluZSBmdy1ib2xkXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdGb3JtKHJvdz8uZm9ybT8uWydmb3JtSWQnXSlcIj57eyByb3c/LmZvcm0/LlsnZm9ybUlkJ10gfX08L2gzPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5IG1iLTJcIj57eyBpMThuLnRyYW5zbGF0ZSgnZm9ybVRhYmxlQ3JlYXRpb25EYXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZnctbWVkaXVtIGZjLWJsYWNrXCI+e3sgcm93Py5mb3JtPy5bJ2NyZWF0aW9uRGF0ZSddIHwgZGF0ZTogJ2RkL01NL3l5eXkgaGg6bW0gYScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29sLTYganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1lbmRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkcy1zdGF0dXMgW2F0dHIuc3RhdHVzXT1cInJvdz8uZm9ybT8uZm9ybVN0YXR1cz8ua2V5IHwgc3RhdHVzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByb3c/LmZvcm0/LmZvcm1TdGF0dXM/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZHMtc3RhdHVzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHBhZ2VWaWV3LnZhbHVlID09PSAnbGlzdCcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPHRhYmxlICpuZ0lmPVwicHJldmlvdXNSZXF1ZXN0cz8ubGVuZ3RoICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnZm9ybVRhYmxlRm9ybUlkJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnZm9ybVRhYmxlQ3JlYXRpb25EYXRlJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyBpMThuLnRyYW5zbGF0ZSgnU3RhdHVzJykgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG5cclxuICAgICAgICAgICAgPHRib2R5ICpuZ0Zvcj1cImxldCByb3cgb2YgcHJldmlvdXNSZXF1ZXN0c1wiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1tZWRpdW0gY3Vyc29yLXBvaW50ZXIgdW5kZXJsaW5lIGZ3LWJvbGQgXCIgKGNsaWNrKT1cInZpZXdGb3JtKHJvdz8uZm9ybT8uWydmb3JtSWQnXSlcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcm93Py5mb3JtPy5bJ2Zvcm1JZCddIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgcm93Py5mb3JtPy5bJ2NyZWF0aW9uRGF0ZSddICB8IGRhdGU6ICdkZC9NTS95eXl5IGhoOm1tIGEnIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZHMtc3RhdHVzIFthdHRyLnN0YXR1c109XCJyb3c/LmZvcm0/LmZvcm1TdGF0dXM/LmtleSB8IHN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvdz8uZm9ybT8uZm9ybVN0YXR1cz8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZHMtc3RhdHVzPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPGRzLWxvYWRpbmctdGFibGUgKm5nSWY9XCJsb2FkaW5nXCIgW2NvbHNdPVwiNFwiIFtyb3dzXT1cIjRcIj48L2RzLWxvYWRpbmctdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICghcHJldmlvdXNSZXF1ZXN0cz8ubGVuZ3RoICYmICFsb2FkaW5nKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TWVzc2FnZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxyXG4gIChiYWNrZHJvcENsaWNrKT1cImlzT3BlbiA9IGZhbHNlXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW5dPVwidHJ1ZVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzT3BlblwiXHJcbj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1Hcm91cFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlciBib3JkZXItYm90dG9tIHBiLTJcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJmcy0xNiBmYy1ibGFjayBmdy1tZWRpdW1cIj57eyBpMThuLnRyYW5zbGF0ZSgnZmlsdGVycycpIH19PC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTQgZ2FwLW1kLTMgZmlsdGVyLXNlY3Rpb24gYmMtd2hpdGUgbXQtMCBwdC0zXCI+XHJcblxyXG4gICAgICAgIDxhcHAtY3VzdG9tLXNlYXJjaGFibGVcclxuICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiXHJcbiAgICAgICAgICBsYWJlbD1cInt7IGkxOG4udHJhbnNsYXRlKCdzdGF0dXMnKSB9fVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJzdGF0dXNlc1wiXHJcbiAgICAgICAgICBbZGlzcGxheWVkTGFiZWxdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICBba2V5XT1cIidrZXknXCI+XHJcbiAgICAgICAgPC9hcHAtY3VzdG9tLXNlYXJjaGFibGU+XHJcblxyXG4gICAgICAgIDxhcHAtY3VzdG9tLXNlYXJjaGFibGVcclxuICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInllYXJcIlxyXG4gICAgICAgICAgbGFiZWw9XCJ7eyBpMThuLnRyYW5zbGF0ZSgneWVhcicpIH19XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cInllYXJzT3B0aW9uc1wiXHJcbiAgICAgICAgICBbZGlzcGxheWVkTGFiZWxdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICBba2V5XT1cIidrZXknXCI+XHJcbiAgICAgICAgPC9hcHAtY3VzdG9tLXNlYXJjaGFibGU+XHJcblxyXG4gICAgICAgIDxhcHAtY3VzdG9tLXNlYXJjaGFibGVcclxuICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1vbnRoXCJcclxuICAgICAgICAgIGxhYmVsPVwie3sgaTE4bi50cmFuc2xhdGUoJ21vbnRoJykgfX1cIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwibW9udGhzT3B0aW9uc1wiXHJcbiAgICAgICAgICBbZGlzcGxheWVkTGFiZWxdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICBba2V5XT1cIidrZXknXCI+XHJcbiAgICAgICAgPC9hcHAtY3VzdG9tLXNlYXJjaGFibGU+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG10LTRcIj5cclxuICAgICAgICAgIDxkcy1idXR0b24gc2hhcGU9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIj4ge3sgaTE4bi50cmFuc2xhdGUoJ2NsZWFyJykgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgICA8ZHMtYnV0dG9uIGNsYXNzPVwidy0xMDBcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMlwiPnt7IGkxOG4udHJhbnNsYXRlKCdhcHBseUZpbHRlcnMnKSB9fSAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNlbXB0eU1lc3NhZ2U+XHJcbiAgICA8ZHMtbWVzc2FnZSBsYWJlbD1cInt7aTE4bi50cmFuc2xhdGUoJ05vRGF0YScpfX1cIj48L2RzLW1lc3NhZ2U+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,45 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Inject, Input, Output } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import { NgIf } from '@angular/common';
4
- import { InfoItemComponent } from "../../shared-components";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../../services";
7
- export class ProfileSectionComponent {
8
- i18n;
9
- sidenavService;
10
- data;
11
- profileFormVisibility;
12
- profile;
13
- message;
14
- close = new EventEmitter();
15
- constructor(i18n, sidenavService, data) {
16
- this.i18n = i18n;
17
- this.sidenavService = sidenavService;
18
- this.data = data;
19
- this.profile = sidenavService.data;
20
- }
21
- closeSidenav() {
22
- this.sidenavService.publish('close', null);
23
- }
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProfileSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.SidenavService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ProfileSectionComponent, isStandalone: true, selector: "app-profile-section", inputs: { profileFormVisibility: "profileFormVisibility" }, outputs: { close: "close" }, providers: [
26
- { provide: MAT_DIALOG_DATA, useValue: {} }
27
- ], ngImport: i0, template: "<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep .main-sidenav{width:550px}@media (max-width: 871px){:host ::ng-deep .main-sidenav{width:100vw}}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user{padding:2.5rem 1.5rem}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a{transition:var(--default-transition)}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a:hover{text-decoration:underline}:host ::ng-deep .main-sidenav .sidenav-body ds-avatar .avatar{--default-size: 95px}:host ::ng-deep .main-sidenav .sidenav-body .employee-id:hover .copy-icon{opacity:1}:host ::ng-deep .main-sidenav .sidenav-body .employee-id .copy-icon{opacity:0;transition:all .2s linear}:host ::ng-deep .main-sidenav .sidenav-body .profile-box{justify-content:center}@media (min-width: 768px){:host ::ng-deep .main-sidenav .sidenav-body .profile-box{min-width:200px}}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item{padding:1.5rem 0;--info-gap: .5rem}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item.department-code bdi{unicode-bidi:plaintext}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item:not(:last-child){border-bottom:1px solid var(--gray)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.name{--name-width: 100%;--name-fw: var(--font-regular)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.disc{--disc-width: 100%}\n"], dependencies: [{ kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProfileSectionComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'app-profile-section', standalone: true, imports: [
32
- InfoItemComponent,
33
- NgIf
34
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [
35
- { provide: MAT_DIALOG_DATA, useValue: {} }
36
- ], template: "<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep .main-sidenav{width:550px}@media (max-width: 871px){:host ::ng-deep .main-sidenav{width:100vw}}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user{padding:2.5rem 1.5rem}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a{transition:var(--default-transition)}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a:hover{text-decoration:underline}:host ::ng-deep .main-sidenav .sidenav-body ds-avatar .avatar{--default-size: 95px}:host ::ng-deep .main-sidenav .sidenav-body .employee-id:hover .copy-icon{opacity:1}:host ::ng-deep .main-sidenav .sidenav-body .employee-id .copy-icon{opacity:0;transition:all .2s linear}:host ::ng-deep .main-sidenav .sidenav-body .profile-box{justify-content:center}@media (min-width: 768px){:host ::ng-deep .main-sidenav .sidenav-body .profile-box{min-width:200px}}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item{padding:1.5rem 0;--info-gap: .5rem}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item.department-code bdi{unicode-bidi:plaintext}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item:not(:last-child){border-bottom:1px solid var(--gray)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.name{--name-width: 100%;--name-fw: var(--font-regular)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.disc{--disc-width: 100%}\n"] }]
37
- }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.SidenavService }, { type: undefined, decorators: [{
38
- type: Inject,
39
- args: [MAT_DIALOG_DATA]
40
- }] }], propDecorators: { profileFormVisibility: [{
41
- type: Input
42
- }], close: [{
43
- type: Output
44
- }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJvZmlsZS1zZWN0aW9uL3Byb2ZpbGUtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7QUFpQjFELE1BQU0sT0FBTyx1QkFBdUI7SUFPZjtJQUNVO0lBQ2U7SUFQbkMscUJBQXFCLENBQU07SUFDcEMsT0FBTyxDQUFrQjtJQUN6QixPQUFPLENBQU07SUFDSCxLQUFLLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFNUQsWUFBbUIsSUFBcUIsRUFDWCxjQUE4QixFQUNmLElBQVM7UUFGbEMsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDWCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQWhCVSx1QkFBdUIsK0VBU2QsZUFBZTsyRkFUeEIsdUJBQXVCLDJKQUp2QjtZQUNULEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRyxFQUFDO1NBQzFDLDBCQ3BCSCw2L0hBb0dBLHc2Q0R0RkksaUJBQWlCLGdNQUNqQixJQUFJOzsyRkFPSyx1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLElBQUk7cUJBQ0wsV0FDUSxDQUFDLHNCQUFzQixDQUFDLGFBQ3RCO3dCQUNULEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRyxFQUFDO3FCQUMxQzs7MEJBV1ksTUFBTTsyQkFBQyxlQUFlO3lDQVAxQixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEF9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge1Byb2ZpbGVJbmZvRHJvcH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgTmdJZlxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE1BVF9ESUFMT0dfREFUQSwgdXNlVmFsdWU6IHsgfX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2VjdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHByb2ZpbGVGb3JtVmlzaWJpbGl0eTogYW55O1xyXG4gIHByb2ZpbGU6IFByb2ZpbGVJbmZvRHJvcDtcclxuICBtZXNzYWdlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucHJvZmlsZSA9IHNpZGVuYXZTZXJ2aWNlLmRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VTaWRlbmF2KCkge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdjbG9zZScsIG51bGwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tc2lkZW5hdlwiPlxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXRpdGxlIGJjLXdoaXRlXCI+XHJcbiAgICA8aDM+IHt7IHByb2ZpbGU/LmZ1bGxOYW1lIH19PC9oMz5cclxuICAgIDxkcy1pY29uIGljb249XCJjbG9zZVwiIGNsYXNzPVwiZmMtYmxhY2sgZnMtMjAgcC0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2lkZW5hdigpXCI+PC9kcy1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LWJvZHkgcC0wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBzaWRlbmF2LXVzZXIgYmMtb2ZmLXdoaXRlIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCIvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPXt7cHJvZmlsZT8uZW1wbG95ZWVFbWFpbH19XCIgY2xhc3M9XCJtYi0yXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTFcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJmcy0xNiBmYy1ibGFjayBmdy1tZWRpdW0gbWItMFwiPnt7IHByb2ZpbGU/LmZ1bGxOYW1lIH19PC9oND5cclxuICAgICAgICA8aDYgY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXkgZnctbm9ybWFsIG1iLTBcIiAqbmdJZj1cInByb2ZpbGU/LmpvYlBvc2l0aW9uXCI+e3sgcHJvZmlsZT8uam9iUG9zaXRpb24gfX08L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMTIgZmMtYmxhY2sgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBib3gtc2hhZG93IGJjLXdoaXRlIHJhZGl1cy00IHAtMiBwcm9maWxlLWJveFwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cIm1haWwtb1wiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCInbWFpbFRvOicgKyBwcm9maWxlPy5lbXBsb3llZUVtYWlsXCIgY2xhc3M9XCJmYy1ibGFja1wiPnt7IHByb2ZpbGU/LmVtcGxveWVlRW1haWwgfX08L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLTEyIGZjLWJsYWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgYm94LXNoYWRvdyBiYy13aGl0ZSByYWRpdXMtNCBwLTIgcHJvZmlsZS1ib3hcIiAqbmdJZj1cInByb2ZpbGU/LmJ1c2luZXNzUGhvbmVcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJwaG9uZVwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCIndGVsOicgKyBwcm9maWxlPy5idXNpbmVzc1Bob25lXCIgY2xhc3M9XCJmYy1ibGFja1wiPlxyXG4gICAgICAgICAgICA8YmRpPnt7IHByb2ZpbGU/LmJ1c2luZXNzUGhvbmUgfX08L2JkaT5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpbmZvLXNlY3Rpb24gbm8tYmcgcHgtNCBwYi00XCJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICBwcm9maWxlPy5kZXBhcnRtZW50TmFtZSB8fFxyXG4gICAgICAgIHByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZSB8fFxyXG4gICAgICAgIHByb2ZpbGU/LmRpcmVjdE1hbmFnZXJOYW1lIHx8XHJcbiAgICAgICAgcHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvbiB8fFxyXG4gICAgICAgIHByb2ZpbGU/Lm5hdGlvbmFsaXR5IHx8XHJcbiAgICAgICAgcHJvZmlsZT8uZ2VuZXJhbERlcGFydG1lbnRDb2RlXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxhcHAtaW5mby1pdGVtXHJcbiAgICAgICAgKm5nSWY9XCJwcm9maWxlPy5lbXBsb3llZU51bWJlclwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnZW1wbG95ZWVJRCcpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uZW1wbG95ZWVOdW1iZXJcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmRlcGFydG1lbnROYW1lXCJcclxuICAgICAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICAgICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkZXBhcnRtZW50TmFtZScpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uZGVwYXJ0bWVudE5hbWVcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnZ2VuZXJhbERlcGFydG1lbnROYW1lJylcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJwcm9maWxlPy5nZW5lcmFsRGVwYXJ0bWVudE5hbWVcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmRpcmVjdE1hbmFnZXJOYW1lXCJcclxuICAgICAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICAgICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkaXJlY3RNYW5hZ2VyJylcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJwcm9maWxlPy5kaXJlY3RNYW5hZ2VyTmFtZVwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgICA8YXBwLWluZm8taXRlbVxyXG4gICAgICAgICpuZ0lmPVwicHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvblwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnaHVtYW5SZXNvdXJjZXNMb2NhdGlvbicpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvblwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgICA8YXBwLWluZm8taXRlbVxyXG4gICAgICAgICpuZ0lmPVwicHJvZmlsZT8ubmF0aW9uYWxpdHlcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgICAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ25hdGlvbmFsaXR5JykgXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8ubmF0aW9uYWxpdHlcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LnNlY3Rvck5hbWVcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgICAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ3NlY3RvcicpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uc2VjdG9yTmFtZVwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgIXByb2ZpbGU/LmRlcGFydG1lbnROYW1lICYmXHJcbiAgICAgICAgIXByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZSAmJlxyXG4gICAgICAgICFwcm9maWxlPy5kaXJlY3RNYW5hZ2VyTmFtZSAmJlxyXG4gICAgICAgICFwcm9maWxlPy5odW1hblJlc291cmNlc0xvY2F0aW9uICYmXHJcbiAgICAgICAgIXByb2ZpbGU/Lm5hdGlvbmFsaXR5ICYmXHJcbiAgICAgICAgIXByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50Q29kZVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZHMtbWVzc2FnZSB0eXBlPVwiZW1wdHlMaXN0XCIgW2F0dHIubGFiZWxdPVwiJ25vRGF0YScgXCI+PC9kcy1tZXNzYWdlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=