bpm-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/esm2022/bpm-core.mjs +5 -0
- package/esm2022/lib/classes/form-validation.mjs +80 -0
- package/esm2022/lib/classes/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +51 -0
- package/esm2022/lib/components/app-component-sections/comment-section/comment-section.component.mjs +66 -0
- package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +29 -0
- package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +32 -0
- package/esm2022/lib/components/app-component-sections/faqs/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +236 -0
- package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +270 -0
- package/esm2022/lib/components/app-component-sections/index.mjs +9 -0
- package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +34 -0
- package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +45 -0
- package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +162 -0
- package/esm2022/lib/components/app-component-sections/status/status.component.mjs +38 -0
- package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +162 -0
- package/esm2022/lib/components/shared-components/confirmation-popup/confirmation-popup.component.mjs +39 -0
- package/esm2022/lib/components/shared-components/delete-popup/delete-popup.component.mjs +19 -0
- package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +30 -0
- package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +28 -0
- package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +72 -0
- package/esm2022/lib/components/shared-components/doc-uploader/docs-uploader.component.mjs +686 -0
- package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +77 -0
- package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +181 -0
- package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +198 -0
- package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +69 -0
- package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +201 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +31 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +244 -0
- package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +26 -0
- package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +31 -0
- package/esm2022/lib/components/shared-components/form-field/index.mjs +25 -0
- package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +72 -0
- package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +155 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +3 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +2 -0
- package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +157 -0
- package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +114 -0
- package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +111 -0
- package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +153 -0
- package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +176 -0
- package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +38 -0
- package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +32 -0
- package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +228 -0
- package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +191 -0
- package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +116 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +39 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +88 -0
- package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +75 -0
- package/esm2022/lib/components/shared-components/index.mjs +10 -0
- package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +31 -0
- package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +31 -0
- package/esm2022/lib/constants/constants.mjs +144 -0
- package/esm2022/lib/constants/index.mjs +2 -0
- package/esm2022/lib/environments/environment.local.mjs +27 -0
- package/esm2022/lib/functions/data-to-blob.mjs +12 -0
- package/esm2022/lib/functions/encode-password.mjs +14 -0
- package/esm2022/lib/functions/handel-error-response.mjs +12 -0
- package/esm2022/lib/functions/index.mjs +5 -0
- package/esm2022/lib/functions/is-valid-data.mjs +42 -0
- package/esm2022/lib/hooks/index.mjs +3 -0
- package/esm2022/lib/hooks/load-form.mjs +13 -0
- package/esm2022/lib/hooks/save-form.mjs +18 -0
- package/esm2022/lib/i18n/ar.mjs +183 -0
- package/esm2022/lib/i18n/en.mjs +187 -0
- package/esm2022/lib/i18n/index.mjs +3 -0
- package/esm2022/lib/interfaces/api-response.interface.mjs +2 -0
- package/esm2022/lib/interfaces/document-file.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form-items.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form.interface.mjs +150 -0
- package/esm2022/lib/interfaces/igate-user.interface.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +8 -0
- package/esm2022/lib/interfaces/lov-list.interface.mjs +2 -0
- package/esm2022/lib/interfaces/lov.interface.mjs +2 -0
- package/esm2022/lib/interfaces/shared.interface.mjs +2 -0
- package/esm2022/lib/pipes/currency.pipe.mjs +66 -0
- package/esm2022/lib/pipes/format-as-password.pipe.mjs +19 -0
- package/esm2022/lib/pipes/index.mjs +3 -0
- package/esm2022/lib/services/feedBack.service.mjs +80 -0
- package/esm2022/lib/services/i18n.service.mjs +36 -0
- package/esm2022/lib/services/index.mjs +3 -0
- package/esm2022/lib/services/sidenav.service.mjs +69 -0
- package/esm2022/lib/validators/ar.directive.mjs +53 -0
- package/esm2022/lib/validators/currency.directive.mjs +74 -0
- package/esm2022/lib/validators/en.directive.mjs +50 -0
- package/esm2022/lib/validators/id.validator.mjs +66 -0
- package/esm2022/lib/validators/index.mjs +8 -0
- package/esm2022/lib/validators/string-to-boolean.pipe.mjs +16 -0
- package/esm2022/lib/validators/text.directive.mjs +50 -0
- package/esm2022/lib/validators/timer.pipe.mjs +19 -0
- package/esm2022/public-api.mjs +16 -0
- package/fesm2022/bpm-core.mjs +6005 -0
- package/fesm2022/bpm-core.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/form-validation.d.ts +19 -0
- package/lib/classes/index.d.ts +1 -0
- package/lib/components/app-component-sections/activities/activities.component.d.ts +22 -0
- package/lib/components/app-component-sections/comment-section/comment-section.component.d.ts +19 -0
- package/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.d.ts +13 -0
- package/lib/components/app-component-sections/faqs/faqs.component.d.ts +17 -0
- package/lib/components/app-component-sections/faqs/index.d.ts +1 -0
- package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +38 -0
- package/lib/components/app-component-sections/form-section/form-section.component.d.ts +58 -0
- package/lib/components/app-component-sections/index.d.ts +8 -0
- package/lib/components/app-component-sections/main-request-details/main-request-details.component.d.ts +13 -0
- package/lib/components/app-component-sections/profile-section/profile-section.component.d.ts +17 -0
- package/lib/components/app-component-sections/service-header/service-header.component.d.ts +35 -0
- package/lib/components/app-component-sections/status/status.component.d.ts +23 -0
- package/lib/components/app-component-sections/workflow-section/workflow-section.component.d.ts +29 -0
- package/lib/components/shared-components/confirmation-popup/confirmation-popup.component.d.ts +25 -0
- package/lib/components/shared-components/delete-popup/delete-popup.component.d.ts +6 -0
- package/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +11 -0
- package/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.d.ts +11 -0
- package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +15 -0
- package/lib/components/shared-components/doc-uploader/docs-uploader.component.d.ts +144 -0
- package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +16 -0
- package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +30 -0
- package/lib/components/shared-components/form-field/base-component/base-component.component.d.ts +63 -0
- package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +18 -0
- package/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.d.ts +29 -0
- package/lib/components/shared-components/form-field/date-picker/date-format.d.ts +17 -0
- package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +41 -0
- package/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.d.ts +10 -0
- package/lib/components/shared-components/form-field/form-label/form-label.component.d.ts +12 -0
- package/lib/components/shared-components/form-field/index.d.ts +24 -0
- package/lib/components/shared-components/form-field/info-item/info-item.component.d.ts +23 -0
- package/lib/components/shared-components/form-field/input/input.component.d.ts +32 -0
- package/lib/components/shared-components/form-field/input-autocomplete/index.d.ts +1 -0
- package/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.d.ts +6 -0
- package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +31 -0
- package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +27 -0
- package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +27 -0
- package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +30 -0
- package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +45 -0
- package/lib/components/shared-components/form-field/radio/radio.component.d.ts +10 -0
- package/lib/components/shared-components/form-field/repeated-list/repeated-list.component.d.ts +9 -0
- package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +44 -0
- package/lib/components/shared-components/form-field/select/select.component.d.ts +36 -0
- package/lib/components/shared-components/form-field/table-list/table-list.component.d.ts +26 -0
- package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +10 -0
- package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +20 -0
- package/lib/components/shared-components/form-field/toggle-button/toggle-button.component.d.ts +20 -0
- package/lib/components/shared-components/index.d.ts +9 -0
- package/lib/components/shared-components/terms-conditions/terms-conditions.component.d.ts +12 -0
- package/lib/components/shared-components/title-section/title-section.component.d.ts +13 -0
- package/lib/constants/constants.d.ts +122 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/environments/environment.local.d.ts +26 -0
- package/lib/functions/data-to-blob.d.ts +1 -0
- package/lib/functions/encode-password.d.ts +1 -0
- package/lib/functions/handel-error-response.d.ts +4 -0
- package/lib/functions/index.d.ts +4 -0
- package/lib/functions/is-valid-data.d.ts +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/load-form.d.ts +10 -0
- package/lib/hooks/save-form.d.ts +15 -0
- package/lib/i18n/ar.d.ts +170 -0
- package/lib/i18n/en.d.ts +174 -0
- package/lib/i18n/index.d.ts +2 -0
- package/lib/interfaces/api-response.interface.d.ts +5 -0
- package/lib/interfaces/document-file.interface.d.ts +12 -0
- package/lib/interfaces/form-items.interface.d.ts +14 -0
- package/lib/interfaces/form.interface.d.ts +95 -0
- package/lib/interfaces/igate-user.interface.d.ts +16 -0
- package/lib/interfaces/index.d.ts +7 -0
- package/lib/interfaces/lov-list.interface.d.ts +10 -0
- package/lib/interfaces/lov.interface.d.ts +19 -0
- package/lib/interfaces/shared.interface.d.ts +21 -0
- package/lib/pipes/currency.pipe.d.ts +13 -0
- package/lib/pipes/format-as-password.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +2 -0
- package/lib/services/feedBack.service.d.ts +21 -0
- package/lib/services/i18n.service.d.ts +10 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/sidenav.service.d.ts +28 -0
- package/lib/validators/ar.directive.d.ts +11 -0
- package/lib/validators/currency.directive.d.ts +16 -0
- package/lib/validators/en.directive.d.ts +11 -0
- package/lib/validators/id.validator.d.ts +3 -0
- package/lib/validators/index.d.ts +7 -0
- package/lib/validators/string-to-boolean.pipe.d.ts +7 -0
- package/lib/validators/text.directive.d.ts +12 -0
- package/lib/validators/timer.pipe.d.ts +7 -0
- package/package.json +26 -0
- package/public-api.d.ts +13 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
2
|
+
/* eslint-disable @angular-eslint/use-lifecycle-interface */
|
|
3
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
4
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
5
|
+
import { BaseComponent } from '../base-component/base-component.component';
|
|
6
|
+
import { MatRadioButton, MatRadioGroup } from '@angular/material/radio';
|
|
7
|
+
import { FormsModule } from "@angular/forms";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
export class RadioComponent extends BaseComponent {
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.value = this.field ? JSON.parse(this.field) : false;
|
|
13
|
+
// this.resetPropagator.subscribe(this, this.resetCheckBoxData);
|
|
14
|
+
}
|
|
15
|
+
resetCheckBoxData() {
|
|
16
|
+
if (!this.isReadOnly) {
|
|
17
|
+
this.emitedValue.emit('false');
|
|
18
|
+
this.value = false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
valueChange(event) {
|
|
22
|
+
const checked = event.source.checked;
|
|
23
|
+
this.value = checked;
|
|
24
|
+
this.field = (checked).toString();
|
|
25
|
+
this.emitedValue.emit(this.field);
|
|
26
|
+
}
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: RadioComponent, isStandalone: true, selector: "app-radio", usesInheritance: true, ngImport: i0, template: "<mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"value\">\r\n\r\n <mat-radio-button class=\"m-3\" [disabled]=\"isReadOnly || disabled\" id=\"{{name}}{{randomID}}\"\r\n name=\"{{name}}{{randomID}}\" (change)=\"valueChange($event)\" [checked]=\"field\">\r\n <span class=\"fs-12 fw-medium fc-onyx\">\r\n {{isReadOnly ? labelTextReadMode : labelTextWriteMode}}\r\n </span>\r\n </mat-radio-button>\r\n\r\n</mat-radio-group>\r\n\r\n<!-- <mat-radio-group aria-label=\"Select an option\">\r\n <mat-radio-button value=\"1\">Option 1</mat-radio-button>\r\n <mat-radio-button value=\"2\">Option 2</mat-radio-button>\r\n</mat-radio-group> -->\r\n", styles: [""], dependencies: [{ kind: "component", type: MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RadioComponent, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{ selector: 'app-radio', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
|
|
33
|
+
MatRadioButton,
|
|
34
|
+
MatRadioGroup,
|
|
35
|
+
FormsModule
|
|
36
|
+
], template: "<mat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"value\">\r\n\r\n <mat-radio-button class=\"m-3\" [disabled]=\"isReadOnly || disabled\" id=\"{{name}}{{randomID}}\"\r\n name=\"{{name}}{{randomID}}\" (change)=\"valueChange($event)\" [checked]=\"field\">\r\n <span class=\"fs-12 fw-medium fc-onyx\">\r\n {{isReadOnly ? labelTextReadMode : labelTextWriteMode}}\r\n </span>\r\n </mat-radio-button>\r\n\r\n</mat-radio-group>\r\n\r\n<!-- <mat-radio-group aria-label=\"Select an option\">\r\n <mat-radio-button value=\"1\">Option 1</mat-radio-button>\r\n <mat-radio-button value=\"2\">Option 2</mat-radio-button>\r\n</mat-radio-group> -->\r\n" }]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBa0IsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFjM0MsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBRS9DLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDekQsZ0VBQWdFO0lBQ2xFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXFCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQzt1R0FuQlUsY0FBYzsyRkFBZCxjQUFjLDRGQ3BCM0IsNHBCQWVBLDBEREFJLGNBQWMsdVRBQ2QsYUFBYSw2TkFDYixXQUFXOzsyRkFHRixjQUFjO2tCQVoxQixTQUFTOytCQUNFLFdBQVcsV0FHWixDQUFDLHNCQUFzQixDQUFDLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsV0FBVztxQkFDWiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UtY29tcG9uZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvQ2hhbmdlLCBNYXRSYWRpb0dyb3VwfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmFkaW8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8uY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRSYWRpb0J1dHRvbixcclxuICAgIE1hdFJhZGlvR3JvdXAsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJhZGlvQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZmllbGQgPyBKU09OLnBhcnNlKHRoaXMuZmllbGQpIDogZmFsc2U7XHJcbiAgICAvLyB0aGlzLnJlc2V0UHJvcGFnYXRvci5zdWJzY3JpYmUodGhpcywgdGhpcy5yZXNldENoZWNrQm94RGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXNldENoZWNrQm94RGF0YSgpIHtcclxuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5KSB7XHJcbiAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCgnZmFsc2UnKVxyXG4gICAgICB0aGlzLnZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoYW5nZShldmVudDogTWF0UmFkaW9DaGFuZ2UpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5zb3VyY2UuY2hlY2tlZDtcclxuICAgIHRoaXMudmFsdWUgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5maWVsZCA9IChjaGVja2VkKS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHRoaXMuZmllbGQpXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1yYWRpby1ncm91cCBhcmlhLWxhYmVsPVwiU2VsZWN0IGFuIG9wdGlvblwiIFsobmdNb2RlbCldPVwidmFsdWVcIj5cclxuXHJcbiAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJtLTNcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCBkaXNhYmxlZFwiIGlkPVwie3tuYW1lfX17e3JhbmRvbUlEfX1cIlxyXG4gICAgbmFtZT1cInt7bmFtZX19e3tyYW5kb21JRH19XCIgKGNoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiZmllbGRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZnctbWVkaXVtIGZjLW9ueXhcIj5cclxuICAgICAge3tpc1JlYWRPbmx5ID8gbGFiZWxUZXh0UmVhZE1vZGUgOiBsYWJlbFRleHRXcml0ZU1vZGV9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuXHJcbjwvbWF0LXJhZGlvLWdyb3VwPlxyXG5cclxuPCEtLSA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJTZWxlY3QgYW4gb3B0aW9uXCI+XHJcbiAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCIxXCI+T3B0aW9uIDE8L21hdC1yYWRpby1idXR0b24+XHJcbiAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCIyXCI+T3B0aW9uIDI8L21hdC1yYWRpby1idXR0b24+XHJcbjwvbWF0LXJhZGlvLWdyb3VwPiAtLT5cclxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
4
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
5
|
+
import { NgClass, NgForOf, NgIf } from "@angular/common";
|
|
6
|
+
import { SatPopoverModule } from "@ncstate/sat-popover";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ncstate/sat-popover";
|
|
9
|
+
export class RepeatedListComponent {
|
|
10
|
+
listOfItems;
|
|
11
|
+
type = ''; // users-avatar, categories
|
|
12
|
+
constructor() { }
|
|
13
|
+
getImage(email) {
|
|
14
|
+
return "/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=" + email;
|
|
15
|
+
}
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RepeatedListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: RepeatedListComponent, isStandalone: true, selector: "app-repeated-list", inputs: { listOfItems: "listOfItems", type: "type" }, ngImport: i0, template: "<div class=\"{{type}}\">\r\n <ng-container *ngFor=\"let item of listOfItems; let i = index\">\r\n <div class=\"item\" *ngIf=\"i <= 1\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <span class=\"text-color-onyx font-14 font-weight-medium cursor-pointer more\" *ngIf=\"listOfItems.length > 2\"\r\n [satPopoverAnchor]=\"tooltipOfItems\" (mouseenter)=\"tooltipOfItems.open()\" (mouseleave)=\"tooltipOfItems.close()\">\r\n {{listOfItems.length - 2 !== 0 ? '+' + (listOfItems.length - 2) : ''}}\r\n </span>\r\n <sat-popover #tooltipOfItems horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"border bg-color-white\">\r\n <div class=\"d-flex align-items-center border-bottom p-2\" [ngClass]=\"{'border-0': last}\"\r\n *ngFor=\"let item of listOfItems; let i = index; let last = last\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"mx-1\" *ngIf=\"item.image\"></span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </sat-popover>\r\n\r\n\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: i1.SatPopoverAnchorDirective, selector: "[satPopoverAnchor]", inputs: ["satPopoverAnchor"], exportAs: ["satPopoverAnchor"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RepeatedListComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'app-repeated-list', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
|
|
22
|
+
NgForOf,
|
|
23
|
+
SatPopoverModule,
|
|
24
|
+
NgClass,
|
|
25
|
+
NgIf
|
|
26
|
+
], template: "<div class=\"{{type}}\">\r\n <ng-container *ngFor=\"let item of listOfItems; let i = index\">\r\n <div class=\"item\" *ngIf=\"i <= 1\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <span class=\"text-color-onyx font-14 font-weight-medium cursor-pointer more\" *ngIf=\"listOfItems.length > 2\"\r\n [satPopoverAnchor]=\"tooltipOfItems\" (mouseenter)=\"tooltipOfItems.open()\" (mouseleave)=\"tooltipOfItems.close()\">\r\n {{listOfItems.length - 2 !== 0 ? '+' + (listOfItems.length - 2) : ''}}\r\n </span>\r\n <sat-popover #tooltipOfItems horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"border bg-color-white\">\r\n <div class=\"d-flex align-items-center border-bottom p-2\" [ngClass]=\"{'border-0': last}\"\r\n *ngFor=\"let item of listOfItems; let i = index; let last = last\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"mx-1\" *ngIf=\"item.image\"></span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </sat-popover>\r\n\r\n\r\n</div>\r\n" }]
|
|
27
|
+
}], ctorParameters: () => [], propDecorators: { listOfItems: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], type: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}] } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9yZXBlYXRlZC1saXN0L3JlcGVhdGVkLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvcmVwZWF0ZWQtbGlzdC9yZXBlYXRlZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQseURBQXlEO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUFldEQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixXQUFXLENBQU07SUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLDJCQUEyQjtJQUMvQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLG9EQUFvRCxHQUFHLEtBQUssQ0FBQztJQUN0RSxDQUFDO3VHQVBVLHFCQUFxQjsyRkFBckIscUJBQXFCLG1JQ3BCbEMscTdDQWtDQSwwRERwQkksT0FBTyxrSEFDUCxnQkFBZ0IsbXFCQUNoQixPQUFPLG9GQUNQLElBQUk7OzJGQUdLLHFCQUFxQjtrQkFiakMsU0FBUzsrQkFDRSxtQkFBbUIsV0FHcEIsQ0FBQyxzQkFBc0IsQ0FBQyxjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsSUFBSTtxQkFDTDt3REFHUSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cclxuaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkBuY3N0YXRlL3NhdC1wb3BvdmVyXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yZXBlYXRlZC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZWQtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVwZWF0ZWQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nRm9yT2YsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nSWZcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlZExpc3RDb21wb25lbnQgIHtcclxuICBASW5wdXQoKSBsaXN0T2ZJdGVtczogYW55O1xyXG4gIEBJbnB1dCgpIHR5cGUgPSAnJzsgLy8gdXNlcnMtYXZhdGFyLCBjYXRlZ29yaWVzXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZ2V0SW1hZ2UoZW1haWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIFwiL2dyb3VwL2ktZ2F0ZS93bS1icG0vZm9ybXMvLS9wcm94eS9wb3J0cmFpdD9lbWFpbD1cIiArIGVtYWlsO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ7e3R5cGV9fVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdE9mSXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nSWY9XCJpIDw9IDFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpbWctY2FyZCBjaXJjbGVkLWltZyB4LXNtYWxsXCIgKm5nSWY9XCJpdGVtLmltYWdlXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaW1hZ2VcIiBbYWx0XT1cIml0ZW0ucGVyc29uTmFtZVwiPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibmFtZSBmb250LTEyXCI+XHJcbiAgICAgICAge3tpdGVtLnBlcnNvbk5hbWV9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNvbG9yLW9ueXggZm9udC0xNCBmb250LXdlaWdodC1tZWRpdW0gY3Vyc29yLXBvaW50ZXIgbW9yZVwiICpuZ0lmPVwibGlzdE9mSXRlbXMubGVuZ3RoID4gMlwiXHJcbiAgICBbc2F0UG9wb3ZlckFuY2hvcl09XCJ0b29sdGlwT2ZJdGVtc1wiIChtb3VzZWVudGVyKT1cInRvb2x0aXBPZkl0ZW1zLm9wZW4oKVwiIChtb3VzZWxlYXZlKT1cInRvb2x0aXBPZkl0ZW1zLmNsb3NlKClcIj5cclxuICAgIHt7bGlzdE9mSXRlbXMubGVuZ3RoIC0gMiAhPT0gMCA/ICcrJyArIChsaXN0T2ZJdGVtcy5sZW5ndGggLSAyKSA6ICcnfX1cclxuICA8L3NwYW4+XHJcbiAgPHNhdC1wb3BvdmVyICN0b29sdGlwT2ZJdGVtcyBob3Jpem9udGFsQWxpZ249XCJjZW50ZXJcIiB2ZXJ0aWNhbEFsaWduPVwiYWJvdmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYmctY29sb3Itd2hpdGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBwLTJcIiBbbmdDbGFzc109XCJ7J2JvcmRlci0wJzogbGFzdH1cIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RPZkl0ZW1zOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1jYXJkIGNpcmNsZWQtaW1nIHgtc21hbGxcIiAqbmdJZj1cIml0ZW0uaW1hZ2VcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmltYWdlXCIgW2FsdF09XCJpdGVtLnBlcnNvbk5hbWVcIj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCIgKm5nSWY9XCJpdGVtLmltYWdlXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZSBmb250LTEyXCI+XHJcbiAgICAgICAgICB7e2l0ZW0ucGVyc29uTmFtZX19XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NhdC1wb3BvdmVyPlxyXG5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
2
|
+
/* eslint-disable @angular-eslint/use-lifecycle-interface */
|
|
3
|
+
/* eslint-disable @angular-eslint/no-output-on-prefix */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
6
|
+
import { BaseComponent } from './../base-component/base-component.component';
|
|
7
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from '@angular/core';
|
|
8
|
+
import { NgClass, NgIf } from '@angular/common';
|
|
9
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
12
|
+
import * as i2 from "@angular/material/core";
|
|
13
|
+
import * as i3 from "@angular/forms";
|
|
14
|
+
export class SearchEmployeeComponent extends BaseComponent {
|
|
15
|
+
valueName;
|
|
16
|
+
label;
|
|
17
|
+
tooltip;
|
|
18
|
+
className = 'bordered-input';
|
|
19
|
+
showLabel = true;
|
|
20
|
+
optional = false;
|
|
21
|
+
data;
|
|
22
|
+
filteredOptions;
|
|
23
|
+
// @Input() floatLabel: FloatLabelType = 'auto';
|
|
24
|
+
floatLabel = 'auto';
|
|
25
|
+
error;
|
|
26
|
+
selectedItems = new Array();
|
|
27
|
+
selected = false;
|
|
28
|
+
selectedEmp = new EventEmitter();
|
|
29
|
+
onInputChange = new EventEmitter();
|
|
30
|
+
showEdit = false;
|
|
31
|
+
editDirectManger = new EventEmitter();
|
|
32
|
+
deleteDirectManger = new EventEmitter();
|
|
33
|
+
searchingForEmp = false;
|
|
34
|
+
arrayList = [];
|
|
35
|
+
isUniqueUsers = false;
|
|
36
|
+
userAlreadyExist = false;
|
|
37
|
+
emitedDeletedValue = new EventEmitter();
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
// this.resetPropagator.subscribe(this, this.resetSearchEmpData);
|
|
40
|
+
if (!this.field) {
|
|
41
|
+
this.field = {
|
|
42
|
+
personEmail: null,
|
|
43
|
+
personName: null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.controller.setValue(this.field?.personName);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
deleteRow(ind, rowData) {
|
|
51
|
+
if (!this.isReadOnly) {
|
|
52
|
+
this.arrayList = this.arrayList.filter((item, index) => {
|
|
53
|
+
return index != ind;
|
|
54
|
+
});
|
|
55
|
+
const obj = {
|
|
56
|
+
rowData: rowData,
|
|
57
|
+
arrayList: this.arrayList
|
|
58
|
+
};
|
|
59
|
+
this.emitedDeletedValue.emit(obj);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
ngOnChanges(changes) {
|
|
63
|
+
if (changes?.['field']) {
|
|
64
|
+
if (changes['field']?.currentValue?.personEmail == '' || changes['field']?.currentValue?.personEmail == null) {
|
|
65
|
+
this.controller.setValue('');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.controller.setValue(changes['field']?.currentValue?.personName);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (changes?.['disabled']) {
|
|
72
|
+
if (changes['disabled'].currentValue) {
|
|
73
|
+
this.controller.disable();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.controller.enable();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
resetSearchEmpData() {
|
|
81
|
+
if (!this.isReadOnly) {
|
|
82
|
+
if (this.multiple) {
|
|
83
|
+
this.arrayList = [];
|
|
84
|
+
this.field = {
|
|
85
|
+
personName: null,
|
|
86
|
+
personEmail: null,
|
|
87
|
+
};
|
|
88
|
+
this.emitedValue.emit([]);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.field = {
|
|
92
|
+
personName: null,
|
|
93
|
+
personEmail: null,
|
|
94
|
+
};
|
|
95
|
+
this.emitedValue.emit(this.field);
|
|
96
|
+
this.controller.setValue(null);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
onLoadOptions(event) {
|
|
101
|
+
const input = event.target.value;
|
|
102
|
+
this.data = [];
|
|
103
|
+
if (input.length >= 3) {
|
|
104
|
+
this.selected = false;
|
|
105
|
+
this.loading = true;
|
|
106
|
+
/* this.filteredOptions = this.coreStateMachineService
|
|
107
|
+
.dispatch(Constants.STATE_MACHINE_ACTION_SEARCH_EMPLOYEE, input)
|
|
108
|
+
?.then((result: any) => {
|
|
109
|
+
this.loading = false;
|
|
110
|
+
this.data = result.options;
|
|
111
|
+
});*/
|
|
112
|
+
}
|
|
113
|
+
else if (input.length == 0) {
|
|
114
|
+
if (this.multiple) {
|
|
115
|
+
const obj = {
|
|
116
|
+
arrayList: this.arrayList,
|
|
117
|
+
field: this.field
|
|
118
|
+
};
|
|
119
|
+
this.emitedValue.emit(obj);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.emitedValue.emit(null);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
includeData(option, filterValue) {
|
|
127
|
+
if (option?.email.toLowerCase().includes(filterValue) ||
|
|
128
|
+
option?.name.toLowerCase().includes(filterValue)) {
|
|
129
|
+
return option;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
getImage(id) {
|
|
136
|
+
return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + id;
|
|
137
|
+
}
|
|
138
|
+
selectOption(object, ev) {
|
|
139
|
+
this.userAlreadyExist = false;
|
|
140
|
+
this.selected = true;
|
|
141
|
+
this.data = [];
|
|
142
|
+
this.field = {
|
|
143
|
+
personName: object.description,
|
|
144
|
+
personEmail: object.email,
|
|
145
|
+
job: object.jobPosition,
|
|
146
|
+
jobCode: object.jobCode,
|
|
147
|
+
manager: object.manager,
|
|
148
|
+
department: object.department,
|
|
149
|
+
generalDepartment: object.generalDepartment,
|
|
150
|
+
sector: object.sector,
|
|
151
|
+
section: object.section,
|
|
152
|
+
seniorSectorName: object.seniorSectorName
|
|
153
|
+
};
|
|
154
|
+
if (this.multiple) {
|
|
155
|
+
if (this.isUniqueUsers && this.arrayList.some((item) => item?.personEmail === object?.email)) {
|
|
156
|
+
this.userAlreadyExist = true;
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
this.arrayList.push(this.field);
|
|
160
|
+
const obj = {
|
|
161
|
+
arrayList: this.arrayList,
|
|
162
|
+
field: this.field
|
|
163
|
+
};
|
|
164
|
+
this.emitedValue.emit(obj);
|
|
165
|
+
// this.emitedValue.emit(this.field);
|
|
166
|
+
this.controller.setValue(null);
|
|
167
|
+
this.field = {
|
|
168
|
+
personEmail: null,
|
|
169
|
+
personName: null,
|
|
170
|
+
job: null,
|
|
171
|
+
jobCode: null
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this.emitedValue.emit(this.field);
|
|
176
|
+
this.controller.setValue(object.description);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
openHints() {
|
|
180
|
+
// this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over');
|
|
181
|
+
}
|
|
182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SearchEmployeeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: SearchEmployeeComponent, isStandalone: true, selector: "app-search-employee", inputs: { valueName: "valueName", label: "label", tooltip: "tooltip", className: "className", showLabel: "showLabel", optional: "optional", data: "data", floatLabel: "floatLabel", error: "error", showEdit: "showEdit", arrayList: "arrayList", isUniqueUsers: "isUniqueUsers" }, outputs: { selectedEmp: "selectedEmp", onInputChange: "onInputChange", editDirectManger: "editDirectManger", deleteDirectManger: "deleteDirectManger", emitedDeletedValue: "emitedDeletedValue" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">\r\n {{labelTextWriteMode}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n\r\n <span *ngIf=\"optional && !hideOption\" class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"disabled\"\r\n [formControl]=\"controller\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of data\" [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error>\r\n\r\n <mat-error class=\"mb-2\" *ngIf=\"userAlreadyExist\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n\r\n <div class=\"col-12\" *ngIf=\"arrayList?.length && !isReadOnly && multiple\">\r\n <div class=\"example-list n-results\">\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': ind === 0}\"\r\n *ngFor=\"let emails of arrayList; let ind = index\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n <label *ngIf=\"emails?.personName\">\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n </div>\r\n <ds-button class=\"ds-btn-action\" size=\"small\" *ngIf=\"!(isReadOnly)\" (click)=\"deleteRow(ind,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"(isReadOnly && (field?.personName || multiple))\">\r\n <app-info-item class=\"d-flex flex-wrap align-items-center info-item w-100 mb-2\" type=\"user-picker\" [hasLabel]=\"hasLabel\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"labelTextReadMode\" [name]=\"field?.personName\" [value]=\"field?.personEmail\" [arrayList]=\"arrayList\">\r\n </app-info-item>\r\n</ng-container>\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{i18n.translate('searchEmployeeTooltip_1')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_2')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_3')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_4')}}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
184
|
+
}
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SearchEmployeeComponent, decorators: [{
|
|
186
|
+
type: Component,
|
|
187
|
+
args: [{ selector: 'app-search-employee', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
|
|
188
|
+
NgClass,
|
|
189
|
+
MatAutocompleteModule,
|
|
190
|
+
NgIf,
|
|
191
|
+
ReactiveFormsModule
|
|
192
|
+
], template: "<ng-container *ngIf=\"!isReadOnly\">\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"hasLabel\">\r\n <span class=\"form-label mb-0\">\r\n {{labelTextWriteMode}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n\r\n <span *ngIf=\"optional && !hideOption\" class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"disabled\"\r\n [formControl]=\"controller\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error>\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of data\" [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error>\r\n\r\n <mat-error class=\"mb-2\" *ngIf=\"userAlreadyExist\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n\r\n <div class=\"col-12\" *ngIf=\"arrayList?.length && !isReadOnly && multiple\">\r\n <div class=\"example-list n-results\">\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': ind === 0}\"\r\n *ngFor=\"let emails of arrayList; let ind = index\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n <label *ngIf=\"emails?.personName\">\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n </div>\r\n <ds-button class=\"ds-btn-action\" size=\"small\" *ngIf=\"!(isReadOnly)\" (click)=\"deleteRow(ind,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"(isReadOnly && (field?.personName || multiple))\">\r\n <app-info-item class=\"d-flex flex-wrap align-items-center info-item w-100 mb-2\" type=\"user-picker\" [hasLabel]=\"hasLabel\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"labelTextReadMode\" [name]=\"field?.personName\" [value]=\"field?.personEmail\" [arrayList]=\"arrayList\">\r\n </app-info-item>\r\n</ng-container>\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{i18n.translate('searchEmployeeTooltip_1')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_2')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_3')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_4')}}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"] }]
|
|
193
|
+
}], propDecorators: { valueName: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], label: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], tooltip: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], className: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], showLabel: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], optional: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], data: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], floatLabel: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], error: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], selectedEmp: [{
|
|
212
|
+
type: Output
|
|
213
|
+
}], onInputChange: [{
|
|
214
|
+
type: Output
|
|
215
|
+
}], showEdit: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], editDirectManger: [{
|
|
218
|
+
type: Output
|
|
219
|
+
}], deleteDirectManger: [{
|
|
220
|
+
type: Output
|
|
221
|
+
}], arrayList: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], isUniqueUsers: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], emitedDeletedValue: [{
|
|
226
|
+
type: Output
|
|
227
|
+
}] } });
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL3NlYXJjaC1lbXBsb3llZS9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvc2VhcmNoLWVtcGxveWVlL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRzlHLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBZXZFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxhQUFhO0lBQy9DLFNBQVMsQ0FBVTtJQUNuQixLQUFLLENBQVU7SUFDZixPQUFPLENBQVU7SUFDakIsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLENBQVM7SUFDdEIsZUFBZSxDQUFNO0lBQ3JC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cUJBQXFCLFdBR3RCLENBQUMsc0JBQXNCLENBQUMsY0FDckIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AscUJBQXFCO3dCQUNyQixJQUFJO3dCQUNKLG1CQUFtQjtxQkFDcEI7OEJBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXggKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UtY29tcG9uZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZsb2F0TGFiZWxUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNlYXJjaC1lbXBsb3llZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE5nSWYsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRW1wbG95ZWVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB2YWx1ZU5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnYm9yZGVyZWQtaW5wdXQnO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgb3B0aW9uYWwgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkYXRhITogYW55W107XHJcbiAgZmlsdGVyZWRPcHRpb25zOiBhbnk7XHJcbiAgLy8gQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gbmV3IEFycmF5PGFueT4oKTtcclxuICBzZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEVtcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25JbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBzaG93RWRpdCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBlZGl0RGlyZWN0TWFuZ2VyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlRGlyZWN0TWFuZ2VyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBzZWFyY2hpbmdGb3JFbXAgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcnJheUxpc3Q6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgaXNVbmlxdWVVc2VycyA9IGZhbHNlO1xyXG4gIHVzZXJBbHJlYWR5RXhpc3QgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZW1pdGVkRGVsZXRlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIHRoaXMucmVzZXRQcm9wYWdhdG9yLnN1YnNjcmliZSh0aGlzLCB0aGlzLnJlc2V0U2VhcmNoRW1wRGF0YSk7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQpIHtcclxuICAgICAgdGhpcy5maWVsZCA9IHtcclxuICAgICAgICBwZXJzb25FbWFpbDogbnVsbCxcclxuICAgICAgICBwZXJzb25OYW1lOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKHRoaXMuZmllbGQ/LnBlcnNvbk5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlUm93KGluZDogbnVtYmVyLCByb3dEYXRhKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLmFycmF5TGlzdCA9IHRoaXMuYXJyYXlMaXN0LmZpbHRlcigoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCAhPSBpbmQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgcm93RGF0YTogcm93RGF0YSxcclxuICAgICAgICBhcnJheUxpc3Q6IHRoaXMuYXJyYXlMaXN0XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWl0ZWREZWxldGVkVmFsdWUuZW1pdChvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXM/LlsnZmllbGQnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1snZmllbGQnXT8uY3VycmVudFZhbHVlPy5wZXJzb25FbWFpbCA9PSAnJyB8fCBjaGFuZ2VzWydmaWVsZCddPy5jdXJyZW50VmFsdWU/LnBlcnNvbkVtYWlsID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoJycpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKGNoYW5nZXNbJ2ZpZWxkJ10/LmN1cnJlbnRWYWx1ZT8ucGVyc29uTmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgIGlmIChjaGFuZ2VzPy5bJ2Rpc2FibGVkJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLmRpc2FibGUoKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5lbmFibGUoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFNlYXJjaEVtcERhdGEoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuYXJyYXlMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IHtcclxuICAgICAgICAgIHBlcnNvbk5hbWU6IG51bGwsXHJcbiAgICAgICAgICBwZXJzb25FbWFpbDogbnVsbCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdChbXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IHtcclxuICAgICAgICAgIHBlcnNvbk5hbWU6IG51bGwsXHJcbiAgICAgICAgICBwZXJzb25FbWFpbDogbnVsbCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmZpZWxkKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9hZE9wdGlvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgIGlmIChpbnB1dC5sZW5ndGggPj0gMykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAvKiAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmNvcmVTdGF0ZU1hY2hpbmVTZXJ2aWNlXHJcbiAgICAgICAgLmRpc3BhdGNoKENvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TRUFSQ0hfRU1QTE9ZRUUsIGlucHV0KVxyXG4gICAgICAgID8udGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0gcmVzdWx0Lm9wdGlvbnM7XHJcbiAgICAgICAgfSk7Ki9cclxuICAgIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09IDApIHtcclxuICAgICAgaWYodGhpcy5tdWx0aXBsZSl7XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgYXJyYXlMaXN0OiB0aGlzLmFycmF5TGlzdCxcclxuICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdChvYmopO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVEYXRhKG9wdGlvbjogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9wdGlvbj8uZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkgfHxcclxuICAgICAgb3B0aW9uPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEltYWdlKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPScgKyBpZDtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihvYmplY3Q6IGFueSwgZXY6IGFueSkge1xyXG4gICAgdGhpcy51c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWVsZCA9IHtcclxuICAgICAgcGVyc29uTmFtZTogb2JqZWN0LmRlc2NyaXB0aW9uLFxyXG4gICAgICBwZXJzb25FbWFpbDogb2JqZWN0LmVtYWlsLFxyXG4gICAgICBqb2I6b2JqZWN0LmpvYlBvc2l0aW9uLFxyXG4gICAgICBqb2JDb2RlOm9iamVjdC5qb2JDb2RlLFxyXG4gICAgICBtYW5hZ2VyOiBvYmplY3QubWFuYWdlcixcclxuICAgICAgZGVwYXJ0bWVudDogb2JqZWN0LmRlcGFydG1lbnQsXHJcbiAgICAgIGdlbmVyYWxEZXBhcnRtZW50OiBvYmplY3QuZ2VuZXJhbERlcGFydG1lbnQsXHJcbiAgICAgIHNlY3Rvcjogb2JqZWN0LnNlY3RvcixcclxuICAgICAgc2VjdGlvbjogb2JqZWN0LnNlY3Rpb24sXHJcbiAgICAgIHNlbmlvclNlY3Rvck5hbWU6IG9iamVjdC5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuaXNVbmlxdWVVc2VycyAmJiB0aGlzLmFycmF5TGlzdC5zb21lKChpdGVtKSA9PiBpdGVtPy5wZXJzb25FbWFpbCA9PT0gb2JqZWN0Py5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLnVzZXJBbHJlYWR5RXhpc3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hcnJheUxpc3QucHVzaCh0aGlzLmZpZWxkKTtcclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIGFycmF5TGlzdDogdGhpcy5hcnJheUxpc3QsXHJcbiAgICAgICAgZmllbGQ6IHRoaXMuZmllbGRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KG9iaik7XHJcbiAgICAgIC8vIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmZpZWxkKTtcclxuICAgICAgdGhpcy5jb250cm9sbGVyLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmZpZWxkID0ge1xyXG4gICAgICAgIHBlcnNvbkVtYWlsOiBudWxsLFxyXG4gICAgICAgIHBlcnNvbk5hbWU6IG51bGwsXHJcbiAgICAgICAgam9iOm51bGwsXHJcbiAgICAgICAgam9iQ29kZTpudWxsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZCk7XHJcbiAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZShvYmplY3QuZGVzY3JpcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkhpbnRzKCkge1xyXG4gICAgLy8gdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgRmFxU2lkZW5hdkNvbXBvbmVudCwgJ2VuZCcsICdvdmVyJyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHNlYXJjaEVtcCB7XHJcbiAgcGVyc29uTmFtZT86IHN0cmluZztcclxuICBwZXJzb25FbWFpbD86IHN0cmluZztcclxuICBjb250YWN0Pzogc3RyaW5nO1xyXG4gIGVtcGxveWVlTnVtYmVyPzogc3RyaW5nO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSZWFkT25seVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiICpuZ0lmPVwiaGFzTGFiZWxcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+XHJcbiAgICAgIHt7bGFiZWxUZXh0V3JpdGVNb2RlfX1cclxuICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW3NhdFBvcG92ZXJBbmNob3JdPVwic2VhcmNoRW1wUG9wb3ZlclwiXHJcbiAgICAgICAgPjwvZHMtaWNvbj5cclxuICAgICAgICA8IS0tIChjbGljayk9XCJzZWFyY2hFbXBQb3BvdmVyLnRvZ2dsZSgpOyAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIiAtLT5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbmFsICYmICFoaWRlT3B0aW9uXCIgY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj4ge3tpMThuLnRyYW5zbGF0ZSgnT3B0aW9uYWwnKX19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7Y2xhc3NOYW1lfX1cIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcbiAgICA8bWF0LWxhYmVsPlxyXG4gICAgICB7e2xhYmVsfX1cclxuICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgPGRzLWljb24gbWF0UHJlZml4IGljb249XCJzZWFyY2hcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTE4XCI+PC9kcy1pY29uPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhcmlhLWxhYmVsPVwiTnVtYmVyXCIgKGlucHV0KT1cIm9uTG9hZE9wdGlvbnMoJGV2ZW50KVwiIG1hdElucHV0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xsZXJcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIj5cclxuICAgXHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cInNob3dFcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zcGlubmVyIGQtaW5saW5lLWJsb2NrIHNwaW4gZmMtY29yYWxcIiBtYXRTdWZmaXggKm5nSWY9XCJsb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhXCIgW3ZhbHVlXT1cIm9wdGlvbj8uWydwZXJzb25OYW1lJ11cIlxyXG4gICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RPcHRpb24ob3B0aW9uICwgJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNhcmQgY2lyY2xlZC1pbWcgc21hbGxcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlKG9wdGlvbj8uZW1haWwpXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmUtaGVpZ2h0LTFcIj5cclxuICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtMTcgZnctbWVkaXVtIGZjLW9ueXggbWItMCBsaW5lLWhlaWdodC0xXCI+e3tvcHRpb24/Lm5hbWV9fTwvaDY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTMgZnctbm9ybWFsIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICAgICAgICAgIHt7b3B0aW9uPy5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICA8bWF0LWVycm9yIGNsYXNzPVwibWItMlwiICpuZ0lmPVwiKCFjb250cm9sbGVyPy52YWxpZClcIj57e2kxOG4udHJhbnNsYXRlKCd2YWxpZFNlYXJjaEVycm9yJyl9fXt7bGFiZWx9fVxyXG4gICAgPC9tYXQtZXJyb3I+XHJcbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWVycm9yIGNsYXNzPVwibWItMlwiICpuZ0lmPVwic2hvd0Vycm9yTWVzc2FnZVwiPnt7ZXJyb3JNZXNzYWdlfX1cclxuICA8L21hdC1lcnJvcj5cclxuXHJcbiAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cInVzZXJBbHJlYWR5RXhpc3RcIj5cclxuICAgIHt7IGkxOG4udHJhbnNsYXRlKCd1c2VyQWxyZWFkeUV4aXN0JykgfX1cclxuICA8L21hdC1lcnJvcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwiYXJyYXlMaXN0Py5sZW5ndGggJiYgIWlzUmVhZE9ubHkgJiYgbXVsdGlwbGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWxpc3Qgbi1yZXN1bHRzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWJveCBuLWNvbCBweC0zXCIgW25nQ2xhc3NdPVwieydtdC0wJzogaW5kID09PSAwfVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGVtYWlscyBvZiBhcnJheUxpc3Q7IGxldCBpbmQgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgdy0xMDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlKGVtYWlscz8ucGVyc29uRW1haWwpXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIlxyXG4gICAgICAgICAgICAgIGFsdD1cIlwiIGNsYXNzPVwicHJvZi1pbWdcIiBkcmFnZ2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbWFpbHM/LnBlcnNvbk5hbWVcIj5cclxuICAgICAgICAgICAgICB7eyhlbWFpbHM/LnBlcnNvbk5hbWUpfX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7e2VtYWlscz8ucGVyc29uRW1haWx9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRzLWJ1dHRvbiBjbGFzcz1cImRzLWJ0bi1hY3Rpb25cIiBzaXplPVwic21hbGxcIiAqbmdJZj1cIiEoaXNSZWFkT25seSlcIiAoY2xpY2spPVwiZGVsZXRlUm93KGluZCxlbWFpbHMpXCIgaWNvbj5cclxuICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cInRyYXNoXCIgY2xhc3M9XCJmYy1yZWQgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNSZWFkT25seSAmJiAoZmllbGQ/LnBlcnNvbk5hbWUgfHwgbXVsdGlwbGUpKVwiPlxyXG4gIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgaW5mby1pdGVtIHctMTAwIG1iLTJcIiB0eXBlPVwidXNlci1waWNrZXJcIiBbaGFzTGFiZWxdPVwiaGFzTGFiZWxcIlxyXG4gICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW25nQ2xhc3NdPVwieyd1c2VyLXBpY2tlcic6ICFpc1JlYWRPbmx5fVwiIFthY3Rpb25UeXBlXT1cIiFpc1JlYWRPbmx5ID8gJ2RlbGV0ZScgOiAnZWRpdCdcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsVGV4dFJlYWRNb2RlXCIgW25hbWVdPVwiZmllbGQ/LnBlcnNvbk5hbWVcIiAgW3ZhbHVlXT1cImZpZWxkPy5wZXJzb25FbWFpbFwiIFthcnJheUxpc3RdPVwiYXJyYXlMaXN0XCI+XHJcbiAgPC9hcHAtaW5mby1pdGVtPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxzYXQtcG9wb3ZlciAjc2VhcmNoRW1wUG9wb3ZlciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZWZhdWx0LXBvcG92ZXIgcC0zXCI+XHJcbiAgICA8b2wgY2xhc3M9XCJweC0zIG0tMFwiPlxyXG4gICAgICA8bGk+e3tpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzEnKX19PC9saT5cclxuICAgICAgPGxpPnt7aTE4bi50cmFuc2xhdGUoJ3NlYXJjaEVtcGxveWVlVG9vbHRpcF8yJyl9fTwvbGk+XHJcbiAgICAgIDxsaT57e2kxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMycpfX08L2xpPlxyXG4gICAgICA8bGk+e3tpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzQnKX19PC9saT5cclxuICAgIDwvb2w+XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==
|