bpm-core 0.0.105 → 0.0.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/fesm2022/bpm-core.mjs +249 -257
  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/doc-uploader/docs-uploader.component.d.ts +2 -1
  6. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  7. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  8. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  9. package/lib/pipes/currency.pipe.d.ts +1 -1
  10. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  11. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  12. package/lib/validators/text.directive.d.ts +1 -1
  13. package/lib/validators/timer.pipe.d.ts +1 -1
  14. package/package.json +2 -4
  15. package/esm2022/bpm-core.mjs +0 -5
  16. package/esm2022/lib/app/app.component.mjs +0 -79
  17. package/esm2022/lib/classes/form-validation.mjs +0 -80
  18. package/esm2022/lib/classes/index.mjs +0 -2
  19. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +0 -44
  20. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +0 -23
  21. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +0 -113
  22. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +0 -25
  23. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +0 -27
  24. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +0 -2
  25. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +0 -237
  26. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +0 -255
  27. package/esm2022/lib/components/app-component-sections/index.mjs +0 -9
  28. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +0 -79
  29. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +0 -89
  30. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +0 -158
  31. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +0 -34
  32. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +0 -345
  33. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +0 -45
  34. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +0 -271
  35. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +0 -38
  36. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +0 -164
  37. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +0 -138
  38. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -30
  39. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +0 -29
  40. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +0 -67
  41. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +0 -138
  42. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +0 -234
  43. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +0 -198
  44. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +0 -91
  45. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +0 -185
  46. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +0 -131
  47. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +0 -31
  48. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +0 -175
  49. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +0 -186
  50. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +0 -525
  51. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +0 -33
  52. package/esm2022/lib/components/shared-components/form-field/index.mjs +0 -26
  53. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +0 -76
  54. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +0 -71
  55. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +0 -3
  56. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +0 -2
  57. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +0 -73
  58. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +0 -69
  59. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +0 -61
  60. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +0 -74
  61. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +0 -85
  62. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +0 -52
  63. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +0 -32
  64. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +0 -192
  65. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +0 -191
  66. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +0 -36
  67. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +0 -116
  68. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +0 -39
  69. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +0 -57
  70. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +0 -90
  71. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +0 -43
  72. package/esm2022/lib/components/shared-components/index.mjs +0 -9
  73. package/esm2022/lib/components/shared-components/table/table.component.mjs +0 -243
  74. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +0 -31
  75. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +0 -31
  76. package/esm2022/lib/constants/constants.mjs +0 -149
  77. package/esm2022/lib/constants/index.mjs +0 -2
  78. package/esm2022/lib/directives/ar.directive.mjs +0 -54
  79. package/esm2022/lib/directives/currency.directive.mjs +0 -92
  80. package/esm2022/lib/directives/en.directive.mjs +0 -51
  81. package/esm2022/lib/directives/number.directive.mjs +0 -68
  82. package/esm2022/lib/directives/skip-location.directive.mjs +0 -28
  83. package/esm2022/lib/enums/actions.enum.mjs +0 -22
  84. package/esm2022/lib/enums/colors.enum.mjs +0 -6
  85. package/esm2022/lib/enums/events.enum.mjs +0 -6
  86. package/esm2022/lib/functions/data-to-blob.mjs +0 -12
  87. package/esm2022/lib/functions/encode-password.mjs +0 -14
  88. package/esm2022/lib/functions/handel-error-response.mjs +0 -12
  89. package/esm2022/lib/functions/index.mjs +0 -5
  90. package/esm2022/lib/functions/is-valid-data.mjs +0 -42
  91. package/esm2022/lib/helpers/shared.helper.mjs +0 -26
  92. package/esm2022/lib/hooks/index.mjs +0 -3
  93. package/esm2022/lib/hooks/load-form.mjs +0 -13
  94. package/esm2022/lib/hooks/save-form.mjs +0 -18
  95. package/esm2022/lib/i18n/ar.mjs +0 -200
  96. package/esm2022/lib/i18n/en.mjs +0 -204
  97. package/esm2022/lib/i18n/index.mjs +0 -3
  98. package/esm2022/lib/interfaces/action.interface.mjs +0 -2
  99. package/esm2022/lib/interfaces/api-response.interface.mjs +0 -2
  100. package/esm2022/lib/interfaces/document-file.interface.mjs +0 -2
  101. package/esm2022/lib/interfaces/form-items.interface.mjs +0 -2
  102. package/esm2022/lib/interfaces/form.interface.mjs +0 -150
  103. package/esm2022/lib/interfaces/igate-user.interface.mjs +0 -2
  104. package/esm2022/lib/interfaces/index.mjs +0 -8
  105. package/esm2022/lib/interfaces/lov-list.interface.mjs +0 -2
  106. package/esm2022/lib/interfaces/lov.interface.mjs +0 -2
  107. package/esm2022/lib/interfaces/shared.interface.mjs +0 -2
  108. package/esm2022/lib/pipes/currency.pipe.mjs +0 -66
  109. package/esm2022/lib/pipes/format-as-password.pipe.mjs +0 -19
  110. package/esm2022/lib/pipes/index.mjs +0 -3
  111. package/esm2022/lib/pipes/status-style.pipe.mjs +0 -57
  112. package/esm2022/lib/pipes/translate.pipe.mjs +0 -36
  113. package/esm2022/lib/regex/index.mjs +0 -2
  114. package/esm2022/lib/regex/regex-patterns.mjs +0 -4
  115. package/esm2022/lib/services/action.service.ts.mjs +0 -25
  116. package/esm2022/lib/services/core.service.ts.mjs +0 -527
  117. package/esm2022/lib/services/feedBack.service.mjs +0 -81
  118. package/esm2022/lib/services/i18n.service.mjs +0 -36
  119. package/esm2022/lib/services/index.mjs +0 -6
  120. package/esm2022/lib/services/sidenav.service.mjs +0 -36
  121. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +0 -8
  122. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +0 -90
  123. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +0 -482
  124. package/esm2022/lib/testComponent/services/i18n.service.mjs +0 -39
  125. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +0 -54
  126. package/esm2022/lib/validators/id.validator.mjs +0 -66
  127. package/esm2022/lib/validators/index.mjs +0 -8
  128. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +0 -16
  129. package/esm2022/lib/validators/text.directive.mjs +0 -50
  130. package/esm2022/lib/validators/timer.pipe.mjs +0 -19
  131. package/esm2022/public-api.mjs +0 -19
@@ -1,131 +0,0 @@
1
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
2
- import { Component, Input, Output, EventEmitter, CUSTOM_ELEMENTS_SCHEMA, forwardRef, DestroyRef, inject } from '@angular/core';
3
- import { NgClass } from "@angular/common";
4
- import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from "@angular/material/autocomplete";
5
- import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { Shareds } from '../shared-imports';
8
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/input";
11
- import * as i2 from "@angular/material/form-field";
12
- import * as i3 from "../form-label/form-label.component";
13
- import * as i4 from "../validation-errors/validation-errors.component";
14
- import * as i5 from "../info-item/info-item.component";
15
- import * as i6 from "@angular/forms";
16
- export class CustomSearchableComponent extends ControlValueAccessorDirective {
17
- options;
18
- selectedValue = new EventEmitter();
19
- isLengthGreaterThan4 = new EventEmitter();
20
- disabled = false;
21
- displayedLabel = 'description';
22
- key = 'description';
23
- floatLabel = 'auto';
24
- className = 'bordered-input';
25
- destroyRef = inject(DestroyRef);
26
- ngOnInit() {
27
- super.ngOnInit();
28
- this.actionStateService.resetAction$
29
- .pipe(takeUntilDestroyed(this.destroyRef))
30
- .subscribe(res => {
31
- if (!this.isReadOnly && this.control.enabled) {
32
- this.control.reset();
33
- }
34
- });
35
- }
36
- noData = false;
37
- filteredOptions;
38
- clearInput() {
39
- this.control.reset();
40
- this.searchControl.reset();
41
- if (!this.isReadOnly) {
42
- this.setFilteredOptions();
43
- }
44
- }
45
- onFocusOut() {
46
- this.control.markAsTouched();
47
- }
48
- onKeyDown(e, input) {
49
- setTimeout(() => {
50
- //reset in case no value and delete or backspace pressed
51
- if ((e.keyCode == 8 || e.keyCode == 46) && !this.control.value) {
52
- if (this.control) {
53
- this.control.reset();
54
- this.control.markAsTouched();
55
- }
56
- input.focus();
57
- }
58
- });
59
- }
60
- ngOnChanges(changes) {
61
- this.setFilteredOptions();
62
- }
63
- onValueChange(data) {
64
- this.setFilteredOptions(data);
65
- }
66
- setFilteredOptions(data) {
67
- if (this.options?.length > 0) {
68
- this.noData = false;
69
- // this.loading = false
70
- this.filteredOptions = data?.target?.value ? this._filter(data.target.value) : this.options.slice(0, 30);
71
- this.filteredOptions;
72
- }
73
- else {
74
- this.noData = true;
75
- }
76
- }
77
- _filter(value) {
78
- const filterValue = typeof value === 'string' ? value?.toLowerCase() : value;
79
- return this.options?.filter((option) => Object.values(option).join('')?.toLowerCase().includes(filterValue)).slice(0, 30);
80
- }
81
- displayFn(option) {
82
- return option ? option : '';
83
- }
84
- getAutoComplete(value) {
85
- this.control.setValue({ key: value[this.key], value: value[this.displayedLabel] });
86
- this.searchControl.setValue(value[this.displayedLabel]);
87
- this.selectedValue.emit(value);
88
- }
89
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: CustomSearchableComponent, isStandalone: true, selector: "app-custom-searchable", inputs: { options: "options", disabled: "disabled", displayedLabel: "displayedLabel", key: "key", floatLabel: "floatLabel", className: "className" }, outputs: { selectedValue: "selectedValue", isLengthGreaterThan4: "isLengthGreaterThan4" }, providers: [
91
- {
92
- provide: NG_VALUE_ACCESSOR,
93
- useExisting: forwardRef(() => CustomSearchableComponent),
94
- multi: true,
95
- },
96
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(isReadOnly && control?.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading,\r\n 'custom-validation': !control.hasValidator(Validators['required'])\r\n }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n </label>\r\n\r\n @if(loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value) {\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-coral cursor-pointer fs-12\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\">\r\n\r\n\r\n\r\n\r\n @if(!noData) {\r\n <ng-container>\r\n @for(option of filteredOptions; track option) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']) {\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']) {\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n {{ option[displayedLabel] }}\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData) {\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{ 'validSelectError' | translate }}{{ label }}</mat-error> -->\r\n\r\n @if(showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: 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: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i4.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: i5.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i6.ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
97
- }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CustomSearchableComponent, decorators: [{
99
- type: Component,
100
- args: [{ selector: 'app-custom-searchable', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
101
- NgClass,
102
- MatAutocomplete,
103
- MatOption,
104
- MatAutocompleteTrigger,
105
- MatInputModule,
106
- ...Shareds
107
- ], standalone: true, providers: [
108
- {
109
- provide: NG_VALUE_ACCESSOR,
110
- useExisting: forwardRef(() => CustomSearchableComponent),
111
- multi: true,
112
- },
113
- ], template: "@if(isReadOnly && control?.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading,\r\n 'custom-validation': !control.hasValidator(Validators['required'])\r\n }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"label\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n </label>\r\n\r\n @if(loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value) {\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-coral cursor-pointer fs-12\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\">\r\n\r\n\r\n\r\n\r\n @if(!noData) {\r\n <ng-container>\r\n @for(option of filteredOptions; track option) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']) {\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']) {\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n {{ option[displayedLabel] }}\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData) {\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{ 'validSelectError' | translate }}{{ label }}</mat-error> -->\r\n\r\n @if(showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n</ng-container>\r\n}\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}\n"] }]
114
- }], propDecorators: { options: [{
115
- type: Input
116
- }], selectedValue: [{
117
- type: Output
118
- }], isLengthGreaterThan4: [{
119
- type: Output
120
- }], disabled: [{
121
- type: Input
122
- }], displayedLabel: [{
123
- type: Input
124
- }], key: [{
125
- type: Input
126
- }], floatLabel: [{
127
- type: Input
128
- }], className: [{
129
- type: Input
130
- }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlYXJjaGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvY3VzdG9tLXNlYXJjaGFibGUtYXV0b2NvbXBsZXRlL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2N1c3RvbS1zZWFyY2hhYmxlLWF1dG9jb21wbGV0ZS9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFpQixzQkFBc0IsRUFBRSxVQUFVLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQTRCaEUsTUFBTSxPQUFPLHlCQUFpQyxTQUFRLDZCQUFtQztJQUM5RSxPQUFPLENBQU87SUFDYixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsY0FBYyxHQUFVLGFBQWEsQ0FBQztJQUN0QyxHQUFHLEdBQVcsYUFBYSxDQUFDO0lBQzVCLFVBQVUsR0FBUSxNQUFNLENBQUM7SUFDekIsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkIsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWTthQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixlQUFlLENBQU87SUFFdEIsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFnQixFQUFFLEtBQXVCO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxDQUFDO2dCQUM5RCxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQztvQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO29CQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFBO2dCQUM5QixDQUFDO2dCQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFDRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQUs7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtZQUNuQix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDeEcsSUFBSSxDQUFDLGVBQWUsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuQyxDQUFDO3VHQWpGVSx5QkFBeUI7MkZBQXpCLHlCQUF5QixxVEFYekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysc0VDOUJILCt5R0EyR0EsNEdEM0ZJLE9BQU8sb0ZBQ1AsZUFBZSx5V0FDZixTQUFTLHFKQUNULHNCQUFzQixvUUFDdEIsY0FBYzs7MkZBZUwseUJBQXlCO2tCQXpCckMsU0FBUzsrQkFDRSx1QkFBdUIsV0FHeEIsQ0FBQyxzQkFBc0IsQ0FBQyxXQUN4Qjt3QkFDUCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2QsR0FBRyxPQUFPO3FCQUNiLGNBQ2EsSUFBSSxhQUNMO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBmb3J3YXJkUmVmLCBPbkluaXQsIERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nQ2xhc3N9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFNoYXJlZHMgfSBmcm9tICcuLi9zaGFyZWQtaW1wb3J0cyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tc2VhcmNoYWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1zZWFyY2hhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tc2VhcmNoYWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxyXG4gICAgTWF0T3B0aW9uLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgLi4uU2hhcmVkc1xyXG5dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF1cclxufSlcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnQgPFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBhbnk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzTGVuZ3RoR3JlYXRlclRoYW40ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzcGxheWVkTGFiZWw6IHN0cmluZz0gJ2Rlc2NyaXB0aW9uJztcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIHRoaXMuYWN0aW9uU3RhdGVTZXJ2aWNlLnJlc2V0QWN0aW9uJFxyXG4gICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMuY29udHJvbC5lbmFibGVkKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5vRGF0YSA9IGZhbHNlO1xyXG4gIGZpbHRlcmVkT3B0aW9ucyE6IGFueTtcclxuXHJcbiAgY2xlYXJJbnB1dCgpIHtcclxuICAgIHRoaXMuY29udHJvbC5yZXNldCgpXHJcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucmVzZXQoKVxyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1c091dCgpe1xyXG4gICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvL3Jlc2V0IGluIGNhc2Ugbm8gdmFsdWUgYW5kIGRlbGV0ZSBvciBiYWNrc3BhY2UgcHJlc3NlZFxyXG4gICAgICBpZiggKGUua2V5Q29kZSA9PSA4IHx8IGUua2V5Q29kZSA9PSA0NikgJiYgIXRoaXMuY29udHJvbC52YWx1ZSl7XHJcbiAgICAgICAgaWYodGhpcy5jb250cm9sKXtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5yZXNldCgpXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpXHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2UoZGF0YSkge1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoZGF0YSlcclxuICB9XHJcblxyXG4gIHNldEZpbHRlcmVkT3B0aW9ucyhkYXRhPykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlXHJcbiAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gZGF0YT8udGFyZ2V0Py52YWx1ZSA/IHRoaXMuX2ZpbHRlcihkYXRhLnRhcmdldC52YWx1ZSkgOiB0aGlzLm9wdGlvbnMuc2xpY2UoMCwgMzApXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBPYmplY3QudmFsdWVzKG9wdGlvbikuam9pbignJyk/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKS5zbGljZSgwLCAzMCk7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5Rm4ob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbiA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXV0b0NvbXBsZXRlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh7a2V5OnZhbHVlW3RoaXMua2V5XSx2YWx1ZTp2YWx1ZVt0aGlzLmRpc3BsYXllZExhYmVsXX0pO1xyXG4gICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlW3RoaXMuZGlzcGxheWVkTGFiZWxdKTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KHZhbHVlKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiQGlmKGlzUmVhZE9ubHkgJiYgY29udHJvbD8udmFsdWUpIHtcclxuPG5nLWNvbnRhaW5lcj5cclxuICA8YXBwLWluZm8taXRlbVxyXG4gICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiXHJcbiAgICBbaGFzTGFiZWxdPVwiISFsYWJlbFwiXHJcbiAgICBbdmFsdWVdPVwiY29udHJvbD8udmFsdWUudmFsdWVcIlxyXG4gID48L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG59IEBpZighaXNSZWFkT25seSkge1xyXG48bmctY29udGFpbmVyPlxyXG4gIEBpZihsYWJlbCkge1xyXG4gIDxhcHAtZm9ybS1sYWJlbFxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFtvcHRpb25hbF09XCJyZXF1aXJlZCB8fCBtYW5kYXRvcnkgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXHJcbiAgPjwvYXBwLWZvcm0tbGFiZWw+XHJcbiAgfVxyXG5cclxuICA8bWF0LWZvcm0tZmllbGRcclxuICAgIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7IGNsYXNzTmFtZSB9fVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IGxvYWRpbmcsXHJcbiAgICAgICdjdXN0b20tdmFsaWRhdGlvbic6ICFjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzWydyZXF1aXJlZCddKVxyXG4gICAgIH1cIlxyXG4gICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXHJcbiAgPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNlYXJjaCBmYy1jb3JhbCBmcy0xOFwiIG1hdFByZWZpeD48L3NwYW4+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNhdXRvY29tcGxldGVJbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBhdXRvY29tcGxldGVJbnB1dClcIlxyXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJOdW1iZXJcIlxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxyXG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlPy5rZXlcIlxyXG4gICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9sYWJlbD5cclxuXHJcbiAgICBAaWYobG9hZGluZykge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbFwiIG1hdFN1ZmZpeD48L3NwYW4+XHJcbiAgICB9IEBpZighbG9hZGluZyAmJiBzZWFyY2hDb250cm9sPy52YWx1ZSkge1xyXG4gICAgPHNwYW5cclxuICAgICAgY2xhc3M9XCJzZmkgc2ZpLWNsb3NlIGQtaW5saW5lLWJsb2NrIGZjLWNvcmFsIGN1cnNvci1wb2ludGVyIGZzLTEyXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXQoKVwiXHJcbiAgICAgIG1hdFN1ZmZpeFxyXG4gICAgPjwvc3Bhbj5cclxuICAgIH1cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cclxuICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcclxuICAgICAgKG9wdGlvblNlbGVjdGVkKT1cImdldEF1dG9Db21wbGV0ZSgkZXZlbnQub3B0aW9uLnZhbHVlKVwiPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgQGlmKCFub0RhdGEpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICBAZm9yKG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnM7IHRyYWNrIG9wdGlvbikge1xyXG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEBpZihvcHRpb25bJ2F2YXRhcl91cmwnXSkge1xyXG4gICAgICAgICAgICA8ZmlndXJlIGNsYXNzPVwiaW1nLWNhcmQgc21hbGwgY2lyY2xlZC1pbWcgcC0wIG0tMFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJvcHRpb25bJ2F2YXRhcl91cmwnXVwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZmlndXJlPlxyXG4gICAgICAgICAgICB9IEBpZihvcHRpb25bJ2F2YXRhcl91cmwnXSkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHt7IG9wdGlvbltkaXNwbGF5ZWRMYWJlbF0gfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBpZihub0RhdGEpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5ObyBEYXRhPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG5cclxuICAgIDwhLS0gPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cIighY29udHJvbD8udmFsaWQpXCI+e3sgJ3ZhbGlkU2VsZWN0RXJyb3InIHwgdHJhbnNsYXRlIH19e3sgbGFiZWwgfX08L21hdC1lcnJvcj4gLS0+XHJcblxyXG4gICAgQGlmKHNob3dIaW50KSB7XHJcbiAgICA8bWF0LWhpbnQ+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJzZmkgc2ZpLWNoZWNrLWNpcmNsZSBmb250LTEwIGZjLWRhcmstZ3JheVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZmMtb2FzaXMtbGlnaHQtaW1wJzogdmFsdWUgfVwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcbiAgICB9XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbjwvbmctY29udGFpbmVyPlxyXG59XHJcbiJdfQ==
@@ -1,31 +0,0 @@
1
- export class CustomDateFormat {
2
- _parse = {
3
- dateInput: 'DD/MM/YYYY'
4
- };
5
- _display = {
6
- dateInput: 'DD/MM/YYYY',
7
- monthYearLabel: 'DD MMM YYYY',
8
- dateA11yLabel: 'LL',
9
- monthYearA11yLabel: 'MMMM YYYY'
10
- };
11
- set parse(parse) {
12
- this._parse = Object.assign({}, this._parse, parse);
13
- }
14
- get parse() {
15
- return this._parse;
16
- }
17
- set display(display) {
18
- this._display = Object.assign({}, this._display, display);
19
- }
20
- get display() {
21
- return this._display;
22
- }
23
- updateDateFormat(parse, display) {
24
- this.parse = parse;
25
- if (!display) {
26
- display = parse;
27
- }
28
- this.display = display;
29
- }
30
- }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kYXRlLXBpY2tlci9kYXRlLWZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2pCLE1BQU0sR0FBYztRQUN4QixTQUFTLEVBQUUsWUFBWTtLQUMxQixDQUFDO0lBQ00sUUFBUSxHQUFnQjtRQUM1QixTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsYUFBYTtRQUM3QixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDLENBQUM7SUFFRixJQUFJLEtBQUssQ0FBQyxLQUFnQjtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsT0FBb0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsT0FBcUI7UUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEYXRlUGFyc2UgeyBkYXRlSW5wdXQ6IHN0cmluZzsgfVxyXG5leHBvcnQgdHlwZSBEYXRlRGlzcGxheSA9IERhdGVQYXJzZSAmIHtcclxuICAgIG1vbnRoWWVhckxhYmVsPzogc3RyaW5nLFxyXG4gICAgZGF0ZUExMXlMYWJlbD86IHN0cmluZyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbD86IHN0cmluZyxcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21EYXRlRm9ybWF0IHtcclxuICAgIHByaXZhdGUgX3BhcnNlOiBEYXRlUGFyc2UgPSB7XHJcbiAgICAgICAgZGF0ZUlucHV0OiAnREQvTU0vWVlZWSdcclxuICAgIH07XHJcbiAgICBwcml2YXRlIF9kaXNwbGF5OiBEYXRlRGlzcGxheSA9IHtcclxuICAgICAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyxcclxuICAgICAgICBtb250aFllYXJMYWJlbDogJ0REIE1NTSBZWVlZJyxcclxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWSdcclxuICAgIH07XHJcblxyXG4gICAgc2V0IHBhcnNlKHBhcnNlOiBEYXRlUGFyc2UpIHtcclxuICAgICAgICB0aGlzLl9wYXJzZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhcnNlLCBwYXJzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcnNlKCk6IERhdGVQYXJzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkaXNwbGF5KGRpc3BsYXk6IERhdGVEaXNwbGF5KSB7XHJcbiAgICAgICAgdGhpcy5fZGlzcGxheSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2Rpc3BsYXksIGRpc3BsYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkaXNwbGF5KCk6IERhdGVEaXNwbGF5IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEYXRlRm9ybWF0KHBhcnNlOiBEYXRlUGFyc2UsIGRpc3BsYXk/OiBEYXRlRGlzcGxheSkge1xyXG4gICAgICAgIHRoaXMucGFyc2UgPSBwYXJzZTtcclxuICAgICAgICBpZiAoIWRpc3BsYXkpIHtcclxuICAgICAgICAgICAgZGlzcGxheSA9IHBhcnNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5O1xyXG4gICAgfVxyXG59Il19
@@ -1,175 +0,0 @@
1
- import { FormControl, NG_VALUE_ACCESSOR, } from '@angular/forms';
2
- import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Inject, Input, Output, ViewChild, } from '@angular/core';
3
- import { CustomDateFormat } from './date-format';
4
- import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
5
- import { format } from 'date-fns';
6
- import { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';
7
- import { MAT_DATE_FORMATS } from '@angular/material/core';
8
- import { MatDatepicker } from '@angular/material/datepicker';
9
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/material/datepicker";
12
- import * as i2 from "@angular/material/core";
13
- import * as i3 from "@angular/material/form-field";
14
- import * as i4 from "@angular/material/input";
15
- import * as i5 from "../form-label/form-label.component";
16
- import * as i6 from "../validation-errors/validation-errors.component";
17
- import * as i7 from "../info-item/info-item.component";
18
- import * as i8 from "@angular/forms";
19
- import * as i9 from "@angular/common";
20
- import * as i10 from "../../../../pipes/translate.pipe";
21
- const YEAR_ONLY_FORMAT = {
22
- parse: {
23
- dateInput: 'YYYY',
24
- },
25
- display: {
26
- dateInput: 'YYYY',
27
- monthYearLabel: 'YYYY',
28
- dateA11yLabel: 'LL',
29
- monthYearA11yLabel: 'YYYY',
30
- },
31
- };
32
- export class DatePickerComponent extends ControlValueAccessorDirective {
33
- date = new FormControl();
34
- className;
35
- calendarType;
36
- yearOnly;
37
- dateValue = new EventEmitter();
38
- showIslamic = false;
39
- error;
40
- dateFormat;
41
- destroyRef = inject(DestroyRef);
42
- set format(_format) {
43
- if (_format) {
44
- this.dateFormat.updateDateFormat({ dateInput: _format }, { dateInput: _format });
45
- }
46
- }
47
- datepicker;
48
- floatLabel = 'auto';
49
- ngOnInit() {
50
- super.ngOnInit();
51
- this.actionStateService.resetAction$
52
- .pipe(takeUntilDestroyed(this.destroyRef))
53
- .subscribe(res => {
54
- if (!this.isReadOnly && this.control.enabled) {
55
- this.control.reset();
56
- }
57
- });
58
- }
59
- ngAfterViewInit() {
60
- if (!this.isReadOnly && this.yearOnly)
61
- this.activateYearOnlyMode();
62
- }
63
- ngOnChanges(changes) {
64
- this.setDateFormControl();
65
- }
66
- setDateFormControl() {
67
- const today = new Date();
68
- const currentYear = today.getFullYear();
69
- const currentMonth = today.getMonth();
70
- const currentDay = today.getDate();
71
- if (this.minDate) {
72
- if (this.minDate == 'today') {
73
- this.minDateValue = new Date(currentYear, currentMonth, currentDay);
74
- }
75
- }
76
- if (this.maxDate) {
77
- if (this.maxDate == 'today') {
78
- this.maxDateValue = new Date(currentYear, currentMonth, currentDay);
79
- }
80
- else if (this.maxDate == 'oneYear') {
81
- this.maxDateValue = new Date(currentYear + 1, currentMonth, currentDay - 1);
82
- }
83
- }
84
- if (this.customMaxDate) {
85
- const date = new Date(this.customMaxDate);
86
- this.maxDateValue = new Date(date.getFullYear(), date.getMonth(), date.getDate());
87
- }
88
- if (this.customMinDate) {
89
- const date = new Date(this.customMinDate);
90
- this.minDateValue = new Date(date.getFullYear(), date.getMonth(), date.getDate());
91
- }
92
- // if (this.required) this.control.addValidators(Validators.required);
93
- }
94
- focusPicker(picker) {
95
- picker.open();
96
- }
97
- dateChange(event) {
98
- if (event?.value && !this.isDisabled) {
99
- let inputValue;
100
- inputValue = format(new Date(event.value), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx");
101
- this.control.setValue(inputValue);
102
- }
103
- }
104
- clearDateValue(event) {
105
- this.control.reset();
106
- this.control.markAsTouched();
107
- }
108
- activateYearOnlyMode() {
109
- this.dateFormat.updateDateFormat(YEAR_ONLY_FORMAT.parse, YEAR_ONLY_FORMAT.display);
110
- if (this.control) {
111
- this.control.setValue(format(new Date(this.control.value), 'yyyy'));
112
- }
113
- this.datepicker.startView = 'multi-year';
114
- this.datepicker.yearSelected.subscribe((e) => {
115
- this.control.setValue(format(new Date(e), 'yyyy'));
116
- this.datepicker.close();
117
- });
118
- this.datepicker.openedStream.subscribe(() => {
119
- document.body.classList.add('year-only');
120
- });
121
- this.datepicker.closedStream.subscribe(() => {
122
- document.body.classList.remove('year-only');
123
- });
124
- }
125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
126
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DatePickerComponent, isStandalone: true, selector: "app-datepicker", inputs: { className: "className", calendarType: "calendarType", yearOnly: "yearOnly", error: "error", format: "format" }, outputs: { dateValue: "dateValue" }, providers: [
127
- {
128
- provide: NG_VALUE_ACCESSOR,
129
- useExisting: forwardRef(() => DatePickerComponent),
130
- multi: true,
131
- },
132
- {
133
- provide: MAT_DATE_FORMATS,
134
- useClass: CustomDateFormat,
135
- },
136
- ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: MatDatepicker, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n <div class=\"datePicker justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? ('select' | translate) + ' ' + label : ''\"\r\n (click)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-datepicker #dp></mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n </div>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value) {\r\n <ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"], dependencies: [{ kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "component", type: i1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: i1.MatDatepickerModule }, { kind: "directive", type: i1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "ngmodule", type: i2.MatNativeDateModule }, { kind: "ngmodule", type: i3.MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i6.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: i7.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i8.ReactiveFormsModule }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
137
- }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatePickerComponent, decorators: [{
139
- type: Component,
140
- args: [{ selector: 'app-datepicker', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [
141
- {
142
- provide: NG_VALUE_ACCESSOR,
143
- useExisting: forwardRef(() => DatePickerComponent),
144
- multi: true,
145
- },
146
- {
147
- provide: MAT_DATE_FORMATS,
148
- useClass: CustomDateFormat,
149
- },
150
- ], imports: [
151
- MatDatepicker,
152
- ...MatDatePickerImports,
153
- ...MatFormImports,
154
- ...Shareds
155
- ], template: "@if(!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n <div class=\"datePicker justify-content-between mb-1\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"label ? ('select' | translate) + ' ' + label : ''\"\r\n (click)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-datepicker #dp></mat-datepicker>\r\n <!-- <mat-error *ngIf=\"errorMessage\">{{errorMessage}}</mat-error> -->\r\n </mat-form-field>\r\n </div>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value) {\r\n <ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n", styles: [":host{flex-grow:1}::ng-deep .year-only .mat-calendar-period-button{pointer-events:none}::ng-deep .year-only .mat-calendar-arrow{display:none}\n"] }]
156
- }], propDecorators: { className: [{
157
- type: Input
158
- }], calendarType: [{
159
- type: Input
160
- }], yearOnly: [{
161
- type: Input
162
- }], dateValue: [{
163
- type: Output
164
- }], error: [{
165
- type: Input
166
- }], dateFormat: [{
167
- type: Inject,
168
- args: [MAT_DATE_FORMATS]
169
- }], format: [{
170
- type: Input
171
- }], datepicker: [{
172
- type: ViewChild,
173
- args: [MatDatepicker]
174
- }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsR0FFbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsU0FBUyxFQUNULHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEUsTUFBTSxnQkFB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T0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0I7U0FDRixzRUFnQ1UsYUFBYSw0RkN2RjFCLHVoRUFpRUEseU1EUEksYUFBYTs7MkZBTUosbUJBQW1CO2tCQXpCL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FHZCxJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsQ0FBQyxhQUN0Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsUUFBUSxFQUFFLGdCQUFnQjt5QkFDM0I7cUJBQ0YsV0FFUTt3QkFDUCxhQUFhO3dCQUNiLEdBQUcsb0JBQW9CO3dCQUN2QixHQUFHLGNBQWM7d0JBQ2pCLEdBQUcsT0FBTztxQkFDWDs4QkFPUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVFLEtBQUs7c0JBQWIsS0FBSztnQkFDMkIsVUFBVTtzQkFBMUMsTUFBTTt1QkFBQyxnQkFBZ0I7Z0JBR1gsTUFBTTtzQkFBbEIsS0FBSztnQkFTb0IsVUFBVTtzQkFBbkMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBGb3JtQ29udHJvbCxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVGb3JtYXQgfSBmcm9tICcuL2RhdGUtZm9ybWF0JztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgTWF0RGF0ZVBpY2tlckltcG9ydHMsIE1hdEZvcm1JbXBvcnRzLCBTaGFyZWRzIH0gZnJvbSAnLi4vc2hhcmVkLWltcG9ydHMnO1xyXG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuY29uc3QgWUVBUl9PTkxZX0ZPUk1BVCA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWScsXHJcbiAgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdZWVlZJyxcclxuICAgIG1vbnRoWWVhckxhYmVsOiAnWVlZWScsXHJcbiAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnWVlZWScsXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWRhdGVwaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsXHJcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0LFxyXG4gICAgfSxcclxuICBdLFxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXREYXRlcGlja2VyLFxyXG4gICAgLi4uTWF0RGF0ZVBpY2tlckltcG9ydHMsXHJcbiAgICAuLi5NYXRGb3JtSW1wb3J0cyxcclxuICAgIC4uLlNoYXJlZHNcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudDxUeXBlPlxyXG4gIGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT5cclxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXRcclxue1xyXG4gIGRhdGUgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FsZW5kYXJUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHllYXJPbmx5OiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBkYXRlVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNob3dJc2xhbWljID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBwdWJsaWMgZGF0ZUZvcm1hdDogQ3VzdG9tRGF0ZUZvcm1hdDtcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZm9ybWF0KF9mb3JtYXQ6IHN0cmluZykge1xyXG4gICAgaWYgKF9mb3JtYXQpIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0LnVwZGF0ZURhdGVGb3JtYXQoXHJcbiAgICAgICAgeyBkYXRlSW5wdXQ6IF9mb3JtYXQgfSxcclxuICAgICAgICB7IGRhdGVJbnB1dDogX2Zvcm1hdCB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKE1hdERhdGVwaWNrZXIpIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PjtcclxuICBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5yZXNldEFjdGlvbiRcclxuICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmNvbnRyb2wuZW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLnllYXJPbmx5KSB0aGlzLmFjdGl2YXRlWWVhck9ubHlNb2RlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLnNldERhdGVGb3JtQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUZvcm1Db250cm9sKCkge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0b2RheS5nZXREYXRlKCk7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1heERhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlID09ICdvbmVZZWFyJykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoXHJcbiAgICAgICAgICBjdXJyZW50WWVhciArIDEsXHJcbiAgICAgICAgICBjdXJyZW50TW9udGgsXHJcbiAgICAgICAgICBjdXJyZW50RGF5IC0gMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1c3RvbU1heERhdGUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWF4RGF0ZSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VzdG9tTWluRGF0ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXN0b21NaW5EYXRlKTtcclxuICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShcclxuICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIGRhdGUuZ2V0RGF0ZSgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5yZXF1aXJlZCkgdGhpcy5jb250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c1BpY2tlcihwaWNrZXIpIHtcclxuICAgIHBpY2tlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudD8udmFsdWUgJiYgIXRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICBsZXQgaW5wdXRWYWx1ZTtcclxuICAgICAgaW5wdXRWYWx1ZSA9IGZvcm1hdChcclxuICAgICAgICBuZXcgRGF0ZShldmVudC52YWx1ZSksXHJcbiAgICAgICAgXCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3MuU1NTeHh4XCJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGlucHV0VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJEYXRlVmFsdWUoZXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbC5yZXNldCgpO1xyXG4gICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVZZWFyT25seU1vZGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdChcclxuICAgICAgWUVBUl9PTkxZX0ZPUk1BVC5wYXJzZSxcclxuICAgICAgWUVBUl9PTkxZX0ZPUk1BVC5kaXNwbGF5XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0KG5ldyBEYXRlKHRoaXMuY29udHJvbC52YWx1ZSksICd5eXl5JykpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlcGlja2VyLnN0YXJ0VmlldyA9ICdtdWx0aS15ZWFyJztcclxuICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyU2VsZWN0ZWQuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShmb3JtYXQobmV3IERhdGUoZSksICd5eXl5JykpO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyLm9wZW5lZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3llYXItb25seScpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2VkU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgneWVhci1vbmx5Jyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiQGlmKCFpc1JlYWRPbmx5KSB7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZihsYWJlbCkge1xyXG4gICAgICA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cInJlcXVpcmVkIHx8IG1hbmRhdG9yeSA/IGZhbHNlIDogdHJ1ZVwiIFt0b29sdGlwXT1cInRvb2x0aXBcIj48L2FwcC1mb3JtLWxhYmVsPlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlUGlja2VyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTFcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtZGlzYWJsZWQnOiBpc0Rpc2FibGVkIH1cIlxyXG4gICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIChkYXRlSW5wdXQpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsID8gKCdzZWxlY3QnIHwgdHJhbnNsYXRlKSArICcgJyArIGxhYmVsIDogJydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9jdXNQaWNrZXIoZHApXCJcclxuICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlVmFsdWVcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIm1heERhdGVWYWx1ZVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImRwXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICBAaWYoY29udHJvbD8udmFsdWUpIHtcclxuICAgICAgICAgIDxkcy1pY29uXHJcbiAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICBpY29uPVwiY2xvc2VcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZjLWNvcmFsIGZzLTEwIG14LTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9kcy1pY29uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkcFwiPlxyXG4gICAgICAgICAgPGRzLWljb25cclxuICAgICAgICAgICAgaWNvbj1cImNhbGVuZGFyLW9cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZjLWJsYWNrIGZzLTE4XCJcclxuICAgICAgICAgICAgbWF0RGF0ZXBpY2tlclRvZ2dsZUljb25cclxuICAgICAgICAgID48L2RzLWljb24+XHJcbiAgICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcblxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZHA+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YXBwLXZhbGlkYXRpb24tZXJyb3JzIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIj48L2FwcC12YWxpZGF0aW9uLWVycm9ycz5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcbkBpZihpc1JlYWRPbmx5ICYmIGNvbnRyb2wudmFsdWUpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgIFtpbnNpZGVUYWJsZV09XCJpbnNpZGVUYWJsZVwiXHJcbiAgICAgIFtkYXRlVHlwZV09XCJjYWxlbmRhclR5cGVcIlxyXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiXHJcbiAgICAgIFtoYXNMYWJlbF09XCIhIWxhYmVsXCJcclxuICAgID5cclxuICAgIDwvYXBwLWluZm8taXRlbT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=